@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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function validateHandlerFieldReferences(feature: FeatureDefinition, featureMap: ReadonlyMap<string, FeatureDefinition>): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function validateI18nSurfaceKeys(features: readonly FeatureDefinition[]): void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { EnvelopeCipher } from "../../secrets/envelope-cipher.
|
|
2
|
-
import type { FeatureDefinition } from "../types/index.
|
|
3
|
-
export { type CardMetaOverflow, collectCardMetaOverflow } from "./card-meta-overflow.
|
|
4
|
-
export { validateAppCustomScreenWriteQns } from "./custom-screen-write-qns.
|
|
5
|
-
export { collectWriteHandlerQns } from "./nav.
|
|
6
|
-
export { SECURITY_BASELINE_FEATURE_NAMES } from "./security-baseline.
|
|
7
|
-
export { MAX_TRANSFER_DEPTH } from "./transfer-graph.
|
|
1
|
+
import type { EnvelopeCipher } from "../../secrets/envelope-cipher.ts";
|
|
2
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
3
|
+
export { type CardMetaOverflow, collectCardMetaOverflow } from "./card-meta-overflow.ts";
|
|
4
|
+
export { validateAppCustomScreenWriteQns } from "./custom-screen-write-qns.ts";
|
|
5
|
+
export { collectWriteHandlerQns } from "./nav.ts";
|
|
6
|
+
export { SECURITY_BASELINE_FEATURE_NAMES } from "./security-baseline.ts";
|
|
7
|
+
export { MAX_TRANSFER_DEPTH } from "./transfer-graph.ts";
|
|
8
8
|
export type ValidateBootOptions = {
|
|
9
9
|
/** Warn when an access role is used by exactly one handler/config-key/
|
|
10
10
|
* field across the whole boot scan — often a typo, but also the normal
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FeatureDefinition, NavDefinition, WorkspaceDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition, NavDefinition, WorkspaceDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function collectWriteHandlerQns(features: readonly FeatureDefinition[]): Set<string>;
|
|
3
3
|
export declare function collectNavQns(features: readonly FeatureDefinition[]): Map<string, NavDefinition & {
|
|
4
4
|
readonly featureName: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type OwnershipMap, type WhereRule } from "../ownership.
|
|
2
|
-
import type { ClaimKeyDefinition, FeatureDefinition } from "../types/index.
|
|
1
|
+
import { type OwnershipMap, type WhereRule } from "../ownership.ts";
|
|
2
|
+
import type { ClaimKeyDefinition, FeatureDefinition } from "../types/index.ts";
|
|
3
3
|
export type WhereRuleProbe = {
|
|
4
4
|
readonly table: unknown;
|
|
5
5
|
readonly tableName: string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { EntityDefinition, FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { EntityDefinition, FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function findEntity(featureMap: ReadonlyMap<string, FeatureDefinition>, entityName: string): EntityDefinition | undefined;
|
|
3
3
|
export declare function validateParentRefs(feature: FeatureDefinition, featureMap: ReadonlyMap<string, FeatureDefinition>): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EntityDefinition } from "../types/fields.
|
|
2
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { EntityDefinition } from "../types/fields.ts";
|
|
2
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
3
3
|
export declare function entityHasAnonymizableSubjectField(fields: EntityDefinition["fields"]): boolean;
|
|
4
4
|
export declare function validatePiiAndRetention(feature: FeatureDefinition): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type FeatureDefinition, type QueryHandlerDef } from "../types/index.
|
|
1
|
+
import { type FeatureDefinition, type QueryHandlerDef } from "../types/index.ts";
|
|
2
2
|
export declare function buildQueryHandlerMap(features: readonly FeatureDefinition[]): ReadonlyMap<string, QueryHandlerDef>;
|
|
3
3
|
export declare function validateProjectionListScreens(features: readonly FeatureDefinition[]): void;
|
|
4
4
|
export declare function validateRelatedListSectionQueries(features: readonly FeatureDefinition[]): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function validateQueryOutputColumns(features: readonly FeatureDefinition[]): void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { FeatureDefinition, QueryHandlerDef } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition, QueryHandlerDef } from "../types/index.ts";
|
|
2
2
|
export declare function checkQueryRef(queryHandlers: ReadonlyMap<string, QueryHandlerDef>, query: string, buildPrefix: () => string): void;
|
|
3
3
|
export declare function validateQueryRefs(features: readonly FeatureDefinition[]): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function validateRecordOwnedSubjects(feature: FeatureDefinition): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IconKey } from "@cosmicdrift/kumiko-types/nav-icon";
|
|
2
|
-
import type { ConfigKeyDefinition, FeatureDefinition } from "../types/index.
|
|
3
|
-
import type { ActionFormScreenDefinition, DashboardCustomPanel, DashboardScreenPanel, RelatedListToolbarAction, RowAction, RowFieldExtractor, ScreenDefinition, SecretMintScreenDefinition, ToolbarAction } from "../types/screen.
|
|
2
|
+
import type { ConfigKeyDefinition, FeatureDefinition } from "../types/index.ts";
|
|
3
|
+
import type { ActionFormScreenDefinition, DashboardCustomPanel, DashboardScreenPanel, RelatedListToolbarAction, RowAction, RowFieldExtractor, ScreenDefinition, SecretMintScreenDefinition, ToolbarAction } from "../types/screen.ts";
|
|
4
4
|
export declare function rowFieldExtractorKeys(params: RowFieldExtractor): readonly string[];
|
|
5
5
|
export declare function readsNavigateParamsAsFormPrefill(target: ScreenDefinition, explicitEntityId: string | undefined, sourceScreenEntity: string | undefined): boolean;
|
|
6
6
|
export declare function validateActionHasIcon(featureName: string, screenId: string, screenType: "projectionDetail" | "entityEdit" | "entityList" | "projectionList", context: string, action: {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare const SECURITY_BASELINE_FEATURE_NAMES: readonly ["sessions", "crypto-shredding", "rate-limiting", "audit"];
|
|
3
3
|
export declare function warnOnMissingSecurityBaseline(features: readonly FeatureDefinition[], nodeEnv?: string | undefined): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function validateExtensionSelectorPanels(features: readonly FeatureDefinition[]): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MAX_TRANSFER_DEPTH } from "../transfer-adjacency.
|
|
2
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import { MAX_TRANSFER_DEPTH } from "../transfer-adjacency.ts";
|
|
2
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
3
3
|
export { MAX_TRANSFER_DEPTH };
|
|
4
4
|
export declare function validateTransferGraph(feature: FeatureDefinition, featureMap: ReadonlyMap<string, FeatureDefinition>): void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function collectUrlPrefillFieldsByScreenQn(features: readonly FeatureDefinition[]): Map<string, Set<string>>;
|
|
3
3
|
export declare function validateSubmitPrefilledHiddenFields(features: readonly FeatureDefinition[]): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FeatureDefinition, NavDefinition, WorkspaceDefinition } from "../types/index.
|
|
1
|
+
import type { FeatureDefinition, NavDefinition, WorkspaceDefinition } from "../types/index.ts";
|
|
2
2
|
export declare function collectWorkspaceQns(features: readonly FeatureDefinition[]): Map<string, WorkspaceDefinition & {
|
|
3
3
|
readonly featureName: string;
|
|
4
4
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { type CardMetaOverflow, collectCardMetaOverflow, collectWriteHandlerQns, MAX_TRANSFER_DEPTH, SECURITY_BASELINE_FEATURE_NAMES, type ValidateBootOptions, validateAppCustomScreenWriteQns, validateBoot, } from "./boot-validator/index.
|
|
1
|
+
export { type CardMetaOverflow, collectCardMetaOverflow, collectWriteHandlerQns, MAX_TRANSFER_DEPTH, SECURITY_BASELINE_FEATURE_NAMES, type ValidateBootOptions, validateAppCustomScreenWriteQns, validateBoot, } from "./boot-validator/index.ts";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HandlerContext, SessionUser } from "./types/index.
|
|
1
|
+
import type { HandlerContext, SessionUser } from "./types/index.ts";
|
|
2
2
|
export declare function bridgeStub(opts?: {
|
|
3
3
|
readonly user?: SessionUser;
|
|
4
4
|
}): Pick<HandlerContext, "query" | "queryAs" | "write" | "writeAs" | "appendEvent" | "unsafeAppendEvent" | "tryAppendEvent" | "fetchForWriting" | "loadAggregate" | "archiveStream" | "restoreStream" | "isStreamArchived" | "snapshotAggregate" | "loadAggregateWithSnapshot" | "queryProjection" | "resolveAuthClaims" | "resolveActiveMembership" | "queryAsMember" | "hasFeature" | "metrics" | "metricsFor" | "tracer" | "tz" | "locale" | "user">;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AppSchema } from "../ui-types/index.
|
|
2
|
-
import type { Registry } from "./types/feature.
|
|
1
|
+
import type { AppSchema } from "../ui-types/index.ts";
|
|
2
|
+
import type { Registry } from "./types/feature.ts";
|
|
3
3
|
export type BuildAppSchemaOptions = {
|
|
4
4
|
/** Dev-server authoring hints (Settings-Hub placement). Default off — only
|
|
5
5
|
* `createKumikoServer` opts in; prod boot + unit tests stay silent. */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { WorkspaceSchema } from "../ui-types/index.
|
|
2
|
-
import type { TranslationKeys } from "./types/config.
|
|
3
|
-
import type { Registry } from "./types/feature.
|
|
4
|
-
import type { NavDefinition } from "./types/nav.
|
|
5
|
-
import type { ScreenDefinition } from "./types/screen.
|
|
1
|
+
import type { WorkspaceSchema } from "../ui-types/index.ts";
|
|
2
|
+
import type { TranslationKeys } from "./types/config.ts";
|
|
3
|
+
import type { Registry } from "./types/feature.ts";
|
|
4
|
+
import type { NavDefinition } from "./types/nav.ts";
|
|
5
|
+
import type { ScreenDefinition } from "./types/screen.ts";
|
|
6
6
|
export declare const SETTINGS_HUB_FEATURE = "config";
|
|
7
7
|
export declare const SETTINGS_HUB_WORKSPACE = "settings";
|
|
8
8
|
export type ConfigFeatureSchema = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TargetRef } from "./types/target-ref.
|
|
2
|
-
import type { TreeActionDef } from "./types/tree-node.
|
|
1
|
+
import type { TargetRef } from "./types/target-ref.ts";
|
|
2
|
+
import type { TreeActionDef } from "./types/tree-node.ts";
|
|
3
3
|
type FeatureWithTreeActions<TActions extends Record<string, TreeActionDef>> = {
|
|
4
4
|
readonly id: string;
|
|
5
5
|
readonly treeActions: TActions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { CodemodOptions, CodemodReport, CodemodResult, FileAnalysis, ParsedHandlerInfo, } from "./pipeline-codemod.
|
|
2
|
-
export { analyzeFile, analyzeHandlerArrow, convertFile, generatePerformBlock, runCodemod, scanForCandidates, } from "./pipeline-codemod.
|
|
1
|
+
export type { CodemodOptions, CodemodReport, CodemodResult, FileAnalysis, ParsedHandlerInfo, } from "./pipeline-codemod.ts";
|
|
2
|
+
export { analyzeFile, analyzeHandlerArrow, convertFile, generatePerformBlock, runCodemod, scanForCandidates, } from "./pipeline-codemod.ts";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConfigBacking, ConfigBounds, ConfigComputedFn, ConfigKeyDefinition, ConfigKeyType, ConfigMask, ConfigSeedDef, ConfigValidateFn, ConfigValue, CreateSeedOptions, CreateTenantSeedOptions, CreateUserSeedOptions, OptionsQueryPayload } from "./types/index.
|
|
1
|
+
import type { ConfigBacking, ConfigBounds, ConfigComputedFn, ConfigKeyDefinition, ConfigKeyType, ConfigMask, ConfigSeedDef, ConfigValidateFn, ConfigValue, CreateSeedOptions, CreateTenantSeedOptions, CreateUserSeedOptions, OptionsQueryPayload } from "./types/index.ts";
|
|
2
2
|
export declare function isEncryptedAtRest(def: Pick<ConfigKeyDefinition, "encrypted" | "backing">): boolean;
|
|
3
3
|
export declare const access: {
|
|
4
4
|
readonly all: readonly string[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ConcurrencyMode } from "@cosmicdrift/kumiko-types/concurrency-mode";
|
|
2
2
|
import type { ConfigScope } from "@cosmicdrift/kumiko-types/config-scope";
|
|
3
3
|
import type { OnDeleteStrategy as OnDeleteStrategyType } from "@cosmicdrift/kumiko-types/relations";
|
|
4
|
-
import type { TenantId } from "./types/identifiers.
|
|
4
|
+
import type { TenantId } from "./types/identifiers.ts";
|
|
5
5
|
export declare const SystemHookNames: {
|
|
6
6
|
readonly cascadeDelete: "system:hook:cascade-delete";
|
|
7
7
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ValidateBootOptions } from "./boot-validator.
|
|
2
|
-
import type { FeatureDefinition, Registry } from "./types/index.
|
|
1
|
+
import { type ValidateBootOptions } from "./boot-validator.ts";
|
|
2
|
+
import type { FeatureDefinition, Registry } from "./types/index.ts";
|
|
3
3
|
export type AppConfig = {
|
|
4
4
|
roles: readonly string[];
|
|
5
5
|
features: readonly FeatureDefinition[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccessDeniedError } from "../errors/index.
|
|
2
|
-
import type { SessionUser } from "./types/index.
|
|
1
|
+
import { AccessDeniedError } from "../errors/index.ts";
|
|
2
|
+
import type { SessionUser } from "./types/index.ts";
|
|
3
3
|
export declare function mayOverrideTenant(user: SessionUser): boolean;
|
|
4
4
|
export declare function tenantOverrideDenied(user: SessionUser, parsedPayload: unknown): AccessDeniedError | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { FeatureDefinition } from "./types/index.
|
|
1
|
+
import type { FeatureDefinition } from "./types/index.ts";
|
|
2
2
|
export declare function dedupeFeatures(features: readonly FeatureDefinition[]): FeatureDefinition[];
|
|
@@ -2,7 +2,7 @@ import { createInitialFeatureBuilderState } from "./feature-builder-state.js";
|
|
|
2
2
|
import { buildConfigEventsJobsMethods } from "./feature-config-events-jobs.js";
|
|
3
3
|
import { buildEntityHandlerMethods } from "./feature-entity-handlers.js";
|
|
4
4
|
import { buildUiExtensionsMethods } from "./feature-ui-extensions.js";
|
|
5
|
-
import { isObjectArgument,
|
|
5
|
+
import { isObjectArgument, throwObjectArgumentRequired, unwrapArrayForm } from "./object-form.js";
|
|
6
6
|
// `TExports` lets the setup callback hand back a typed object that
|
|
7
7
|
// downstream features can import (e.g. `tenantFeature.exports.config`). The
|
|
8
8
|
// runtime always packs whatever setup returns into `featureDef.exports` —
|
|
@@ -49,7 +49,7 @@ export function defineFeature(name, setup, settings) {
|
|
|
49
49
|
requires: (() => {
|
|
50
50
|
const fn = (...args) => {
|
|
51
51
|
if (!args.every(isObjectArgument))
|
|
52
|
-
|
|
52
|
+
throwObjectArgumentRequired(name, "requires");
|
|
53
53
|
state.requires.push(...resolveFeatureNamesArgs(args));
|
|
54
54
|
};
|
|
55
55
|
fn.projection = (tableName) => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { CursorResult } from "@cosmicdrift/kumiko-types/cursor-types";
|
|
2
2
|
import type { ZodType } from "zod";
|
|
3
|
-
import type { ContainsSecret } from "../secrets/types.
|
|
4
|
-
import type { QueryHandlerDefinition, WriteHandlerDefinition, WriteHandlerInput } from "./types/define-handler.
|
|
5
|
-
import type { KumikoEventTypeMap } from "./types/index.
|
|
6
|
-
export type { QueryHandlerDefinition, StreamHandlerDefinition, WriteHandlerDefinition, WriteHandlerInput, } from "./types/define-handler.
|
|
3
|
+
import type { ContainsSecret } from "../secrets/types.ts";
|
|
4
|
+
import type { QueryHandlerDefinition, WriteHandlerDefinition, WriteHandlerInput } from "./types/define-handler.ts";
|
|
5
|
+
import type { KumikoEventTypeMap } from "./types/index.ts";
|
|
6
|
+
export type { QueryHandlerDefinition, StreamHandlerDefinition, WriteHandlerDefinition, WriteHandlerInput, } from "./types/define-handler.ts";
|
|
7
7
|
export declare function defineWriteHandler<const TName extends string, TSchema extends ZodType, TData = unknown, TMap extends object = KumikoEventTypeMap, TPrepared = undefined>(def: WriteHandlerInput<TName, TSchema, TData, TMap, TPrepared>, ..._noSecretInResponse: true extends ContainsSecret<TData> ? [
|
|
8
8
|
secretLeak: "A handler response must not contain a Secret<> — call .reveal() and return the plaintext, or drop the field."
|
|
9
9
|
] : []): WriteHandlerDefinition<TName, TSchema, TData, TMap, TPrepared>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StepDef, StepKind } from "./types/step.
|
|
1
|
+
import type { StepDef, StepKind } from "./types/step.ts";
|
|
2
2
|
export declare function defineStep<TArgs, TResult>(def: StepDef<TArgs, TResult>): StepDef<TArgs, TResult>;
|
|
3
3
|
export declare function getStep(kind: StepKind): StepDef | undefined;
|
|
4
4
|
export declare function listStepKinds(): readonly StepKind[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { WriteEvent } from "./types/handlers.
|
|
2
|
-
import type { AwaitedEventType, PipelineDef } from "./types/step.
|
|
1
|
+
import type { WriteEvent } from "./types/handlers.ts";
|
|
2
|
+
import type { AwaitedEventType, PipelineDef } from "./types/step.ts";
|
|
3
3
|
/**
|
|
4
4
|
* Trigger configuration for a workflow. Determines what starts a run.
|
|
5
5
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FeatureDefinition, Registry } from "./types/index.
|
|
1
|
+
import type { FeatureDefinition, Registry } from "./types/index.ts";
|
|
2
2
|
export type ToggleReader = (featureName: string) => boolean | undefined;
|
|
3
3
|
export declare function isToggleableFeature(feature: FeatureDefinition): feature is FeatureDefinition & {
|
|
4
4
|
toggleableDefault: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EmbeddedDerivedCellDef, EmbeddedSubFieldDef } from "./types/index.
|
|
1
|
+
import type { EmbeddedDerivedCellDef, EmbeddedSubFieldDef } from "./types/index.ts";
|
|
2
2
|
/** Computes a derived cell from its source values. Missing/non-numeric
|
|
3
3
|
* sources: "multiply" with any missing source → undefined; "sum"/"subtract"
|
|
4
4
|
* treat missing as 0 only when at least one source is present — if every
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
|
-
import { type EventStoreExecutor } from "../db/event-store-executor.
|
|
3
|
-
import { type EntityTable } from "../db/table-builder.
|
|
4
|
-
import type { EntityCrudRegistrar, EntityHandlerOptions, EntityQueryHandlerOptions, EntityWriteHandlerOptions, RegisterEntityCrudOptions } from "./types/entity-handlers.
|
|
5
|
-
import type { AccessRule, EntityDefinition, EscapeHatchDeclaration, QueryHandlerDef, WriteHandlerDef } from "./types/index.
|
|
6
|
-
export type { EntityCrudHandlerDefaults, EntityCrudRegistrar, EntityCrudVerb, EntityHandlerOptions, EntityQueryHandlerOptions, EntityWriteHandlerOptions, RegisterEntityCrudOptions, } from "./types/entity-handlers.
|
|
2
|
+
import { type EventStoreExecutor } from "../db/event-store-executor.ts";
|
|
3
|
+
import { type EntityTable } from "../db/table-builder.ts";
|
|
4
|
+
import type { EntityCrudRegistrar, EntityHandlerOptions, EntityQueryHandlerOptions, EntityWriteHandlerOptions, RegisterEntityCrudOptions } from "./types/entity-handlers.ts";
|
|
5
|
+
import type { AccessRule, EntityDefinition, EscapeHatchDeclaration, QueryHandlerDef, WriteHandlerDef } from "./types/index.ts";
|
|
6
|
+
export type { EntityCrudHandlerDefaults, EntityCrudRegistrar, EntityCrudVerb, EntityHandlerOptions, EntityQueryHandlerOptions, EntityWriteHandlerOptions, RegisterEntityCrudOptions, } from "./types/entity-handlers.ts";
|
|
7
|
+
export declare function assertEscapeHatchAccessIsSystemAdminOnly(name: string, kind: "write" | "query", access: AccessRule): void;
|
|
7
8
|
export declare const MAX_LIST_LIMIT = 200;
|
|
8
9
|
export declare const entityListSchema: z.ZodObject<{
|
|
9
10
|
cursor: z.ZodOptional<z.ZodString>;
|
|
@@ -66,11 +66,14 @@ function resolveCrossTenantReason(name, options, kind) {
|
|
|
66
66
|
const placeholderProblem = codemodPlaceholderReasonProblem(options.escapeHatch.reason);
|
|
67
67
|
if (placeholderProblem !== undefined)
|
|
68
68
|
throw new Error(`"${name}": ${placeholderProblem}`);
|
|
69
|
-
|
|
70
|
-
throw new Error(`"${name}": a ${kind} handler with escapeHatch reaches across every tenant, so its access must be SystemAdmin-only ({ roles: ["${SYSTEM_ADMIN_ROLE}"] }); got ${JSON.stringify(options.access)}.`);
|
|
71
|
-
}
|
|
69
|
+
assertEscapeHatchAccessIsSystemAdminOnly(name, kind, options.access);
|
|
72
70
|
return options.escapeHatch.reason;
|
|
73
71
|
}
|
|
72
|
+
export function assertEscapeHatchAccessIsSystemAdminOnly(name, kind, access) {
|
|
73
|
+
if (!isSystemAdminOnly(access)) {
|
|
74
|
+
throw new Error(`"${name}": a ${kind} handler with escapeHatch reaches across every tenant, so its access must be SystemAdmin-only ({ roles: ["${SYSTEM_ADMIN_ROLE}"] }); got ${JSON.stringify(access)}.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
74
77
|
// Upper bound on entity-list `limit`: unbounded/fractional values ran
|
|
75
78
|
// straight into the raw `LIMIT ${limit}` SQL string (event-store-executor-
|
|
76
79
|
// read.ts), letting a client demand a full-table materialisation or trip a
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ZodType } from "zod";
|
|
2
|
+
import type { EventDef, EventPiiStance, QualifiedEventName } from "./types/index.ts";
|
|
3
|
+
export type CreateEventDefOptions<TFeature extends string, TInner extends string, TPayload> = {
|
|
4
|
+
readonly feature: TFeature;
|
|
5
|
+
readonly name: TInner;
|
|
6
|
+
readonly schema: ZodType<TPayload>;
|
|
7
|
+
readonly version?: number;
|
|
8
|
+
readonly piiFields: EventPiiStance;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The EventDef that `r.defineEvent` returns, built outside a feature's setup
|
|
12
|
+
* callback, so a module can hand the definition to `emitEvent` without the
|
|
13
|
+
* feature instance. Registration still goes through `r.defineEvent`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createEventDef<const TFeature extends string, const TInner extends string, TPayload>(options: CreateEventDefOptions<TFeature, TInner, TPayload>): EventDef<TPayload, QualifiedEventName<TFeature, TInner>>;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { normalizeEventPiiSubject } from "@cosmicdrift/kumiko-types/handlers";
|
|
2
|
+
import { ZodObject } from "zod";
|
|
3
|
+
import { qn, toKebab } from "./qualified-name.js";
|
|
4
|
+
// A payload field that still holds null/undefined after parsing — the case
|
|
5
|
+
// where an event-PII owner field yields no subject at append time (fw#2776).
|
|
6
|
+
// A `.default(...)` accepts undefined but parses to a value, so it is not
|
|
7
|
+
// absentable.
|
|
8
|
+
function isAbsentable(field) {
|
|
9
|
+
return [null, undefined].some((candidate) => {
|
|
10
|
+
const parsed = field.safeParse(candidate);
|
|
11
|
+
return parsed.success && (parsed.data === null || parsed.data === undefined);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const NON_STRING_SCHEMA_TYPES = new Set([
|
|
15
|
+
"number",
|
|
16
|
+
"int",
|
|
17
|
+
"boolean",
|
|
18
|
+
"bigint",
|
|
19
|
+
"date",
|
|
20
|
+
"object",
|
|
21
|
+
"array",
|
|
22
|
+
]);
|
|
23
|
+
// An owner id is resolved through "non-empty string or absent" at append time,
|
|
24
|
+
// so a schema that can never yield a string would make every append throw in
|
|
25
|
+
// prod. Wrappers (optional/nullable/default/...) are looked through.
|
|
26
|
+
function neverYieldsString(field) {
|
|
27
|
+
let current = field;
|
|
28
|
+
for (;;) {
|
|
29
|
+
const def = current._zod.def;
|
|
30
|
+
if (def.innerType === undefined)
|
|
31
|
+
return NON_STRING_SCHEMA_TYPES.has(def.type);
|
|
32
|
+
current = def.innerType;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function assertOwnerFieldYieldsPresentString(args) {
|
|
36
|
+
const { featureName, eventName, field, ownerField, owner } = args;
|
|
37
|
+
if (neverYieldsString(owner)) {
|
|
38
|
+
throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" is owned by "${ownerField}", whose payload schema is not a string — the subject id must be a non-empty string, so every append would fail. ` +
|
|
39
|
+
`Use a string owner field, or declare whenAbsent ("tenant" | "self" | "plaintext").`);
|
|
40
|
+
}
|
|
41
|
+
if (isAbsentable(owner)) {
|
|
42
|
+
throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" is owned by "${ownerField}", which the payload schema allows to be null/undefined. ` +
|
|
43
|
+
`Declare what happens then: { personal: { of: "${ownerField}", whenAbsent: "tenant" } } encrypts under the envelope tenant key, ` +
|
|
44
|
+
`whenAbsent: "self" under the event's own record key, whenAbsent: "plaintext" acknowledges that the value ships unencrypted and cannot be crypto-shredded (fw#2776).`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// piiFields misconfiguration is a boot-time error, not a silent
|
|
48
|
+
// plaintext leak: both the pii field and its owner field must exist
|
|
49
|
+
// on the payload schema (checkable when the schema is a ZodObject).
|
|
50
|
+
function validateEventPiiFields(featureName, eventName, schema, piiFields) {
|
|
51
|
+
const shape = schema instanceof ZodObject ? schema.shape : undefined;
|
|
52
|
+
for (const [field, spec] of Object.entries(piiFields)) {
|
|
53
|
+
const normalized = normalizeEventPiiSubject(spec);
|
|
54
|
+
// Only the user form names an owner field — tenant/self subjects come
|
|
55
|
+
// from the write-time envelope (tenantId / aggregateType+aggregateId),
|
|
56
|
+
// so there is no owner-field existence or self-reference check for them.
|
|
57
|
+
if (normalized.kind !== "user") {
|
|
58
|
+
if (shape && !(field in shape)) {
|
|
59
|
+
throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields references "${field}" which is not a field of the payload schema.`);
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (field === normalized.ownerField) {
|
|
64
|
+
throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" cannot use itself as the owner field — the subject id is a plaintext pseudonymous fk, the pii field is the value it owns.`);
|
|
65
|
+
}
|
|
66
|
+
if (normalized.ownerField === "id") {
|
|
67
|
+
throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" uses owner field "id" — on entities \`of: "id"\` means record-owned, but on events it would encrypt under a phantom user key that a forget never reaches. Use \`personal: "self"\` for a record-owned event field.`);
|
|
68
|
+
}
|
|
69
|
+
for (const required of [field, normalized.ownerField]) {
|
|
70
|
+
if (shape && !(required in shape)) {
|
|
71
|
+
throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields references "${required}" which is not a field of the payload schema.`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const owner = shape?.[normalized.ownerField];
|
|
75
|
+
if (normalized.whenAbsent === undefined && owner !== undefined) {
|
|
76
|
+
assertOwnerFieldYieldsPresentString({
|
|
77
|
+
featureName,
|
|
78
|
+
eventName,
|
|
79
|
+
field,
|
|
80
|
+
ownerField: normalized.ownerField,
|
|
81
|
+
owner,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The EventDef that `r.defineEvent` returns, built outside a feature's setup
|
|
88
|
+
* callback, so a module can hand the definition to `emitEvent` without the
|
|
89
|
+
* feature instance. Registration still goes through `r.defineEvent`.
|
|
90
|
+
*/
|
|
91
|
+
export function createEventDef(options) {
|
|
92
|
+
const { feature, name: eventName, schema } = options;
|
|
93
|
+
// Fail-closed PII stance gate (fw#2558) — runs before anything else so
|
|
94
|
+
// an untyped JS consumer (no compiler to stop it) still can't register
|
|
95
|
+
// an event without declaring whether its payload carries personal data.
|
|
96
|
+
const missingStanceError = () => new Error(`[Feature ${feature}] defineEvent("${eventName}") must declare an explicit PII stance. Pass { piiFields: { <payloadField>: { personal: { of: "<userIdField>" } } } } for payload fields owned by a user (or { personal: "tenant" } / { personal: "self" } for tenant- or record-scoped subjects), or { piiFields: "none" } when the payload holds none.`);
|
|
97
|
+
if (options.piiFields === undefined)
|
|
98
|
+
throw missingStanceError();
|
|
99
|
+
const piiFields = options.piiFields;
|
|
100
|
+
// @cast-boundary runtime-guard — an untyped JS caller can hand
|
|
101
|
+
// anything through `piiFields` (including null), so re-check the
|
|
102
|
+
// shape before trusting it as EventPiiStance: `typeof null === "object"`
|
|
103
|
+
// would otherwise pass through to Object.keys(null) below and throw a
|
|
104
|
+
// raw TypeError instead of this guidance message.
|
|
105
|
+
if (piiFields !== "none" && (typeof piiFields !== "object" || piiFields === null)) {
|
|
106
|
+
throw missingStanceError();
|
|
107
|
+
}
|
|
108
|
+
if (piiFields !== "none" && Object.keys(piiFields).length === 0) {
|
|
109
|
+
throw new Error(`[Feature ${feature}] defineEvent("${eventName}"): piiFields: {} is not a stance — use piiFields: "none" to declare the payload holds no personal data.`);
|
|
110
|
+
}
|
|
111
|
+
if (piiFields !== "none")
|
|
112
|
+
validateEventPiiFields(feature, eventName, schema, piiFields);
|
|
113
|
+
const version = options.version ?? 1;
|
|
114
|
+
if (!Number.isInteger(version) || version < 1) {
|
|
115
|
+
throw new Error(`[Feature ${feature}] defineEvent("${eventName}"): version must be a positive integer, got ${String(version)}`);
|
|
116
|
+
}
|
|
117
|
+
// @cast-boundary engine-bridge — runtime-string mirrors the
|
|
118
|
+
// template-literal-type via QualifiedEventName + toKebab. Both
|
|
119
|
+
// sides are tested (CamelToKebab type-tests + scan-events kebab
|
|
120
|
+
// tests), so the cast is a contract, not a typing-loss.
|
|
121
|
+
const qualified = qn(toKebab(feature), "event", toKebab(eventName));
|
|
122
|
+
return { name: qualified, schema, version, piiFields };
|
|
123
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppendEventArgs, EventDef, HandlerContext } from "./types/handlers.
|
|
1
|
+
import type { AppendEventArgs, EventDef, HandlerContext } from "./types/handlers.ts";
|
|
2
2
|
export type EmitCtx = Pick<HandlerContext, "unsafeAppendEvent">;
|
|
3
3
|
export declare function emitEvent<TPayload>(ctx: EmitCtx, eventDef: EventDef<TPayload>, args: {
|
|
4
4
|
readonly aggregateId: string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { DerivativeRendererPlugin } from "@cosmicdrift/kumiko-types/derivatives-types";
|
|
2
|
-
import type { OverlayResolverPlugin } from "../derivatives/derivatives-context.
|
|
3
|
-
import type { FileProviderPlugin } from "../files/provider-resolver.
|
|
4
|
-
import type { PrincipalStatusPlugin, TenantLifecycleStatusPlugin } from "./active-membership.
|
|
5
|
-
import type { TenantDataExtensionHooks } from "./extensions/tenant-data.
|
|
6
|
-
import type { TenantResourceExtensionHooks } from "./extensions/tenant-resource.
|
|
7
|
-
import type { UserDataExtensionOptions } from "./extensions/user-data.
|
|
8
|
-
import type { AssignableFromRole } from "./role-assignment.
|
|
9
|
-
import { TENANT_TIER_RESOLVER_EXT, type TierResolverPlugin } from "./tier-resolver-extension.
|
|
2
|
+
import type { OverlayResolverPlugin } from "../derivatives/derivatives-context.ts";
|
|
3
|
+
import type { FileProviderPlugin } from "../files/provider-resolver.ts";
|
|
4
|
+
import type { PrincipalStatusPlugin, TenantLifecycleStatusPlugin } from "./active-membership.ts";
|
|
5
|
+
import type { TenantDataExtensionHooks } from "./extensions/tenant-data.ts";
|
|
6
|
+
import type { TenantResourceExtensionHooks } from "./extensions/tenant-resource.ts";
|
|
7
|
+
import type { UserDataExtensionOptions } from "./extensions/user-data.ts";
|
|
8
|
+
import type { AssignableFromRole } from "./role-assignment.ts";
|
|
9
|
+
import { TENANT_TIER_RESOLVER_EXT, type TierResolverPlugin } from "./tier-resolver-extension.ts";
|
|
10
10
|
/**
|
|
11
11
|
* `userData` — User-Daten-Rights-Hooks (DSGVO Art. 15 + 17 + 20).
|
|
12
12
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Registry } from "./types/feature.
|
|
2
|
-
import type { RegistrarExtensionRegistration } from "./types/index.
|
|
1
|
+
import type { Registry } from "./types/feature.ts";
|
|
2
|
+
import type { RegistrarExtensionRegistration } from "./types/index.ts";
|
|
3
3
|
export declare const SELECTED_EXTENSIONS_QUERY = "config:query:config-value:selected-extensions";
|
|
4
4
|
export declare const EXTENSION_SELECTOR_HINT_KEY = "config.settings.extensionSelectorHint";
|
|
5
5
|
export declare function selectablePluginIds(registry: Pick<Registry, "getExtensionUsages">, extensionName: string): string[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { RegistrarExtensionRegistration } from "../types/config.
|
|
1
|
+
import type { RegistrarExtensionRegistration } from "../types/config.ts";
|
|
2
2
|
export declare function extensionUsageEscapeHatchReason(usage: Pick<RegistrarExtensionRegistration, "options">): string | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TenantResourceDestroyHook, TenantResourceExtensionHooks, TenantResourceHookCtx } from "./tenant-resource.
|
|
1
|
+
import type { TenantResourceDestroyHook, TenantResourceExtensionHooks, TenantResourceHookCtx } from "./tenant-resource.ts";
|
|
2
2
|
export type StorageProviderHookCtx = TenantResourceHookCtx;
|
|
3
3
|
export type StorageProviderDestroyTenantHook = TenantResourceDestroyHook;
|
|
4
4
|
export type StorageProviderExtensionHooks = TenantResourceExtensionHooks;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FileProviderResolver } from "@cosmicdrift/kumiko-types/file-provider-resolver-types";
|
|
2
|
-
import type { TenantDb } from "../../db/tenant-db.
|
|
3
|
-
import type { Registry, TenantId } from "../types/index.
|
|
4
|
-
import type { TenantDestroyHookResult } from "./tenant-resource.
|
|
2
|
+
import type { TenantDb } from "../../db/tenant-db.ts";
|
|
3
|
+
import type { Registry, TenantId } from "../types/index.ts";
|
|
4
|
+
import type { TenantDestroyHookResult } from "./tenant-resource.ts";
|
|
5
5
|
export interface TenantDataHookCtx {
|
|
6
6
|
readonly db: TenantDb;
|
|
7
7
|
readonly registry: Registry;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FileProviderResolver } from "@cosmicdrift/kumiko-types/file-provider-resolver-types";
|
|
2
|
-
import type { DbRunner } from "../../db/connection.
|
|
3
|
-
import type { TenantId } from "../types/index.
|
|
2
|
+
import type { DbRunner } from "../../db/connection.ts";
|
|
3
|
+
import type { TenantId } from "../types/index.ts";
|
|
4
4
|
export type TenantDestroyHookResult = {
|
|
5
5
|
readonly done: true;
|
|
6
6
|
readonly processed?: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TenantDb } from "../../db/tenant-db.
|
|
2
|
-
import type { Registry, TenantId } from "../types/index.
|
|
1
|
+
import type { TenantDb } from "../../db/tenant-db.ts";
|
|
2
|
+
import type { Registry, TenantId } from "../types/index.ts";
|
|
3
3
|
type UserId = string;
|
|
4
4
|
/**
|
|
5
5
|
* Strategie für den Forget-Pfad pro Entity:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EntityTenancy } from "@cosmicdrift/kumiko-types/tenancy-brand";
|
|
2
|
-
import type { BigIntFieldDef, BooleanFieldDef, DateFieldDef, DecimalFieldDef, DerivedFieldDef, EmbeddedFieldDef, EntityDefinition, EntityIndexDef, FieldsMap, FileFieldDef, FilesFieldDef, ImageFieldDef, ImagesFieldDef, JsonbFieldDef, LocatedTimestampFieldDef, LongTextFieldDef, MoneyFieldDef, MultiSelectFieldDef, NumberFieldDef, PersonalAnnotations, PersonalAnnotationsLongText, PersonalAnnotationsNoFind, ResolvedPiiFlags, RetentionDef, SelectFieldDef, TextFieldDef, TimestampFieldDef, TzFieldDef } from "./types/index.
|
|
2
|
+
import type { BigIntFieldDef, BooleanFieldDef, DateFieldDef, DecimalFieldDef, DerivedFieldDef, EmbeddedFieldDef, EntityDefinition, EntityIndexDef, FieldsMap, FileFieldDef, FilesFieldDef, ImageFieldDef, ImagesFieldDef, JsonbFieldDef, LocatedTimestampFieldDef, LongTextFieldDef, MoneyFieldDef, MultiSelectFieldDef, NumberFieldDef, PersonalAnnotations, PersonalAnnotationsLongText, PersonalAnnotationsNoFind, ResolvedPiiFlags, RetentionDef, SelectFieldDef, TextFieldDef, TimestampFieldDef, TzFieldDef } from "./types/index.ts";
|
|
3
3
|
export declare function createTextField<R extends true | false = false>(overrides: Partial<Omit<TextFieldDef, "type" | "required" | keyof ResolvedPiiFlags>> & PersonalAnnotations & {
|
|
4
4
|
required?: R;
|
|
5
5
|
}): TextFieldDef & {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CallExpression, SourceFile } from "ts-morph";
|
|
2
|
-
import type { AiClassifyPattern, AiExtractPattern, AiGeneratePattern } from "../patterns.
|
|
3
|
-
import { type ExtractOutput } from "./shared.
|
|
2
|
+
import type { AiClassifyPattern, AiExtractPattern, AiGeneratePattern } from "../patterns.ts";
|
|
3
|
+
import { type ExtractOutput } from "./shared.ts";
|
|
4
4
|
export declare function extractAiGenerate(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AiGeneratePattern>;
|
|
5
5
|
export declare function extractAiExtract(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AiExtractPattern>;
|
|
6
6
|
export declare function extractAiClassify(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AiClassifyPattern>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CallExpression, SourceFile } from "ts-morph";
|
|
2
|
-
import type { DefineEventPattern, NotificationPattern } from "../patterns.
|
|
3
|
-
import { type ExtractOutput } from "./shared.
|
|
2
|
+
import type { DefineEventPattern, NotificationPattern } from "../patterns.ts";
|
|
3
|
+
import { type ExtractOutput } from "./shared.ts";
|
|
4
4
|
export declare function extractDefineEvent(call: CallExpression, sourceFile: SourceFile): ExtractOutput<DefineEventPattern>;
|
|
5
5
|
export declare function extractNotification(call: CallExpression, sourceFile: SourceFile): ExtractOutput<NotificationPattern>;
|