diff --git a/apps/api/Dockerfile b/apps/api/Dockerfile index 129cec5..b26504c 100644 --- a/apps/api/Dockerfile +++ b/apps/api/Dockerfile @@ -17,7 +17,9 @@ RUN npm ci --ignore-scripts && mkdir -p apps/api/node_modules COPY apps/api ./apps/api COPY packages ./packages -RUN npm run build -w @xpenser/contracts && \ +# TypeScript 7 uses Go; cap its heap growth on small deployment hosts. +RUN export GOMEMLIMIT=1536MiB && \ + npm run build -w @xpenser/contracts && \ npm run build -w @xpenser/client && \ npm run build -w @xpenser/timezone && \ npm run build -w @xpenser/api diff --git a/apps/api/package.json b/apps/api/package.json index 32a6704..2601442 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -8,27 +8,27 @@ "scripts": { "dev": "tsx watch --env-file=.env --import @opentelemetry/instrumentation/hook.mjs src/index.ts", "start": "node --import @opentelemetry/instrumentation/hook.mjs --import ./dist/telemetry.js dist/index.js", - "build": "tsup && tsc --noEmit -p tsconfig.json", + "build": "tsup && tsc --noEmit -p tsconfig.json --checkers 1", "typecheck": "tsc --noEmit -p tsconfig.json", "clean": "rm -rf dist tsconfig.tsbuildinfo", "db:run": "tsx --env-file=.env src/db/run.ts", "db:validate": "cb-orm validate --config src/db/orm.config.ts" }, "dependencies": { - "@cleverbrush/auth": "0.0.0-beta-20261004165009", - "@cleverbrush/di": "0.0.0-beta-20261004165009", - "@cleverbrush/env": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/knex-schema": "0.0.0-beta-20261004165009", - "@cleverbrush/mapper": "0.0.0-beta-20261004165009", - "@cleverbrush/orm": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", - "@cleverbrush/schema-json": "0.0.0-beta-20261004165009", - "@cleverbrush/scheduler": "0.0.0-beta-20261004165009", - "@cleverbrush/scheduler-postgres": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009", - "@cleverbrush/server-openapi": "0.0.0-beta-20261004165009", + "@cleverbrush/auth": "5.0.0", + "@cleverbrush/di": "5.0.0", + "@cleverbrush/env": "5.0.0", + "@cleverbrush/log": "5.0.0", + "@cleverbrush/knex-schema": "5.0.0", + "@cleverbrush/mapper": "5.0.0", + "@cleverbrush/orm": "5.0.0", + "@cleverbrush/otel": "5.0.0", + "@cleverbrush/schema": "5.0.0", + "@cleverbrush/schema-json": "5.0.0", + "@cleverbrush/scheduler": "5.0.0", + "@cleverbrush/scheduler-postgres": "5.0.0", + "@cleverbrush/server": "5.0.0", + "@cleverbrush/server-openapi": "5.0.0", "@modelcontextprotocol/sdk": "^1.29.0", "@opentelemetry/instrumentation-http": "0.222.0", "@opentelemetry/instrumentation-runtime-node": "0.28.0", @@ -40,8 +40,8 @@ "sharp": "0.34.5" }, "devDependencies": { - "@cleverbrush/orm-cli": "0.0.0-beta-20261004165009", - "@types/node": "22.15.3", + "@cleverbrush/orm-cli": "5.0.0", + "@types/node": "24.19.2", "@types/pg": "8.23.1", "@xpenser/client": "0.1.0", "tsup": "8.5.1", diff --git a/apps/telegram-bot/package.json b/apps/telegram-bot/package.json index cb26071..60dd46b 100644 --- a/apps/telegram-bot/package.json +++ b/apps/telegram-bot/package.json @@ -13,12 +13,12 @@ "clean": "rm -rf dist tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/env": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/env": "5.0.0", + "@cleverbrush/log": "5.0.0", + "@cleverbrush/otel": "5.0.0", + "@cleverbrush/schema": "5.0.0", "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation": "0.215.0", + "@opentelemetry/instrumentation": "0.222.0", "@opentelemetry/instrumentation-http": "0.222.0", "@opentelemetry/instrumentation-runtime-node": "0.28.0", "@opentelemetry/instrumentation-undici": "0.25.0", diff --git a/apps/telegram-bot/tsup.config.ts b/apps/telegram-bot/tsup.config.ts index 9ef1dc0..703664a 100644 --- a/apps/telegram-bot/tsup.config.ts +++ b/apps/telegram-bot/tsup.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ minify: false, sourcemap: true, clean: true, - target: 'node22', + target: 'node24', noExternal: [/@xpenser\//], external: ['ws', /^@opentelemetry\//, '@fastify/busboy'] }); diff --git a/apps/web/package.json b/apps/web/package.json index 027c524..73f77af 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -11,11 +11,11 @@ "clean": "rm -rf .next tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/env": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", - "@cleverbrush/react-form": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/env": "5.0.0", + "@cleverbrush/log": "5.0.0", + "@cleverbrush/otel": "5.0.0", + "@cleverbrush/react-form": "5.0.0", + "@cleverbrush/schema": "5.0.0", "@keystatic/core": "^0.5.50", "@keystatic/next": "^5.0.4", "@xpenser/client": "0.1.0", diff --git a/docs/cleverbrush-reference.md b/docs/cleverbrush-reference.md index 17aa3c4..e837c02 100644 --- a/docs/cleverbrush-reference.md +++ b/docs/cleverbrush-reference.md @@ -7,10 +7,26 @@ worth copying and the checks that keep those patterns from drifting. Framework source: [cleverbrush/framework](https://github.com/cleverbrush/framework). All directly used Framework packages are pinned to -`0.0.0-beta-20261004165009`. See [database reads](./database-reads.md) for +`5.0.0`. See [database reads](./database-reads.md) for compiled query behavior and [image uploads](./image-uploads.md) for typed uploads, JSONB scan storage, and coordinated rollout. +## Stable v5 adoption + +The [v5 migration guide](https://github.com/cleverbrush/framework/blob/v5.0.0/docs/MIGRATION-v5.md) +covers the coordinated package upgrade. Xpenser already adopted immutable queries, +compiled reads, durable jobs, typed uploads, schema forms and scoped transaction +replay in the October betas; the stable release retains those integrations. + +Compared with the October 4 beta, v5 fixes default-only database migration changes +so they preserve column types, nullability and stored data; closes WebSocket +subscriptions rejected by middleware; honors a zero subscription-history limit; +and corrects shared HashObject behavior. The scheduler table schemas and migrations +are unchanged, so this upgrade adds no database migration or job-definition version. +All Framework packages, including transitive packages, must resolve to 5.0.0 with +one shared schema installation. Keep the feature-owned unit, PostgreSQL and browser +suites as the executable checks for existing behavior. + ## Cross-origin requests `useCors()` allows the serialized origin of `APP_URL`, preserves the existing @@ -230,7 +246,7 @@ projections, page/count agreement, and bounded enrichment query counts. - Keep endpoint-specific cache namespaces in the shared contract. A vendor list and vendor detail have different response shapes and therefore use `vendors` and `vendor`; a write invalidates every affected namespace. -- Let Framework encode parameterized cache keys. The beta distinguishes Date +- Let Framework encode parameterized cache keys. Framework distinguishes Date values down to milliseconds and avoids separator collisions. Do not build a second encoder in Xpenser. - `createXpenserClient()` creates its own in-memory cache middleware. Preserve @@ -325,8 +341,9 @@ reuse a key only with the same input; Framework does not compare request bodies. API restarts, expiry and independent replicas lose or lack replay state. This is not a durable exactly-once guarantee. -Framework's October 4 beta requires Node.js 24. Docker stages, CI, .nvmrc and -the root engine constraint match it; HTTP instrumentation uses 0.222.0 alongside +Framework v5 requires Node.js 24. Docker stages, CI, .nvmrc, the root engine +constraint, Node type declarations and the bot build target match it. HTTP +instrumentation and the bot's instrumentation hook use 0.222.0 alongside Framework telemetry. HTTP instrumentation 0.222 emits stable-semantic-convention duration metrics: diff --git a/package-lock.json b/package-lock.json index 17e9a16..94f120e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@biomejs/biome": "2.4.9", "@playwright/test": "^1.60.0", "@testing-library/react": "16.3.2", - "@types/node": "22.15.3", + "@types/node": "24.19.2", "@types/react": "19.0.12", "@types/react-dom": "19.0.4", "@vitest/coverage-v8": "4.1.2", @@ -35,20 +35,20 @@ "name": "@xpenser/api", "version": "0.1.0", "dependencies": { - "@cleverbrush/auth": "0.0.0-beta-20261004165009", - "@cleverbrush/di": "0.0.0-beta-20261004165009", - "@cleverbrush/env": "0.0.0-beta-20261004165009", - "@cleverbrush/knex-schema": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/mapper": "0.0.0-beta-20261004165009", - "@cleverbrush/orm": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", - "@cleverbrush/scheduler": "0.0.0-beta-20261004165009", - "@cleverbrush/scheduler-postgres": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", - "@cleverbrush/schema-json": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009", - "@cleverbrush/server-openapi": "0.0.0-beta-20261004165009", + "@cleverbrush/auth": "5.0.0", + "@cleverbrush/di": "5.0.0", + "@cleverbrush/env": "5.0.0", + "@cleverbrush/knex-schema": "5.0.0", + "@cleverbrush/log": "5.0.0", + "@cleverbrush/mapper": "5.0.0", + "@cleverbrush/orm": "5.0.0", + "@cleverbrush/otel": "5.0.0", + "@cleverbrush/scheduler": "5.0.0", + "@cleverbrush/scheduler-postgres": "5.0.0", + "@cleverbrush/schema": "5.0.0", + "@cleverbrush/schema-json": "5.0.0", + "@cleverbrush/server": "5.0.0", + "@cleverbrush/server-openapi": "5.0.0", "@modelcontextprotocol/sdk": "^1.29.0", "@opentelemetry/instrumentation-http": "0.222.0", "@opentelemetry/instrumentation-runtime-node": "0.28.0", @@ -60,8 +60,8 @@ "sharp": "0.34.5" }, "devDependencies": { - "@cleverbrush/orm-cli": "0.0.0-beta-20261004165009", - "@types/node": "22.15.3", + "@cleverbrush/orm-cli": "5.0.0", + "@types/node": "24.19.2", "@types/pg": "8.23.1", "@xpenser/client": "0.1.0", "tsup": "8.5.1", @@ -70,43 +70,43 @@ } }, "apps/api/node_modules/@cleverbrush/schema-json": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/schema-json/-/schema-json-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-J0F6GeDDQQP3SUy9FzmwnmugqkC+slHK9kKFYaZpVgMXnXskzvLK5Jiq9bEGAeQLv6hoeoNmYXsLHmHhKRNeuw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/schema-json/-/schema-json-5.0.0.tgz", + "integrity": "sha512-m/MdnY+OMek2W5tT4z4kLCJuki5v0R7HDKp9vsER6+1d6XxlJ4hcFpKiQZTvN9Don/NvWGzR9zI2bYnm+jYkfQ==", "license": "BSD-3-Clause", "engines": { "node": ">=24" }, "peerDependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/schema": "^5.0.0", "@standard-schema/spec": "^1.1.0" } }, "apps/api/node_modules/@cleverbrush/server-openapi": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/server-openapi/-/server-openapi-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-cgkGaCxLaFzW+kfF0cMbpqQVYUluOjkYWxyUpP+gn8m554jYByz04Lu6/D76qohWSGVc42w8CXehNxgIYXv//w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/server-openapi/-/server-openapi-5.0.0.tgz", + "integrity": "sha512-U7jX3sfenwFML122yD3n1AD6bywS5jOizauBwm4gByIdDFmdrRm/1B1GWLG1DuZ6NNwjYaCweNhavSPMmBSPmA==", "license": "BSD-3-Clause", "engines": { "node": ">=24" }, "peerDependencies": { - "@cleverbrush/auth": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", - "@cleverbrush/schema-json": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009" + "@cleverbrush/auth": "^5.0.0", + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/schema-json": "^5.0.0", + "@cleverbrush/server": "^5.0.0" } }, "apps/telegram-bot": { "name": "@xpenser/telegram-bot", "version": "0.1.0", "dependencies": { - "@cleverbrush/env": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/env": "5.0.0", + "@cleverbrush/log": "5.0.0", + "@cleverbrush/otel": "5.0.0", + "@cleverbrush/schema": "5.0.0", "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation": "0.215.0", + "@opentelemetry/instrumentation": "0.222.0", "@opentelemetry/instrumentation-http": "0.222.0", "@opentelemetry/instrumentation-runtime-node": "0.28.0", "@opentelemetry/instrumentation-undici": "0.25.0", @@ -122,15 +122,44 @@ "typescript": "7.0.2" } }, + "apps/telegram-bot/node_modules/@opentelemetry/api-logs": { + "version": "0.222.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.222.0.tgz", + "integrity": "sha512-9mb1If+IF6u0ZVXkHQ6ogEae5HwA6ajIVUgpSDQyRASxft6BSXHvBvPooRle3yFN/fKnCdSOnuu0OC3PLcF6+g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "apps/telegram-bot/node_modules/@opentelemetry/instrumentation": { + "version": "0.222.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.222.0.tgz", + "integrity": "sha512-fhbRDuAgzPKpq1k5+hX3uS+3QAYNca0on0Ngot/R8dDsQtuFaADeZnG2uSgxABuvcI7S2phAaRhbct9jieeKZw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.222.0", + "import-in-the-middle": "^3.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "apps/web": { "name": "@xpenser/web", "version": "0.1.0", "dependencies": { - "@cleverbrush/env": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", - "@cleverbrush/react-form": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/env": "5.0.0", + "@cleverbrush/log": "5.0.0", + "@cleverbrush/otel": "5.0.0", + "@cleverbrush/react-form": "5.0.0", + "@cleverbrush/schema": "5.0.0", "@keystatic/core": "^0.5.50", "@keystatic/next": "^5.0.4", "@xpenser/client": "0.1.0", @@ -652,34 +681,34 @@ } }, "node_modules/@cleverbrush/async": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/async/-/async-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-8VnEeGhjZg+Ub4ZUlHso4DN/gWrio+3t40RQZu9MbgUQn056h0cAqrDdRD6kT25nlMxyoCJLqRFgZovNo63HCA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/async/-/async-5.0.0.tgz", + "integrity": "sha512-pRIl6W1F6iVJYZSUvuTSmwjTGyrbG7M3jPG+IMGj2H0odlrhO0IYI32mbQY0mkk80rEX+ClR43yV/klk4/w+gw==", "license": "BSD-3-Clause", "engines": { "node": ">=24" } }, "node_modules/@cleverbrush/auth": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/auth/-/auth-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-pybnpkyGPzmEKijelXN9qgkP0Dno0c4oog4Gf4KBezkdRTSH4VT4sI3w8YqRWLFgzBByp6OBeUzmvlSMxXZJvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/auth/-/auth-5.0.0.tgz", + "integrity": "sha512-KL5EiQ7aN0Ue2DOByHIyiS55xrMeMmvKPl8gBDWShzg8YoPSZ8n1nlJGGyTprdqRjjzHp5U4BARkAI3+Qm0Rdg==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" } }, "node_modules/@cleverbrush/client": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/client/-/client-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-mJrUJNqbDWoyeaP2tqQeC2lYiY296vwqC5iHv1VubnB0KDOVQ3PNWAIQ5e9YNsyrcqkjLlOUpgeb7vXrC3WBWw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/client/-/client-5.0.0.tgz", + "integrity": "sha512-5ANF+M8mO6ryTjkJCb6aSalQhgE3UJANibj39T7aAPLbtjMhAELCuWW2WyVEGaBqMdTElynNG90UFhg+5qSB0Q==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/server": "^5.0.0" }, "engines": { "node": ">=24" @@ -698,48 +727,48 @@ } }, "node_modules/@cleverbrush/deep": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/deep/-/deep-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-vB5BmTh50s6nRPh6FrKcGLNBLwmOeUT4z2Lpn06S9t495mUkQ3gOfyAJRRVGNwLZM+giWbbOlDIIbLcxq7Ghzw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/deep/-/deep-5.0.0.tgz", + "integrity": "sha512-wNWMSZkj17u8h5gNixmK4IbU9lFXyahe5Qato6cxzrHv4BbQK/2IaEyNnurVwZ10fnWNHmYj5NUERA7awtk2Zw==", "license": "BSD-3-Clause", "engines": { "node": ">=24" } }, "node_modules/@cleverbrush/di": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/di/-/di-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-a/itteha73X8Xy2swC4oNxrEp7IHcb7ZcheU5w36f0bw5mghcpFb9iku5m9qxx1Esas9yT/fNAddIoZXxwlMKQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/di/-/di-5.0.0.tgz", + "integrity": "sha512-4rRihALnByKriEFWQTKrQX0/h14nZdyyNI4igwg8hrzTHO//sG+nNG8m+5eSWPVnfLQWJjO6fRtriBvUV7H6/A==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" } }, "node_modules/@cleverbrush/env": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/env/-/env-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-kpRnEOT402QXYNKyHhv4lDnLIe9mdlKUTQNA+Teyk8+ZmCnwdXsI5pImeif3Yrsa+Ccbv9W2x6TLK2XDnT3EXw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/env/-/env-5.0.0.tgz", + "integrity": "sha512-HAPoizfXvXel5rm/ENjNUuf4vpJRBB8yucnb7lmzJbi8JnL9zAWMHZ4se5VA6CTyLfaooWNPVkOssjQh6kh1rQ==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/deep": "0.0.0-beta-20261004165009" + "@cleverbrush/deep": "^5.0.0" }, "engines": { "node": ">=24" }, "peerDependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0" } }, "node_modules/@cleverbrush/knex-schema": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/knex-schema/-/knex-schema-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-Rf7RSOkgJXNooq24jY4pE1rIB7n7Jlx1JWMbk4Z8Ffuy6V2VqD2ORzK+myn4hdu5c/sJVu9WtzP9h+O5u0teFw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/knex-schema/-/knex-schema-5.0.0.tgz", + "integrity": "sha512-YbwwOtYHEfBi6g3atj6O9zX7EGGXC30lHF3HhEg1bRzFT76aZd6pX5lXwj8Rypqb9rZdppJFZVYwQagAL+jVXw==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" @@ -749,21 +778,21 @@ } }, "node_modules/@cleverbrush/log": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/log/-/log-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-x50sSsDprHzxhNP5CretQJxodvF+1zP9l+KbLdawI1zrCai4ubmJsjLxb/9recZTo1fAMQqza7HpsmRwRgl2QQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/log/-/log-5.0.0.tgz", + "integrity": "sha512-+07V1V6eDwZuQNqnrqiPRn7o+iiUqMqk52043HPtwfi2ZX9wyMsGa9G/Xs9H2yGva+iV9AnUeViJzepMMch27Q==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/async": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/async": "^5.0.0", + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" }, "peerDependencies": { - "@cleverbrush/di": "0.0.0-beta-20261004165009", - "@cleverbrush/knex-clickhouse": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009" + "@cleverbrush/di": "^5.0.0", + "@cleverbrush/knex-clickhouse": "^5.0.0", + "@cleverbrush/server": "^5.0.0" }, "peerDependenciesMeta": { "@cleverbrush/di": { @@ -778,25 +807,25 @@ } }, "node_modules/@cleverbrush/mapper": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/mapper/-/mapper-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-BFS5LSQfqlWyCaRUWOHmiqOtgKC+VEuVX4GMUEvYraBEg4GU3TVD0cUTndiEF3CpeD4St4wfwtdiuuSZyedhcA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/mapper/-/mapper-5.0.0.tgz", + "integrity": "sha512-pxXKRIqhsqMJ5YYxE2hL6uvR8ej7KKaQqVtk/LUUgcmQ4R84kn1Wr3bor+d6wQU0HmLuShn2QYwpxLDef4AE1g==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" } }, "node_modules/@cleverbrush/orm": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/orm/-/orm-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-wbfDvyTmZ65gcxdRYSerRXTsEho9kDc8IojpFxi+sowsiwq7tOxDjNWzj3F8dusMZRUNG9z2UNg1nvp/QcU0Qg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/orm/-/orm-5.0.0.tgz", + "integrity": "sha512-jpIehQDK7056zq1BqIp9lKlhGAbDYqNAKgSOmkdspq+eC/HMd0+r0M9+9j5RdoRtjG5AEy/uP8RYLaQrjyL5Dg==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/knex-schema": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/knex-schema": "^5.0.0", + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" @@ -806,13 +835,13 @@ } }, "node_modules/@cleverbrush/orm-cli": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/orm-cli/-/orm-cli-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-OiR2Tp7aU8qm5k9b7XhnU8XBntcS2sImy52Mm6R08rdT3VYddyhHm/P5LeyopiDCY/GDBJgQ8IhBlm3fgBcVPg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/orm-cli/-/orm-cli-5.0.0.tgz", + "integrity": "sha512-16J2hUDcCzX5IZOthZKQnEeKvquUtMoChlsYrYezUtVTsdSB62nMytGJ8pJ8NdCMylnlu19CiHPjR5PCIA27LA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/knex-schema": "0.0.0-beta-20261004165009", + "@cleverbrush/knex-schema": "*", "tsx": "^4.19.0" }, "bin": { @@ -826,9 +855,9 @@ } }, "node_modules/@cleverbrush/otel": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/otel/-/otel-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-9bo1EvJH8xICnU7Q90UNXBP+jmkemi5GYy412v01DdeVcYRvSHu0y1WEOGJGj231DARfX1VXP5/Ep4b2Je5MLQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/otel/-/otel-5.0.0.tgz", + "integrity": "sha512-KMkRRpepnXjKxOJoI6cSJqIGyscUxJdqaWdF7GNU/1WXoKBMTx8ZjP5LrRSjum+MZFpih4kW9F002LE5n+UPIw==", "license": "BSD-3-Clause", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -849,9 +878,9 @@ "node": ">=24" }, "peerDependencies": { - "@cleverbrush/di": "0.0.0-beta-20261004165009", - "@cleverbrush/log": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009", + "@cleverbrush/di": "^5.0.0", + "@cleverbrush/log": "^5.0.0", + "@cleverbrush/server": "^5.0.0", "@opentelemetry/instrumentation-http": "^0.222.0", "@opentelemetry/instrumentation-runtime-node": "^0.28.0", "@opentelemetry/instrumentation-undici": "^0.25.0", @@ -894,13 +923,13 @@ } }, "node_modules/@cleverbrush/react-form": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/react-form/-/react-form-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-Y4xdTo6jbGJVKO5JheEqLz6jwBHaJIlnxAC2UVyjQyiT8KW4y1N7nLbaWRWeXiEdmvTtCOBzV+bNXiMmufpXdA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/react-form/-/react-form-5.0.0.tgz", + "integrity": "sha512-0WTnSfSch4PCRldKlC3r/Efvq+phKhghCEvFd/JsGkV5z6e5iw83yLoZ0AzNfidDyRqAM/fXaVZgEFg19P4leQ==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/deep": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/deep": "^5.0.0", + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" @@ -910,27 +939,27 @@ } }, "node_modules/@cleverbrush/scheduler": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/scheduler/-/scheduler-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-OgivBEOQ/cj9tnzGp3TezV2jbZ8qXajkrYjy4hURUe1pMkHVYfEzwMONajknWeBhR6Ii0N1TEwTnv0i4Gs/+Ig==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/scheduler/-/scheduler-5.0.0.tgz", + "integrity": "sha512-8Xz2KeTcQSXbT615QK8rOXWitKDa+mzWskQ/8+e0UoVElWhsTRS67OAriLso7dR1UXQ3vp+OFzvw9JqPUa6BvA==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" } }, "node_modules/@cleverbrush/scheduler-postgres": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/scheduler-postgres/-/scheduler-postgres-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-jghcAWEI51TUTVabaW/DcIIeHwPCnDNIbRde3Q4/NYX9nsD7MFs7QlRa9T3V65lq2r8AqIBAhJ6isaNVuHGHUQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/scheduler-postgres/-/scheduler-postgres-5.0.0.tgz", + "integrity": "sha512-gAM0e3o891rwZAUJ+oETP4k727dgucKUxl2Eki2PXGyRAxI12ysAJ1UInVmwYmjfpFveLJTTCWtP4pdce81/RQ==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/knex-schema": "0.0.0-beta-20261004165009", - "@cleverbrush/orm": "0.0.0-beta-20261004165009", - "@cleverbrush/scheduler": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009" + "@cleverbrush/knex-schema": "^5.0.0", + "@cleverbrush/orm": "^5.0.0", + "@cleverbrush/scheduler": "^5.0.0", + "@cleverbrush/schema": "^5.0.0" }, "engines": { "node": ">=24" @@ -941,9 +970,9 @@ } }, "node_modules/@cleverbrush/schema": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/schema/-/schema-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-fwdkCEjKbYi08sxMWwxCsIKnmKs2B3gq0iIiXLY5IlkmHvACeocQQSUbKbY7QLjAT7vZMIGCLVrPxE7zoWK+Sw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/schema/-/schema-5.0.0.tgz", + "integrity": "sha512-Vz3k57Cl0DK16jJzavREAB2lAuoqgrSG+/L0QV/eIv1TYj5yxJtuZr/kUQUzleXhBDOXdgXqXzfvwR0g00QDhQ==", "license": "BSD-3-Clause", "engines": { "node": ">=24" @@ -953,14 +982,14 @@ } }, "node_modules/@cleverbrush/server": { - "version": "0.0.0-beta-20261004165009", - "resolved": "https://registry.npmjs.org/@cleverbrush/server/-/server-0.0.0-beta-20261004165009.tgz", - "integrity": "sha512-BpOa5vgNaUfjXEb0Uf28RrRvWE4W/tsSeustwTBAufdGA2qQNOdM8zjUhjxsbcx5eJSxH320Px7f581JkS3fGg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@cleverbrush/server/-/server-5.0.0.tgz", + "integrity": "sha512-USbsxPQHTV5SuY5Wj+haaD8sCW7tJHAmgizKpC2z9MR9Y0oOAjufa9iOGZaIovjbwmw0gCuutOZzG7u/0DgRyg==", "license": "BSD-3-Clause", "dependencies": { - "@cleverbrush/auth": "0.0.0-beta-20261004165009", - "@cleverbrush/di": "0.0.0-beta-20261004165009", - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/auth": "^5.0.0", + "@cleverbrush/di": "^5.0.0", + "@cleverbrush/schema": "^5.0.0", "@fastify/busboy": "^3.2.2", "ws": "^8.22.0" }, @@ -7047,12 +7076,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", - "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", + "version": "24.19.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.2.tgz", + "integrity": "sha512-93d49wCWJkCyN87MxLpNN6KXPCwFw7bVUg79mGUV1OS40JGWwVCr8n61DXCSqz7CV6/VfPkb7xec7uP2M+QHWQ==", "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": ">=7.24.0 <7.24.7" } }, "node_modules/@types/node-telegram-bot-api": { @@ -16405,9 +16434,9 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", "license": "MIT" }, "node_modules/unified": { @@ -17369,8 +17398,8 @@ "name": "@xpenser/client", "version": "0.1.0", "dependencies": { - "@cleverbrush/client": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", + "@cleverbrush/client": "5.0.0", + "@cleverbrush/otel": "5.0.0", "@xpenser/contracts": "0.1.0" }, "devDependencies": { @@ -17382,8 +17411,8 @@ "name": "@xpenser/contracts", "version": "0.1.0", "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "5.0.0", + "@cleverbrush/server": "5.0.0" }, "devDependencies": { "tsup": "8.5.1", @@ -17405,7 +17434,7 @@ "name": "@xpenser/ui", "version": "0.1.0", "dependencies": { - "@cleverbrush/react-form": "0.0.0-beta-20261004165009", + "@cleverbrush/react-form": "5.0.0", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-label": "2.1.7", "@radix-ui/react-select": "2.2.6", @@ -17418,7 +17447,7 @@ "tailwind-merge": "2.6.0" }, "devDependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/schema": "5.0.0", "@types/react": "19.0.12", "@types/react-dom": "19.0.4", "tsup": "8.5.1", diff --git a/package.json b/package.json index 6fe6d45..0dfe34d 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@biomejs/biome": "2.4.9", "@playwright/test": "^1.60.0", "@testing-library/react": "16.3.2", - "@types/node": "22.15.3", + "@types/node": "24.19.2", "@types/react": "19.0.12", "@types/react-dom": "19.0.4", "@vitest/coverage-v8": "4.1.2", diff --git a/packages/client/package.json b/packages/client/package.json index 1defcee..cbfd7c2 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -16,8 +16,8 @@ "clean": "rm -rf dist tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/client": "0.0.0-beta-20261004165009", - "@cleverbrush/otel": "0.0.0-beta-20261004165009", + "@cleverbrush/client": "5.0.0", + "@cleverbrush/otel": "5.0.0", "@xpenser/contracts": "0.1.0" }, "devDependencies": { diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 7cb1e16..af7aa7e 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -32,8 +32,8 @@ "clean": "rm -rf dist tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009", - "@cleverbrush/server": "0.0.0-beta-20261004165009" + "@cleverbrush/schema": "5.0.0", + "@cleverbrush/server": "5.0.0" }, "devDependencies": { "tsup": "8.5.1", diff --git a/packages/ui/package.json b/packages/ui/package.json index a5c6242..f0d3c60 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -19,7 +19,7 @@ "clean": "rm -rf dist tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/react-form": "0.0.0-beta-20261004165009", + "@cleverbrush/react-form": "5.0.0", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-label": "2.1.7", "@radix-ui/react-select": "2.2.6", @@ -36,7 +36,7 @@ "react-dom": ">=19" }, "devDependencies": { - "@cleverbrush/schema": "0.0.0-beta-20261004165009", + "@cleverbrush/schema": "5.0.0", "@types/react": "19.0.12", "@types/react-dom": "19.0.4", "tsup": "8.5.1",