@cosmicdrift/kumiko-framework 0.368.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 +17 -5
- 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/screens.js +29 -0
- 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-config-feature-schema.js +197 -65
- 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 +4 -1
- package/dist/engine/extension-selector-plugins.js +14 -0
- 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 +5 -3
- package/dist/engine/feature-config-events-jobs.js +9 -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/i18n/settings-hub-keys.js +1 -2
- 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 +18 -6
- 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 +84 -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/random/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { type AdjNounNameOptions, type GenerateUniqueNameOptions, generateAdjNounName, generateNoConfusableId, generateUniqueName, } from "./generate.
|
|
2
|
-
export { ADJECTIVES, NOUNS } from "./words.
|
|
1
|
+
export { type AdjNounNameOptions, type GenerateUniqueNameOptions, generateAdjNounName, generateNoConfusableId, generateUniqueName, } from "./generate.ts";
|
|
2
|
+
export { ADJECTIVES, NOUNS } from "./words.ts";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PayloadBucketNormalization, RateLimitOption, SessionUser } from "../engine/types/index.
|
|
1
|
+
import type { PayloadBucketNormalization, RateLimitOption, SessionUser } from "../engine/types/index.ts";
|
|
2
2
|
export type BucketContext = {
|
|
3
3
|
readonly handlerName: string;
|
|
4
4
|
readonly user: SessionUser;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { type BucketContext, type BucketResult, buildBucketKey, buildPayloadBucketKey, createPayloadDigest, normalizePayloadBucketValue, } from "./bucket.
|
|
2
|
-
export { type AuthEndpointRateLimitOptions, authEndpointRateLimit, type GlobalIpRateLimitOptions, globalIpRateLimit, type HttpRouteRateLimitOptions, httpRouteRateLimit, } from "./middleware.
|
|
3
|
-
export { createRateLimitResolver, type RateLimitConfig, type RateLimitDecision, type RateLimitResolver, type RateLimitResolverOptions, } from "./resolver.
|
|
1
|
+
export { type BucketContext, type BucketResult, buildBucketKey, buildPayloadBucketKey, createPayloadDigest, normalizePayloadBucketValue, } from "./bucket.ts";
|
|
2
|
+
export { type AuthEndpointRateLimitOptions, authEndpointRateLimit, type GlobalIpRateLimitOptions, globalIpRateLimit, type HttpRouteRateLimitOptions, httpRouteRateLimit, } from "./middleware.ts";
|
|
3
|
+
export { createRateLimitResolver, type RateLimitConfig, type RateLimitDecision, type RateLimitResolver, type RateLimitResolverOptions, } from "./resolver.ts";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Context, MiddlewareHandler } from "hono";
|
|
2
|
-
import { type ClientIpResolver } from "../api/client-ip.
|
|
3
|
-
import type { HttpRouteRateLimit } from "../engine/types/http-route.
|
|
4
|
-
import type { RateLimitResolver } from "./resolver.
|
|
2
|
+
import { type ClientIpResolver } from "../api/client-ip.ts";
|
|
3
|
+
import type { HttpRouteRateLimit } from "../engine/types/http-route.ts";
|
|
4
|
+
import type { RateLimitResolver } from "./resolver.ts";
|
|
5
5
|
export type GlobalIpRateLimitOptions = {
|
|
6
6
|
readonly resolver: RateLimitResolver;
|
|
7
7
|
readonly limit?: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CacheSyncBus, ClosableCacheSyncBus } from "@cosmicdrift/kumiko-types/cache-sync-types";
|
|
2
|
-
import { type RedisClientOptions } from "./client.
|
|
3
|
-
import { type PubSubSignal } from "./pubsub-signal.
|
|
2
|
+
import { type RedisClientOptions } from "./client.ts";
|
|
3
|
+
import { type PubSubSignal } from "./pubsub-signal.ts";
|
|
4
4
|
export type { CacheSyncBus, ClosableCacheSyncBus };
|
|
5
5
|
export declare function createLocalCacheSyncBus(): ClosableCacheSyncBus;
|
|
6
6
|
export type CacheSyncBusOverSignalOptions = {
|
package/dist/redis/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export type { CacheSyncBus, CacheSyncBusOverSignalOptions, ClosableCacheSyncBus, RedisCacheSyncBusOptions, ResolvedCacheSyncBus, } from "./cache-sync-bus.
|
|
2
|
-
export { createCacheSyncBusOverSignal, createDefaultCacheSyncBus, createLocalCacheSyncBus, createRedisCacheSyncBus, resolveCacheSyncBus, } from "./cache-sync-bus.
|
|
3
|
-
export type { TenantConfigSyncMessage, TierAssignmentSyncMessage } from "./cache-sync-topics.
|
|
4
|
-
export { CACHE_SYNC_TOPICS, isTenantConfigSyncMessage, isTierAssignmentSyncMessage, } from "./cache-sync-topics.
|
|
5
|
-
export type { RedisClientOptions } from "./client.
|
|
6
|
-
export { createRedisClient, redisChannelPrefixFromEnv, redisClientOptionsFromEnv, } from "./client.
|
|
7
|
-
export type { PubSubSignal, PubSubSignalOptions } from "./pubsub-signal.
|
|
8
|
-
export { createRedisPubSubSignal } from "./pubsub-signal.
|
|
1
|
+
export type { CacheSyncBus, CacheSyncBusOverSignalOptions, ClosableCacheSyncBus, RedisCacheSyncBusOptions, ResolvedCacheSyncBus, } from "./cache-sync-bus.ts";
|
|
2
|
+
export { createCacheSyncBusOverSignal, createDefaultCacheSyncBus, createLocalCacheSyncBus, createRedisCacheSyncBus, resolveCacheSyncBus, } from "./cache-sync-bus.ts";
|
|
3
|
+
export type { TenantConfigSyncMessage, TierAssignmentSyncMessage } from "./cache-sync-topics.ts";
|
|
4
|
+
export { CACHE_SYNC_TOPICS, isTenantConfigSyncMessage, isTierAssignmentSyncMessage, } from "./cache-sync-topics.ts";
|
|
5
|
+
export type { RedisClientOptions } from "./client.ts";
|
|
6
|
+
export { createRedisClient, redisChannelPrefixFromEnv, redisClientOptionsFromEnv, } from "./client.ts";
|
|
7
|
+
export type { PubSubSignal, PubSubSignalOptions } from "./pubsub-signal.ts";
|
|
8
|
+
export { createRedisPubSubSignal } from "./pubsub-signal.ts";
|
package/dist/schema-cli.d.ts
CHANGED
package/dist/schema-cli.js
CHANGED
|
@@ -7,6 +7,14 @@
|
|
|
7
7
|
// NO-MAGIC-ON-DATA: reads only checked-in artifacts (kumiko/schema.ts →
|
|
8
8
|
// ENTITY_METAS, kumiko/migrations/*.sql). Never auto-generates at runtime,
|
|
9
9
|
// never applies on app-boot — apply/baseline are explicit deploy-steps.
|
|
10
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
11
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
12
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
13
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return path;
|
|
17
|
+
};
|
|
10
18
|
import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
11
19
|
import { join, resolve as resolvePath } from "node:path";
|
|
12
20
|
import { configureBlindIndexKey, configurePiiSubjectKms, resolveKmsWiringAsync, } from "./crypto/index.js";
|
|
@@ -25,7 +33,7 @@ const SNAPSHOT_FILENAME = ".snapshot.json";
|
|
|
25
33
|
// want a graceful exit code (validate) catch it themselves.
|
|
26
34
|
async function loadSchemaModFromApp(schemaFile) {
|
|
27
35
|
// bun imports TS directly — no spawn needed.
|
|
28
|
-
const mod = (await import(schemaFile));
|
|
36
|
+
const mod = (await import(__rewriteRelativeImportExtension(schemaFile)));
|
|
29
37
|
if (!Array.isArray(mod.ENTITY_METAS)) {
|
|
30
38
|
throw new Error(`Schema file ${schemaFile} muss \`export const ENTITY_METAS: EntityTableMeta[]\` haben.`);
|
|
31
39
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Registry } from "../engine/types/index.
|
|
2
|
-
import type { SearchAdapterConfig } from "./types.
|
|
1
|
+
import type { Registry } from "../engine/types/index.ts";
|
|
2
|
+
import type { SearchAdapterConfig } from "./types.ts";
|
|
3
3
|
export declare function deriveSearchAdapterConfig(registry: Registry): SearchAdapterConfig | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { SearchAdapter } from "./types.
|
|
1
|
+
import type { SearchAdapter } from "./types.ts";
|
|
2
2
|
export declare function createInMemorySearchAdapter(): SearchAdapter;
|
package/dist/search/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { deriveSearchAdapterConfig } from "./derive-search-adapter-config.
|
|
2
|
-
export { createInMemorySearchAdapter } from "./in-memory-adapter.
|
|
3
|
-
export { purgeSearchDocumentsForSubject } from "./purge-subject.
|
|
4
|
-
export type { ReindexEntityFailure, ReindexEntityOptions, ReindexEntityResult, } from "./reindex-entity.
|
|
5
|
-
export { reindexEntity } from "./reindex-entity.
|
|
6
|
-
export type { SearchAdapter, SearchAdapterConfig, SearchDocument, SearchOptions, SearchResult, } from "./types.
|
|
1
|
+
export { deriveSearchAdapterConfig } from "./derive-search-adapter-config.ts";
|
|
2
|
+
export { createInMemorySearchAdapter } from "./in-memory-adapter.ts";
|
|
3
|
+
export { purgeSearchDocumentsForSubject } from "./purge-subject.ts";
|
|
4
|
+
export type { ReindexEntityFailure, ReindexEntityOptions, ReindexEntityResult, } from "./reindex-entity.ts";
|
|
5
|
+
export { reindexEntity } from "./reindex-entity.ts";
|
|
6
|
+
export type { SearchAdapter, SearchAdapterConfig, SearchDocument, SearchOptions, SearchResult, } from "./types.ts";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EntityId, TenantId } from "../engine/types/identifiers.
|
|
2
|
-
import type { SearchAdapter } from "./types.
|
|
1
|
+
import type { EntityId, TenantId } from "../engine/types/identifiers.ts";
|
|
2
|
+
import type { SearchAdapter } from "./types.ts";
|
|
3
3
|
export type MeilisearchAdapterOptions = {
|
|
4
4
|
url: string;
|
|
5
5
|
apiKey: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { SubjectId } from "../crypto/kms-adapter.
|
|
2
|
-
import type { DbRunner } from "../db/connection.
|
|
3
|
-
import type { FeatureDefinition } from "../engine/types/index.
|
|
4
|
-
import type { SearchAdapter } from "./types.
|
|
1
|
+
import type { SubjectId } from "../crypto/kms-adapter.ts";
|
|
2
|
+
import type { DbRunner } from "../db/connection.ts";
|
|
3
|
+
import type { FeatureDefinition } from "../engine/types/index.ts";
|
|
4
|
+
import type { SearchAdapter } from "./types.ts";
|
|
5
5
|
export declare function purgeSearchDocumentsForSubject(db: DbRunner, features: ReadonlyMap<string, FeatureDefinition>, search: SearchAdapter, subjectKey: string,
|
|
6
6
|
/** When set, also match rows by ownership — needed after anonymize rewrites ciphertext. */
|
|
7
7
|
subject?: SubjectId): Promise<void>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { DbRunner } from "../db/connection.
|
|
2
|
-
import type { Registry, TenantId } from "../engine/types/index.
|
|
3
|
-
import type { SearchAdapter } from "./types.
|
|
1
|
+
import type { DbRunner } from "../db/connection.ts";
|
|
2
|
+
import type { Registry, TenantId } from "../engine/types/index.ts";
|
|
3
|
+
import type { SearchAdapter } from "./types.ts";
|
|
4
4
|
export type ReindexEntityFailure = {
|
|
5
5
|
readonly entityId: string;
|
|
6
6
|
readonly reason: string;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// without a maintenance window. See loadKeyring + resolveCurrentVersion at
|
|
4
4
|
// the bottom for the env contract.
|
|
5
5
|
import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto";
|
|
6
|
+
import { isDryRunEnvActive } from "../env/dry-run.js";
|
|
6
7
|
import { InternalError } from "../errors/index.js";
|
|
7
8
|
const ALGORITHM = "aes-256-gcm";
|
|
8
9
|
const KEK_LENGTH = 32; // AES-256
|
|
@@ -10,21 +11,22 @@ const IV_LENGTH = 12;
|
|
|
10
11
|
const TAG_LENGTH = 16;
|
|
11
12
|
export function createEnvMasterKeyProvider(opts = {}) {
|
|
12
13
|
const env = opts.env ?? process.env;
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
let loaded;
|
|
15
|
+
const keyringState = () => {
|
|
16
|
+
loaded ??= loadValidatedKeyring(env);
|
|
17
|
+
return loaded;
|
|
18
|
+
};
|
|
19
|
+
// Apps build this provider at module load, before runProdApp runs. A dry
|
|
20
|
+
// run inspects an env that may hold no key yet, so the check moves to the
|
|
21
|
+
// first key operation there; a real boot still fails here, at construction.
|
|
22
|
+
if (!isDryRunEnvActive(env) && !isDryRunEnvActive(process.env))
|
|
23
|
+
keyringState();
|
|
23
24
|
// --- KEK-wrap / unwrap boilerplate (AES-256-GCM) ---------------------
|
|
24
25
|
// The DEK is the plaintext here; we encrypt it with the KEK. Same
|
|
25
26
|
// algorithm as the value encryption, just a different role.
|
|
26
27
|
return {
|
|
27
28
|
async wrapDek(dek) {
|
|
29
|
+
const { keyring, current } = keyringState();
|
|
28
30
|
const kek = keyring.get(current);
|
|
29
31
|
if (!kek) {
|
|
30
32
|
// Should never reach here — boot validation above guarantees the
|
|
@@ -47,6 +49,7 @@ export function createEnvMasterKeyProvider(opts = {}) {
|
|
|
47
49
|
};
|
|
48
50
|
},
|
|
49
51
|
async unwrapDek(encryptedDek, kekVersion) {
|
|
52
|
+
const { keyring } = keyringState();
|
|
50
53
|
const kek = keyring.get(kekVersion);
|
|
51
54
|
if (!kek) {
|
|
52
55
|
throw new InternalError({
|
|
@@ -63,7 +66,7 @@ export function createEnvMasterKeyProvider(opts = {}) {
|
|
|
63
66
|
return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
64
67
|
},
|
|
65
68
|
currentVersion() {
|
|
66
|
-
return current;
|
|
69
|
+
return keyringState().current;
|
|
67
70
|
},
|
|
68
71
|
async isAvailable() {
|
|
69
72
|
// Env-backed provider is always "available" once boot passed — the
|
|
@@ -73,6 +76,18 @@ export function createEnvMasterKeyProvider(opts = {}) {
|
|
|
73
76
|
},
|
|
74
77
|
};
|
|
75
78
|
}
|
|
79
|
+
function loadValidatedKeyring(env) {
|
|
80
|
+
const keyring = loadKeyring(env);
|
|
81
|
+
const current = resolveCurrentVersion(env);
|
|
82
|
+
if (!keyring.has(current)) {
|
|
83
|
+
throw new InternalError({
|
|
84
|
+
message: `[secrets] currentVersion=${current} not present in keyring ` +
|
|
85
|
+
`(have versions: ${[...keyring.keys()].sort().join(",")}). ` +
|
|
86
|
+
`Check KUMIKO_SECRETS_MASTER_KEY_V${current} is set.`,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return { keyring, current };
|
|
90
|
+
}
|
|
76
91
|
// ENV schema (Decision 1 — per-version variables):
|
|
77
92
|
// KUMIKO_SECRETS_MASTER_KEY_V1=<base64 32 bytes>
|
|
78
93
|
// KUMIKO_SECRETS_MASTER_KEY_V2=<base64 32 bytes>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EnvelopeCipher } from "@cosmicdrift/kumiko-types/envelope-cipher-types";
|
|
2
|
-
import type { DekCache } from "./dek-cache.
|
|
3
|
-
import type { MasterKeyProvider } from "./types.
|
|
2
|
+
import type { DekCache } from "./dek-cache.ts";
|
|
3
|
+
import type { MasterKeyProvider } from "./types.ts";
|
|
4
4
|
export type { EnvelopeCipher } from "@cosmicdrift/kumiko-types/envelope-cipher-types";
|
|
5
5
|
export type EnvelopeCipherOptions = {
|
|
6
6
|
readonly dekCache?: DekCache;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Envelope, KeyScope, MasterKeyProvider } from "./types.
|
|
1
|
+
import type { Envelope, KeyScope, MasterKeyProvider } from "./types.ts";
|
|
2
2
|
export declare function encryptValue(plaintext: string, provider: MasterKeyProvider, scope?: KeyScope): Promise<Envelope>;
|
|
3
3
|
export declare function decryptValue(envelope: Envelope, provider: MasterKeyProvider, scope?: KeyScope): Promise<string>;
|
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
|
}
|
|
@@ -446,7 +458,7 @@ function writePartialMarker(out, targetDir, pending, manualEntries, failedVersio
|
|
|
446
458
|
});
|
|
447
459
|
out.err(` ⚠ ${ran.length} codemod(s) already applied; wrote marker at ${version} so a re-run resumes at the failed one.`);
|
|
448
460
|
}
|
|
449
|
-
// Runs every pending
|
|
461
|
+
// Runs every pending entry's codemod, oldest version first (so a
|
|
450
462
|
// later codemod can assume an earlier one already ran). Stops on the first
|
|
451
463
|
// failure; codemods that already ran are kept in a partial marker. Writes the
|
|
452
464
|
// marker whenever dryRun is false —
|
|
@@ -474,9 +486,9 @@ markerVersion, previous) {
|
|
|
474
486
|
return 0;
|
|
475
487
|
}
|
|
476
488
|
const breaking = pending.filter((e) => e.type === "breaking");
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
489
|
+
// A codemod is worth running whatever the entry's type: an improvement that
|
|
490
|
+
// moves a module ships one too, and skipping it leaves the deprecated path in place.
|
|
491
|
+
const codemodEntries = uniqueCodemodRunsPerVersion(pending.filter(hasCodemod).sort((a, b) => compareVersions(a.version, b.version)));
|
|
480
492
|
const manualEntries = breaking.filter(needsManualMigration);
|
|
481
493
|
for (const e of manualEntries) {
|
|
482
494
|
out.log(hasCodemod(e)
|
|
@@ -485,7 +497,7 @@ markerVersion, previous) {
|
|
|
485
497
|
}
|
|
486
498
|
if (codemodEntries.length === 0) {
|
|
487
499
|
out.log(breaking.length > 0
|
|
488
|
-
? " No automatable codemods among the pending
|
|
500
|
+
? " No automatable codemods among the pending changes."
|
|
489
501
|
: " ✓ No breaking changes pending.");
|
|
490
502
|
if (!dryRun) {
|
|
491
503
|
const carried = carryOverManual(previous, manualEntries.map(toMarkerManual));
|
|
@@ -636,7 +648,7 @@ kumiko-upgrade --resolve <id|version>[,<id|version>...] --reason "<text>" [--not
|
|
|
636
648
|
--dir <path> target directory to check/apply against (default: cwd)
|
|
637
649
|
--json machine-readable output
|
|
638
650
|
--verbose include full migration details for each pending entry
|
|
639
|
-
--apply run codemods for pending
|
|
651
|
+
--apply run codemods for pending changes and write the upgrade marker
|
|
640
652
|
(one run moves the marker to the installed version; manual migrations stay listed as open)
|
|
641
653
|
--resolve <refs> mark open manual migrations as done; ref = full id or a version with exactly one open entry
|
|
642
654
|
--reason <text> required with --resolve, max 500 characters
|
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";
|