Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/storage-provider-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@croco/storage-cloudflare": patch
"@croco/storage-cloudinary": patch
---

- Expose storage provider diagnostics/readiness, deterministic upstream Problem codes, shared conformance coverage, and optional live-smoke gates for Cloudflare Images and Cloudinary.
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,8 @@ jobs:
- 'packages/retry-core/src/**'
- 'packages/rpc-codegen/src/**'
- 'packages/search-core/src/**'
- 'packages/storage-cloudflare/src/**'
- 'packages/storage-cloudinary/src/**'
- 'packages/storage-core/src/**'
- 'packages/tasks-qstash/src/**'
- 'packages/telemetry-api/src/**'
Expand Down Expand Up @@ -336,8 +338,12 @@ jobs:
- name: Build docs and check for drift
run: |
pnpm turbo run docs:build --force
mapfile -t generated_api_docs < <(git diff --name-only -- packages/docs/src/content/docs/api/)
if [ "${#generated_api_docs[@]}" -gt 0 ]; then
pnpm exec oxfmt --write "${generated_api_docs[@]}"
fi
if ! git diff --exit-code -- packages/docs/src/content/docs/api/; then
echo "::error::API docs are out of sync. Run 'pnpm docs:build' locally and commit the changes."
echo "::error::API docs are out of sync. Run 'pnpm docs:build', format the changed API docs with oxfmt, then commit the changes."
exit 1
fi

Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -388,12 +388,12 @@ Croco가 **완전한 SaaS 프레임워크**가 되기 위해 계획 중인 기

Adapter 경계와 공식 우선순위, compatibility certification checklist는 [Adapter Ecosystem](packages/docs/src/content/docs/en/reference/adapter-ecosystem.md)에 정의되어 있습니다. 성숙도 승급 기준은 [Provider Maturity Gates](packages/docs/src/content/docs/en/reference/provider-maturity.md)와 [Presentation Runtime Support](packages/docs/src/content/docs/en/reference/presentation-runtime-support.md)에 정의되어 있으며, package test 존재 여부만으로 production-ready나 certified compatibility를 의미하지 않습니다.

| 상태 | 의미 | 패키지 수 |
| ------------------- | ----------------------------------- | --------: |
| 🟢 production-ready | 안정화, 적극 사용 권장 | 24 |
| 🟡 beta | 기능 완성, 실사용 검증 중 | 56 |
| 🔴 alpha/WIP | 개발 중, 사용 시 주의 필요 | 29 |
| ⚠️ deprecated | 대체 패키지 존재, 마이그레이션 권장 | 0 |
| 상태 | 의미 | 전체 public 패키지 수 |
| ------------------- | ----------------------------------- | --------------------: |
| 🟢 production-ready | 안정화, 적극 사용 권장 | 24 |
| 🟡 beta | 기능 완성, 실사용 검증 중 | 57 |
| 🔴 alpha/WIP | 개발 중, 사용 시 주의 필요 | 28 |
| ⚠️ deprecated | 대체 패키지 존재, 마이그레이션 권장 | 0 |

### Extension & Adapter Matrix

Expand Down Expand Up @@ -428,8 +428,8 @@ Runtime columns: Node는 장기 실행 서버/CLI, Lambda는 서버리스 함수
| `@croco/ratelimit-upstash` | Rate limiting | Upstash Redis rate-limit store | yes | yes | - | - | UPSTASH_REDIS_REST_URL<br>UPSTASH_REDIS_REST_TOKEN | @upstash/redis | sliding window<br>token bucket<br>fixed window<br>Lua atomicity<br>shared conformance<br>redacted upstream Problems | 🔴 alpha/WIP | has package tests |
| `@croco/search-drizzle` | Search | Drizzle search index | yes | yes | - | - | database connection supplied by app | drizzle-orm | search document persistence<br>tenant-aware lookup | 🔴 alpha/WIP | has package tests |
| `@croco/search-meilisearch` | Search | Meilisearch engine | yes | yes | - | - | MEILISEARCH_HOST<br>MEILISEARCH_API_KEY | - | indexing<br>search<br>tenant tokens | 🔴 alpha/WIP | has package tests |
| `@croco/storage-cloudflare` | Storage | Cloudflare Images provider | yes | yes | - | - | CLOUDFLARE_ACCOUNT_ID<br>CLOUDFLARE_API_TOKEN<br>CLOUDFLARE_ACCOUNT_HASH | - | image upload<br>transform URLs<br>upload intents<br>signed URLs | 🔴 alpha/WIP | has package tests |
| `@croco/storage-cloudinary` | Storage | Cloudinary provider | yes | yes | - | - | CLOUDINARY_CLOUD_NAME<br>CLOUDINARY_API_KEY<br>CLOUDINARY_API_SECRET | - | file upload<br>transform URLs<br>upload intents<br>retry | 🔴 alpha/WIP | has package tests |
| `@croco/storage-cloudflare` | Storage | Cloudflare Images provider | yes | yes | - | - | CLOUDFLARE_ACCOUNT_ID<br>CLOUDFLARE_API_TOKEN<br>CLOUDFLARE_ACCOUNT_HASH | - | image upload<br>transform URLs<br>upload intents<br>signed URLs<br>storage conformance<br>diagnostics<br>optional live smoke | 🔴 alpha/WIP | has package tests |
| `@croco/storage-cloudinary` | Storage | Cloudinary provider | yes | yes | - | - | CLOUDINARY_CLOUD_NAME<br>CLOUDINARY_API_KEY<br>CLOUDINARY_API_SECRET | - | file upload<br>transform URLs<br>upload intents<br>retry<br>storage conformance<br>diagnostics<br>optional live smoke | 🟡 beta | has package tests |
| `@croco/storage-r2` | Storage | Cloudflare R2 S3-compatible provider | yes | yes | - | - | R2_ACCOUNT_ID<br>R2_ACCESS_KEY_ID<br>R2_SECRET_ACCESS_KEY<br>R2_BUCKET | - | put/get/delete<br>signed URLs<br>stream reads<br>retry<br>safe diagnostics<br>env-gated live smoke | 🟡 beta | has package tests |
| `@croco/tasks-qstash` | Tasks | QStash task runner | yes | yes | - | - | UPSTASH_QSTASH_TOKEN<br>UPSTASH_QSTASH_DESTINATION_URL | - | task publish<br>delay override<br>custom headers<br>deduplication id<br>shared conformance<br>redacted upstream Problems | 🔴 alpha/WIP | has package tests |
| `@croco/triggers-qstash` | Triggers | QStash scheduler and webhook handler | yes | yes | - | - | QSTASH_TOKEN<br>public webhook URL | - | schedule publish<br>webhook verification<br>trigger dispatch<br>shared conformance<br>redacted schedule diagnostics<br>diagnostic-coded webhook failures | 🔴 alpha/WIP | has package tests |
Expand Down Expand Up @@ -542,6 +542,7 @@ Runtime columns: Node는 장기 실행 서버/CLI, Lambda는 서버리스 함수
| `@croco/rpc-codegen` | Protocol | `packages/rpc-codegen` | README, API, tests |
| `@croco/billing-polar` | Provider | `packages/billing-polar` | README, tests |
| `@croco/llm-openai` | Provider | `packages/llm-openai` | README, API, tests |
| `@croco/storage-cloudinary` | Provider | `packages/storage-cloudinary` | README, API, tests |
| `@croco/storage-r2` | Provider | `packages/storage-r2` | README, tests |
| `@croco/architecture-policy` | Tooling | `packages/architecture-policy` | README, tests |
| `@croco/cli` | Tooling | `packages/cli` | README, tests |
Expand Down Expand Up @@ -583,8 +584,7 @@ Runtime columns: Node는 장기 실행 서버/CLI, Lambda는 서버리스 함수
| `@croco/ratelimit-upstash` | Provider | `packages/ratelimit-upstash` | README, API, tests |
| `@croco/search-drizzle` | Provider | `packages/search-drizzle` | README, tests |
| `@croco/search-meilisearch` | Provider | `packages/search-meilisearch` | README, tests |
| `@croco/storage-cloudflare` | Provider | `packages/storage-cloudflare` | README, tests |
| `@croco/storage-cloudinary` | Provider | `packages/storage-cloudinary` | README, tests |
| `@croco/storage-cloudflare` | Provider | `packages/storage-cloudflare` | README, API, tests |
| `@croco/tasks-qstash` | Provider | `packages/tasks-qstash` | README, API, tests |
| `@croco/triggers-qstash` | Provider | `packages/triggers-qstash` | README, API, tests |

Expand Down
22 changes: 19 additions & 3 deletions docs/package-catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@
"protocols-graphql",
"protocols-trpc",
"rpc-codegen",
"storage-cloudinary",
"storage-core",
"storage-r2",
"tasks-core",
Expand Down Expand Up @@ -267,7 +268,6 @@
"search-drizzle",
"search-meilisearch",
"storage-cloudflare",
"storage-cloudinary",
"tasks-qstash",
"triggers-qstash"
]
Expand Down Expand Up @@ -608,14 +608,30 @@
"adapter": "Cloudflare Images provider",
"runtimes": ["node", "lambda"],
"requiredEnv": ["CLOUDFLARE_ACCOUNT_ID", "CLOUDFLARE_API_TOKEN", "CLOUDFLARE_ACCOUNT_HASH"],
"features": ["image upload", "transform URLs", "upload intents", "signed URLs"]
"features": [
"image upload",
"transform URLs",
"upload intents",
"signed URLs",
"storage conformance",
"diagnostics",
"optional live smoke"
]
},
"storage-cloudinary": {
"domain": "Storage",
"adapter": "Cloudinary provider",
"runtimes": ["node", "lambda"],
"requiredEnv": ["CLOUDINARY_CLOUD_NAME", "CLOUDINARY_API_KEY", "CLOUDINARY_API_SECRET"],
"features": ["file upload", "transform URLs", "upload intents", "retry"]
"features": [
"file upload",
"transform URLs",
"upload intents",
"retry",
"storage conformance",
"diagnostics",
"optional live smoke"
]
},
"storage-r2": {
"domain": "Storage",
Expand Down
2 changes: 0 additions & 2 deletions docs/package-docs-baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@
"ratelimit-upstash",
"search-drizzle",
"search-meilisearch",
"storage-cloudflare",
"storage-cloudinary",
"storage-r2",
"tasks-core",
"tasks-qstash",
Expand Down
10 changes: 4 additions & 6 deletions docs/package-docs-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
| Public packages | 109 |
| Private packages skipped | 2 |
| Missing package README | 0 |
| Missing generated API docs | 49 |
| Missing generated API docs | 47 |
| Missing package test directory | 0 |
| Extension matrix packages | 41 |

Expand Down Expand Up @@ -63,8 +63,6 @@ None.
- `@croco/presentation-preset` (`packages/presentation-preset`) — legacy baseline
- `@croco/search-drizzle` (`packages/search-drizzle`) — legacy baseline
- `@croco/search-meilisearch` (`packages/search-meilisearch`) — legacy baseline
- `@croco/storage-cloudflare` (`packages/storage-cloudflare`) — legacy baseline
- `@croco/storage-cloudinary` (`packages/storage-cloudinary`) — legacy baseline
- `@croco/storage-r2` (`packages/storage-r2`) — legacy baseline
- `@croco/tasks-core` (`packages/tasks-core`) — legacy baseline
- `@croco/tenant-core` (`packages/tenant-core`) — legacy baseline
Expand All @@ -77,7 +75,7 @@ None.
| ------------------- | ---------------: |
| 🟢 production-ready | 0 |
| 🟡 beta | 29 |
| 🔴 alpha/WIP | 20 |
| 🔴 alpha/WIP | 18 |
| ⚠️ deprecated | 0 |

## Missing Test Directory
Expand All @@ -100,8 +98,8 @@ None.
| Maturity | Packages |
| ------------------- | -------: |
| 🟢 production-ready | 24 |
| 🟡 beta | 56 |
| 🔴 alpha/WIP | 29 |
| 🟡 beta | 57 |
| 🔴 alpha/WIP | 28 |
| ⚠️ deprecated | 0 |

## Extension Matrix
Expand Down
Loading
Loading