@cosmicdrift/kumiko-framework 0.369.0 → 0.371.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/chat-channels.md +1 -1
- package/agents/examples/compose-stacks.md +188 -0
- package/agents/examples/env-composition.md +278 -0
- package/agents/examples/host-routing.md +181 -0
- package/agents/examples/inbound-mail-triage.md +1 -1
- 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 +76 -7
- 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 +21 -2
- 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 +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
|
@@ -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
|
}
|
|
@@ -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.371.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.371.0",
|
|
203
|
+
"@cosmicdrift/kumiko-types": "0.371.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.371.0",
|
|
220
|
+
"@cosmicdrift/kumiko-testing": "0.371.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
|
+
}
|