From 659893f00cf23ee31ec3c6123b6e7358df98b5aa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 9 Oct 2026 13:34:26 +0000 Subject: [PATCH] chore: version packages --- .changeset/callable-compiled-queries.md | 8 -- .changeset/circular-object-hashing.md | 5 - .changeset/close-rejected-subscriptions.md | 6 - .changeset/composable-typed-queries.md | 11 -- .changeset/connection-independent-queries.md | 14 --- .changeset/cors-preflight.md | 10 -- .changeset/durable-job-execution.md | 28 ----- .changeset/immutable-query-major.md | 31 ----- ...ular-implementations-and-error-policies.md | 9 -- .changeset/object-storage-s3.md | 13 --- .changeset/polymorphic-write-lifecycle.md | 19 --- .changeset/preserve-column-default-changes.md | 9 -- .../projection-aware-synchronous-mapping.md | 23 ---- .changeset/property-definition-navigation.md | 14 --- .changeset/schema-aware-read-predicates.md | 10 -- .changeset/schema-boundaries.md | 13 --- .changeset/secure-v5-release-readiness.md | 32 ------ .changeset/server-form-validation.md | 10 -- .changeset/subscription-empty-history.md | 5 - .changeset/typed-idempotent-operations.md | 11 -- .changeset/typed-multipart-json-documents.md | 20 ---- libs/async/CHANGELOG.md | 21 ++++ libs/async/package.json | 2 +- libs/auth/CHANGELOG.md | 30 +++++ libs/auth/package.json | 4 +- libs/benchmarks/package.json | 2 +- libs/client/CHANGELOG.md | 61 ++++++++++ libs/client/package.json | 6 +- libs/deep/CHANGELOG.md | 30 +++++ libs/deep/package.json | 2 +- libs/di/CHANGELOG.md | 48 ++++++++ libs/di/package.json | 4 +- libs/env/CHANGELOG.md | 33 ++++++ libs/env/package.json | 6 +- libs/knex-clickhouse/CHANGELOG.md | 30 +++++ libs/knex-clickhouse/package.json | 6 +- libs/knex-schema/CHANGELOG.md | 108 ++++++++++++++++++ libs/knex-schema/package.json | 4 +- libs/log/CHANGELOG.md | 40 +++++++ libs/log/package.json | 12 +- libs/mapper/CHANGELOG.md | 53 +++++++++ libs/mapper/package.json | 4 +- libs/orm-cli/CHANGELOG.md | 36 ++++++ libs/orm-cli/package.json | 2 +- libs/orm/CHANGELOG.md | 106 +++++++++++++++++ libs/orm/package.json | 6 +- libs/otel/CHANGELOG.md | 37 ++++++ libs/otel/package.json | 8 +- libs/react-form/CHANGELOG.md | 39 +++++++ libs/react-form/package.json | 6 +- libs/scheduler-postgres/CHANGELOG.md | 57 +++++++++ libs/scheduler-postgres/package.json | 10 +- libs/scheduler/CHANGELOG.md | 53 +++++++++ libs/scheduler/package.json | 4 +- libs/schema-json/CHANGELOG.md | 45 ++++++++ libs/schema-json/package.json | 4 +- libs/schema/CHANGELOG.md | 49 ++++++++ libs/schema/package.json | 4 +- libs/server-integration-tests/package.json | 8 +- libs/server-openapi/CHANGELOG.md | 66 +++++++++++ libs/server-openapi/package.json | 10 +- libs/server/CHANGELOG.md | 73 ++++++++++++ libs/server/package.json | 8 +- libs/storage-s3/CHANGELOG.md | 30 +++++ libs/storage-s3/package.json | 4 +- libs/storage/CHANGELOG.md | 24 ++++ libs/storage/package.json | 2 +- 67 files changed, 1133 insertions(+), 365 deletions(-) delete mode 100644 .changeset/callable-compiled-queries.md delete mode 100644 .changeset/circular-object-hashing.md delete mode 100644 .changeset/close-rejected-subscriptions.md delete mode 100644 .changeset/composable-typed-queries.md delete mode 100644 .changeset/connection-independent-queries.md delete mode 100644 .changeset/cors-preflight.md delete mode 100644 .changeset/durable-job-execution.md delete mode 100644 .changeset/immutable-query-major.md delete mode 100644 .changeset/modular-implementations-and-error-policies.md delete mode 100644 .changeset/object-storage-s3.md delete mode 100644 .changeset/polymorphic-write-lifecycle.md delete mode 100644 .changeset/preserve-column-default-changes.md delete mode 100644 .changeset/projection-aware-synchronous-mapping.md delete mode 100644 .changeset/property-definition-navigation.md delete mode 100644 .changeset/schema-aware-read-predicates.md delete mode 100644 .changeset/schema-boundaries.md delete mode 100644 .changeset/secure-v5-release-readiness.md delete mode 100644 .changeset/server-form-validation.md delete mode 100644 .changeset/subscription-empty-history.md delete mode 100644 .changeset/typed-idempotent-operations.md delete mode 100644 .changeset/typed-multipart-json-documents.md create mode 100644 libs/scheduler-postgres/CHANGELOG.md create mode 100644 libs/storage-s3/CHANGELOG.md create mode 100644 libs/storage/CHANGELOG.md diff --git a/.changeset/callable-compiled-queries.md b/.changeset/callable-compiled-queries.md deleted file mode 100644 index 16c32fd0..00000000 --- a/.changeset/callable-compiled-queries.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@cleverbrush/knex-schema': minor -'@cleverbrush/orm': minor ---- - -Add `parameter('name')` for callable PostgreSQL SELECT templates with schema-inferred positional arguments. Compile SQL, binding slots and decoding once on first invocation or `.toSQL(...)`; reuse them with independent values on later calls. `.query(...)` returns an ordinary composable bound reader. - -Support repeated names, grouped filters, fixed membership/range slots, alias joins, relation and STI/CTI customizers, and caller-owned transactions. Preserve storage types, null comparison semantics, result schemas, property navigation, and ORM identity tracking. Reject unsupported placeholder positions and unbound terminals or writes before execution. diff --git a/.changeset/circular-object-hashing.md b/.changeset/circular-object-hashing.md deleted file mode 100644 index cef64d69..00000000 --- a/.changeset/circular-object-hashing.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@cleverbrush/deep': patch ---- - -Prevent circular object references from overflowing the stack during internal object hashing while preserving acyclic hash results. diff --git a/.changeset/close-rejected-subscriptions.md b/.changeset/close-rejected-subscriptions.md deleted file mode 100644 index 5d639d76..00000000 --- a/.changeset/close-rejected-subscriptions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@cleverbrush/server': patch ---- - -Close WebSocket subscriptions when middleware rejects the request without -calling the next handler, preventing idle unauthorized connections. diff --git a/.changeset/composable-typed-queries.md b/.changeset/composable-typed-queries.md deleted file mode 100644 index 1b396dd7..00000000 --- a/.changeset/composable-typed-queries.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@cleverbrush/knex-schema': minor -'@cleverbrush/orm': minor ---- - -Add typed flat joined projections, aggregate expressions and scalar helpers -with optional output schemas, and composite keyset pagination. Preserve parent -ordering during eager loading and infer related-query customization types. -Existing aggregate and single-column cursor APIs remain available unchanged. -Export reusable SQL identifier validation, preserve schema inference throughout -bound query factories, and document the public query/ORM APIs for IDE tooltips. diff --git a/.changeset/connection-independent-queries.md b/.changeset/connection-independent-queries.md deleted file mode 100644 index 9a25aba1..00000000 --- a/.changeset/connection-independent-queries.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@cleverbrush/knex-schema': minor -'@cleverbrush/orm': minor ---- - -Add immutable connection-independent query definitions with `query(Schema)`. -Define typed reads once and supply a Knex connection or transaction through -`definition(knex, ...values)`, `.query(knex, ...values)` or `.toSQL(knex, ...values)`. - -Preserve inferred parameters, projections, relation/variant schemas and existing -connection-first APIs. Capture selectors/scopes/customizers once, compile SELECTs -lazily per definition and actual Knex instance, and bind ordinary readers before -native SQL composition, pagination or supported writes. Include runtime, -declaration and PostgreSQL integration coverage and multi-file usage guidance. diff --git a/.changeset/cors-preflight.md b/.changeset/cors-preflight.md deleted file mode 100644 index 02aaf745..00000000 --- a/.changeset/cors-preflight.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@cleverbrush/server": minor ---- - -Add opt-in server-wide CORS through `ServerBuilder.useCors()` and -`ServerCorsOptions`. Handle route-aware preflights before authentication while -preserving the normal pipeline for actual requests. Support exact origins, -origin predicates, explicit request/response header policies, credentials and -preflight cache duration. Reject disallowed origins before handlers and finalize -CORS headers per physical response, including errors and cache/idempotency replays. diff --git a/.changeset/durable-job-execution.md b/.changeset/durable-job-execution.md deleted file mode 100644 index 8fac4c55..00000000 --- a/.changeset/durable-job-execution.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -"@cleverbrush/scheduler": major -"@cleverbrush/scheduler-postgres": major ---- - -Redesign the scheduler for versioned immediate, delayed and recurring jobs, -typed separate handlers, durable ordered progress and fenced worker leases. -Add an independently installed PostgreSQL adapter using Framework ORM and -knex-schema, explicit migrations, transactional enqueue and restart recovery. - -Retries are opt-in and rerun whole handlers. Calendar triggers use explicit UTC -or IANA zones with persisted cursors and missed/overlap policies. See the -scheduler v4.x-to-v5 migration guide for the breaking API and rollout steps. -The adapter joins the fixed Framework release group. - -Retain schema-driven minute/day/week/month/year definitions and their -discriminated Schedule type, exposing individual schemas and the Schemas facade. -Normalize recurrence defaults, dates and weekday order before fingerprinting; -unchanged registrations retain their cursor and start anchor. Preserve the -one-based calculator index and accept the deprecated maxOccurences spelling -while rejecting ambiguous dual spelling. Name the explicit persistence option -storageRepository. Derive PostgreSQL row and entity types from schema definitions -without parallel hand-written row types. - -Use native Date/Intl calendar calculations without an additional date-time -runtime dependency. Preserve DST-gap skipping and earlier-fold selection, -including non-hour transitions and skipped calendar dates, independently of -the host time zone. Bound minute schedules to the representable Date range. diff --git a/.changeset/immutable-query-major.md b/.changeset/immutable-query-major.md deleted file mode 100644 index 631bb9fe..00000000 --- a/.changeset/immutable-query-major.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -"@cleverbrush/async": major -"@cleverbrush/auth": major -"@cleverbrush/client": major -"@cleverbrush/deep": major -"@cleverbrush/di": major -"@cleverbrush/env": major -"@cleverbrush/knex-clickhouse": major -"@cleverbrush/knex-schema": major -"@cleverbrush/log": major -"@cleverbrush/mapper": major -"@cleverbrush/orm-cli": major -"@cleverbrush/orm": major -"@cleverbrush/otel": major -"@cleverbrush/react-form": major -"@cleverbrush/scheduler": major -"@cleverbrush/schema-json": major -"@cleverbrush/schema": major -"@cleverbrush/server-openapi": major -"@cleverbrush/server": major ---- - -Make Framework query builders immutable and infer row schemas automatically. - -Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. - -All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. - -### Migrating from v4.x to v5 - -Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. diff --git a/.changeset/modular-implementations-and-error-policies.md b/.changeset/modular-implementations-and-error-policies.md deleted file mode 100644 index 2f8176aa..00000000 --- a/.changeset/modular-implementations-and-error-policies.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@cleverbrush/server": minor ---- - -Add immutable, contract-bound implementation scopes and feature-module composition -with complete operation coverage, cross-file handler inference, shared/per-operation -DI, and unchanged HTTP/subscription registration. Add reusable, endpoint-checked -error policies and a standalone handler wrapper. Existing registration APIs and -the browser-safe contract entry point remain supported. diff --git a/.changeset/object-storage-s3.md b/.changeset/object-storage-s3.md deleted file mode 100644 index a3aa19cc..00000000 --- a/.changeset/object-storage-s3.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@cleverbrush/storage": minor -"@cleverbrush/storage-s3": minor ---- - -Add provider-neutral object storage contracts, portable errors and safe public URL -mapping. Add an S3-compatible adapter with explicit custom endpoints, credentials, -addressing style, key prefixes and independently configured public asset URLs. -Support streamed reads, bounded multipart writes, metadata-preserving copies, -idempotent deletion, cancellation and asynchronous disposal through `await using` -on the shared storage contract. Include shared contract -coverage, real Garage integration tests, and configuration examples for hosted -and self-hosted services. diff --git a/.changeset/polymorphic-write-lifecycle.md b/.changeset/polymorphic-write-lifecycle.md deleted file mode 100644 index f9765a37..00000000 --- a/.changeset/polymorphic-write-lifecycle.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@cleverbrush/orm": major -"@cleverbrush/knex-schema": patch ---- - -Honor hooks, timestamps and base-schema soft deletion in explicit variant writes -and tracked polymorphic saves, for single-table and class-table inheritance. -Add `ofVariant(key).restore()` and `hardDelete()`; CTI soft deletion retains the -child row, while permanent deletion removes both rows atomically. - -**Migration:** Variant `delete()` now respects the base schema's `.softDelete()`. -Use `hardDelete()` for physical removal, and `withDeleted()` to include hidden -rows. Review lifecycle hooks that now run, and remove identity/discriminator/join -keys from update patches. This change is part of the coordinated v5 major release. - -Capture mutation targets inside the write transaction, preserve query restrictions -and transaction bindings, and use savepoints for caller-owned transactions. Fix -base/variant column mapping and visibility of extension-managed deletion columns; -retain exact numeric keys and tracked optimistic-concurrency/rollback semantics. diff --git a/.changeset/preserve-column-default-changes.md b/.changeset/preserve-column-default-changes.md deleted file mode 100644 index af45c197..00000000 --- a/.changeset/preserve-column-default-changes.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@cleverbrush/knex-schema': patch ---- - -Apply and generate column default changes without dropping, retyping or changing -the nullability of the existing column. Removing a default executes DROP DEFAULT; -setting one executes SET DEFAULT with safely quoted values (including question -marks and backslashes) and support for explicit SQL expressions. Generated down -migrations restore the original default instead of assuming a timestamp column. diff --git a/.changeset/projection-aware-synchronous-mapping.md b/.changeset/projection-aware-synchronous-mapping.md deleted file mode 100644 index 647a4c89..00000000 --- a/.changeset/projection-aware-synchronous-mapping.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -"@cleverbrush/mapper": minor -"@cleverbrush/knex-schema": minor -"@cleverbrush/orm": minor -"@cleverbrush/schema": minor -"@cleverbrush/di": minor ---- - -Add opt-in immutable, detached PostgreSQL reads with projection-aware runtime -schemas, precise decimal/bigint decoding, nested relation graphs and explicit -STI/CTI branch schemas. Reuse result schemas directly in separately defined -application mappings without duplicating projection schemas. - -Add `getSyncMapper()` with synchronous eligibility inferred through the existing -`configure()` API, completeness checks, nested mapping propagation and runtime -thenable guards. Existing queries and asynchronous mapping behavior are unchanged. - -Add application-agnostic typed metadata extension methods that retain metadata -through immutable chains. Use these in database extensions without modifying -global schema prototypes. - -Preserve typed function-schema compatibility in dependency injection when a -function declares its return schema. diff --git a/.changeset/property-definition-navigation.md b/.changeset/property-definition-navigation.md deleted file mode 100644 index f1f16c32..00000000 --- a/.changeset/property-definition-navigation.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@cleverbrush/knex-schema': patch -'@cleverbrush/orm': patch -'@cleverbrush/mapper': patch -'@cleverbrush/schema-json': patch -'@cleverbrush/server': patch -'@cleverbrush/deep': patch ---- - -Preserve original property declarations and JSDoc through derived types so -editors can navigate to definitions and show property documentation. This covers -query selectors, rows, projections and write payloads; declared relation includes; -mapper targets; JSON Schema inferred values; composed API groups and injected -services; and merged object properties. Runtime behavior is unchanged. diff --git a/.changeset/schema-aware-read-predicates.md b/.changeset/schema-aware-read-predicates.md deleted file mode 100644 index c105dbec..00000000 --- a/.changeset/schema-aware-read-predicates.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@cleverbrush/knex-schema": minor ---- - -Add shape-preserving grouped AND/OR predicates, captured IN/EXISTS subqueries, -bound raw predicates and ordering, and typed SQL column references to ordinary -and aliased schema-aware readers. These capabilities also work in ordinary ORM -reads and nested relation customizers while retaining immutable query plans and -stable row-schema identity. Group callbacks are synchronous and predicate-only; -unrestricted raw query mutation remains unavailable. diff --git a/.changeset/schema-boundaries.md b/.changeset/schema-boundaries.md deleted file mode 100644 index 199781d1..00000000 --- a/.changeset/schema-boundaries.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@cleverbrush/schema": minor -"@cleverbrush/schema-json": minor -"@cleverbrush/server-openapi": minor ---- - -Add optional-aware fallbacks and preprocessing, and automatic named schema -references through ordinary immutable use-site modifiers, without a wrapper API. -Shape, validation-rule, default, fallback and extension changes clear inherited -names; apply schemaName after those edits to establish a new named definition. -Preserve one canonical definition in JSON -Schema, OpenAPI and AsyncAPI with strict name collision checks. Keep existing -type inference and optional null acceptance unchanged. diff --git a/.changeset/secure-v5-release-readiness.md b/.changeset/secure-v5-release-readiness.md deleted file mode 100644 index ad8bff3f..00000000 --- a/.changeset/secure-v5-release-readiness.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@cleverbrush/async': major -'@cleverbrush/auth': major -'@cleverbrush/client': major -'@cleverbrush/deep': major -'@cleverbrush/di': major -'@cleverbrush/env': major -'@cleverbrush/knex-clickhouse': major -'@cleverbrush/knex-schema': major -'@cleverbrush/log': major -'@cleverbrush/mapper': major -'@cleverbrush/orm': major -'@cleverbrush/orm-cli': major -'@cleverbrush/otel': major -'@cleverbrush/react-form': major -'@cleverbrush/scheduler': major -'@cleverbrush/scheduler-postgres': major -'@cleverbrush/schema': major -'@cleverbrush/schema-json': major -'@cleverbrush/server': major -'@cleverbrush/server-openapi': major -'@cleverbrush/storage': major -'@cleverbrush/storage-s3': major ---- - -Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. - -Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. - -Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. - -Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. diff --git a/.changeset/server-form-validation.md b/.changeset/server-form-validation.md deleted file mode 100644 index 55850f3a..00000000 --- a/.changeset/server-form-validation.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@cleverbrush/schema': minor -'@cleverbrush/server': minor -'@cleverbrush/client': minor -'@cleverbrush/react-form': minor ---- - -Preserve structured server validation issues through typed clients and form -submissions. Add transport-independent external form issues, typed indexed array -fields, and precise indexed validation paths without changing existing form APIs. diff --git a/.changeset/subscription-empty-history.md b/.changeset/subscription-empty-history.md deleted file mode 100644 index 47e68729..00000000 --- a/.changeset/subscription-empty-history.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@cleverbrush/client': patch ---- - -Respect maxEvents: 0 in useSubscription by retaining only lastEvent and leaving the event history empty. diff --git a/.changeset/typed-idempotent-operations.md b/.changeset/typed-idempotent-operations.md deleted file mode 100644 index 9c55df32..00000000 --- a/.changeset/typed-idempotent-operations.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@cleverbrush/server": minor -"@cleverbrush/client": minor -"@cleverbrush/server-openapi": minor ---- - -Add contract-declared mutation replay with typed async request preparation, -explicit authorization scopes, and consistent endpoint error policies. Generate -client keys and coordinate HTTP retries/batching from the contract without -changing ordinary client calls. Document replay headers and framework errors in -OpenAPI while preserving domain response schemas. diff --git a/.changeset/typed-multipart-json-documents.md b/.changeset/typed-multipart-json-documents.md deleted file mode 100644 index 712a0a28..00000000 --- a/.changeset/typed-multipart-json-documents.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@cleverbrush/server": minor -"@cleverbrush/client": minor -"@cleverbrush/server-openapi": minor -"@cleverbrush/knex-schema": minor -"@cleverbrush/orm": minor ---- - -Add schema-based single and multiple file upload contracts, typed multipart client -serialization, and matching OpenAPI schemas. Enforce multipart body, file, field, -and part limits, reject truncated or duplicate singleton uploads, and support -file-only endpoints. Existing options-only uploads retain their single-file -shape and explicit MIME rejection reporting. - -Add lossless JSONB object reads and writes using native object schemas with -`.acceptUnknownProps().jsonb()`. Preserve nested extension data through returning -rows and projections, validate JSON extensions in the database layer, align -nullable object column DDL with reads, and track nested edits independently in -the ORM. Fix the PostgreSQL -upsert returning path exercised by document round trips. diff --git a/libs/async/CHANGELOG.md b/libs/async/CHANGELOG.md index 21115472..0fee2586 100644 --- a/libs/async/CHANGELOG.md +++ b/libs/async/CHANGELOG.md @@ -1,5 +1,26 @@ # @cleverbrush/async +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + ## 4.5.0 ## 4.4.3 diff --git a/libs/async/package.json b/libs/async/package.json index 9b9718d5..05298107 100644 --- a/libs/async/package.json +++ b/libs/async/package.json @@ -41,5 +41,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/auth/CHANGELOG.md b/libs/auth/CHANGELOG.md index 2fbbacd7..53975ce3 100644 --- a/libs/auth/CHANGELOG.md +++ b/libs/auth/CHANGELOG.md @@ -1,5 +1,35 @@ # @cleverbrush/auth +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/auth/package.json b/libs/auth/package.json index 121c0c0e..2a641cee 100644 --- a/libs/auth/package.json +++ b/libs/auth/package.json @@ -5,7 +5,7 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0" + "@cleverbrush/schema": "^5.0.0" }, "description": "Transport-agnostic authentication & authorization — JWT, cookies, role-based policies, schema-typed principals", "files": [ @@ -46,5 +46,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/benchmarks/package.json b/libs/benchmarks/package.json index 7196cc04..beaf2ee6 100644 --- a/libs/benchmarks/package.json +++ b/libs/benchmarks/package.json @@ -9,7 +9,7 @@ "bench:json": "vitest bench --run --reporter=json" }, "dependencies": { - "@cleverbrush/schema": "^4.0.0", + "@cleverbrush/schema": "^5.0.0", "joi": "^17.13.7", "yup": "^1.6.1", "zod": "^3.24.4" diff --git a/libs/client/CHANGELOG.md b/libs/client/CHANGELOG.md index 96aff3f4..572690be 100644 --- a/libs/client/CHANGELOG.md +++ b/libs/client/CHANGELOG.md @@ -1,5 +1,66 @@ # @cleverbrush/client +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- 47133eb: Preserve structured server validation issues through typed clients and form + submissions. Add transport-independent external form issues, typed indexed array + fields, and precise indexed validation paths without changing existing form APIs. +- 32240e4: Add contract-declared mutation replay with typed async request preparation, + explicit authorization scopes, and consistent endpoint error policies. Generate + client keys and coordinate HTTP retries/batching from the contract without + changing ordinary client calls. Document replay headers and framework errors in + OpenAPI while preserving domain response schemas. +- e788a0d: Add schema-based single and multiple file upload contracts, typed multipart client + serialization, and matching OpenAPI schemas. Enforce multipart body, file, field, + and part limits, reject truncated or duplicate singleton uploads, and support + file-only endpoints. Existing options-only uploads retain their single-file + shape and explicit MIME rejection reporting. + + Add lossless JSONB object reads and writes using native object schemas with + `.acceptUnknownProps().jsonb()`. Preserve nested extension data through returning + rows and projections, validate JSON extensions in the database layer, align + nullable object column DDL with reads, and track nested edits independently in + the ORM. Fix the PostgreSQL + upsert returning path exercised by document round trips. + +### Patch Changes + +- 6d7e982: Respect maxEvents: 0 in useSubscription by retaining only lastEvent and leaving the event history empty. +- Updated dependencies [6d7e982] +- Updated dependencies [54a3d43] +- Updated dependencies [d916566] +- Updated dependencies [0a08509] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] +- Updated dependencies [32240e4] +- Updated dependencies [e788a0d] + - @cleverbrush/server@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Minor Changes diff --git a/libs/client/package.json b/libs/client/package.json index 1d71611d..1afd73fb 100644 --- a/libs/client/package.json +++ b/libs/client/package.json @@ -5,8 +5,8 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0", - "@cleverbrush/server": "^4.5.0" + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/server": "^5.0.0" }, "devDependencies": { "@tanstack/react-query": "^5.75.0", @@ -105,5 +105,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/deep/CHANGELOG.md b/libs/deep/CHANGELOG.md index cb4d2b32..9792e0e5 100644 --- a/libs/deep/CHANGELOG.md +++ b/libs/deep/CHANGELOG.md @@ -1,5 +1,35 @@ # @cleverbrush/deep +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- 6d7e982: Prevent circular object references from overflowing the stack during internal object hashing while preserving acyclic hash results. +- efe2f2f: Preserve original property declarations and JSDoc through derived types so + editors can navigate to definitions and show property documentation. This covers + query selectors, rows, projections and write payloads; declared relation includes; + mapper targets; JSON Schema inferred values; composed API groups and injected + services; and merged object properties. Runtime behavior is unchanged. + ## 4.5.0 ### Minor Changes diff --git a/libs/deep/package.json b/libs/deep/package.json index 9383ac01..15466ea2 100644 --- a/libs/deep/package.json +++ b/libs/deep/package.json @@ -40,5 +40,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/di/CHANGELOG.md b/libs/di/CHANGELOG.md index cbc8e632..77604795 100644 --- a/libs/di/CHANGELOG.md +++ b/libs/di/CHANGELOG.md @@ -1,5 +1,53 @@ # @cleverbrush/di +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- a90a491: Add opt-in immutable, detached PostgreSQL reads with projection-aware runtime + schemas, precise decimal/bigint decoding, nested relation graphs and explicit + STI/CTI branch schemas. Reuse result schemas directly in separately defined + application mappings without duplicating projection schemas. + + Add `getSyncMapper()` with synchronous eligibility inferred through the existing + `configure()` API, completeness checks, nested mapping propagation and runtime + thenable guards. Existing queries and asynchronous mapping behavior are unchanged. + + Add application-agnostic typed metadata extension methods that retain metadata + through immutable chains. Use these in database extensions without modifying + global schema prototypes. + + Preserve typed function-schema compatibility in dependency injection when a + function declares its return schema. + +### Patch Changes + +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/di/package.json b/libs/di/package.json index fa26069a..0ef1b70c 100644 --- a/libs/di/package.json +++ b/libs/di/package.json @@ -5,7 +5,7 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0" + "@cleverbrush/schema": "^5.0.0" }, "description": ".NET-style dependency injection container for TypeScript — schema-driven service registration, three lifetimes, function injection", "files": [ @@ -46,5 +46,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/env/CHANGELOG.md b/libs/env/CHANGELOG.md index 23797a56..f39767e4 100644 --- a/libs/env/CHANGELOG.md +++ b/libs/env/CHANGELOG.md @@ -1,5 +1,38 @@ # @cleverbrush/env +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [6d7e982] +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/deep@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/env/package.json b/libs/env/package.json index 1e575299..082eb60c 100644 --- a/libs/env/package.json +++ b/libs/env/package.json @@ -5,10 +5,10 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/deep": "^4.5.0" + "@cleverbrush/deep": "^5.0.0" }, "peerDependencies": { - "@cleverbrush/schema": "^4.0.0" + "@cleverbrush/schema": "^5.0.0" }, "description": "Type-safe environment variable parsing with @cleverbrush/schema — validated, coerced, structured configs from process.env", "files": [ @@ -54,5 +54,5 @@ "@types/node": "^25.4.0" }, "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/knex-clickhouse/CHANGELOG.md b/libs/knex-clickhouse/CHANGELOG.md index b94f6427..8994afc3 100644 --- a/libs/knex-clickhouse/CHANGELOG.md +++ b/libs/knex-clickhouse/CHANGELOG.md @@ -1,5 +1,35 @@ # @cleverbrush/knex-clickhouse +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [6d7e982] +- Updated dependencies [d916566] +- Updated dependencies [efe2f2f] +- Updated dependencies [c5b4dbc] + - @cleverbrush/deep@5.0.0 + - @cleverbrush/async@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/knex-clickhouse/package.json b/libs/knex-clickhouse/package.json index 2ed2a671..d9569d61 100644 --- a/libs/knex-clickhouse/package.json +++ b/libs/knex-clickhouse/package.json @@ -5,8 +5,8 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/async": "^4.5.0", - "@cleverbrush/deep": "^4.5.0", + "@cleverbrush/async": "^5.0.0", + "@cleverbrush/deep": "^5.0.0", "@clickhouse/client": "^1.18.2" }, "peerDependencies": { @@ -48,5 +48,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/knex-schema/CHANGELOG.md b/libs/knex-schema/CHANGELOG.md index 727d2ee0..c2e77012 100644 --- a/libs/knex-schema/CHANGELOG.md +++ b/libs/knex-schema/CHANGELOG.md @@ -1,5 +1,113 @@ # @cleverbrush/knex-schema +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- e43b72f: Add `parameter('name')` for callable PostgreSQL SELECT templates with schema-inferred positional arguments. Compile SQL, binding slots and decoding once on first invocation or `.toSQL(...)`; reuse them with independent values on later calls. `.query(...)` returns an ordinary composable bound reader. + + Support repeated names, grouped filters, fixed membership/range slots, alias joins, relation and STI/CTI customizers, and caller-owned transactions. Preserve storage types, null comparison semantics, result schemas, property navigation, and ORM identity tracking. Reject unsupported placeholder positions and unbound terminals or writes before execution. +- 6d3aecf: Add typed flat joined projections, aggregate expressions and scalar helpers + with optional output schemas, and composite keyset pagination. Preserve parent + ordering during eager loading and infer related-query customization types. + Existing aggregate and single-column cursor APIs remain available unchanged. + Export reusable SQL identifier validation, preserve schema inference throughout + bound query factories, and document the public query/ORM APIs for IDE tooltips. +- cb5d622: Add immutable connection-independent query definitions with `query(Schema)`. + Define typed reads once and supply a Knex connection or transaction through + `definition(knex, ...values)`, `.query(knex, ...values)` or `.toSQL(knex, ...values)`. + + Preserve inferred parameters, projections, relation/variant schemas and existing + connection-first APIs. Capture selectors/scopes/customizers once, compile SELECTs + lazily per definition and actual Knex instance, and bind ordinary readers before + native SQL composition, pagination or supported writes. Include runtime, + declaration and PostgreSQL integration coverage and multi-file usage guidance. +- a90a491: Add opt-in immutable, detached PostgreSQL reads with projection-aware runtime + schemas, precise decimal/bigint decoding, nested relation graphs and explicit + STI/CTI branch schemas. Reuse result schemas directly in separately defined + application mappings without duplicating projection schemas. + + Add `getSyncMapper()` with synchronous eligibility inferred through the existing + `configure()` API, completeness checks, nested mapping propagation and runtime + thenable guards. Existing queries and asynchronous mapping behavior are unchanged. + + Add application-agnostic typed metadata extension methods that retain metadata + through immutable chains. Use these in database extensions without modifying + global schema prototypes. + + Preserve typed function-schema compatibility in dependency injection when a + function declares its return schema. +- 81c2de4: Add shape-preserving grouped AND/OR predicates, captured IN/EXISTS subqueries, + bound raw predicates and ordering, and typed SQL column references to ordinary + and aliased schema-aware readers. These capabilities also work in ordinary ORM + reads and nested relation customizers while retaining immutable query plans and + stable row-schema identity. Group callbacks are synchronous and predicate-only; + unrestricted raw query mutation remains unavailable. +- e788a0d: Add schema-based single and multiple file upload contracts, typed multipart client + serialization, and matching OpenAPI schemas. Enforce multipart body, file, field, + and part limits, reject truncated or duplicate singleton uploads, and support + file-only endpoints. Existing options-only uploads retain their single-file + shape and explicit MIME rejection reporting. + + Add lossless JSONB object reads and writes using native object schemas with + `.acceptUnknownProps().jsonb()`. Preserve nested extension data through returning + rows and projections, validate JSON extensions in the database layer, align + nullable object column DDL with reads, and track nested edits independently in + the ORM. Fix the PostgreSQL + upsert returning path exercised by document round trips. + +### Patch Changes + +- d31323a: Honor hooks, timestamps and base-schema soft deletion in explicit variant writes + and tracked polymorphic saves, for single-table and class-table inheritance. + Add `ofVariant(key).restore()` and `hardDelete()`; CTI soft deletion retains the + child row, while permanent deletion removes both rows atomically. + + **Migration:** Variant `delete()` now respects the base schema's `.softDelete()`. + Use `hardDelete()` for physical removal, and `withDeleted()` to include hidden + rows. Review lifecycle hooks that now run, and remove identity/discriminator/join + keys from update patches. This change is part of the coordinated v5 major release. + + Capture mutation targets inside the write transaction, preserve query restrictions + and transaction bindings, and use savepoints for caller-owned transactions. Fix + base/variant column mapping and visibility of extension-managed deletion columns; + retain exact numeric keys and tracked optimistic-concurrency/rollback semantics. +- 6d7e982: Apply and generate column default changes without dropping, retyping or changing + the nullability of the existing column. Removing a default executes DROP DEFAULT; + setting one executes SET DEFAULT with safely quoted values (including question + marks and backslashes) and support for explicit SQL expressions. Generated down + migrations restore the original default instead of assuming a timestamp column. +- efe2f2f: Preserve original property declarations and JSDoc through derived types so + editors can navigate to definitions and show property documentation. This covers + query selectors, rows, projections and write payloads; declared relation includes; + mapper targets; JSON Schema inferred values; composed API groups and injected + services; and merged object properties. Runtime behavior is unchanged. +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/knex-schema/package.json b/libs/knex-schema/package.json index 2c774b61..2219eb4f 100644 --- a/libs/knex-schema/package.json +++ b/libs/knex-schema/package.json @@ -5,7 +5,7 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0" + "@cleverbrush/schema": "^5.0.0" }, "peerDependencies": { "knex": ">=3.1.0" @@ -55,5 +55,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/log/CHANGELOG.md b/libs/log/CHANGELOG.md index d0459a47..f6c4c7e7 100644 --- a/libs/log/CHANGELOG.md +++ b/libs/log/CHANGELOG.md @@ -1,5 +1,45 @@ # @cleverbrush/log +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [6d7e982] +- Updated dependencies [54a3d43] +- Updated dependencies [d916566] +- Updated dependencies [0a08509] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] +- Updated dependencies [32240e4] +- Updated dependencies [e788a0d] + - @cleverbrush/server@5.0.0 + - @cleverbrush/async@5.0.0 + - @cleverbrush/di@5.0.0 + - @cleverbrush/knex-clickhouse@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/log/package.json b/libs/log/package.json index 081a65ce..c2f5f741 100644 --- a/libs/log/package.json +++ b/libs/log/package.json @@ -44,13 +44,13 @@ "clean": "rm -rf dist tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0", - "@cleverbrush/async": "^4.5.0" + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/async": "^5.0.0" }, "peerDependencies": { - "@cleverbrush/di": "^4.0.0", - "@cleverbrush/server": "^4.0.0", - "@cleverbrush/knex-clickhouse": "^4.0.0" + "@cleverbrush/di": "^5.0.0", + "@cleverbrush/server": "^5.0.0", + "@cleverbrush/knex-clickhouse": "^5.0.0" }, "peerDependenciesMeta": { "@cleverbrush/di": { @@ -71,5 +71,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/mapper/CHANGELOG.md b/libs/mapper/CHANGELOG.md index ac903bae..0d7090e1 100644 --- a/libs/mapper/CHANGELOG.md +++ b/libs/mapper/CHANGELOG.md @@ -1,5 +1,58 @@ # @cleverbrush/mapper +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- a90a491: Add opt-in immutable, detached PostgreSQL reads with projection-aware runtime + schemas, precise decimal/bigint decoding, nested relation graphs and explicit + STI/CTI branch schemas. Reuse result schemas directly in separately defined + application mappings without duplicating projection schemas. + + Add `getSyncMapper()` with synchronous eligibility inferred through the existing + `configure()` API, completeness checks, nested mapping propagation and runtime + thenable guards. Existing queries and asynchronous mapping behavior are unchanged. + + Add application-agnostic typed metadata extension methods that retain metadata + through immutable chains. Use these in database extensions without modifying + global schema prototypes. + + Preserve typed function-schema compatibility in dependency injection when a + function declares its return schema. + +### Patch Changes + +- efe2f2f: Preserve original property declarations and JSDoc through derived types so + editors can navigate to definitions and show property documentation. This covers + query selectors, rows, projections and write payloads; declared relation includes; + mapper targets; JSON Schema inferred values; composed API groups and injected + services; and merged object properties. Runtime behavior is unchanged. +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/mapper/package.json b/libs/mapper/package.json index 7f03c05e..87705ba7 100644 --- a/libs/mapper/package.json +++ b/libs/mapper/package.json @@ -5,7 +5,7 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0" + "@cleverbrush/schema": "^5.0.0" }, "description": "Type-safe, schema-driven object mapper for @cleverbrush/schema — compile-time completeness, selector-based field mapping, auto-mapping", "files": [ @@ -45,5 +45,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/orm-cli/CHANGELOG.md b/libs/orm-cli/CHANGELOG.md index b7e29510..de3264b5 100644 --- a/libs/orm-cli/CHANGELOG.md +++ b/libs/orm-cli/CHANGELOG.md @@ -1,5 +1,41 @@ # @cleverbrush/orm-cli +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [e43b72f] +- Updated dependencies [6d3aecf] +- Updated dependencies [cb5d622] +- Updated dependencies [d916566] +- Updated dependencies [d31323a] +- Updated dependencies [6d7e982] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [81c2de4] +- Updated dependencies [c5b4dbc] +- Updated dependencies [e788a0d] + - @cleverbrush/knex-schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/orm-cli/package.json b/libs/orm-cli/package.json index 81ac2341..aaeb262f 100644 --- a/libs/orm-cli/package.json +++ b/libs/orm-cli/package.json @@ -51,5 +51,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/orm/CHANGELOG.md b/libs/orm/CHANGELOG.md index 1e1092ba..35ee06e8 100644 --- a/libs/orm/CHANGELOG.md +++ b/libs/orm/CHANGELOG.md @@ -1,5 +1,111 @@ # @cleverbrush/orm +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- d31323a: Honor hooks, timestamps and base-schema soft deletion in explicit variant writes + and tracked polymorphic saves, for single-table and class-table inheritance. + Add `ofVariant(key).restore()` and `hardDelete()`; CTI soft deletion retains the + child row, while permanent deletion removes both rows atomically. + + **Migration:** Variant `delete()` now respects the base schema's `.softDelete()`. + Use `hardDelete()` for physical removal, and `withDeleted()` to include hidden + rows. Review lifecycle hooks that now run, and remove identity/discriminator/join + keys from update patches. This change is part of the coordinated v5 major release. + + Capture mutation targets inside the write transaction, preserve query restrictions + and transaction bindings, and use savepoints for caller-owned transactions. Fix + base/variant column mapping and visibility of extension-managed deletion columns; + retain exact numeric keys and tracked optimistic-concurrency/rollback semantics. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- e43b72f: Add `parameter('name')` for callable PostgreSQL SELECT templates with schema-inferred positional arguments. Compile SQL, binding slots and decoding once on first invocation or `.toSQL(...)`; reuse them with independent values on later calls. `.query(...)` returns an ordinary composable bound reader. + + Support repeated names, grouped filters, fixed membership/range slots, alias joins, relation and STI/CTI customizers, and caller-owned transactions. Preserve storage types, null comparison semantics, result schemas, property navigation, and ORM identity tracking. Reject unsupported placeholder positions and unbound terminals or writes before execution. +- 6d3aecf: Add typed flat joined projections, aggregate expressions and scalar helpers + with optional output schemas, and composite keyset pagination. Preserve parent + ordering during eager loading and infer related-query customization types. + Existing aggregate and single-column cursor APIs remain available unchanged. + Export reusable SQL identifier validation, preserve schema inference throughout + bound query factories, and document the public query/ORM APIs for IDE tooltips. +- cb5d622: Add immutable connection-independent query definitions with `query(Schema)`. + Define typed reads once and supply a Knex connection or transaction through + `definition(knex, ...values)`, `.query(knex, ...values)` or `.toSQL(knex, ...values)`. + + Preserve inferred parameters, projections, relation/variant schemas and existing + connection-first APIs. Capture selectors/scopes/customizers once, compile SELECTs + lazily per definition and actual Knex instance, and bind ordinary readers before + native SQL composition, pagination or supported writes. Include runtime, + declaration and PostgreSQL integration coverage and multi-file usage guidance. +- a90a491: Add opt-in immutable, detached PostgreSQL reads with projection-aware runtime + schemas, precise decimal/bigint decoding, nested relation graphs and explicit + STI/CTI branch schemas. Reuse result schemas directly in separately defined + application mappings without duplicating projection schemas. + + Add `getSyncMapper()` with synchronous eligibility inferred through the existing + `configure()` API, completeness checks, nested mapping propagation and runtime + thenable guards. Existing queries and asynchronous mapping behavior are unchanged. + + Add application-agnostic typed metadata extension methods that retain metadata + through immutable chains. Use these in database extensions without modifying + global schema prototypes. + + Preserve typed function-schema compatibility in dependency injection when a + function declares its return schema. +- e788a0d: Add schema-based single and multiple file upload contracts, typed multipart client + serialization, and matching OpenAPI schemas. Enforce multipart body, file, field, + and part limits, reject truncated or duplicate singleton uploads, and support + file-only endpoints. Existing options-only uploads retain their single-file + shape and explicit MIME rejection reporting. + + Add lossless JSONB object reads and writes using native object schemas with + `.acceptUnknownProps().jsonb()`. Preserve nested extension data through returning + rows and projections, validate JSON extensions in the database layer, align + nullable object column DDL with reads, and track nested edits independently in + the ORM. Fix the PostgreSQL + upsert returning path exercised by document round trips. + +### Patch Changes + +- efe2f2f: Preserve original property declarations and JSDoc through derived types so + editors can navigate to definitions and show property documentation. This covers + query selectors, rows, projections and write payloads; declared relation includes; + mapper targets; JSON Schema inferred values; composed API groups and injected + services; and merged object properties. Runtime behavior is unchanged. +- Updated dependencies [e43b72f] +- Updated dependencies [6d3aecf] +- Updated dependencies [cb5d622] +- Updated dependencies [d916566] +- Updated dependencies [d31323a] +- Updated dependencies [6d7e982] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [81c2de4] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] +- Updated dependencies [e788a0d] + - @cleverbrush/knex-schema@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/orm/package.json b/libs/orm/package.json index cd40c69b..99c1d53a 100644 --- a/libs/orm/package.json +++ b/libs/orm/package.json @@ -5,8 +5,8 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0", - "@cleverbrush/knex-schema": "^4.5.0" + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/knex-schema": "^5.0.0" }, "peerDependencies": { "knex": ">=3.1.0" @@ -56,5 +56,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/otel/CHANGELOG.md b/libs/otel/CHANGELOG.md index 83f68bd6..e3c3b997 100644 --- a/libs/otel/CHANGELOG.md +++ b/libs/otel/CHANGELOG.md @@ -1,5 +1,42 @@ # @cleverbrush/otel +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [6d7e982] +- Updated dependencies [54a3d43] +- Updated dependencies [d916566] +- Updated dependencies [0a08509] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] +- Updated dependencies [32240e4] +- Updated dependencies [e788a0d] + - @cleverbrush/server@5.0.0 + - @cleverbrush/di@5.0.0 + - @cleverbrush/log@5.0.0 + ## 4.5.0 ## 4.4.3 diff --git a/libs/otel/package.json b/libs/otel/package.json index 1d49573b..0f7dd83b 100644 --- a/libs/otel/package.json +++ b/libs/otel/package.json @@ -67,9 +67,9 @@ "@opentelemetry/semantic-conventions": "^1.40.0" }, "peerDependencies": { - "@cleverbrush/di": "^4.0.0", - "@cleverbrush/log": "^4.0.0", - "@cleverbrush/server": "^4.0.0", + "@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", @@ -110,5 +110,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/react-form/CHANGELOG.md b/libs/react-form/CHANGELOG.md index 384e8f14..3355b1c9 100644 --- a/libs/react-form/CHANGELOG.md +++ b/libs/react-form/CHANGELOG.md @@ -1,5 +1,44 @@ # @cleverbrush/react-form +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- 47133eb: Preserve structured server validation issues through typed clients and form + submissions. Add transport-independent external form issues, typed indexed array + fields, and precise indexed validation paths without changing existing form APIs. + +### Patch Changes + +- Updated dependencies [6d7e982] +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/deep@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Minor Changes diff --git a/libs/react-form/package.json b/libs/react-form/package.json index 8ff25dfd..363c7279 100644 --- a/libs/react-form/package.json +++ b/libs/react-form/package.json @@ -5,8 +5,8 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/deep": "^4.5.0", - "@cleverbrush/schema": "^4.5.0" + "@cleverbrush/deep": "^5.0.0", + "@cleverbrush/schema": "^5.0.0" }, "devDependencies": { "@types/react": "^19.0.0", @@ -51,5 +51,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/scheduler-postgres/CHANGELOG.md b/libs/scheduler-postgres/CHANGELOG.md new file mode 100644 index 00000000..f91b5f97 --- /dev/null +++ b/libs/scheduler-postgres/CHANGELOG.md @@ -0,0 +1,57 @@ +# @cleverbrush/scheduler-postgres + +## 5.0.0 + +### Major Changes + +- 30f83aa: Redesign the scheduler for versioned immediate, delayed and recurring jobs, + typed separate handlers, durable ordered progress and fenced worker leases. + Add an independently installed PostgreSQL adapter using Framework ORM and + knex-schema, explicit migrations, transactional enqueue and restart recovery. + + Retries are opt-in and rerun whole handlers. Calendar triggers use explicit UTC + or IANA zones with persisted cursors and missed/overlap policies. See the + scheduler v4.x-to-v5 migration guide for the breaking API and rollout steps. + The adapter joins the fixed Framework release group. + + Retain schema-driven minute/day/week/month/year definitions and their + discriminated Schedule type, exposing individual schemas and the Schemas facade. + Normalize recurrence defaults, dates and weekday order before fingerprinting; + unchanged registrations retain their cursor and start anchor. Preserve the + one-based calculator index and accept the deprecated maxOccurences spelling + while rejecting ambiguous dual spelling. Name the explicit persistence option + storageRepository. Derive PostgreSQL row and entity types from schema definitions + without parallel hand-written row types. + + Use native Date/Intl calendar calculations without an additional date-time + runtime dependency. Preserve DST-gap skipping and earlier-fold selection, + including non-hour transitions and skipped calendar dates, independently of + the host time zone. Bound minute schedules to the representable Date range. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [e43b72f] +- Updated dependencies [6d3aecf] +- Updated dependencies [cb5d622] +- Updated dependencies [30f83aa] +- Updated dependencies [d916566] +- Updated dependencies [d31323a] +- Updated dependencies [6d7e982] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [81c2de4] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] +- Updated dependencies [e788a0d] + - @cleverbrush/knex-schema@5.0.0 + - @cleverbrush/orm@5.0.0 + - @cleverbrush/scheduler@5.0.0 + - @cleverbrush/schema@5.0.0 diff --git a/libs/scheduler-postgres/package.json b/libs/scheduler-postgres/package.json index eb02a05f..9365d854 100644 --- a/libs/scheduler-postgres/package.json +++ b/libs/scheduler-postgres/package.json @@ -3,7 +3,7 @@ "engines": { "node": ">=24" }, - "version": "4.4.3", + "version": "5.0.0", "description": "Transactional PostgreSQL repository for the Cleverbrush durable scheduler", "type": "module", "sideEffects": false, @@ -20,10 +20,10 @@ } }, "dependencies": { - "@cleverbrush/scheduler": "^4.4.3", - "@cleverbrush/schema": "^4.4.3", - "@cleverbrush/orm": "^4.4.3", - "@cleverbrush/knex-schema": "^4.4.3" + "@cleverbrush/scheduler": "^5.0.0", + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/orm": "^5.0.0", + "@cleverbrush/knex-schema": "^5.0.0" }, "peerDependencies": { "knex": ">=3.1.0", diff --git a/libs/scheduler/CHANGELOG.md b/libs/scheduler/CHANGELOG.md index 909a0d80..5d309ee8 100644 --- a/libs/scheduler/CHANGELOG.md +++ b/libs/scheduler/CHANGELOG.md @@ -1,5 +1,58 @@ # @cleverbrush/scheduler +## 5.0.0 + +### Major Changes + +- 30f83aa: Redesign the scheduler for versioned immediate, delayed and recurring jobs, + typed separate handlers, durable ordered progress and fenced worker leases. + Add an independently installed PostgreSQL adapter using Framework ORM and + knex-schema, explicit migrations, transactional enqueue and restart recovery. + + Retries are opt-in and rerun whole handlers. Calendar triggers use explicit UTC + or IANA zones with persisted cursors and missed/overlap policies. See the + scheduler v4.x-to-v5 migration guide for the breaking API and rollout steps. + The adapter joins the fixed Framework release group. + + Retain schema-driven minute/day/week/month/year definitions and their + discriminated Schedule type, exposing individual schemas and the Schemas facade. + Normalize recurrence defaults, dates and weekday order before fingerprinting; + unchanged registrations retain their cursor and start anchor. Preserve the + one-based calculator index and accept the deprecated maxOccurences spelling + while rejecting ambiguous dual spelling. Name the explicit persistence option + storageRepository. Derive PostgreSQL row and entity types from schema definitions + without parallel hand-written row types. + + Use native Date/Intl calendar calculations without an additional date-time + runtime dependency. Preserve DST-gap skipping and earlier-fold selection, + including non-hour transitions and skipped calendar dates, independently of + the host time zone. Bound minute schedules to the representable Date range. +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Patch Changes + +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Patch Changes diff --git a/libs/scheduler/package.json b/libs/scheduler/package.json index 895c6f59..13d80659 100644 --- a/libs/scheduler/package.json +++ b/libs/scheduler/package.json @@ -5,7 +5,7 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/schema": "^4.5.0" + "@cleverbrush/schema": "^5.0.0" }, "devDependencies": { "@types/node": "^25.4.0" @@ -46,5 +46,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/schema-json/CHANGELOG.md b/libs/schema-json/CHANGELOG.md index 0dddf86a..67335c89 100644 --- a/libs/schema-json/CHANGELOG.md +++ b/libs/schema-json/CHANGELOG.md @@ -1,5 +1,50 @@ # @cleverbrush/schema-json +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- f9b1f56: Add optional-aware fallbacks and preprocessing, and automatic named schema + references through ordinary immutable use-site modifiers, without a wrapper API. + Shape, validation-rule, default, fallback and extension changes clear inherited + names; apply schemaName after those edits to establish a new named definition. + Preserve one canonical definition in JSON + Schema, OpenAPI and AsyncAPI with strict name collision checks. Keep existing + type inference and optional null acceptance unchanged. + +### Patch Changes + +- efe2f2f: Preserve original property declarations and JSDoc through derived types so + editors can navigate to definitions and show property documentation. This covers + query selectors, rows, projections and write payloads; declared relation includes; + mapper targets; JSON Schema inferred values; composed API groups and injected + services; and merged object properties. Runtime behavior is unchanged. +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ## 4.4.3 diff --git a/libs/schema-json/package.json b/libs/schema-json/package.json index 6ff20583..7df8a73a 100644 --- a/libs/schema-json/package.json +++ b/libs/schema-json/package.json @@ -32,7 +32,7 @@ "@cleverbrush/schema": "*" }, "peerDependencies": { - "@cleverbrush/schema": "^4.0.0", + "@cleverbrush/schema": "^5.0.0", "@standard-schema/spec": "^1.1.0" }, "readme": "https://github.com/cleverbrush/framework/tree/master/libs/schema-json#readme", @@ -47,5 +47,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/schema/CHANGELOG.md b/libs/schema/CHANGELOG.md index 8a8c17c4..cfe2ce68 100644 --- a/libs/schema/CHANGELOG.md +++ b/libs/schema/CHANGELOG.md @@ -1,5 +1,54 @@ # @cleverbrush/schema +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- a90a491: Add opt-in immutable, detached PostgreSQL reads with projection-aware runtime + schemas, precise decimal/bigint decoding, nested relation graphs and explicit + STI/CTI branch schemas. Reuse result schemas directly in separately defined + application mappings without duplicating projection schemas. + + Add `getSyncMapper()` with synchronous eligibility inferred through the existing + `configure()` API, completeness checks, nested mapping propagation and runtime + thenable guards. Existing queries and asynchronous mapping behavior are unchanged. + + Add application-agnostic typed metadata extension methods that retain metadata + through immutable chains. Use these in database extensions without modifying + global schema prototypes. + + Preserve typed function-schema compatibility in dependency injection when a + function declares its return schema. +- f9b1f56: Add optional-aware fallbacks and preprocessing, and automatic named schema + references through ordinary immutable use-site modifiers, without a wrapper API. + Shape, validation-rule, default, fallback and extension changes clear inherited + names; apply schemaName after those edits to establish a new named definition. + Preserve one canonical definition in JSON + Schema, OpenAPI and AsyncAPI with strict name collision checks. Keep existing + type inference and optional null acceptance unchanged. +- 47133eb: Preserve structured server validation issues through typed clients and form + submissions. Add transport-independent external form issues, typed indexed array + fields, and precise indexed validation paths without changing existing form APIs. + ## 4.5.0 ## 4.4.3 diff --git a/libs/schema/package.json b/libs/schema/package.json index f831e644..ffb895a2 100644 --- a/libs/schema/package.json +++ b/libs/schema/package.json @@ -109,9 +109,9 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0", + "version": "5.0.0", "devDependencies": { - "@cleverbrush/deep": "^4.5.0" + "@cleverbrush/deep": "^5.0.0" }, "peerDependencies": { "@standard-schema/spec": "^1.1.0" diff --git a/libs/server-integration-tests/package.json b/libs/server-integration-tests/package.json index 32cef247..7fa442a2 100644 --- a/libs/server-integration-tests/package.json +++ b/libs/server-integration-tests/package.json @@ -4,9 +4,9 @@ "version": "2.0.2", "type": "module", "dependencies": { - "@cleverbrush/server": "^4.0.0", - "@cleverbrush/schema": "^4.0.0", - "@cleverbrush/di": "^4.0.0", - "@cleverbrush/auth": "^4.0.0" + "@cleverbrush/server": "^5.0.0", + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/di": "^5.0.0", + "@cleverbrush/auth": "^5.0.0" } } diff --git a/libs/server-openapi/CHANGELOG.md b/libs/server-openapi/CHANGELOG.md index 1fcf2dcf..393ea5b4 100644 --- a/libs/server-openapi/CHANGELOG.md +++ b/libs/server-openapi/CHANGELOG.md @@ -1,5 +1,71 @@ # @cleverbrush/server-openapi +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- f9b1f56: Add optional-aware fallbacks and preprocessing, and automatic named schema + references through ordinary immutable use-site modifiers, without a wrapper API. + Shape, validation-rule, default, fallback and extension changes clear inherited + names; apply schemaName after those edits to establish a new named definition. + Preserve one canonical definition in JSON + Schema, OpenAPI and AsyncAPI with strict name collision checks. Keep existing + type inference and optional null acceptance unchanged. +- 32240e4: Add contract-declared mutation replay with typed async request preparation, + explicit authorization scopes, and consistent endpoint error policies. Generate + client keys and coordinate HTTP retries/batching from the contract without + changing ordinary client calls. Document replay headers and framework errors in + OpenAPI while preserving domain response schemas. +- e788a0d: Add schema-based single and multiple file upload contracts, typed multipart client + serialization, and matching OpenAPI schemas. Enforce multipart body, file, field, + and part limits, reject truncated or duplicate singleton uploads, and support + file-only endpoints. Existing options-only uploads retain their single-file + shape and explicit MIME rejection reporting. + + Add lossless JSONB object reads and writes using native object schemas with + `.acceptUnknownProps().jsonb()`. Preserve nested extension data through returning + rows and projections, validate JSON extensions in the database layer, align + nullable object column DDL with reads, and track nested edits independently in + the ORM. Fix the PostgreSQL + upsert returning path exercised by document round trips. + +### Patch Changes + +- Updated dependencies [6d7e982] +- Updated dependencies [54a3d43] +- Updated dependencies [d916566] +- Updated dependencies [0a08509] +- Updated dependencies [a90a491] +- Updated dependencies [efe2f2f] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] +- Updated dependencies [32240e4] +- Updated dependencies [e788a0d] + - @cleverbrush/server@5.0.0 + - @cleverbrush/auth@5.0.0 + - @cleverbrush/schema-json@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ## 4.4.3 diff --git a/libs/server-openapi/package.json b/libs/server-openapi/package.json index a32bd1a6..f9ca5242 100644 --- a/libs/server-openapi/package.json +++ b/libs/server-openapi/package.json @@ -11,10 +11,10 @@ "@cleverbrush/auth": "*" }, "peerDependencies": { - "@cleverbrush/server": "^4.0.0", - "@cleverbrush/schema": "^4.0.0", - "@cleverbrush/schema-json": "^4.0.0", - "@cleverbrush/auth": "^4.0.0" + "@cleverbrush/server": "^5.0.0", + "@cleverbrush/schema": "^5.0.0", + "@cleverbrush/schema-json": "^5.0.0", + "@cleverbrush/auth": "^5.0.0" }, "description": "OpenAPI 3.1 spec generation for @cleverbrush/server — automatic endpoint documentation", "files": [ @@ -54,5 +54,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/server/CHANGELOG.md b/libs/server/CHANGELOG.md index 27bf66df..a03086c3 100644 --- a/libs/server/CHANGELOG.md +++ b/libs/server/CHANGELOG.md @@ -1,5 +1,78 @@ # @cleverbrush/server +## 5.0.0 + +### Major Changes + +- d916566: Make Framework query builders immutable and infer row schemas automatically. + + Retain returned query builders, return synchronous builders from scopes and grouped predicates, and supply an explicit Framework object output schema for opaque raw SELECTs. Ordinary, aliased, polymorphic and ORM queries expose their row schemas directly. Projections replace scalar selections, and projected/aggregate/raw queries cannot perform entity writes. Reads and write-returning rows consistently preserve exact decimal/bigint strings, Date objects and SQL nulls. + + All published Framework packages advance together to the next major version. Tracked entity objects remain mutable. + + ### Migrating from v4.x to v5 + + Remove `withRowSchema()` calls and retain each configured query instead of relying on mutation. Replace raw base-query overloads with explicit output contracts. See `libs/knex-schema/MIGRATION-v5.md` for the complete migration guide. +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- 54a3d43: Add opt-in server-wide CORS through `ServerBuilder.useCors()` and + `ServerCorsOptions`. Handle route-aware preflights before authentication while + preserving the normal pipeline for actual requests. Support exact origins, + origin predicates, explicit request/response header policies, credentials and + preflight cache duration. Reject disallowed origins before handlers and finalize + CORS headers per physical response, including errors and cache/idempotency replays. +- 0a08509: Add immutable, contract-bound implementation scopes and feature-module composition + with complete operation coverage, cross-file handler inference, shared/per-operation + DI, and unchanged HTTP/subscription registration. Add reusable, endpoint-checked + error policies and a standalone handler wrapper. Existing registration APIs and + the browser-safe contract entry point remain supported. +- 47133eb: Preserve structured server validation issues through typed clients and form + submissions. Add transport-independent external form issues, typed indexed array + fields, and precise indexed validation paths without changing existing form APIs. +- 32240e4: Add contract-declared mutation replay with typed async request preparation, + explicit authorization scopes, and consistent endpoint error policies. Generate + client keys and coordinate HTTP retries/batching from the contract without + changing ordinary client calls. Document replay headers and framework errors in + OpenAPI while preserving domain response schemas. +- e788a0d: Add schema-based single and multiple file upload contracts, typed multipart client + serialization, and matching OpenAPI schemas. Enforce multipart body, file, field, + and part limits, reject truncated or duplicate singleton uploads, and support + file-only endpoints. Existing options-only uploads retain their single-file + shape and explicit MIME rejection reporting. + + Add lossless JSONB object reads and writes using native object schemas with + `.acceptUnknownProps().jsonb()`. Preserve nested extension data through returning + rows and projections, validate JSON extensions in the database layer, align + nullable object column DDL with reads, and track nested edits independently in + the ORM. Fix the PostgreSQL + upsert returning path exercised by document round trips. + +### Patch Changes + +- 6d7e982: Close WebSocket subscriptions when middleware rejects the request without + calling the next handler, preventing idle unauthorized connections. +- efe2f2f: Preserve original property declarations and JSDoc through derived types so + editors can navigate to definitions and show property documentation. This covers + query selectors, rows, projections and write payloads; declared relation includes; + mapper targets; JSON Schema inferred values; composed API groups and injected + services; and merged object properties. Runtime behavior is unchanged. +- Updated dependencies [d916566] +- Updated dependencies [a90a491] +- Updated dependencies [f9b1f56] +- Updated dependencies [c5b4dbc] +- Updated dependencies [47133eb] + - @cleverbrush/auth@5.0.0 + - @cleverbrush/di@5.0.0 + - @cleverbrush/schema@5.0.0 + ## 4.5.0 ### Minor Changes diff --git a/libs/server/package.json b/libs/server/package.json index 8bae2427..8de24c23 100644 --- a/libs/server/package.json +++ b/libs/server/package.json @@ -5,9 +5,9 @@ "email": "andrew_zol@cleverbrush.com" }, "dependencies": { - "@cleverbrush/auth": "^4.5.0", - "@cleverbrush/di": "^4.5.0", - "@cleverbrush/schema": "^4.5.0", + "@cleverbrush/auth": "^5.0.0", + "@cleverbrush/di": "^5.0.0", + "@cleverbrush/schema": "^5.0.0", "@fastify/busboy": "^3.2.2", "ws": "^8.22.0" }, @@ -58,5 +58,5 @@ }, "type": "module", "types": "./dist/index.d.ts", - "version": "4.5.0" + "version": "5.0.0" } diff --git a/libs/storage-s3/CHANGELOG.md b/libs/storage-s3/CHANGELOG.md new file mode 100644 index 00000000..c1995215 --- /dev/null +++ b/libs/storage-s3/CHANGELOG.md @@ -0,0 +1,30 @@ +# @cleverbrush/storage-s3 + +## 5.0.0 + +### Major Changes + +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- 867bfd9: Add provider-neutral object storage contracts, portable errors and safe public URL + mapping. Add an S3-compatible adapter with explicit custom endpoints, credentials, + addressing style, key prefixes and independently configured public asset URLs. + Support streamed reads, bounded multipart writes, metadata-preserving copies, + idempotent deletion, cancellation and asynchronous disposal through `await using` + on the shared storage contract. Include shared contract + coverage, real Garage integration tests, and configuration examples for hosted + and self-hosted services. + +### Patch Changes + +- Updated dependencies [867bfd9] +- Updated dependencies [c5b4dbc] + - @cleverbrush/storage@5.0.0 diff --git a/libs/storage-s3/package.json b/libs/storage-s3/package.json index 76e0cc08..4c011eaf 100644 --- a/libs/storage-s3/package.json +++ b/libs/storage-s3/package.json @@ -1,6 +1,6 @@ { "name": "@cleverbrush/storage-s3", - "version": "4.4.3", + "version": "5.0.0", "description": "S3-compatible object storage for self-hosted and hosted providers", "type": "module", "sideEffects": false, @@ -27,7 +27,7 @@ "clean": "rm -rf dist tsconfig.tsbuildinfo" }, "dependencies": { - "@cleverbrush/storage": "^4.4.3", + "@cleverbrush/storage": "^5.0.0", "@aws-sdk/client-s3": "^3.1145.0", "@aws-sdk/lib-storage": "^3.1145.0" } diff --git a/libs/storage/CHANGELOG.md b/libs/storage/CHANGELOG.md new file mode 100644 index 00000000..6b80f5a4 --- /dev/null +++ b/libs/storage/CHANGELOG.md @@ -0,0 +1,24 @@ +# @cleverbrush/storage + +## 5.0.0 + +### Major Changes + +- c5b4dbc: Require Node.js 24+ consistently across all published packages. Correct the root and all published-package license files to BSD-3-Clause, matching package metadata and documentation, and verify license consistency in source and npm tarballs. See docs/MIGRATION-v5.md for migration guidance. + + Harden JWT key/algorithm and claim validation, cookie parsing/serialization, and request-body lifecycle handling. Require explicit authorization scope for bounded server idempotency; coalesce concurrent retries and capture full response bodies. Bound response caching and bypass private, no-store and cookie-setting responses. + + Preserve DI scope validation through factories and propagate registered optional-service failures. Fix batch response status/header capture, timeout abort-listener cleanup, concurrent deduplication response cloning, CLI database cleanup on validation/production-guard failures, and the missing client idempotency JavaScript export. Update security-sensitive dependencies and ensure OpenTelemetry disable flags override SDK defaults. + + Add regression tests, package-consumer smoke checks, package-level unit coverage floors, migration/security documentation and release validation gates. + +### Minor Changes + +- 867bfd9: Add provider-neutral object storage contracts, portable errors and safe public URL + mapping. Add an S3-compatible adapter with explicit custom endpoints, credentials, + addressing style, key prefixes and independently configured public asset URLs. + Support streamed reads, bounded multipart writes, metadata-preserving copies, + idempotent deletion, cancellation and asynchronous disposal through `await using` + on the shared storage contract. Include shared contract + coverage, real Garage integration tests, and configuration examples for hosted + and self-hosted services. diff --git a/libs/storage/package.json b/libs/storage/package.json index 0566ad45..fa3468a9 100644 --- a/libs/storage/package.json +++ b/libs/storage/package.json @@ -1,6 +1,6 @@ { "name": "@cleverbrush/storage", - "version": "4.4.3", + "version": "5.0.0", "description": "Provider-neutral object storage contracts for Node.js", "type": "module", "sideEffects": false,