@cosmicdrift/kumiko-framework 0.369.0 → 0.370.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +14 -1
- package/agents/examples/apex-surface-auth.md +2 -1
- package/agents/examples/app-config.md +98 -0
- package/agents/examples/auth-mfa.md +72 -0
- package/agents/examples/compose-stacks.md +188 -0
- package/agents/examples/env-composition.md +268 -0
- package/agents/examples/host-routing.md +181 -0
- package/agents/examples/legal-pages.md +52 -3
- package/agents/examples/managed-config.md +1 -0
- package/agents/examples/managed-pages.md +1 -0
- package/agents/examples/prod-boot-options.md +180 -0
- package/agents/examples/relations.md +4 -0
- package/agents/examples/secrets-demo.md +4 -2
- package/agents/examples/security-baseline.md +20 -17
- package/agents/examples.md +6 -1
- package/agents/features.md +14 -2
- package/dist/api/anonymous-cookie.d.ts +1 -1
- package/dist/api/anonymous-live-entities.d.ts +1 -1
- package/dist/api/auth-middleware.d.ts +2 -2
- package/dist/api/auth-routes.d.ts +7 -7
- package/dist/api/extra-route.d.ts +2 -2
- package/dist/api/index.d.ts +37 -37
- package/dist/api/jwt.d.ts +1 -1
- package/dist/api/observability-middleware.d.ts +1 -1
- package/dist/api/readiness.d.ts +1 -1
- package/dist/api/redis-sse-broker.d.ts +2 -2
- package/dist/api/request-context.d.ts +1 -1
- package/dist/api/request-id-middleware.d.ts +3 -3
- package/dist/api/route-registrars.d.ts +4 -4
- package/dist/api/routes.d.ts +1 -1
- package/dist/api/server.d.ts +16 -16
- package/dist/api/sse-broker.d.ts +1 -1
- package/dist/api/sse-route.d.ts +1 -1
- package/dist/api/websocket-route.d.ts +3 -3
- package/dist/auth/index.d.ts +2 -2
- package/dist/compliance/duration-spec.d.ts +2 -2
- package/dist/compliance/index.d.ts +6 -6
- package/dist/compliance/profiles.d.ts +1 -1
- package/dist/config/index.d.ts +44 -0
- package/dist/config/index.js +61 -0
- package/dist/crypto/blind-index.d.ts +1 -1
- package/dist/crypto/event-pii.d.ts +1 -1
- package/dist/crypto/in-memory-kms-adapter.d.ts +1 -1
- package/dist/crypto/index.d.ts +11 -11
- package/dist/crypto/is-self-pii-field.d.ts +1 -1
- package/dist/crypto/kms-wiring.d.ts +2 -2
- package/dist/crypto/owner-transition-rekey.d.ts +1 -1
- package/dist/crypto/pg-kms-adapter.d.ts +1 -1
- package/dist/crypto/pii-field-encryption.d.ts +4 -4
- package/dist/crypto/request-kms-cache.d.ts +1 -1
- package/dist/crypto/subject-resolver.d.ts +3 -3
- package/dist/db/apply-entity-event.d.ts +4 -4
- package/dist/db/assert-exists-in.d.ts +4 -4
- package/dist/db/blind-index-cleanup.d.ts +2 -2
- package/dist/db/collect-table-metas.d.ts +2 -2
- package/dist/db/compound-types.d.ts +1 -1
- package/dist/db/config-seed.d.ts +5 -5
- package/dist/db/connection.d.ts +1 -6
- package/dist/db/connection.js +15 -4
- package/dist/db/dialect.d.ts +1 -1
- package/dist/db/eagerload.d.ts +3 -3
- package/dist/db/entity-field-encryption.d.ts +3 -3
- package/dist/db/entity-field-encryption.js +3 -1
- package/dist/db/entity-table-from-registry.d.ts +3 -3
- package/dist/db/entity-table-meta.d.ts +3 -3
- package/dist/db/event-store-executor-context.d.ts +9 -9
- package/dist/db/event-store-executor-read.d.ts +2 -2
- package/dist/db/event-store-executor-write.d.ts +2 -2
- package/dist/db/event-store-executor.d.ts +8 -8
- package/dist/db/feature-table-sources.d.ts +1 -1
- package/dist/db/index.d.ts +39 -39
- package/dist/db/located-timestamp.d.ts +1 -1
- package/dist/db/lock-guard.d.ts +2 -2
- package/dist/db/migrate-generator.d.ts +2 -2
- package/dist/db/migrate-runner.d.ts +1 -1
- package/dist/db/money.d.ts +1 -1
- package/dist/db/parent-ref-clause.d.ts +4 -4
- package/dist/db/projection-registry-binding.d.ts +1 -1
- package/dist/db/queries/advisory-lock.d.ts +1 -1
- package/dist/db/queries/backfill-pii.d.ts +2 -2
- package/dist/db/queries/ddl.d.ts +1 -1
- package/dist/db/queries/entity-read.d.ts +1 -1
- package/dist/db/queries/es-ops.d.ts +1 -1
- package/dist/db/queries/event-consumer.d.ts +2 -2
- package/dist/db/queries/event-store-admin.d.ts +1 -1
- package/dist/db/queries/event-store-transfer.d.ts +1 -1
- package/dist/db/queries/event-store.d.ts +1 -1
- package/dist/db/queries/pii-backfill-state.d.ts +1 -1
- package/dist/db/queries/projection-rebuild.d.ts +1 -1
- package/dist/db/queries/raw-sql.d.ts +1 -1
- package/dist/db/queries/seed-context.d.ts +2 -2
- package/dist/db/queries/shadow-swap.d.ts +3 -3
- package/dist/db/queries/table-ops.d.ts +1 -1
- package/dist/db/queries/test-stack.d.ts +2 -2
- package/dist/db/query.d.ts +3 -3
- package/dist/db/rebuild-marker.d.ts +1 -1
- package/dist/db/reference-data.d.ts +3 -3
- package/dist/db/render-ddl.d.ts +1 -1
- package/dist/db/replay-migration-sql.d.ts +1 -1
- package/dist/db/retired-framework-tables.d.ts +1 -1
- package/dist/db/schema-inspection.d.ts +1 -1
- package/dist/db/table-builder.d.ts +4 -4
- package/dist/db/table-push.d.ts +3 -3
- package/dist/db/tenant-db-runner.d.ts +2 -2
- package/dist/db/tenant-db.d.ts +7 -9
- package/dist/db/tenant-db.js +2 -12
- package/dist/derivatives/derivatives-context.d.ts +3 -3
- package/dist/derivatives/field-variants.d.ts +1 -1
- package/dist/derivatives/index.d.ts +6 -6
- package/dist/engine/access.d.ts +1 -1
- package/dist/engine/active-membership.d.ts +2 -2
- package/dist/engine/boot-validator/access-declarations.d.ts +1 -1
- package/dist/engine/boot-validator/access-roles.d.ts +1 -1
- package/dist/engine/boot-validator/action-wiring.d.ts +1 -1
- package/dist/engine/boot-validator/api-ext.d.ts +1 -1
- package/dist/engine/boot-validator/boot-check.d.ts +1 -1
- package/dist/engine/boot-validator/card-meta-overflow.d.ts +1 -1
- package/dist/engine/boot-validator/config-deps.d.ts +1 -1
- package/dist/engine/boot-validator/detail-screens.d.ts +2 -2
- package/dist/engine/boot-validator/entity-handler.d.ts +1 -1
- package/dist/engine/boot-validator/entity-list-screens.d.ts +1 -1
- package/dist/engine/boot-validator/gdpr-storage.d.ts +1 -1
- package/dist/engine/boot-validator/global-tenancy.d.ts +1 -1
- package/dist/engine/boot-validator/handler-field-references.d.ts +1 -1
- package/dist/engine/boot-validator/i18n-keys.d.ts +1 -1
- package/dist/engine/boot-validator/index.d.ts +7 -7
- package/dist/engine/boot-validator/nav.d.ts +1 -1
- package/dist/engine/boot-validator/ownership.d.ts +2 -2
- package/dist/engine/boot-validator/parent-ref.d.ts +1 -1
- package/dist/engine/boot-validator/pii-retention.d.ts +2 -2
- package/dist/engine/boot-validator/projection-list-screens.d.ts +1 -1
- package/dist/engine/boot-validator/query-output-columns.d.ts +1 -1
- package/dist/engine/boot-validator/query-refs.d.ts +1 -1
- package/dist/engine/boot-validator/record-owned.d.ts +1 -1
- package/dist/engine/boot-validator/screens.d.ts +2 -2
- package/dist/engine/boot-validator/security-baseline.d.ts +1 -1
- package/dist/engine/boot-validator/selector-owner-panels.d.ts +1 -1
- package/dist/engine/boot-validator/transfer-graph.d.ts +2 -2
- package/dist/engine/boot-validator/url-prefill-fields.d.ts +1 -1
- package/dist/engine/boot-validator/workspaces.d.ts +1 -1
- package/dist/engine/boot-validator.d.ts +1 -1
- package/dist/engine/bridge-stub.d.ts +1 -1
- package/dist/engine/build-app-schema.d.ts +2 -2
- package/dist/engine/build-config-feature-schema.d.ts +5 -5
- package/dist/engine/build-target.d.ts +2 -2
- package/dist/engine/changeset-changes.d.ts +1 -1
- package/dist/engine/codemod/index.d.ts +2 -2
- package/dist/engine/config-helpers.d.ts +1 -1
- package/dist/engine/constants.d.ts +1 -1
- package/dist/engine/create-app.d.ts +2 -2
- package/dist/engine/cross-tenant.d.ts +2 -2
- package/dist/engine/dedupe-features.d.ts +1 -1
- package/dist/engine/define-feature.d.ts +1 -1
- package/dist/engine/define-feature.js +2 -2
- package/dist/engine/define-handler.d.ts +4 -4
- package/dist/engine/define-step.d.ts +1 -1
- package/dist/engine/define-workflow.d.ts +2 -2
- package/dist/engine/effective-features.d.ts +1 -1
- package/dist/engine/embedded-derived.d.ts +1 -1
- package/dist/engine/entity-handlers.d.ts +6 -5
- package/dist/engine/entity-handlers.js +6 -3
- package/dist/engine/event-def.d.ts +15 -0
- package/dist/engine/event-def.js +123 -0
- package/dist/engine/event-helpers.d.ts +1 -1
- package/dist/engine/extension-names.d.ts +8 -8
- package/dist/engine/extension-selector-plugins.d.ts +2 -2
- package/dist/engine/extensions/escape-hatch-usage.d.ts +1 -1
- package/dist/engine/extensions/storage-provider.d.ts +1 -1
- package/dist/engine/extensions/tenant-data.d.ts +3 -3
- package/dist/engine/extensions/tenant-resource.d.ts +2 -2
- package/dist/engine/extensions/user-data.d.ts +2 -2
- package/dist/engine/factories.d.ts +1 -1
- package/dist/engine/feature-ast/extractors/ai-steps.d.ts +2 -2
- package/dist/engine/feature-ast/extractors/events.d.ts +2 -2
- package/dist/engine/feature-ast/extractors/handlers.d.ts +4 -4
- package/dist/engine/feature-ast/extractors/hooks.d.ts +5 -5
- package/dist/engine/feature-ast/extractors/index.d.ts +14 -14
- package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +3 -3
- package/dist/engine/feature-ast/extractors/projections-screens.d.ts +3 -3
- package/dist/engine/feature-ast/extractors/round1.d.ts +2 -2
- package/dist/engine/feature-ast/extractors/round2.d.ts +2 -2
- package/dist/engine/feature-ast/extractors/round3.d.ts +4 -4
- package/dist/engine/feature-ast/extractors/round5.d.ts +2 -2
- package/dist/engine/feature-ast/extractors/round6.d.ts +2 -2
- package/dist/engine/feature-ast/extractors/shared.d.ts +2 -2
- package/dist/engine/feature-ast/index.d.ts +16 -16
- package/dist/engine/feature-ast/parse.d.ts +2 -2
- package/dist/engine/feature-ast/patch.d.ts +1 -1
- package/dist/engine/feature-ast/patcher.d.ts +15 -15
- package/dist/engine/feature-ast/pattern-change-schema.d.ts +10 -10
- package/dist/engine/feature-ast/patterns.d.ts +15 -15
- package/dist/engine/feature-ast/render.d.ts +1 -1
- package/dist/engine/feature-builder-state.d.ts +5 -5
- package/dist/engine/feature-config-events-jobs.d.ts +3 -3
- package/dist/engine/feature-config-events-jobs.js +8 -130
- package/dist/engine/feature-entity-handlers.d.ts +4 -4
- package/dist/engine/feature-entity-handlers.js +11 -5
- package/dist/engine/feature-manifest.d.ts +1 -1
- package/dist/engine/feature-ui-extensions.d.ts +7 -7
- package/dist/engine/feature-ui-extensions.js +2 -2
- package/dist/engine/field-access.d.ts +1 -1
- package/dist/engine/field-helpers.d.ts +1 -1
- package/dist/engine/handler-helpers.d.ts +1 -1
- package/dist/engine/index.d.ts +89 -88
- package/dist/engine/index.js +1 -0
- package/dist/engine/instruction-fields.d.ts +1 -1
- package/dist/engine/object-form.d.ts +1 -1
- package/dist/engine/object-form.js +5 -6
- package/dist/engine/ownership.d.ts +3 -3
- package/dist/engine/pattern-library/index.d.ts +2 -2
- package/dist/engine/pattern-library/library.d.ts +2 -2
- package/dist/engine/pattern-library/mixed-schemas.d.ts +1 -1
- package/dist/engine/pattern-library/opaque-schemas.d.ts +1 -1
- package/dist/engine/pattern-library/shared-fields.d.ts +1 -1
- package/dist/engine/pattern-library/static-schemas.d.ts +1 -1
- package/dist/engine/pattern-library/types.d.ts +1 -1
- package/dist/engine/personal-data-fields.d.ts +2 -2
- package/dist/engine/pipeline.d.ts +2 -2
- package/dist/engine/project-app-schema-for-roles.d.ts +1 -1
- package/dist/engine/projection-helpers.d.ts +4 -4
- package/dist/engine/read-claim.d.ts +1 -1
- package/dist/engine/registry-facade.d.ts +2 -2
- package/dist/engine/registry-ingest.d.ts +2 -2
- package/dist/engine/registry-state.d.ts +2 -2
- package/dist/engine/registry-validate.d.ts +3 -3
- package/dist/engine/registry.d.ts +1 -1
- package/dist/engine/resolve-config-or-param.d.ts +2 -2
- package/dist/engine/role-assignment.d.ts +1 -1
- package/dist/engine/run-in.d.ts +1 -1
- package/dist/engine/run-pipeline.d.ts +3 -3
- package/dist/engine/schema-builder.d.ts +1 -1
- package/dist/engine/screen-filter-ops.d.ts +1 -1
- package/dist/engine/screen-helpers.d.ts +2 -2
- package/dist/engine/soft-delete-cleanup.d.ts +2 -2
- package/dist/engine/steps/_event-match.d.ts +1 -1
- package/dist/engine/steps/_no-return-guard.d.ts +1 -1
- package/dist/engine/steps/_read-source.d.ts +4 -4
- package/dist/engine/steps/_resolver-utils.d.ts +1 -1
- package/dist/engine/steps/aggregate-append-event.d.ts +1 -1
- package/dist/engine/steps/aggregate-create.d.ts +2 -2
- package/dist/engine/steps/aggregate-update.d.ts +3 -3
- package/dist/engine/steps/branch.d.ts +1 -1
- package/dist/engine/steps/call-feature.d.ts +2 -2
- package/dist/engine/steps/compute.d.ts +1 -1
- package/dist/engine/steps/for-each.d.ts +1 -1
- package/dist/engine/steps/mail-send.d.ts +1 -1
- package/dist/engine/steps/read-find-many.d.ts +2 -2
- package/dist/engine/steps/read-find-one.d.ts +2 -2
- package/dist/engine/steps/retry.d.ts +1 -1
- package/dist/engine/steps/return.d.ts +2 -2
- package/dist/engine/steps/unsafe-projection-delete.d.ts +2 -2
- package/dist/engine/steps/unsafe-projection-upsert.d.ts +1 -1
- package/dist/engine/steps/wait-for-event.d.ts +1 -1
- package/dist/engine/steps/wait.d.ts +1 -1
- package/dist/engine/steps/webhook-send.d.ts +1 -1
- package/dist/engine/strip-disabled-features-from-app-schema.d.ts +4 -4
- package/dist/engine/system-user.d.ts +2 -2
- package/dist/engine/template-variables.d.ts +1 -1
- package/dist/engine/tier-resolver-extension.d.ts +4 -4
- package/dist/engine/transfer-adjacency.d.ts +1 -1
- package/dist/engine/types/index.d.ts +6 -6
- package/dist/engine/validate-projection-allowlist.d.ts +1 -1
- package/dist/engine/validation.d.ts +1 -1
- package/dist/entrypoint/index.d.ts +12 -12
- package/dist/env/dry-run.d.ts +14 -1
- package/dist/env/dry-run.js +50 -0
- package/dist/env/index.d.ts +54 -16
- package/dist/env/index.js +60 -6
- package/dist/errors/classes.d.ts +3 -3
- package/dist/errors/docs-url.d.ts +1 -1
- package/dist/errors/index.d.ts +18 -18
- package/dist/errors/member-resolution.d.ts +1 -1
- package/dist/errors/serialize.d.ts +2 -2
- package/dist/errors/subject-erased.d.ts +1 -1
- package/dist/errors/to-kumiko-error.d.ts +1 -1
- package/dist/errors/write-error-info.d.ts +1 -1
- package/dist/errors/zod-bridge.d.ts +1 -1
- package/dist/es-ops/context.d.ts +4 -4
- package/dist/es-ops/index.d.ts +4 -4
- package/dist/es-ops/operations-schema.d.ts +1 -1
- package/dist/es-ops/runner.d.ts +3 -3
- package/dist/es-ops/runner.js +9 -1
- package/dist/es-ops/types.d.ts +2 -2
- package/dist/event-store/admin-api.d.ts +3 -3
- package/dist/event-store/archive.d.ts +2 -2
- package/dist/event-store/event-store.d.ts +2 -2
- package/dist/event-store/events-schema.d.ts +1 -1
- package/dist/event-store/index.d.ts +15 -15
- package/dist/event-store/provenance-append.d.ts +3 -3
- package/dist/event-store/rebuild-dead-letter.d.ts +2 -2
- package/dist/event-store/row-to-stored-event.d.ts +2 -2
- package/dist/event-store/snapshot.d.ts +2 -2
- package/dist/event-store/tenant-db-append.d.ts +2 -2
- package/dist/event-store/transfer.d.ts +3 -3
- package/dist/event-store/upcaster-dead-letter.d.ts +2 -2
- package/dist/event-store/upcaster.d.ts +3 -3
- package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -2
- package/dist/files/bind-pending-file-refs.d.ts +3 -3
- package/dist/files/create-file-ref-from-bytes.d.ts +4 -4
- package/dist/files/create-file-ref.d.ts +3 -3
- package/dist/files/dispose-removed-file-refs.d.ts +2 -2
- package/dist/files/feature.d.ts +3 -3
- package/dist/files/file-handle.d.ts +1 -1
- package/dist/files/file-ref-entity.d.ts +1 -1
- package/dist/files/file-ref-table.d.ts +1 -1
- package/dist/files/file-routes.d.ts +5 -5
- package/dist/files/in-memory-provider.d.ts +1 -1
- package/dist/files/index.d.ts +20 -20
- package/dist/files/load-save-file-refs.d.ts +2 -2
- package/dist/files/local-provider.d.ts +1 -1
- package/dist/files/provider-resolver.d.ts +5 -5
- package/dist/files/purge-expired-file-ref-bytes.d.ts +2 -2
- package/dist/files/record-read-check.d.ts +1 -1
- package/dist/files/record-write-check.d.ts +3 -3
- package/dist/files/storage-tracking.d.ts +2 -2
- package/dist/files/types.d.ts +1 -1
- package/dist/files/zip-stream.d.ts +1 -1
- package/dist/i18n/index.d.ts +4 -4
- package/dist/i18n/mail-registry.d.ts +1 -1
- package/dist/i18n/required-surface-keys.d.ts +1 -1
- package/dist/i18n/settings-hub-keys.d.ts +1 -1
- package/dist/internal/stack-support.d.ts +12 -12
- package/dist/internal/testing.d.ts +4 -4
- package/dist/jobs/index.d.ts +2 -2
- package/dist/jobs/job-runner.d.ts +1 -1
- package/dist/jobs/max-per-tenant.d.ts +1 -1
- package/dist/lifecycle/index.d.ts +2 -2
- package/dist/lifecycle/lifecycle.d.ts +1 -1
- package/dist/lifecycle/signal-handlers.d.ts +1 -1
- package/dist/logging/index.d.ts +4 -4
- package/dist/logging/pino-logger.d.ts +1 -1
- package/dist/logging/utils.d.ts +1 -1
- package/dist/migrations/index.d.ts +4 -4
- package/dist/migrations/kumiko-drift.d.ts +1 -1
- package/dist/migrations/pending-rebuilds.d.ts +5 -5
- package/dist/migrations/pii-event-backfill.d.ts +4 -4
- package/dist/migrations/projection-table-index.d.ts +1 -1
- package/dist/observability/console-provider.d.ts +1 -1
- package/dist/observability/context.d.ts +1 -1
- package/dist/observability/escape-hatch-report.d.ts +3 -3
- package/dist/observability/fallback.d.ts +1 -1
- package/dist/observability/index.d.ts +16 -16
- package/dist/observability/metric-validator.d.ts +1 -1
- package/dist/observability/metrics-handle.d.ts +1 -1
- package/dist/observability/metrics-wiring.d.ts +2 -2
- package/dist/observability/noop-provider.d.ts +1 -1
- package/dist/observability/prometheus-meter.d.ts +1 -1
- package/dist/observability/recording-meter.d.ts +1 -1
- package/dist/observability/recording-tracer.d.ts +1 -1
- package/dist/observability/redis-wrapper.d.ts +1 -1
- package/dist/observability/sensitive-filter.d.ts +1 -1
- package/dist/observability/standard-metrics.d.ts +1 -1
- package/dist/pipeline/active-membership.d.ts +4 -4
- package/dist/pipeline/append-event-core.d.ts +3 -3
- package/dist/pipeline/auth-claims-resolver.d.ts +2 -2
- package/dist/pipeline/cascade-handler.d.ts +3 -3
- package/dist/pipeline/dispatch-batch.d.ts +2 -2
- package/dist/pipeline/dispatch-query.d.ts +4 -4
- package/dist/pipeline/dispatch-shared.d.ts +17 -17
- package/dist/pipeline/dispatch-stream.d.ts +2 -2
- package/dist/pipeline/dispatch-write.d.ts +4 -4
- package/dist/pipeline/dispatcher-utils.d.ts +2 -2
- package/dist/pipeline/dispatcher.d.ts +12 -12
- package/dist/pipeline/event-consumer-state.d.ts +1 -1
- package/dist/pipeline/event-dispatcher-admin.d.ts +1 -1
- package/dist/pipeline/event-dispatcher-delivery.d.ts +7 -7
- package/dist/pipeline/event-dispatcher.d.ts +7 -7
- package/dist/pipeline/event-retention.d.ts +1 -1
- package/dist/pipeline/handler-access-error.d.ts +2 -2
- package/dist/pipeline/index.d.ts +42 -42
- package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
- package/dist/pipeline/lifecycle-pipeline.d.ts +2 -2
- package/dist/pipeline/member-read-only-transaction.d.ts +2 -2
- package/dist/pipeline/member-reader.d.ts +5 -5
- package/dist/pipeline/msp-rebuild.d.ts +4 -4
- package/dist/pipeline/multi-stream-apply-context.d.ts +3 -3
- package/dist/pipeline/notify-scope.d.ts +3 -3
- package/dist/pipeline/pending-gap-ranges.d.ts +2 -2
- package/dist/pipeline/pre-handler-gates.d.ts +3 -3
- package/dist/pipeline/pre-transaction-reservations.d.ts +4 -4
- package/dist/pipeline/projection-rebuild.d.ts +3 -3
- package/dist/pipeline/projection-state.d.ts +1 -1
- package/dist/pipeline/projections-runner.d.ts +3 -3
- package/dist/pipeline/projections-runner.js +3 -4
- package/dist/pipeline/system-hooks.d.ts +4 -4
- package/dist/pipeline/system-identity-switch.d.ts +3 -3
- package/dist/pipeline/tenant-timezone-cache.d.ts +1 -1
- package/dist/pipeline/write-origin.d.ts +3 -3
- package/dist/pipeline/write-result-masking.d.ts +2 -2
- package/dist/random/index.d.ts +2 -2
- package/dist/rate-limit/bucket.d.ts +1 -1
- package/dist/rate-limit/index.d.ts +3 -3
- package/dist/rate-limit/middleware.d.ts +3 -3
- package/dist/redis/cache-sync-bus.d.ts +2 -2
- package/dist/redis/cache-sync-topics.d.ts +1 -1
- package/dist/redis/index.d.ts +8 -8
- package/dist/redis/pubsub-signal.d.ts +1 -1
- package/dist/schema-cli.d.ts +1 -1
- package/dist/schema-cli.js +9 -1
- package/dist/search/derive-search-adapter-config.d.ts +2 -2
- package/dist/search/in-memory-adapter.d.ts +1 -1
- package/dist/search/index.d.ts +6 -6
- package/dist/search/meilisearch-adapter.d.ts +2 -2
- package/dist/search/purge-subject.d.ts +4 -4
- package/dist/search/reindex-entity.d.ts +3 -3
- package/dist/secrets/dek-cache.d.ts +1 -1
- package/dist/secrets/env-master-key-provider.d.ts +1 -1
- package/dist/secrets/env-master-key-provider.js +26 -11
- package/dist/secrets/envelope-cipher.d.ts +2 -2
- package/dist/secrets/envelope.d.ts +1 -1
- package/dist/secrets/index.d.ts +9 -9
- package/dist/secrets/rotation.d.ts +1 -1
- package/dist/secrets/stored-envelope.d.ts +1 -1
- package/dist/seeding/entity-seed.d.ts +1 -1
- package/dist/seeding/index.d.ts +3 -3
- package/dist/seeding/seed-users.d.ts +1 -1
- package/dist/time/index.d.ts +6 -6
- package/dist/ui-types/app-schema.d.ts +5 -5
- package/dist/ui-types/index.d.ts +23 -23
- package/dist/upgrade-cli.js +13 -3
- package/dist/utils/index.d.ts +9 -9
- package/package.json +19 -66
- package/presets/biome-app.json +80 -0
- package/presets/tsconfig.app.json +19 -0
- package/src/changes.json +78 -2
- package/src/scripts/codemod/README.md +18 -0
- package/src/scripts/codemod/codemod-support.ts +1 -1
- package/src/scripts/codemod/db-factory.ts +1 -1
- package/src/scripts/codemod/feature-factory.ts +1 -1
- package/src/scripts/codemod/import-extensions.ts +118 -0
- package/src/scripts/codemod/migrate-cross-tenant.ts +2 -2
- package/src/scripts/codemod/migrate-db-raw.ts +1 -1
- package/src/scripts/codemod/migrate-open-to-all.ts +1 -1
- package/src/scripts/codemod/object-form.ts +1 -1
- package/src/scripts/codemod/s3-imports.ts +1 -1
- package/src/scripts/codemod/tenant-db-options.ts +1 -1
- package/src/scripts/codemod/testing-move.ts +2 -2
- package/dist/db/bun-db-deprecated.d.ts +0 -10
- package/dist/db/bun-db-deprecated.js +0 -5
- package/dist/stack/index.d.ts +0 -10
- package/dist/stack/index.js +0 -11
- package/dist/testing/e2e-generator.d.ts +0 -5
- package/dist/testing/e2e-generator.js +0 -5
- package/dist/testing/handler-context.d.ts +0 -5
- package/dist/testing/handler-context.js +0 -5
- package/dist/testing/index.d.ts +0 -10
- package/dist/testing/index.js +0 -10
- package/dist/testing/real-providers.d.ts +0 -5
- package/dist/testing/real-providers.js +0 -5
package/dist/secrets/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { createDekCache, type DekCache, type DekCacheOptions, withDekCache } from "./dek-cache.
|
|
2
|
-
export { derivePurposeSecret } from "./derive-purpose-secret.
|
|
3
|
-
export { createEnvMasterKeyProvider, type EnvMasterKeyProviderOptions, type Keyring, } from "./env-master-key-provider.
|
|
4
|
-
export { decryptValue, encryptValue } from "./envelope.
|
|
5
|
-
export { createEnvelopeCipher, type EnvelopeCipher, type EnvelopeCipherOptions, } from "./envelope-cipher.
|
|
6
|
-
export { assertNoSecretLeak } from "./leak-guard.
|
|
7
|
-
export { rewrapDek } from "./rotation.
|
|
8
|
-
export { decodeStoredEnvelope, encodeStoredEnvelope, isStoredEnvelope, type StoredEnvelope, } from "./stored-envelope.
|
|
9
|
-
export { type ContainsSecret, createSecret, type Envelope, isSecret, type KeyScope, type MasterKeyProvider, type Secret, type SecretAuditContext, type SecretKeyRef, type SecretsContext, } from "./types.
|
|
1
|
+
export { createDekCache, type DekCache, type DekCacheOptions, withDekCache } from "./dek-cache.ts";
|
|
2
|
+
export { derivePurposeSecret } from "./derive-purpose-secret.ts";
|
|
3
|
+
export { createEnvMasterKeyProvider, type EnvMasterKeyProviderOptions, type Keyring, } from "./env-master-key-provider.ts";
|
|
4
|
+
export { decryptValue, encryptValue } from "./envelope.ts";
|
|
5
|
+
export { createEnvelopeCipher, type EnvelopeCipher, type EnvelopeCipherOptions, } from "./envelope-cipher.ts";
|
|
6
|
+
export { assertNoSecretLeak } from "./leak-guard.ts";
|
|
7
|
+
export { rewrapDek } from "./rotation.ts";
|
|
8
|
+
export { decodeStoredEnvelope, encodeStoredEnvelope, isStoredEnvelope, type StoredEnvelope, } from "./stored-envelope.ts";
|
|
9
|
+
export { type ContainsSecret, createSecret, type Envelope, isSecret, type KeyScope, type MasterKeyProvider, type Secret, type SecretAuditContext, type SecretKeyRef, type SecretsContext, } from "./types.ts";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { Envelope, MasterKeyProvider } from "./types.
|
|
1
|
+
import type { Envelope, MasterKeyProvider } from "./types.ts";
|
|
2
2
|
export declare function rewrapDek(envelope: Envelope, provider: MasterKeyProvider): Promise<Envelope>;
|
package/dist/seeding/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { type EventStoreSeedExisting, type RunEventStoreSeedOptions, runEventStoreSeed, } from "./entity-seed.
|
|
2
|
-
export { createTestUser, TestUsers, testTenantId, testUserId } from "./seed-users.
|
|
3
|
-
export { DEFAULT_SEED_IF_EXISTS, type SeedIfExists } from "./types.
|
|
1
|
+
export { type EventStoreSeedExisting, type RunEventStoreSeedOptions, runEventStoreSeed, } from "./entity-seed.ts";
|
|
2
|
+
export { createTestUser, TestUsers, testTenantId, testUserId } from "./seed-users.ts";
|
|
3
|
+
export { DEFAULT_SEED_IF_EXISTS, type SeedIfExists } from "./types.ts";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SessionUser, TenantId } from "../engine/types/index.
|
|
1
|
+
import type { SessionUser, TenantId } from "../engine/types/index.ts";
|
|
2
2
|
export declare function testTenantId(n: number): TenantId;
|
|
3
3
|
export declare function testUserId(n: number): string;
|
|
4
4
|
export declare const TestUsers: {
|
package/dist/time/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { warnIfNonUtcServerTimeZone } from "./boot-tz-warning.
|
|
2
|
-
export type { GeoAddress, GeoCoordinates, GeoTzProvider } from "./geo-tz.
|
|
3
|
-
export { isValidIanaTimeZone } from "./iana.
|
|
4
|
-
export { instantToLegacyDate, legacyDateToInstant } from "./legacy-date.
|
|
5
|
-
export { ensureTemporalPolyfill, getTemporal } from "./polyfill.
|
|
6
|
-
export { type Clock, createTzContext, createTzContextAsync, type LocatedTimestampJson, type TzContext, type TzContextOptions, } from "./tz-context.
|
|
1
|
+
export { warnIfNonUtcServerTimeZone } from "./boot-tz-warning.ts";
|
|
2
|
+
export type { GeoAddress, GeoCoordinates, GeoTzProvider } from "./geo-tz.ts";
|
|
3
|
+
export { isValidIanaTimeZone } from "./iana.ts";
|
|
4
|
+
export { instantToLegacyDate, legacyDateToInstant } from "./legacy-date.ts";
|
|
5
|
+
export { ensureTemporalPolyfill, getTemporal } from "./polyfill.ts";
|
|
6
|
+
export { type Clock, createTzContext, createTzContextAsync, type LocatedTimestampJson, type TzContext, type TzContextOptions, } from "./tz-context.ts";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { TranslationKeys } from "../engine/types/config.
|
|
2
|
-
import type { EntityDefinition } from "../engine/types/fields.
|
|
3
|
-
import type { ContentCollectionDefinition, NavDefinition } from "../engine/types/nav.
|
|
4
|
-
import type { ScreenDefinition } from "../engine/types/screen.
|
|
5
|
-
import type { WorkspaceDefinition } from "../engine/types/workspace.
|
|
1
|
+
import type { TranslationKeys } from "../engine/types/config.ts";
|
|
2
|
+
import type { EntityDefinition } from "../engine/types/fields.ts";
|
|
3
|
+
import type { ContentCollectionDefinition, NavDefinition } from "../engine/types/nav.ts";
|
|
4
|
+
import type { ScreenDefinition } from "../engine/types/screen.ts";
|
|
5
|
+
import type { WorkspaceDefinition } from "../engine/types/workspace.ts";
|
|
6
6
|
export type FeatureSchema = {
|
|
7
7
|
readonly featureName: string;
|
|
8
8
|
readonly entities: Readonly<Record<string, EntityDefinition>>;
|
package/dist/ui-types/index.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
export { NO_WIDGET_FIELD_TYPES } from "@cosmicdrift/kumiko-types/fields";
|
|
2
|
-
export type { DerivedCellRoundingTarget } from "../engine/embedded-derived.
|
|
3
|
-
export { computeDerivedCellValue, roundDerivedCellValue } from "../engine/embedded-derived.
|
|
4
|
-
export type { ParsedRefTarget } from "../engine/parse-ref-target.
|
|
5
|
-
export { parseRefTarget } from "../engine/parse-ref-target.
|
|
6
|
-
export type { FieldsOrGroupsSection, UnavailableSelectOption } from "../engine/screen-helpers.
|
|
7
|
-
export { availableSelectOptions, evalFieldCondition, explicitListScreenId, findUnavailableSelectOptions, isExtensionEditSection, isFieldsEditSection, isFormatSpec, isRecordLocked, isUnchangedValue, isWriteFormEditSection, normalizeEditField, normalizeListColumn, resolveNavParentScreen, sectionFieldSpecs, } from "../engine/screen-helpers.
|
|
8
|
-
export type { BooleanFieldDef, DateFieldDef, EmbeddedDerivedCellDef, EntityDefinition, FieldDefinition, FileFieldDef, FilesFieldDef, ImageFieldDef, ImagesFieldDef, NumberFieldDef, OptionsQueryPayload, OptionsQueryPayloadValue, SelectFieldDef, SelectOptionTone, TextFieldDef, } from "../engine/types/fields.
|
|
9
|
-
export type { AccessRule, OpenToAllAccessRule, OpenToAllDeclaration, OpenToAllPersonalData, RoleAccessPersonalData, RoleAccessRule, } from "../engine/types/handlers.
|
|
10
|
-
export { isOpenToAllGranted, isUiAccessGranted } from "../engine/types/handlers.
|
|
11
|
-
export type { IconKey, NavDefinition, NavIconKey } from "../engine/types/nav.
|
|
12
|
-
export type { ActionFormFooterAction, ActionFormRedirect, ActionFormScreenDefinition, ConfigEditScreenDefinition, CustomScreenDefinition, CustomScreenRoute, DashboardChartKind, DashboardChartMarkerKind, DashboardChartPanel, DashboardChartRangeOption, DashboardChartRanges, DashboardChartTone, DashboardCustomPanel, DashboardDateParam, DashboardFeedPanel, DashboardFilterDefinition, DashboardI18nText, DashboardListPanel, DashboardMoneyParam, DashboardPanelDefinition, DashboardPanelEmptyState, DashboardPanelGate, DashboardPanelQueryOptions, DashboardPanelSpan, DashboardPanelVisibility, DashboardProgressListPanel, DashboardScopeDefinition, DashboardScreenDefinition, DashboardScreenPanel, DashboardStatGroupPanel, DashboardStatPanel, DashboardText, DashboardTextParam, DashboardTimeRangeDefinition, DashboardValueFormat, EditExtensionSection, EditFieldPrefill, EditFieldSpec, EditFieldsSection, EditLayout, EditRelatedListSection, EditSectionSpec, EditWriteFormSection, EmbeddedListEditSpec, EntityEditAction, EntityEditActionPlacement, EntityEditScreenDefinition, EntityListExpandableRow, EntityListFacetConfig, EntityListFacetExtraOption, EntityListScreenDefinition, EntityWriteExcludedFields, FieldCondition, FieldIconKey, FieldRenderer, FormWidth, ListBadgeTone, ListColumnDisplay, ListColumnSpec, ListEmptyStateSpec, ListFacetSpec, ListSortSpec, MetricNavigate, MetricSpec, PlatformComponent, ProjectionDetailScreenDefinition, ProjectionListScreenDefinition, RecordHeaderSubtitlePart, RelatedListGroupBy, RelatedListRowTone, RelatedListToolbarAction, RowAction, RowActionDisplay, RowActionDrawer, RowActionMode, RowActionNavigate, RowActionWriteHandler, RowFieldExtractor, ScreenDefinition, ScreenFilter, ScreenFilterOp, ScreenSlots, SecretMintConfirmStep, SecretMintScreenDefinition, SecretReveal, SecretRevealField, SecretsEditScreenDefinition, SecretsEditSection, ToolbarAction, } from "../engine/types/screen.
|
|
13
|
-
export { metricField, relatedListGroupHeaderLabel, relatedListGroupKey, } from "../engine/types/screen.
|
|
14
|
-
export type { TargetRef } from "../engine/types/target-ref.
|
|
15
|
-
export type { TreeAction, TreeNode, TreeNodeState } from "../engine/types/tree-node.
|
|
16
|
-
export type { WorkspaceDefinition } from "../engine/types/workspace.
|
|
17
|
-
export { ACTION_FORM_ENTITY, handlerFieldLabelKey, handlerTitleKey, PROJECTION_DETAIL_ENTITY, WRITE_FORM_SECTION_ENTITY, } from "../i18n/required-surface-keys.
|
|
18
|
-
export type { AppSchema, FeatureSchema, QualifiedContentCollection, WorkspaceSchema, } from "./app-schema.
|
|
19
|
-
export type { CardColumnRoles, CardRoleColumn } from "./card-column-roles.
|
|
20
|
-
export { CARD_META_MAX, cardColumnRoles, cardFileDisplayKind } from "./card-column-roles.
|
|
21
|
-
export { type Formality, formalLocaleTag } from "./formality.
|
|
22
|
-
export type { ListRowMetaColumnType, ListRowMetaReference, ReferenceLookupSource, SystemReferenceLabel, } from "./list-row-meta.
|
|
23
|
-
export { LIST_ROW_META_COLUMNS, LIST_ROW_META_REFERENCES, REFERENCE_LOOKUP_SOURCES, SYSTEM_REFERENCE_LABELS, } from "./list-row-meta.
|
|
24
|
-
export { type PluralForms, resolveTranslationValue, type TranslationValue, translationValueOtherText, } from "./plural.
|
|
2
|
+
export type { DerivedCellRoundingTarget } from "../engine/embedded-derived.ts";
|
|
3
|
+
export { computeDerivedCellValue, roundDerivedCellValue } from "../engine/embedded-derived.ts";
|
|
4
|
+
export type { ParsedRefTarget } from "../engine/parse-ref-target.ts";
|
|
5
|
+
export { parseRefTarget } from "../engine/parse-ref-target.ts";
|
|
6
|
+
export type { FieldsOrGroupsSection, UnavailableSelectOption } from "../engine/screen-helpers.ts";
|
|
7
|
+
export { availableSelectOptions, evalFieldCondition, explicitListScreenId, findUnavailableSelectOptions, isExtensionEditSection, isFieldsEditSection, isFormatSpec, isRecordLocked, isUnchangedValue, isWriteFormEditSection, normalizeEditField, normalizeListColumn, resolveNavParentScreen, sectionFieldSpecs, } from "../engine/screen-helpers.ts";
|
|
8
|
+
export type { BooleanFieldDef, DateFieldDef, EmbeddedDerivedCellDef, EntityDefinition, FieldDefinition, FileFieldDef, FilesFieldDef, ImageFieldDef, ImagesFieldDef, NumberFieldDef, OptionsQueryPayload, OptionsQueryPayloadValue, SelectFieldDef, SelectOptionTone, TextFieldDef, } from "../engine/types/fields.ts";
|
|
9
|
+
export type { AccessRule, OpenToAllAccessRule, OpenToAllDeclaration, OpenToAllPersonalData, RoleAccessPersonalData, RoleAccessRule, } from "../engine/types/handlers.ts";
|
|
10
|
+
export { isOpenToAllGranted, isUiAccessGranted } from "../engine/types/handlers.ts";
|
|
11
|
+
export type { IconKey, NavDefinition, NavIconKey } from "../engine/types/nav.ts";
|
|
12
|
+
export type { ActionFormFooterAction, ActionFormRedirect, ActionFormScreenDefinition, ConfigEditScreenDefinition, CustomScreenDefinition, CustomScreenRoute, DashboardChartKind, DashboardChartMarkerKind, DashboardChartPanel, DashboardChartRangeOption, DashboardChartRanges, DashboardChartTone, DashboardCustomPanel, DashboardDateParam, DashboardFeedPanel, DashboardFilterDefinition, DashboardI18nText, DashboardListPanel, DashboardMoneyParam, DashboardPanelDefinition, DashboardPanelEmptyState, DashboardPanelGate, DashboardPanelQueryOptions, DashboardPanelSpan, DashboardPanelVisibility, DashboardProgressListPanel, DashboardScopeDefinition, DashboardScreenDefinition, DashboardScreenPanel, DashboardStatGroupPanel, DashboardStatPanel, DashboardText, DashboardTextParam, DashboardTimeRangeDefinition, DashboardValueFormat, EditExtensionSection, EditFieldPrefill, EditFieldSpec, EditFieldsSection, EditLayout, EditRelatedListSection, EditSectionSpec, EditWriteFormSection, EmbeddedListEditSpec, EntityEditAction, EntityEditActionPlacement, EntityEditScreenDefinition, EntityListExpandableRow, EntityListFacetConfig, EntityListFacetExtraOption, EntityListScreenDefinition, EntityWriteExcludedFields, FieldCondition, FieldIconKey, FieldRenderer, FormWidth, ListBadgeTone, ListColumnDisplay, ListColumnSpec, ListEmptyStateSpec, ListFacetSpec, ListSortSpec, MetricNavigate, MetricSpec, PlatformComponent, ProjectionDetailScreenDefinition, ProjectionListScreenDefinition, RecordHeaderSubtitlePart, RelatedListGroupBy, RelatedListRowTone, RelatedListToolbarAction, RowAction, RowActionDisplay, RowActionDrawer, RowActionMode, RowActionNavigate, RowActionWriteHandler, RowFieldExtractor, ScreenDefinition, ScreenFilter, ScreenFilterOp, ScreenSlots, SecretMintConfirmStep, SecretMintScreenDefinition, SecretReveal, SecretRevealField, SecretsEditScreenDefinition, SecretsEditSection, ToolbarAction, } from "../engine/types/screen.ts";
|
|
13
|
+
export { metricField, relatedListGroupHeaderLabel, relatedListGroupKey, } from "../engine/types/screen.ts";
|
|
14
|
+
export type { TargetRef } from "../engine/types/target-ref.ts";
|
|
15
|
+
export type { TreeAction, TreeNode, TreeNodeState } from "../engine/types/tree-node.ts";
|
|
16
|
+
export type { WorkspaceDefinition } from "../engine/types/workspace.ts";
|
|
17
|
+
export { ACTION_FORM_ENTITY, handlerFieldLabelKey, handlerTitleKey, PROJECTION_DETAIL_ENTITY, WRITE_FORM_SECTION_ENTITY, } from "../i18n/required-surface-keys.ts";
|
|
18
|
+
export type { AppSchema, FeatureSchema, QualifiedContentCollection, WorkspaceSchema, } from "./app-schema.ts";
|
|
19
|
+
export type { CardColumnRoles, CardRoleColumn } from "./card-column-roles.ts";
|
|
20
|
+
export { CARD_META_MAX, cardColumnRoles, cardFileDisplayKind } from "./card-column-roles.ts";
|
|
21
|
+
export { type Formality, formalLocaleTag } from "./formality.ts";
|
|
22
|
+
export type { ListRowMetaColumnType, ListRowMetaReference, ReferenceLookupSource, SystemReferenceLabel, } from "./list-row-meta.ts";
|
|
23
|
+
export { LIST_ROW_META_COLUMNS, LIST_ROW_META_REFERENCES, REFERENCE_LOOKUP_SOURCES, SYSTEM_REFERENCE_LABELS, } from "./list-row-meta.ts";
|
|
24
|
+
export { type PluralForms, resolveTranslationValue, type TranslationValue, translationValueOtherText, } from "./plural.ts";
|
package/dist/upgrade-cli.js
CHANGED
|
@@ -284,6 +284,18 @@ async function runCodemodScript(scriptPath, targetDir, repoRoot, dryRun) {
|
|
|
284
284
|
]);
|
|
285
285
|
return { ok: exitCode === 0, output: `${stdout}${stderr}`.trim() };
|
|
286
286
|
}
|
|
287
|
+
// One codemod can back the breaking entries of many features in the same release
|
|
288
|
+
// (each feature's changelog names its own removed export); it runs once per version.
|
|
289
|
+
function uniqueCodemodRunsPerVersion(entries) {
|
|
290
|
+
const seenRuns = new Set();
|
|
291
|
+
return entries.filter((e) => {
|
|
292
|
+
const runKey = `${e.version}\0${e.codemod}`;
|
|
293
|
+
if (seenRuns.has(runKey))
|
|
294
|
+
return false;
|
|
295
|
+
seenRuns.add(runKey);
|
|
296
|
+
return true;
|
|
297
|
+
});
|
|
298
|
+
}
|
|
287
299
|
function hasCodemod(e) {
|
|
288
300
|
return typeof e.codemod === "string" && e.codemod.length > 0;
|
|
289
301
|
}
|
|
@@ -476,9 +488,7 @@ markerVersion, previous) {
|
|
|
476
488
|
const breaking = pending.filter((e) => e.type === "breaking");
|
|
477
489
|
// A codemod is worth running whatever the entry's type: an improvement that
|
|
478
490
|
// moves a module ships one too, and skipping it leaves the deprecated path in place.
|
|
479
|
-
const codemodEntries = pending
|
|
480
|
-
.filter(hasCodemod)
|
|
481
|
-
.sort((a, b) => compareVersions(a.version, b.version));
|
|
491
|
+
const codemodEntries = uniqueCodemodRunsPerVersion(pending.filter(hasCodemod).sort((a, b) => compareVersions(a.version, b.version)));
|
|
482
492
|
const manualEntries = breaking.filter(needsManualMigration);
|
|
483
493
|
for (const e of manualEntries) {
|
|
484
494
|
out.log(hasCodemod(e)
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { assertUnreachable } from "./assert.
|
|
2
|
-
export { toSnakeCase } from "./case.
|
|
3
|
-
export { compareByCodepoint } from "./compare.
|
|
4
|
-
export { readPositiveIntEnv } from "./env-parse.
|
|
5
|
-
export { generateDeterministicId, generateId } from "./ids.
|
|
6
|
-
export { isPlainObject } from "./is-plain-object.
|
|
7
|
-
export { parseStringArrayJson } from "./parse-string-array-json.
|
|
8
|
-
export { parseJsonOrThrow, parseJsonSafe, stringifyJson } from "./safe-json.
|
|
9
|
-
export { parseRoles } from "./serialization.
|
|
1
|
+
export { assertUnreachable } from "./assert.ts";
|
|
2
|
+
export { toSnakeCase } from "./case.ts";
|
|
3
|
+
export { compareByCodepoint } from "./compare.ts";
|
|
4
|
+
export { readPositiveIntEnv } from "./env-parse.ts";
|
|
5
|
+
export { generateDeterministicId, generateId } from "./ids.ts";
|
|
6
|
+
export { isPlainObject } from "./is-plain-object.ts";
|
|
7
|
+
export { parseStringArrayJson } from "./parse-string-array-json.ts";
|
|
8
|
+
export { parseJsonOrThrow, parseJsonSafe, stringifyJson } from "./safe-json.ts";
|
|
9
|
+
export { parseRoles } from "./serialization.ts";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.370.0",
|
|
4
4
|
"description": "Framework core — engine, pipeline, API, DB, and every other bit that makes Kumiko go.",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -26,11 +26,7 @@
|
|
|
26
26
|
"kumiko": {
|
|
27
27
|
"runtime": "runtime",
|
|
28
28
|
"bunOnlyExports": [
|
|
29
|
-
"./engine/codemod"
|
|
30
|
-
"./stack",
|
|
31
|
-
"./testing",
|
|
32
|
-
"./testing/e2e-generator",
|
|
33
|
-
"./testing/real-providers"
|
|
29
|
+
"./engine/codemod"
|
|
34
30
|
]
|
|
35
31
|
},
|
|
36
32
|
"exports": {
|
|
@@ -38,6 +34,12 @@
|
|
|
38
34
|
"types": "./dist/compliance/index.d.ts",
|
|
39
35
|
"default": "./dist/compliance/index.js"
|
|
40
36
|
},
|
|
37
|
+
"./config": {
|
|
38
|
+
"types": "./dist/config/index.d.ts",
|
|
39
|
+
"default": "./dist/config/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./biome": "./presets/biome-app.json",
|
|
42
|
+
"./tsconfig.app.json": "./presets/tsconfig.app.json",
|
|
41
43
|
"./es-ops": {
|
|
42
44
|
"types": "./dist/es-ops/index.d.ts",
|
|
43
45
|
"default": "./dist/es-ops/index.js"
|
|
@@ -66,10 +68,6 @@
|
|
|
66
68
|
"types": "./dist/errors/index.d.ts",
|
|
67
69
|
"default": "./dist/errors/index.js"
|
|
68
70
|
},
|
|
69
|
-
"./bun-db": {
|
|
70
|
-
"types": "./dist/db/bun-db-deprecated.d.ts",
|
|
71
|
-
"default": "./dist/db/bun-db-deprecated.js"
|
|
72
|
-
},
|
|
73
71
|
"./db": {
|
|
74
72
|
"types": "./dist/db/index.d.ts",
|
|
75
73
|
"default": "./dist/db/index.js"
|
|
@@ -174,22 +172,6 @@
|
|
|
174
172
|
"types": "./dist/arg-parser.d.ts",
|
|
175
173
|
"default": "./dist/arg-parser.js"
|
|
176
174
|
},
|
|
177
|
-
"./stack": {
|
|
178
|
-
"types": "./dist/stack/index.d.ts",
|
|
179
|
-
"default": "./dist/stack/index.js"
|
|
180
|
-
},
|
|
181
|
-
"./testing": {
|
|
182
|
-
"types": "./dist/testing/index.d.ts",
|
|
183
|
-
"default": "./dist/testing/index.js"
|
|
184
|
-
},
|
|
185
|
-
"./testing/handler-context": {
|
|
186
|
-
"types": "./dist/testing/handler-context.d.ts",
|
|
187
|
-
"default": "./dist/testing/handler-context.js"
|
|
188
|
-
},
|
|
189
|
-
"./testing/real-providers": {
|
|
190
|
-
"types": "./dist/testing/real-providers.d.ts",
|
|
191
|
-
"default": "./dist/testing/real-providers.js"
|
|
192
|
-
},
|
|
193
175
|
"./internal/request-context": {
|
|
194
176
|
"types": "./dist/api/request-context.d.ts",
|
|
195
177
|
"default": "./dist/api/request-context.js"
|
|
@@ -202,10 +184,6 @@
|
|
|
202
184
|
"types": "./dist/internal/testing.d.ts",
|
|
203
185
|
"default": "./dist/internal/testing.js"
|
|
204
186
|
},
|
|
205
|
-
"./testing/e2e-generator": {
|
|
206
|
-
"types": "./dist/testing/e2e-generator.d.ts",
|
|
207
|
-
"default": "./dist/testing/e2e-generator.js"
|
|
208
|
-
},
|
|
209
187
|
"./time": {
|
|
210
188
|
"types": "./dist/time/index.d.ts",
|
|
211
189
|
"default": "./dist/time/index.js"
|
|
@@ -221,8 +199,8 @@
|
|
|
221
199
|
"./package.json": "./package.json"
|
|
222
200
|
},
|
|
223
201
|
"dependencies": {
|
|
224
|
-
"@cosmicdrift/kumiko-http": "0.
|
|
225
|
-
"@cosmicdrift/kumiko-types": "0.
|
|
202
|
+
"@cosmicdrift/kumiko-http": "0.370.0",
|
|
203
|
+
"@cosmicdrift/kumiko-types": "0.370.0",
|
|
226
204
|
"bullmq": "^5.76.7",
|
|
227
205
|
"bun-types": "^1.3.13",
|
|
228
206
|
"hono": "^4.13.1",
|
|
@@ -238,19 +216,11 @@
|
|
|
238
216
|
"zod": "^4.4.3"
|
|
239
217
|
},
|
|
240
218
|
"devDependencies": {
|
|
241
|
-
"@cosmicdrift/kumiko-dispatcher-live": "0.
|
|
242
|
-
"@cosmicdrift/kumiko-testing": "0.
|
|
219
|
+
"@cosmicdrift/kumiko-dispatcher-live": "0.370.0",
|
|
220
|
+
"@cosmicdrift/kumiko-testing": "0.370.0",
|
|
243
221
|
"bun-types": "^1.3.13",
|
|
244
222
|
"pino-pretty": "^13.1.3"
|
|
245
223
|
},
|
|
246
|
-
"peerDependencies": {
|
|
247
|
-
"@cosmicdrift/kumiko-testing": ">=0.366.0 <1.0.0"
|
|
248
|
-
},
|
|
249
|
-
"peerDependenciesMeta": {
|
|
250
|
-
"@cosmicdrift/kumiko-testing": {
|
|
251
|
-
"optional": true
|
|
252
|
-
}
|
|
253
|
-
},
|
|
254
224
|
"publishConfig": {
|
|
255
225
|
"registry": "https://registry.npmjs.org",
|
|
256
226
|
"access": "public",
|
|
@@ -259,6 +229,12 @@
|
|
|
259
229
|
"types": "./dist/compliance/index.d.ts",
|
|
260
230
|
"default": "./dist/compliance/index.js"
|
|
261
231
|
},
|
|
232
|
+
"./config": {
|
|
233
|
+
"types": "./dist/config/index.d.ts",
|
|
234
|
+
"default": "./dist/config/index.js"
|
|
235
|
+
},
|
|
236
|
+
"./biome": "./presets/biome-app.json",
|
|
237
|
+
"./tsconfig.app.json": "./presets/tsconfig.app.json",
|
|
262
238
|
"./es-ops": {
|
|
263
239
|
"types": "./dist/es-ops/index.d.ts",
|
|
264
240
|
"default": "./dist/es-ops/index.js"
|
|
@@ -287,10 +263,6 @@
|
|
|
287
263
|
"types": "./dist/errors/index.d.ts",
|
|
288
264
|
"default": "./dist/errors/index.js"
|
|
289
265
|
},
|
|
290
|
-
"./bun-db": {
|
|
291
|
-
"types": "./dist/db/bun-db-deprecated.d.ts",
|
|
292
|
-
"default": "./dist/db/bun-db-deprecated.js"
|
|
293
|
-
},
|
|
294
266
|
"./db": {
|
|
295
267
|
"types": "./dist/db/index.d.ts",
|
|
296
268
|
"default": "./dist/db/index.js"
|
|
@@ -395,22 +367,6 @@
|
|
|
395
367
|
"types": "./dist/arg-parser.d.ts",
|
|
396
368
|
"default": "./dist/arg-parser.js"
|
|
397
369
|
},
|
|
398
|
-
"./stack": {
|
|
399
|
-
"types": "./dist/stack/index.d.ts",
|
|
400
|
-
"default": "./dist/stack/index.js"
|
|
401
|
-
},
|
|
402
|
-
"./testing": {
|
|
403
|
-
"types": "./dist/testing/index.d.ts",
|
|
404
|
-
"default": "./dist/testing/index.js"
|
|
405
|
-
},
|
|
406
|
-
"./testing/handler-context": {
|
|
407
|
-
"types": "./dist/testing/handler-context.d.ts",
|
|
408
|
-
"default": "./dist/testing/handler-context.js"
|
|
409
|
-
},
|
|
410
|
-
"./testing/real-providers": {
|
|
411
|
-
"types": "./dist/testing/real-providers.d.ts",
|
|
412
|
-
"default": "./dist/testing/real-providers.js"
|
|
413
|
-
},
|
|
414
370
|
"./internal/request-context": {
|
|
415
371
|
"types": "./dist/api/request-context.d.ts",
|
|
416
372
|
"default": "./dist/api/request-context.js"
|
|
@@ -423,10 +379,6 @@
|
|
|
423
379
|
"types": "./dist/internal/testing.d.ts",
|
|
424
380
|
"default": "./dist/internal/testing.js"
|
|
425
381
|
},
|
|
426
|
-
"./testing/e2e-generator": {
|
|
427
|
-
"types": "./dist/testing/e2e-generator.d.ts",
|
|
428
|
-
"default": "./dist/testing/e2e-generator.js"
|
|
429
|
-
},
|
|
430
382
|
"./time": {
|
|
431
383
|
"types": "./dist/time/index.d.ts",
|
|
432
384
|
"default": "./dist/time/index.js"
|
|
@@ -444,6 +396,7 @@
|
|
|
444
396
|
},
|
|
445
397
|
"files": [
|
|
446
398
|
"dist",
|
|
399
|
+
"presets",
|
|
447
400
|
"src/changes.json",
|
|
448
401
|
"src/scripts/codemod",
|
|
449
402
|
"README.md",
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.5.7/schema.json",
|
|
3
|
+
"vcs": {
|
|
4
|
+
"enabled": true,
|
|
5
|
+
"clientKind": "git",
|
|
6
|
+
"useIgnoreFile": false,
|
|
7
|
+
"defaultBranch": "main"
|
|
8
|
+
},
|
|
9
|
+
"files": {
|
|
10
|
+
"includes": [
|
|
11
|
+
"src/**",
|
|
12
|
+
"bin/**",
|
|
13
|
+
"kumiko/**",
|
|
14
|
+
"e2e/**",
|
|
15
|
+
"scripts/**",
|
|
16
|
+
"kumiko.config.ts",
|
|
17
|
+
"playwright.config.ts",
|
|
18
|
+
"!**/node_modules",
|
|
19
|
+
"!**/dist",
|
|
20
|
+
"!**/dist-server",
|
|
21
|
+
"!kumiko/migrations",
|
|
22
|
+
"!test-results",
|
|
23
|
+
"!playwright-report"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"formatter": {
|
|
27
|
+
"enabled": true,
|
|
28
|
+
"indentStyle": "space",
|
|
29
|
+
"indentWidth": 2,
|
|
30
|
+
"lineWidth": 100,
|
|
31
|
+
"lineEnding": "lf"
|
|
32
|
+
},
|
|
33
|
+
"css": {
|
|
34
|
+
"parser": { "cssModules": false, "tailwindDirectives": true }
|
|
35
|
+
},
|
|
36
|
+
"javascript": {
|
|
37
|
+
"formatter": {
|
|
38
|
+
"quoteStyle": "double",
|
|
39
|
+
"jsxQuoteStyle": "double",
|
|
40
|
+
"semicolons": "always",
|
|
41
|
+
"trailingCommas": "all",
|
|
42
|
+
"arrowParentheses": "always"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"json": { "formatter": { "indentWidth": 2, "lineWidth": 80 } },
|
|
46
|
+
"linter": {
|
|
47
|
+
"enabled": true,
|
|
48
|
+
"rules": {
|
|
49
|
+
"preset": "recommended",
|
|
50
|
+
"correctness": {
|
|
51
|
+
"noUnusedVariables": "error",
|
|
52
|
+
"noUnusedImports": "error"
|
|
53
|
+
},
|
|
54
|
+
"suspicious": {
|
|
55
|
+
"noExplicitAny": "error",
|
|
56
|
+
"noDebugger": "error",
|
|
57
|
+
"noConsole": "warn"
|
|
58
|
+
},
|
|
59
|
+
"complexity": { "useLiteralKeys": "off" },
|
|
60
|
+
"style": { "useConst": "error" },
|
|
61
|
+
"nursery": { "noFloatingPromises": "error" }
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"overrides": [
|
|
65
|
+
{
|
|
66
|
+
"includes": [
|
|
67
|
+
"**/*.test.ts",
|
|
68
|
+
"**/*.spec.ts",
|
|
69
|
+
"**/*.integration.ts",
|
|
70
|
+
"**/*.e2e.ts"
|
|
71
|
+
],
|
|
72
|
+
"linter": {
|
|
73
|
+
"rules": {
|
|
74
|
+
"suspicious": { "noConsole": "off" },
|
|
75
|
+
"style": { "noNonNullAssertion": "off" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": true,
|
|
4
|
+
"noUncheckedIndexedAccess": true,
|
|
5
|
+
"forceConsistentCasingInFileNames": true,
|
|
6
|
+
"verbatimModuleSyntax": true,
|
|
7
|
+
"target": "ESNext",
|
|
8
|
+
"module": "ESNext",
|
|
9
|
+
"moduleResolution": "bundler",
|
|
10
|
+
"allowImportingTsExtensions": true,
|
|
11
|
+
"esModuleInterop": true,
|
|
12
|
+
"skipLibCheck": true,
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"lib": ["ESNext", "DOM"],
|
|
15
|
+
"types": ["bun-types"],
|
|
16
|
+
"jsx": "react-jsx",
|
|
17
|
+
"noEmit": true
|
|
18
|
+
}
|
|
19
|
+
}
|
package/src/changes.json
CHANGED
|
@@ -1,4 +1,80 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.370.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "inspectEnv, renderEnvInspection and the dry-run mode parser",
|
|
6
|
+
"detail": "inspectEnv(schema, env, { sources }) checks each field on its own and returns its status (set, unset, missing, invalid) without the value; renderEnvInspection renders those rows as the boot table. parseDryRunEnvMode reads KUMIKO_DRY_RUN_ENV (1, true, human, json, pulumi, k8s, boot) and isDryRunEnvActive tells module-level code whether a dry run is running. DRY_RUN_ENV_VAR names the variable."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"version": "0.370.0",
|
|
10
|
+
"type": "improvement",
|
|
11
|
+
"title": "createEnvMasterKeyProvider defers the keyring check in a dry run",
|
|
12
|
+
"detail": "While KUMIKO_DRY_RUN_ENV is set, createEnvMasterKeyProvider no longer throws at construction on a missing or malformed keyring; the first key operation throws instead. Apps that build the provider at module load can run the boot dry run on an empty env. Outside a dry run the check still runs at construction, and the boot probe for encrypted entity fields forces it in both cases."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"version": "0.370.0",
|
|
16
|
+
"type": "improvement",
|
|
17
|
+
"title": "composeEnvSchema returns a typed schema",
|
|
18
|
+
"detail": "composeEnvSchema infers the merged shape from core, extend and every feature typed with featureWithEnvSchema(feature, schema), so parseEnv(composed.schema, …) returns typed values instead of a string record. optionalFeatures types those fields optional. A feature list widened to FeatureDefinition[] still compiles and contributes no keys to the type. extend may now repeat a feature's field when it is the same instance, so an app can spread a block such as stripeEnvSchema next to the mounted feature; a different field under that key still throws."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"version": "0.370.0",
|
|
22
|
+
"type": "breaking",
|
|
23
|
+
"title": "import-extensions codemod and tsconfig options for .ts import specifiers",
|
|
24
|
+
"detail": "The import-extensions codemod rewrites relative import and export specifiers that end in .js or .jsx to the .ts or .tsx file next to the importer (import, export from, import type, import() and mock.module). It leaves a specifier alone and reports it when no such file exists. The framework repo itself now imports with .ts endings; its published dist is unchanged. tsc writes .js into the dist, and the .d.ts files keep .ts specifiers, which TypeScript resolves to the sibling .d.ts. An app tsconfig needs allowImportingTsExtensions: true, because the framework packages now ship sources with .ts specifiers and tsc checks them (the preset @cosmicdrift/kumiko-framework/tsconfig.app.json sets it). A tsconfig that emits JS also needs rewriteRelativeImportExtensions (TypeScript 5.7 or newer); a project that only type-checks code from another project reference needs rewriteRelativeImportExtensions false plus emitDeclarationOnly. Consumer code with .js endings keeps running once the option is set.",
|
|
25
|
+
"migration": "Add `allowImportingTsExtensions: true` to the app tsconfig (or extend @cosmicdrift/kumiko-framework/tsconfig.app.json), then run the codemod (bun node_modules/@cosmicdrift/kumiko-framework/src/scripts/codemod/import-extensions.ts . --write); the guard import-extensions reports remaining .js specifiers.",
|
|
26
|
+
"codemod": "scripts/codemod/import-extensions.ts"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"version": "0.370.0",
|
|
30
|
+
"type": "improvement",
|
|
31
|
+
"title": "defineAppConfig in @cosmicdrift/kumiko-framework/config, plus biome and tsconfig presets for apps",
|
|
32
|
+
"detail": "kumiko.config.ts default-exports defineAppConfig({ features, prodFeatures?, client: { entries }, ports: { dev, e2e, infra? } }). defineAppConfig throws on ports outside 1..65535, a port claimed twice within the app, an empty client.entries list and entries that leave the app. allAppFeatures(config) returns features plus prodFeatures. New exports @cosmicdrift/kumiko-framework/biome (Biome 2.5.7 preset with vcs.useIgnoreFile false) and @cosmicdrift/kumiko-framework/tsconfig.app.json; an app's biome.json and tsconfig.json extend them and keep their own overrides next to extends."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"version": "0.370.0",
|
|
36
|
+
"type": "breaking",
|
|
37
|
+
"title": "createDbConnection takes only the options object, the bun-db subpath is gone",
|
|
38
|
+
"detail": "The positional createDbConnection(url, options) overload and the deprecated @cosmicdrift/kumiko-framework/bun-db subpath are removed. createDbConnection({ url, ...options }) and the query helpers come from @cosmicdrift/kumiko-framework/db. Removed from /bun-db: DeleteManyBatchedOptions, DeleteManyBatchedResult, IncrementCounterOptions, InnerJoinRow, InnerJoinSpec, InsertOnConflictDoNothingOptions, JoinColumnPair, JsonTextMatch, SelectOptions, TableInfo, UpsertOnConflictOptions, WhereObject, WhereOperator, WhereValue, aggregateWhere, asEntityTableMeta, asRawClient, countWhere, deleteMany, deleteManyBatched, extractTableInfo, fetchOne, incrementCounter, insertMany, insertOnConflictDoNothing, insertOne, instantToTimestamptzParam, isTimestamptzType, requireEntityTableMeta, runInSavepoint, runInSavepointIfSupported, runnerCanBeginTransaction, selectInnerJoin, selectMany, transaction, unsafeReadRetrying, updateMany, upsertByPk, upsertOnConflict.",
|
|
39
|
+
"migration": "Run bun kumiko-upgrade --apply. It rewrites positional calls to createDbConnection({ url, ... }) and moves bun-db imports to @cosmicdrift/kumiko-framework/db.",
|
|
40
|
+
"codemod": "scripts/codemod/db-factory.ts"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"version": "0.370.0",
|
|
44
|
+
"type": "breaking",
|
|
45
|
+
"title": "DB_PROVIDER other than postgres fails at boot",
|
|
46
|
+
"detail": "dbConnectionOptionsFromEnv used to ignore DB_PROVIDER, so DB_PROVIDER=bun booted postgres-js while the deployment still claimed Bun.SQL. Any value other than empty or \"postgres\" now throws with a hint to remove the variable.",
|
|
47
|
+
"migration": "Remove DB_PROVIDER from the environment, Helm values and Pulumi config. postgres-js is the only driver."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"version": "0.370.0",
|
|
51
|
+
"type": "breaking",
|
|
52
|
+
"title": "createTenantDb takes only the options object",
|
|
53
|
+
"detail": "The positional createTenantDb(db, tenantId, ...) overload is removed. createTenantDb({ db, tenantId, ... }) is the only form.",
|
|
54
|
+
"migration": "Run bun kumiko-upgrade --apply. It rewrites positional calls to createTenantDb({ db, tenantId, ... }).",
|
|
55
|
+
"codemod": "scripts/codemod/tenant-db-options.ts"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"version": "0.370.0",
|
|
59
|
+
"type": "breaking",
|
|
60
|
+
"title": "The test stack is no longer re-exported from the framework",
|
|
61
|
+
"detail": "The subpaths @cosmicdrift/kumiko-framework/stack, /testing, /testing/handler-context, /testing/real-providers and /testing/e2e-generator are removed, and so is the optional peer dependency on @cosmicdrift/kumiko-testing. The test stack and helpers live only in @cosmicdrift/kumiko-testing. Removed from /stack: CreateTestDbOptions, EventCollector, RequestHelper, TestDb, TestRedis, TestStack, TestStackOptions, TestUsers, createEventCollector, createRequestHelper, createTestDb, createTestRedis, createTestUser, drainEventConsumers, pushEntityProjectionTables, resetEventStore, setupTestStack, testTenantId, testUserId, unsafeCreateEntityTable, unsafeEnsureEntityTable, unsafePushTables. Removed from /testing and its subpaths: ClearableTable, E2EGeneratorOptions, E2ETestSpec, EditFillOp, LateBoundHolder, ManualClock, MutableMasterKeyProvider, ParsedSetCookie, REAL_PROVIDERS_ENV, RecordingProvider, bridgeStub, buildMultipartBody, captureClosedConnectionError, clearTables, createLateBoundHolder, createManualClock, createMutableMasterKeyProvider, createRecordingProvider, createTestEnvelopeCipher, createTestMasterKeyProvider, deleteRows, describeFileProviderContract, expectError, expectErrorIncludes, expectSuccess, generateE2ESpec, generateZodFixture, getSetCookieRaw, getSetCookieValue, getSetCookies, isRealProviderRun, patchFileInstanceofForBunTest, requireRealProviders, resetBlindIndexKeyForTests, resetEntityFieldEncryptionCacheForTests, resetEventPiiCatalogForTests, resetPiiSubjectKmsForTests, resetTestTables, rolesOf, seedRow, seedRows, sharedItemEntity, sharedItemTable, sharedUserEntity, sharedUserTable, sharedWidgetEntity, sharedWidgetTable, sleep, updateRows, waitFor, withBootValidatorFixture, withoutAmbientTemporal, zipWithEntries.",
|
|
62
|
+
"migration": "Run bun kumiko-upgrade --apply. It moves the imports to the matching @cosmicdrift/kumiko-testing subpaths. Add @cosmicdrift/kumiko-testing to devDependencies if it is not there yet.",
|
|
63
|
+
"codemod": "scripts/codemod/testing-move.ts"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"version": "0.370.0",
|
|
67
|
+
"type": "improvement",
|
|
68
|
+
"title": "createEventDef builds an EventDef without a registrar",
|
|
69
|
+
"detail": "createEventDef({ feature, name, schema, version?, piiFields? }) from @cosmicdrift/kumiko-framework/engine returns the same EventDef that r.defineEvent returns, including the PII field validation, so shared event definitions can live outside a defineFeature callback."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"version": "0.370.0",
|
|
73
|
+
"type": "breaking",
|
|
74
|
+
"title": "escapeHatch on a spread entity query handler requires SystemAdmin access",
|
|
75
|
+
"detail": "A query handler that spreads defineEntityListHandler or defineEntityDetailHandler and adds escapeHatch afterwards skipped the SystemAdmin-only access check that the factory option enforces. Registration now applies the same check and throws for any other access.",
|
|
76
|
+
"migration": "Pass escapeHatch as an option of defineEntityListHandler or defineEntityDetailHandler with access { roles: access.systemAdmin }, or write a plain r.queryHandler that does not reuse the entity convention handler when a tenant-scoped query needs a raw lookup."
|
|
77
|
+
},
|
|
2
78
|
{
|
|
3
79
|
"version": "0.369.0",
|
|
4
80
|
"type": "fix",
|
|
@@ -52,8 +128,8 @@
|
|
|
52
128
|
"version": "0.368.0",
|
|
53
129
|
"type": "breaking",
|
|
54
130
|
"title": "HandlerContext and AppContext no longer expose _userId and _handlerType",
|
|
55
|
-
"detail": "The dispatcher no longer sets _userId and _handlerType on the context of write handlers, query handlers and hooks. The caller identity is ctx.user.id. requireSecretsContext reads ctx._userId first and falls back to ctx.user.id, so passing a handler context to it keeps the same audit identity. Provider contexts (FileProviderContext, MailTransportContext, InboundMailContext) keep their own _userId. JobContext._userId is unchanged.",
|
|
56
|
-
"migration": "Replace ctx._userId with ctx.user.id in write
|
|
131
|
+
"detail": "The dispatcher no longer sets _userId and _handlerType on the context of write handlers, query handlers and hooks. The caller identity is ctx.user.id in handlers and result.event.createdBy in postSave and postDelete hooks. requireSecretsContext reads ctx._userId first and falls back to ctx.user.id, so passing a handler context to it keeps the same audit identity. Provider contexts (FileProviderContext, MailTransportContext, InboundMailContext) keep their own _userId. JobContext._userId is unchanged.",
|
|
132
|
+
"migration": "Replace ctx._userId with ctx.user.id in write and query handlers. postSave and postDelete hooks get an AppContext without user; read the caller there from result.event.createdBy. Known sites: one file each in money-horse, offlot-app, phronexsis and kumiko-enterprise. _handlerType had no readers."
|
|
57
133
|
},
|
|
58
134
|
{
|
|
59
135
|
"version": "0.368.0",
|
|
@@ -100,3 +100,21 @@ bun node_modules/@cosmicdrift/kumiko-framework/src/scripts/codemod/tenant-db-opt
|
|
|
100
100
|
|
|
101
101
|
Runs automatically via `bun kumiko-upgrade --apply`. Without a mode flag it writes, then formats the
|
|
102
102
|
changed files with Biome. `--check` exits 1 while any rewritable or manual site is left.
|
|
103
|
+
|
|
104
|
+
## import-extensions
|
|
105
|
+
|
|
106
|
+
Relative imports name the TypeScript source file: `./foo.js` becomes `./foo.ts`, `./Comp.jsx`
|
|
107
|
+
becomes `./Comp.tsx`. Covers `import`, `export ... from`, `import type`, `import()` and
|
|
108
|
+
`mock.module`. A specifier is rewritten only when the target exists with the new extension next to
|
|
109
|
+
the importer; otherwise it is reported as `manual` and left alone.
|
|
110
|
+
|
|
111
|
+
The tsconfig that compiles the code needs `allowImportingTsExtensions` and
|
|
112
|
+
`rewriteRelativeImportExtensions` (TypeScript 5.7 or newer) first.
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
bun node_modules/@cosmicdrift/kumiko-framework/src/scripts/codemod/import-extensions.ts <dir> [--check | --dry-run | --write] [--no-format]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Runs via `bun kumiko-upgrade --apply`. Without a mode flag it writes. `--check` exits 1 while any
|
|
119
|
+
rewritable or manual site is left. The `import-extensions` guard (`kumiko check guards`) reports
|
|
120
|
+
sites that are still on `.js`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { dirname, join, relative, resolve } from "node:path";
|
|
3
3
|
import { type ImportDeclaration, type ImportSpecifier, Node, type SourceFile } from "ts-morph";
|
|
4
|
-
import { collectSourceFiles } from "./collect-source-files.
|
|
4
|
+
import { collectSourceFiles } from "./collect-source-files.ts";
|
|
5
5
|
|
|
6
6
|
export interface CodemodSite {
|
|
7
7
|
readonly file: string;
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
type SourceFile,
|
|
20
20
|
SyntaxKind,
|
|
21
21
|
} from "ts-morph";
|
|
22
|
-
import { collectSourceFiles } from "./collect-source-files.
|
|
22
|
+
import { collectSourceFiles } from "./collect-source-files.ts";
|
|
23
23
|
|
|
24
24
|
export interface DbFactorySite {
|
|
25
25
|
readonly file: string;
|