@cosmicdrift/kumiko-framework 0.389.0 → 0.390.1

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.
Files changed (617) hide show
  1. package/AGENTS.md +9 -4
  2. package/README.md +1 -1
  3. package/agents/examples/apex-surface-auth.md +2 -3
  4. package/agents/examples/api-worker-split.md +9 -2
  5. package/agents/examples/auth-claims.md +1 -1
  6. package/agents/examples/cross-feature-events.md +12 -12
  7. package/agents/examples/crypto-shredding-hr.md +2 -2
  8. package/agents/examples/encrypted-tenant-config.md +1 -1
  9. package/agents/examples/error-contract.md +12 -7
  10. package/agents/examples/event-sourcing.md +29 -29
  11. package/agents/examples/files-post-processing.md +10 -8
  12. package/agents/examples/inbound-mail-triage.md +1 -0
  13. package/agents/examples/lane-routing.md +2 -1
  14. package/agents/examples/legal-pages.md +2 -2
  15. package/agents/examples/lifecycle-hooks.md +3 -3
  16. package/agents/examples/managed-config.md +4 -4
  17. package/agents/examples/managed-pages.md +1 -1
  18. package/agents/examples/relations.md +19 -4
  19. package/agents/examples/search.md +4 -4
  20. package/agents/examples/secrets-demo.md +9 -6
  21. package/agents/examples/state-machine.md +2 -2
  22. package/agents/examples/tenant-settings.md +1 -1
  23. package/agents/examples/user-data-rights.md +3 -6
  24. package/agents/examples/workflow-engine.md +53 -47
  25. package/agents/examples.md +4 -4
  26. package/agents/features.md +1 -1
  27. package/dist/api/auth-middleware.js +1 -1
  28. package/dist/api/auth-routes-invite.js +2 -1
  29. package/dist/api/entity-read-access.d.ts +3 -1
  30. package/dist/api/export/export-columns.d.ts +3 -1
  31. package/dist/api/export/export-route.js +3 -2
  32. package/dist/api/export/export-screen.d.ts +2 -1
  33. package/dist/api/extra-route.d.ts +3 -1
  34. package/dist/api/index.d.ts +23 -27
  35. package/dist/api/index.js +13 -15
  36. package/dist/api/jwt.js +1 -1
  37. package/dist/api/observability-middleware.d.ts +1 -1
  38. package/dist/api/observability-middleware.js +2 -1
  39. package/dist/api/request-context-internals.d.ts +31 -0
  40. package/dist/api/request-context-internals.js +11 -0
  41. package/dist/api/request-context-scopes.d.ts +14 -0
  42. package/dist/api/request-context-scopes.js +69 -0
  43. package/dist/api/request-context.d.ts +1 -40
  44. package/dist/api/request-context.js +22 -51
  45. package/dist/api/request-id-middleware.d.ts +1 -1
  46. package/dist/api/route-registrars.d.ts +2 -1
  47. package/dist/api/route-registrars.js +1 -1
  48. package/dist/api/routes.js +7 -3
  49. package/dist/api/server-boot-checks.d.ts +1 -1
  50. package/dist/api/server-boot-checks.js +2 -2
  51. package/dist/api/server-event-dispatcher.d.ts +6 -1
  52. package/dist/api/server-event-dispatcher.js +3 -4
  53. package/dist/api/server-extra-routes.d.ts +1 -1
  54. package/dist/api/server-extra-routes.js +2 -1
  55. package/dist/api/server-middleware.js +3 -1
  56. package/dist/api/server-routes.d.ts +2 -1
  57. package/dist/api/server-wiring.js +6 -4
  58. package/dist/api/server.d.ts +2 -1
  59. package/dist/api/sse-route.d.ts +2 -1
  60. package/dist/api/tenant-scoped-secrets.d.ts +2 -0
  61. package/dist/api/tenant-scoped-secrets.js +13 -0
  62. package/dist/api/websocket-route.d.ts +1 -1
  63. package/dist/auth/index.d.ts +0 -1
  64. package/dist/auth/roles.d.ts +0 -5
  65. package/dist/compliance/duration-spec.d.ts +0 -1
  66. package/dist/compliance/duration-spec.js +0 -5
  67. package/dist/compliance/index.d.ts +4 -4
  68. package/dist/compliance/index.js +2 -2
  69. package/dist/compliance/profiles.d.ts +0 -15
  70. package/dist/compliance/profiles.js +0 -23
  71. package/dist/config/index.d.ts +10 -10
  72. package/dist/config/index.js +13 -1
  73. package/dist/config/internals.d.ts +9 -0
  74. package/dist/config/internals.js +1 -0
  75. package/dist/consumer-cli-internals.d.ts +4 -0
  76. package/dist/consumer-cli-internals.js +1 -0
  77. package/dist/consumer-cli.d.ts +1 -4
  78. package/dist/consumer-cli.js +5 -1
  79. package/dist/crypto/event-pii.js +1 -1
  80. package/dist/crypto/index.d.ts +8 -9
  81. package/dist/crypto/index.js +7 -8
  82. package/dist/crypto/pg-kms-adapter.js +6 -1
  83. package/dist/db/apply-entity-event.d.ts +1 -1
  84. package/dist/db/apply-entity-event.js +15 -47
  85. package/dist/db/blind-index-cleanup.js +91 -77
  86. package/dist/db/collect-table-metas.js +1 -1
  87. package/dist/db/compound-types.d.ts +1 -1
  88. package/dist/db/compound-types.js +0 -7
  89. package/dist/db/config-seed.d.ts +2 -1
  90. package/dist/db/config-seed.js +6 -1
  91. package/dist/db/connection.d.ts +3 -1
  92. package/dist/db/connection.js +15 -5
  93. package/dist/db/cross-tenant-reads.d.ts +1 -1
  94. package/dist/db/cross-tenant-reads.js +1 -1
  95. package/dist/db/dialect.d.ts +0 -5
  96. package/dist/db/dialect.js +0 -3
  97. package/dist/db/driver-value-preparation.js +23 -2
  98. package/dist/db/eagerload.d.ts +2 -1
  99. package/dist/db/entity-field-encryption.d.ts +1 -1
  100. package/dist/db/entity-table-meta.d.ts +1 -1
  101. package/dist/db/event-store-executor-context.d.ts +3 -1
  102. package/dist/db/event-store-executor-context.js +4 -3
  103. package/dist/db/event-store-executor-read-filter.d.ts +1 -1
  104. package/dist/db/event-store-executor-read-rows.d.ts +2 -1
  105. package/dist/db/event-store-executor-read-search.d.ts +2 -1
  106. package/dist/db/event-store-executor-read-sort.d.ts +2 -1
  107. package/dist/db/event-store-executor-read.js +2 -2
  108. package/dist/db/event-store-executor-write-atomic.js +8 -7
  109. package/dist/db/event-store-executor-write-steps.d.ts +3 -2
  110. package/dist/db/event-store-executor-write.js +7 -4
  111. package/dist/db/event-store-executor.d.ts +1 -1
  112. package/dist/db/executor-managed-tables.d.ts +7 -1
  113. package/dist/db/executor-managed-tables.js +11 -2
  114. package/dist/db/index.d.ts +29 -28
  115. package/dist/db/index.js +22 -20
  116. package/dist/db/known-table-names.d.ts +6 -0
  117. package/dist/db/known-table-names.js +21 -0
  118. package/dist/db/list-aggregate-labels.d.ts +1 -1
  119. package/dist/db/located-timestamp.d.ts +1 -1
  120. package/dist/db/located-timestamp.js +0 -5
  121. package/dist/db/migrate-generator.d.ts +17 -1
  122. package/dist/db/migrate-generator.js +50 -20
  123. package/dist/db/migrate-primary-key.d.ts +12 -0
  124. package/dist/db/migrate-primary-key.js +45 -0
  125. package/dist/db/migrate-rls-diff.d.ts +20 -0
  126. package/dist/db/migrate-rls-diff.js +61 -0
  127. package/dist/db/migrate-runner.js +4 -0
  128. package/dist/db/money.d.ts +1 -1
  129. package/dist/db/money.js +1 -1
  130. package/dist/db/parent-ref-clause.d.ts +2 -1
  131. package/dist/db/pg-error.d.ts +2 -0
  132. package/dist/db/pg-error.js +11 -0
  133. package/dist/db/queries/ddl.d.ts +3 -0
  134. package/dist/db/queries/ddl.js +34 -1
  135. package/dist/db/queries/event-store.js +4 -2
  136. package/dist/db/queries/event-tenants.d.ts +2 -0
  137. package/dist/db/queries/event-tenants.js +17 -0
  138. package/dist/db/queries/rebuild-rls-guard.d.ts +2 -0
  139. package/dist/db/queries/rebuild-rls-guard.js +29 -0
  140. package/dist/db/queries/rls-boot-catalog.d.ts +16 -0
  141. package/dist/db/queries/rls-boot-catalog.js +39 -0
  142. package/dist/db/queries/rls-catalog.d.ts +6 -0
  143. package/dist/db/queries/rls-catalog.js +82 -0
  144. package/dist/db/queries/rls-scope.d.ts +3 -0
  145. package/dist/db/queries/rls-scope.js +17 -0
  146. package/dist/db/queries/rls-shape.d.ts +10 -0
  147. package/dist/db/queries/rls-shape.js +42 -0
  148. package/dist/db/queries/session-advisory-lock.d.ts +2 -0
  149. package/dist/db/queries/session-advisory-lock.js +23 -0
  150. package/dist/db/queries/shadow-swap.d.ts +1 -2
  151. package/dist/db/queries/shadow-swap.js +9 -25
  152. package/dist/db/queries/test-stack.d.ts +4 -1
  153. package/dist/db/queries/test-stack.js +84 -2
  154. package/dist/db/query.js +11 -7
  155. package/dist/db/reference-data.d.ts +1 -1
  156. package/dist/db/reference-data.js +6 -1
  157. package/dist/db/render-ddl.d.ts +6 -2
  158. package/dist/db/render-ddl.js +7 -7
  159. package/dist/db/render-rls-ddl.d.ts +35 -0
  160. package/dist/db/render-rls-ddl.js +127 -0
  161. package/dist/db/replay-migration-sql.d.ts +3 -1
  162. package/dist/db/replay-migration-sql.js +22 -5
  163. package/dist/db/replay-rls.d.ts +25 -0
  164. package/dist/db/replay-rls.js +156 -0
  165. package/dist/db/row-level-security-boot-check.d.ts +6 -0
  166. package/dist/db/row-level-security-boot-check.js +86 -0
  167. package/dist/db/row-level-security-connection.d.ts +3 -0
  168. package/dist/db/row-level-security-connection.js +213 -0
  169. package/dist/db/row-level-security-scope.d.ts +33 -0
  170. package/dist/db/row-level-security-scope.js +127 -0
  171. package/dist/db/scope-tenant-db-to-tenant.d.ts +3 -0
  172. package/dist/db/scope-tenant-db-to-tenant.js +14 -0
  173. package/dist/db/sql-identifier.d.ts +1 -0
  174. package/dist/db/sql-identifier.js +3 -0
  175. package/dist/db/table-builder.d.ts +2 -1
  176. package/dist/db/table-builder.js +1 -1
  177. package/dist/db/table-info.js +1 -1
  178. package/dist/db/table-push.d.ts +11 -2
  179. package/dist/db/table-push.js +15 -2
  180. package/dist/db/tenant-db-runner.d.ts +3 -1
  181. package/dist/db/tenant-db-runner.js +4 -3
  182. package/dist/db/tenant-db-scoped-rebind.d.ts +10 -0
  183. package/dist/db/tenant-db-scoped-rebind.js +33 -0
  184. package/dist/db/tenant-db-statement-runner.d.ts +13 -0
  185. package/dist/db/tenant-db-statement-runner.js +48 -0
  186. package/dist/db/tenant-db.d.ts +17 -12
  187. package/dist/db/tenant-db.js +49 -120
  188. package/dist/db/tenant-id-filter.d.ts +3 -0
  189. package/dist/db/tenant-id-filter.js +30 -0
  190. package/dist/db/transaction-serialization.d.ts +6 -0
  191. package/dist/db/transaction-serialization.js +60 -0
  192. package/dist/derivatives/delete-stored-file.js +1 -1
  193. package/dist/derivatives/index.d.ts +2 -5
  194. package/dist/derivatives/index.js +2 -3
  195. package/dist/engine/access.d.ts +2 -1
  196. package/dist/engine/access.js +1 -1
  197. package/dist/engine/boot-validator/entity-handler.d.ts +2 -1
  198. package/dist/engine/boot-validator/entity-handler.js +1 -1
  199. package/dist/engine/boot-validator/entity-list-aggregate-options.d.ts +1 -1
  200. package/dist/engine/boot-validator/list-table-aggregate-options.d.ts +1 -1
  201. package/dist/engine/boot-validator/list-table-aggregate-query.d.ts +2 -1
  202. package/dist/engine/boot-validator/nav.d.ts +3 -1
  203. package/dist/engine/boot-validator/nav.js +1 -1
  204. package/dist/engine/boot-validator/ownership.d.ts +2 -1
  205. package/dist/engine/boot-validator/parent-ref.d.ts +2 -1
  206. package/dist/engine/boot-validator/projection-list-screens.d.ts +2 -1
  207. package/dist/engine/boot-validator/query-refs.d.ts +2 -1
  208. package/dist/engine/boot-validator/screens-forms.d.ts +2 -1
  209. package/dist/engine/boot-validator/screens-kind-shared.d.ts +3 -1
  210. package/dist/engine/boot-validator/screens.d.ts +2 -1
  211. package/dist/engine/boot-validator/workspaces.d.ts +3 -1
  212. package/dist/engine/bridge-stub.d.ts +5 -2
  213. package/dist/engine/bridge-stub.js +39 -24
  214. package/dist/engine/config-helpers.d.ts +2 -2
  215. package/dist/engine/config-helpers.js +0 -9
  216. package/dist/engine/constants.d.ts +0 -10
  217. package/dist/engine/constants.js +0 -8
  218. package/dist/engine/create-app.js +1 -1
  219. package/dist/engine/define-feature.d.ts +2 -1
  220. package/dist/engine/define-feature.js +1 -2
  221. package/dist/engine/define-handler.d.ts +1 -1
  222. package/dist/engine/define-step.d.ts +0 -1
  223. package/dist/engine/define-step.js +0 -3
  224. package/dist/engine/embedded-derived.d.ts +1 -1
  225. package/dist/engine/entity-handlers.d.ts +2 -1
  226. package/dist/engine/entity-handlers.js +7 -7
  227. package/dist/engine/entity-list-runtime-options.js +3 -1
  228. package/dist/engine/entity-list-searchability.d.ts +2 -1
  229. package/dist/engine/event-def.d.ts +2 -1
  230. package/dist/engine/event-helpers.d.ts +3 -1
  231. package/dist/engine/event-helpers.js +3 -3
  232. package/dist/engine/extension-names.d.ts +2 -8
  233. package/dist/engine/extension-names.js +2 -2
  234. package/dist/engine/extension-selector-plugins.d.ts +1 -1
  235. package/dist/engine/extensions/storage-provider.d.ts +1 -2
  236. package/dist/engine/extensions/user-data.d.ts +0 -8
  237. package/dist/engine/factories.d.ts +2 -1
  238. package/dist/engine/feature-builder-state.d.ts +8 -1
  239. package/dist/engine/feature-changelog.d.ts +1 -1
  240. package/dist/engine/feature-config-events-jobs.d.ts +4 -1
  241. package/dist/engine/feature-entity-handlers.d.ts +5 -1
  242. package/dist/engine/feature-manifest.js +1 -1
  243. package/dist/engine/feature-ui-extensions.d.ts +7 -1
  244. package/dist/engine/feature-ui-extensions.js +6 -4
  245. package/dist/engine/field-access.d.ts +2 -1
  246. package/dist/engine/handler-field-references.d.ts +0 -4
  247. package/dist/engine/index.d.ts +57 -54
  248. package/dist/engine/index.js +22 -27
  249. package/dist/engine/instruction-fields.d.ts +1 -1
  250. package/dist/engine/personal-data-fields.d.ts +1 -1
  251. package/dist/engine/qualified-name.d.ts +0 -1
  252. package/dist/engine/read-claim.d.ts +2 -1
  253. package/dist/engine/registry-facade.js +0 -3
  254. package/dist/engine/registry-ingest.d.ts +2 -1
  255. package/dist/engine/registry-ingest.js +1 -2
  256. package/dist/engine/registry-state.d.ts +12 -2
  257. package/dist/engine/registry-state.js +2 -3
  258. package/dist/engine/registry-validate.d.ts +3 -1
  259. package/dist/engine/registry-validate.js +7 -7
  260. package/dist/engine/run-in.d.ts +1 -1
  261. package/dist/engine/run-in.js +0 -1
  262. package/dist/engine/schema-builder.d.ts +1 -1
  263. package/dist/engine/schema-builder.js +1 -1
  264. package/dist/engine/screen-filter-ops.d.ts +2 -1
  265. package/dist/engine/screen-filter-ops.js +0 -5
  266. package/dist/engine/soft-delete-cleanup.d.ts +1 -1
  267. package/dist/engine/soft-delete-cleanup.js +4 -4
  268. package/dist/engine/state-machine.js +2 -1
  269. package/dist/engine/steps/_read-source.js +1 -1
  270. package/dist/engine/steps/aggregate-append-event.js +2 -2
  271. package/dist/engine/steps/call-feature.js +2 -2
  272. package/dist/engine/steps/mail-send.js +1 -1
  273. package/dist/engine/steps/retry.js +1 -1
  274. package/dist/engine/steps/wait-for-event.js +1 -1
  275. package/dist/engine/steps/wait.js +1 -1
  276. package/dist/engine/steps/webhook-send.js +1 -1
  277. package/dist/engine/template-variables.d.ts +2 -1
  278. package/dist/engine/transfer-adjacency.d.ts +1 -1
  279. package/dist/engine/types/index.d.ts +8 -31
  280. package/dist/engine/types/index.js +2 -10
  281. package/dist/engine/validation.d.ts +2 -1
  282. package/dist/entrypoint/index.d.ts +7 -35
  283. package/dist/entrypoint/index.js +7 -1
  284. package/dist/entrypoint/internals.d.ts +40 -0
  285. package/dist/entrypoint/internals.js +1 -0
  286. package/dist/entrypoint/row-level-security-mode-check.d.ts +3 -0
  287. package/dist/entrypoint/row-level-security-mode-check.js +19 -0
  288. package/dist/env/dry-run-internals.d.ts +10 -0
  289. package/dist/env/dry-run-internals.js +1 -0
  290. package/dist/env/dry-run.d.ts +1 -10
  291. package/dist/env/dry-run.js +2 -1
  292. package/dist/env/index.d.ts +1 -85
  293. package/dist/env/index.js +6 -50
  294. package/dist/env/internals.d.ts +87 -0
  295. package/dist/env/internals.js +53 -0
  296. package/dist/errors/classes.js +2 -2
  297. package/dist/errors/index.d.ts +5 -14
  298. package/dist/errors/index.js +4 -9
  299. package/dist/errors/member-resolution.js +1 -1
  300. package/dist/errors/reasons.d.ts +0 -1
  301. package/dist/errors/reasons.js +7 -7
  302. package/dist/errors/serialize.d.ts +0 -18
  303. package/dist/errors/serialize.js +0 -27
  304. package/dist/es-ops/index.d.ts +4 -4
  305. package/dist/es-ops/index.js +2 -2
  306. package/dist/es-ops/operations-schema.d.ts +1 -1
  307. package/dist/es-ops/types.d.ts +4 -5
  308. package/dist/event-store/admin-api-internals.d.ts +14 -0
  309. package/dist/event-store/admin-api-internals.js +1 -0
  310. package/dist/event-store/admin-api.d.ts +1 -14
  311. package/dist/event-store/admin-api.js +11 -6
  312. package/dist/event-store/archive.js +4 -2
  313. package/dist/event-store/errors.js +2 -2
  314. package/dist/event-store/event-store.js +41 -34
  315. package/dist/event-store/events-schema.js +4 -1
  316. package/dist/event-store/index.d.ts +11 -13
  317. package/dist/event-store/index.js +7 -9
  318. package/dist/event-store/rebuild-dead-letter.js +4 -2
  319. package/dist/event-store/snapshot.js +4 -3
  320. package/dist/event-store/stream-scope.d.ts +2 -0
  321. package/dist/event-store/stream-scope.js +6 -0
  322. package/dist/event-store/upcaster-dead-letter.js +4 -2
  323. package/dist/event-store/upcaster.d.ts +2 -1
  324. package/dist/files/action-form-upload.d.ts +2 -1
  325. package/dist/files/action-form-upload.js +1 -1
  326. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -1
  327. package/dist/files/assert-file-refs-belong-to-tenant.js +1 -1
  328. package/dist/files/bind-pending-file-refs.d.ts +2 -1
  329. package/dist/files/bind-pending-file-refs.js +2 -1
  330. package/dist/files/bind-referenced-files.write.js +1 -1
  331. package/dist/files/create-file-ref-from-bytes.d.ts +6 -3
  332. package/dist/files/create-file-ref-from-bytes.js +3 -3
  333. package/dist/files/create-file-ref.d.ts +3 -2
  334. package/dist/files/create-file-ref.js +2 -2
  335. package/dist/files/dispose-removed-file-refs.d.ts +2 -1
  336. package/dist/files/dispose-removed-file-refs.js +1 -1
  337. package/dist/files/feature.js +2 -2
  338. package/dist/files/file-handle.js +1 -1
  339. package/dist/files/file-routes.d.ts +1 -1
  340. package/dist/files/file-routes.js +12 -2
  341. package/dist/files/index.d.ts +11 -13
  342. package/dist/files/index.js +5 -7
  343. package/dist/files/load-save-file-refs.d.ts +2 -1
  344. package/dist/files/load-save-file-refs.js +1 -1
  345. package/dist/files/provider-resolver.d.ts +5 -4
  346. package/dist/files/provider-resolver.js +4 -4
  347. package/dist/files/storage-tracking.js +4 -2
  348. package/dist/files/sweep-orphaned-uploads.d.ts +1 -1
  349. package/dist/files/sweep-orphaned-uploads.js +1 -1
  350. package/dist/i18n/index.d.ts +2 -8
  351. package/dist/i18n/index.js +1 -1
  352. package/dist/i18n/internals.d.ts +7 -0
  353. package/dist/i18n/internals.js +1 -0
  354. package/dist/i18n/required-surface-keys.d.ts +4 -1
  355. package/dist/internal/row-level-security.d.ts +3 -0
  356. package/dist/internal/row-level-security.js +3 -0
  357. package/dist/internal/stack-support.d.ts +1 -1
  358. package/dist/internal/stack-support.js +1 -1
  359. package/dist/internal/testing.d.ts +1 -0
  360. package/dist/internal/testing.js +9 -5
  361. package/dist/jobs/index.d.ts +1 -1
  362. package/dist/jobs/job-append-event.d.ts +12 -0
  363. package/dist/jobs/job-append-event.js +30 -0
  364. package/dist/jobs/job-runner-context.d.ts +2 -2
  365. package/dist/jobs/job-runner-context.js +46 -16
  366. package/dist/jobs/job-runner-execution.d.ts +1 -1
  367. package/dist/jobs/job-runner-execution.js +6 -4
  368. package/dist/jobs/job-runner-gates.d.ts +1 -1
  369. package/dist/jobs/job-runner-gates.js +0 -1
  370. package/dist/jobs/job-runner-helpers.d.ts +11 -4
  371. package/dist/jobs/job-runner-helpers.js +10 -1
  372. package/dist/jobs/job-runner-scope.d.ts +5 -2
  373. package/dist/jobs/job-runner-types.d.ts +2 -1
  374. package/dist/jobs/job-runner.js +19 -6
  375. package/dist/jobs/max-per-tenant.d.ts +1 -1
  376. package/dist/logging/index.d.ts +1 -2
  377. package/dist/logging/index.js +1 -1
  378. package/dist/logging/pino-logger.js +1 -1
  379. package/dist/logging/utils.d.ts +1 -0
  380. package/dist/logging/utils.js +6 -0
  381. package/dist/migrations/index.d.ts +3 -3
  382. package/dist/migrations/index.js +3 -3
  383. package/dist/migrations/pending-rebuilds.d.ts +1 -1
  384. package/dist/migrations/pending-rebuilds.js +1 -1
  385. package/dist/migrations/pii-event-backfill.js +4 -1
  386. package/dist/observability/escape-hatch-report.d.ts +2 -1
  387. package/dist/observability/index.d.ts +7 -15
  388. package/dist/observability/index.js +4 -12
  389. package/dist/observability/metric-validator.js +1 -1
  390. package/dist/observability/metrics-handle.d.ts +0 -1
  391. package/dist/observability/metrics-handle.js +2 -15
  392. package/dist/observability/recording-tracer.d.ts +1 -2
  393. package/dist/observability/recording-tracer.js +0 -6
  394. package/dist/observability/sensitive-filter.d.ts +0 -2
  395. package/dist/observability/sensitive-filter.js +0 -29
  396. package/dist/pipeline/active-membership.d.ts +2 -1
  397. package/dist/pipeline/active-membership.js +6 -2
  398. package/dist/pipeline/append-event-core.d.ts +2 -1
  399. package/dist/pipeline/append-event-core.js +2 -2
  400. package/dist/pipeline/attach-outside-transaction.d.ts +3 -0
  401. package/dist/pipeline/attach-outside-transaction.js +13 -0
  402. package/dist/pipeline/auth-claims-resolver.d.ts +2 -1
  403. package/dist/pipeline/cascade-handler.d.ts +2 -1
  404. package/dist/pipeline/cascade-handler.js +3 -2
  405. package/dist/pipeline/config-accessor-factory.d.ts +1 -1
  406. package/dist/pipeline/config-accessor-factory.js +1 -1
  407. package/dist/pipeline/context-services.d.ts +56 -0
  408. package/dist/pipeline/context-services.js +73 -0
  409. package/dist/pipeline/dispatch-batch.d.ts +2 -1
  410. package/dist/pipeline/dispatch-batch.js +31 -18
  411. package/dist/pipeline/dispatch-query.js +5 -4
  412. package/dist/pipeline/dispatch-scope.d.ts +6 -0
  413. package/dist/pipeline/dispatch-scope.js +27 -0
  414. package/dist/pipeline/dispatch-shared.d.ts +13 -9
  415. package/dist/pipeline/dispatch-shared.js +75 -198
  416. package/dist/pipeline/dispatch-stream.js +8 -4
  417. package/dist/pipeline/dispatch-write.d.ts +2 -1
  418. package/dist/pipeline/dispatch-write.js +10 -8
  419. package/dist/pipeline/dispatcher-utils.d.ts +3 -1
  420. package/dist/pipeline/dispatcher-utils.js +8 -2
  421. package/dist/pipeline/dispatcher.d.ts +3 -2
  422. package/dist/pipeline/dispatcher.js +4 -3
  423. package/dist/pipeline/event-consumer-state.d.ts +0 -1
  424. package/dist/pipeline/event-dispatcher-delivery.d.ts +1 -1
  425. package/dist/pipeline/event-dispatcher-delivery.js +4 -2
  426. package/dist/pipeline/event-dispatcher.d.ts +2 -2
  427. package/dist/pipeline/event-dispatcher.js +7 -3
  428. package/dist/pipeline/event-retention.js +59 -56
  429. package/dist/pipeline/handler-access-error.js +2 -1
  430. package/dist/pipeline/handler-context-auth.d.ts +5 -6
  431. package/dist/pipeline/handler-context-auth.js +7 -4
  432. package/dist/pipeline/handler-context-config.d.ts +2 -5
  433. package/dist/pipeline/handler-context-config.js +2 -2
  434. package/dist/pipeline/handler-context-db.d.ts +32 -7
  435. package/dist/pipeline/handler-context-db.js +26 -17
  436. package/dist/pipeline/handler-context-dispatch.d.ts +13 -7
  437. package/dist/pipeline/handler-context-dispatch.js +9 -8
  438. package/dist/pipeline/handler-context-events.d.ts +22 -36
  439. package/dist/pipeline/handler-context-events.js +36 -31
  440. package/dist/pipeline/handler-context-member-resolution.d.ts +2 -0
  441. package/dist/pipeline/handler-context-member-resolution.js +110 -0
  442. package/dist/pipeline/handler-context-notify.d.ts +3 -2
  443. package/dist/pipeline/handler-context-notify.js +1 -1
  444. package/dist/pipeline/handler-context-observability.d.ts +2 -4
  445. package/dist/pipeline/handler-context-observability.js +7 -5
  446. package/dist/pipeline/handler-context-phase-denials.d.ts +11 -0
  447. package/dist/pipeline/handler-context-phase-denials.js +98 -0
  448. package/dist/pipeline/handler-context-scope.d.ts +7 -10
  449. package/dist/pipeline/handler-context-scope.js +18 -20
  450. package/dist/pipeline/index.d.ts +9 -21
  451. package/dist/pipeline/index.js +5 -7
  452. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  453. package/dist/pipeline/irreversible-operation-gate.js +2 -2
  454. package/dist/pipeline/lifecycle-pipeline.d.ts +8 -7
  455. package/dist/pipeline/lifecycle-pipeline.js +9 -15
  456. package/dist/pipeline/member-read-only-transaction.js +11 -3
  457. package/dist/pipeline/member-reader.d.ts +1 -1
  458. package/dist/pipeline/member-reader.js +2 -2
  459. package/dist/pipeline/msp-rebuild.js +5 -3
  460. package/dist/pipeline/multi-stream-apply-context.js +3 -2
  461. package/dist/pipeline/notify-scope.d.ts +2 -1
  462. package/dist/pipeline/pre-handler-gates.d.ts +2 -1
  463. package/dist/pipeline/pre-transaction-reservations.d.ts +3 -3
  464. package/dist/pipeline/pre-transaction-reservations.js +9 -7
  465. package/dist/pipeline/projection-rebuild.js +12 -5
  466. package/dist/pipeline/projection-state.d.ts +0 -6
  467. package/dist/pipeline/projection-state.js +0 -5
  468. package/dist/pipeline/projections-runner.d.ts +2 -1
  469. package/dist/pipeline/projections-runner.js +10 -6
  470. package/dist/pipeline/system-hooks.d.ts +3 -1
  471. package/dist/pipeline/system-hooks.js +6 -4
  472. package/dist/pipeline/system-identity-switch.d.ts +4 -2
  473. package/dist/pipeline/system-identity-switch.js +51 -36
  474. package/dist/pipeline/typed-append-event.d.ts +2 -0
  475. package/dist/pipeline/typed-append-event.js +4 -0
  476. package/dist/pipeline/write-origin.js +2 -2
  477. package/dist/pipeline/write-result-masking.d.ts +1 -1
  478. package/dist/random/index.d.ts +1 -2
  479. package/dist/random/index.js +1 -2
  480. package/dist/rate-limit/bucket.d.ts +2 -1
  481. package/dist/rate-limit/middleware.js +2 -1
  482. package/dist/redis/index.d.ts +3 -4
  483. package/dist/redis/index.js +2 -2
  484. package/dist/schema-cli/apply-command.js +5 -2
  485. package/dist/schema-cli/baseline-command.js +7 -2
  486. package/dist/schema-cli/generate-command.js +7 -9
  487. package/dist/schema-cli/shared.d.ts +12 -2
  488. package/dist/schema-cli/shared.js +24 -2
  489. package/dist/schema-cli/status-command.js +8 -2
  490. package/dist/schema-cli/validate-command.js +48 -4
  491. package/dist/schema-cli.d.ts +0 -1
  492. package/dist/search/configure-tenant-index.d.ts +1 -3
  493. package/dist/search/configure-tenant-index.js +0 -4
  494. package/dist/search/index.d.ts +1 -4
  495. package/dist/search/index.js +0 -2
  496. package/dist/search/meilisearch-adapter-internals.d.ts +8 -0
  497. package/dist/search/meilisearch-adapter-internals.js +9 -0
  498. package/dist/search/meilisearch-adapter.d.ts +1 -8
  499. package/dist/search/meilisearch-adapter.js +6 -7
  500. package/dist/search/meilisearch-peer.d.ts +2 -0
  501. package/dist/search/meilisearch-peer.js +5 -0
  502. package/dist/search/reindex-entity.js +93 -87
  503. package/dist/secrets/index.d.ts +3 -4
  504. package/dist/secrets/index.js +2 -3
  505. package/dist/seeding/index.d.ts +2 -2
  506. package/dist/seeding/index.js +1 -2
  507. package/dist/time/index.d.ts +2 -2
  508. package/dist/time/index.js +1 -1
  509. package/dist/time/tz-context.d.ts +0 -5
  510. package/dist/time/tz-context.js +0 -9
  511. package/dist/ui-types/index.d.ts +8 -11
  512. package/dist/ui-types/index.js +3 -3
  513. package/dist/upgrade-changelog.d.ts +3 -2
  514. package/dist/upgrade-changelog.js +12 -8
  515. package/dist/upgrade-cli-internals.d.ts +8 -0
  516. package/dist/upgrade-cli-internals.js +63 -0
  517. package/dist/upgrade-cli.d.ts +2 -9
  518. package/dist/upgrade-cli.js +28 -70
  519. package/dist/utils/import-optional-peer.d.ts +6 -0
  520. package/dist/utils/import-optional-peer.js +19 -0
  521. package/dist/utils/index.d.ts +1 -4
  522. package/dist/utils/index.js +1 -4
  523. package/package.json +23 -19
  524. package/src/changes.json +236 -0
  525. package/dist/crypto/request-kms-cache.d.ts +0 -8
  526. package/dist/crypto/request-kms-cache.js +0 -21
  527. package/dist/engine/codemod/index.d.ts +0 -2
  528. package/dist/engine/codemod/index.js +0 -1
  529. package/dist/engine/codemod/pipeline-codemod.d.ts +0 -50
  530. package/dist/engine/codemod/pipeline-codemod.js +0 -536
  531. package/dist/engine/feature-ast/entity-field-types.d.ts +0 -13
  532. package/dist/engine/feature-ast/entity-field-types.js +0 -35
  533. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +0 -6
  534. package/dist/engine/feature-ast/extractors/ai-steps.js +0 -254
  535. package/dist/engine/feature-ast/extractors/events.d.ts +0 -5
  536. package/dist/engine/feature-ast/extractors/events.js +0 -275
  537. package/dist/engine/feature-ast/extractors/handlers.d.ts +0 -24
  538. package/dist/engine/feature-ast/extractors/handlers.js +0 -358
  539. package/dist/engine/feature-ast/extractors/hooks.d.ts +0 -24
  540. package/dist/engine/feature-ast/extractors/hooks.js +0 -248
  541. package/dist/engine/feature-ast/extractors/index.d.ts +0 -14
  542. package/dist/engine/feature-ast/extractors/index.js +0 -13
  543. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +0 -7
  544. package/dist/engine/feature-ast/extractors/jobs-routes.js +0 -145
  545. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +0 -10
  546. package/dist/engine/feature-ast/extractors/projections-screens.js +0 -195
  547. package/dist/engine/feature-ast/extractors/resolve-import.d.ts +0 -21
  548. package/dist/engine/feature-ast/extractors/resolve-import.js +0 -180
  549. package/dist/engine/feature-ast/extractors/round1.d.ts +0 -11
  550. package/dist/engine/feature-ast/extractors/round1.js +0 -87
  551. package/dist/engine/feature-ast/extractors/round2.d.ts +0 -7
  552. package/dist/engine/feature-ast/extractors/round2.js +0 -191
  553. package/dist/engine/feature-ast/extractors/round3.d.ts +0 -23
  554. package/dist/engine/feature-ast/extractors/round3.js +0 -292
  555. package/dist/engine/feature-ast/extractors/round5.d.ts +0 -9
  556. package/dist/engine/feature-ast/extractors/round5.js +0 -68
  557. package/dist/engine/feature-ast/extractors/round6.d.ts +0 -4
  558. package/dist/engine/feature-ast/extractors/round6.js +0 -17
  559. package/dist/engine/feature-ast/extractors/shared.d.ts +0 -94
  560. package/dist/engine/feature-ast/extractors/shared.js +0 -343
  561. package/dist/engine/feature-ast/index.d.ts +0 -16
  562. package/dist/engine/feature-ast/index.js +0 -10
  563. package/dist/engine/feature-ast/parse.d.ts +0 -31
  564. package/dist/engine/feature-ast/parse.js +0 -485
  565. package/dist/engine/feature-ast/patch.d.ts +0 -212
  566. package/dist/engine/feature-ast/patch.js +0 -611
  567. package/dist/engine/feature-ast/patcher.d.ts +0 -217
  568. package/dist/engine/feature-ast/patcher.js +0 -281
  569. package/dist/engine/feature-ast/pattern-change-schema.d.ts +0 -1238
  570. package/dist/engine/feature-ast/pattern-change-schema.js +0 -1072
  571. package/dist/engine/feature-ast/pattern-id-matchers.d.ts +0 -7
  572. package/dist/engine/feature-ast/pattern-id-matchers.js +0 -211
  573. package/dist/engine/feature-ast/pattern-id-schema.d.ts +0 -251
  574. package/dist/engine/feature-ast/pattern-id-schema.js +0 -166
  575. package/dist/engine/feature-ast/patterns.d.ts +0 -322
  576. package/dist/engine/feature-ast/patterns.js +0 -107
  577. package/dist/engine/feature-ast/render.d.ts +0 -47
  578. package/dist/engine/feature-ast/render.js +0 -666
  579. package/dist/engine/feature-ast/source-location.d.ts +0 -17
  580. package/dist/engine/feature-ast/source-location.js +0 -27
  581. package/dist/engine/pattern-library/index.d.ts +0 -2
  582. package/dist/engine/pattern-library/index.js +0 -3
  583. package/dist/engine/pattern-library/library.d.ts +0 -14
  584. package/dist/engine/pattern-library/library.js +0 -94
  585. package/dist/engine/pattern-library/mixed-schemas.d.ts +0 -16
  586. package/dist/engine/pattern-library/mixed-schemas.js +0 -559
  587. package/dist/engine/pattern-library/opaque-schemas.d.ts +0 -7
  588. package/dist/engine/pattern-library/opaque-schemas.js +0 -115
  589. package/dist/engine/pattern-library/shared-fields.d.ts +0 -122
  590. package/dist/engine/pattern-library/shared-fields.js +0 -88
  591. package/dist/engine/pattern-library/static-schemas.d.ts +0 -21
  592. package/dist/engine/pattern-library/static-schemas.js +0 -487
  593. package/dist/engine/pattern-library/types.d.ts +0 -158
  594. package/dist/engine/pattern-library/types.js +0 -36
  595. package/dist/engine/resolve-config-or-param.d.ts +0 -18
  596. package/dist/engine/resolve-config-or-param.js +0 -76
  597. package/src/scripts/codemod/README.md +0 -187
  598. package/src/scripts/codemod/codemod-support.ts +0 -334
  599. package/src/scripts/codemod/collect-source-files.ts +0 -48
  600. package/src/scripts/codemod/crypto-shredding-testing-move.ts +0 -119
  601. package/src/scripts/codemod/db-factory.ts +0 -810
  602. package/src/scripts/codemod/feature-factory.ts +0 -429
  603. package/src/scripts/codemod/feature-layout.ts +0 -424
  604. package/src/scripts/codemod/import-extensions.ts +0 -118
  605. package/src/scripts/codemod/migrate-cross-tenant.ts +0 -328
  606. package/src/scripts/codemod/migrate-db-raw.ts +0 -401
  607. package/src/scripts/codemod/migrate-open-to-all.ts +0 -235
  608. package/src/scripts/codemod/object-form.ts +0 -746
  609. package/src/scripts/codemod/package-merge.ts +0 -299
  610. package/src/scripts/codemod/pii-personal-migration.ts +0 -816
  611. package/src/scripts/codemod/remove-engine-payload-casts.ts +0 -318
  612. package/src/scripts/codemod/s3-imports.ts +0 -236
  613. package/src/scripts/codemod/tenant-db-options.ts +0 -454
  614. package/src/scripts/codemod/testing-injection.ts +0 -215
  615. package/src/scripts/codemod/testing-move-targets.ts +0 -161
  616. package/src/scripts/codemod/testing-move.ts +0 -542
  617. package/src/scripts/codemod/unprocessable-error-details-reason.ts +0 -411
@@ -1,191 +0,0 @@
1
- import { SyntaxKind } from "ts-morph";
2
- import { describeUnknownFieldType, findUnknownEntityFieldTypes } from "../entity-field-types.js";
3
- import { sourceLocationFromNode } from "../source-location.js";
4
- import { fail, isPlainObject, isRawRefSentinel, ok, readDataLiteralNode, readNameLiteral, readNameOrRef, } from "./shared.js";
5
- function readBackingTableRef(property) {
6
- const initializer = property.asKind(SyntaxKind.PropertyAssignment)?.getInitializer() ??
7
- property.asKind(SyntaxKind.ShorthandPropertyAssignment)?.getNameNode();
8
- const reference = initializer ? readDataLiteralNode(initializer) : undefined;
9
- return isRawRefSentinel(reference) ? reference : undefined;
10
- }
11
- // `{ name: "x", ...xEntity }` — the definition is a reference the parser cannot
12
- // inline, so it is kept as a raw-ref sentinel and re-rendered as the same spread.
13
- // `backingTable` is runtime wiring (a table identifier), not part of the
14
- // definition data, so it is carried next to the definition and skipped by the shape check.
15
- function readSpreadOnlyDefinition(obj) {
16
- const isBackingTable = (property) => {
17
- const name = property.asKind(SyntaxKind.PropertyAssignment)?.getName() ??
18
- property.asKind(SyntaxKind.ShorthandPropertyAssignment)?.getName();
19
- return name === "backingTable";
20
- };
21
- const allProperties = obj.getProperties();
22
- const properties = allProperties.filter((property) => !isBackingTable(property));
23
- const spread = properties.length === 2 ? properties[1]?.asKind(SyntaxKind.SpreadAssignment) : undefined;
24
- if (!spread)
25
- return undefined;
26
- const reference = readDataLiteralNode(spread.getExpression());
27
- if (!isRawRefSentinel(reference))
28
- return undefined;
29
- const backingTableProperty = allProperties.find(isBackingTable);
30
- const backingTable = backingTableProperty ? readBackingTableRef(backingTableProperty) : undefined;
31
- // A backingTable that is not a plain reference cannot be re-rendered; fall back to the data reader.
32
- if (backingTableProperty && !backingTable)
33
- return undefined;
34
- return { definition: reference, backingTable };
35
- }
36
- export function extractEntity(call, sourceFile) {
37
- const args = call.getArguments();
38
- const first = args[0];
39
- if (!first) {
40
- return fail("entity", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
41
- }
42
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
43
- if (obj && args.length === 1) {
44
- const nameInit = obj
45
- .getProperty("name")
46
- ?.asKind(SyntaxKind.PropertyAssignment)
47
- ?.getInitializer()
48
- ?.asKind(SyntaxKind.StringLiteral);
49
- if (!nameInit) {
50
- return fail("entity", sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
51
- }
52
- const spreadOnly = readSpreadOnlyDefinition(obj);
53
- const definition = spreadOnly?.definition ?? readDataLiteralNode(obj);
54
- if (!isPlainObject(definition)) {
55
- return fail("entity", sourceLocationFromNode(call, sourceFile), "definition could not be read as a plain object (contains functions or identifiers)");
56
- }
57
- const { name: _name, ...defWithoutName } = definition;
58
- const unknownTypes = findUnknownEntityFieldTypes(defWithoutName);
59
- const firstUnknown = unknownTypes[0];
60
- if (firstUnknown) {
61
- return fail("entity", sourceLocationFromNode(call, sourceFile), `definition.fields.${firstUnknown.fieldName}.type: ${describeUnknownFieldType(firstUnknown)}`);
62
- }
63
- return ok({
64
- kind: "entity",
65
- source: sourceLocationFromNode(call, sourceFile),
66
- entityName: nameInit.getLiteralValue(),
67
- // Field-type membership is checked above; the cast is the extractor's
68
- // existing narrowing contract (readDataLiteralNode returns unknown).
69
- definition: defWithoutName,
70
- ...(spreadOnly?.backingTable && { backingTable: spreadOnly.backingTable }),
71
- });
72
- }
73
- const entityName = readNameLiteral(first);
74
- if (entityName === undefined) {
75
- return fail("entity", sourceLocationFromNode(call, sourceFile), "first argument must be a string literal name, or an identifier resolving to one (or use the object form)");
76
- }
77
- const defArg = args[1];
78
- if (!defArg) {
79
- return fail("entity", sourceLocationFromNode(call, sourceFile), "expected a definition object as second argument");
80
- }
81
- const definition = readDataLiteralNode(defArg);
82
- if (!isPlainObject(definition)) {
83
- return fail("entity", sourceLocationFromNode(call, sourceFile), "definition could not be read as a plain object (contains functions or identifiers)");
84
- }
85
- const unknownTypes = findUnknownEntityFieldTypes(definition);
86
- const firstUnknown = unknownTypes[0];
87
- if (firstUnknown) {
88
- return fail("entity", sourceLocationFromNode(call, sourceFile), `definition.fields.${firstUnknown.fieldName}.type: ${describeUnknownFieldType(firstUnknown)}`);
89
- }
90
- return ok({
91
- kind: "entity",
92
- source: sourceLocationFromNode(call, sourceFile),
93
- entityName,
94
- definition: definition,
95
- });
96
- }
97
- export function extractRelation(call, sourceFile) {
98
- const args = call.getArguments();
99
- const first = args[0];
100
- if (!first) {
101
- return fail("relation", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
102
- }
103
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
104
- if (obj && args.length === 1) {
105
- const entityInit = obj
106
- .getProperty("entity")
107
- ?.asKind(SyntaxKind.PropertyAssignment)
108
- ?.getInitializer();
109
- if (!entityInit) {
110
- return fail("relation", sourceLocationFromNode(call, sourceFile), "object form requires an `entity` property");
111
- }
112
- const entityName = readNameOrRef(entityInit);
113
- if (!entityName) {
114
- return fail("relation", sourceLocationFromNode(call, sourceFile), '`entity` must be a string literal or `{ name: "..." }` ref');
115
- }
116
- const nameInit = obj
117
- .getProperty("name")
118
- ?.asKind(SyntaxKind.PropertyAssignment)
119
- ?.getInitializer()
120
- ?.asKind(SyntaxKind.StringLiteral);
121
- if (!nameInit) {
122
- return fail("relation", sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
123
- }
124
- const definition = readDataLiteralNode(obj);
125
- if (!isPlainObject(definition)) {
126
- return fail("relation", sourceLocationFromNode(call, sourceFile), "definition could not be read as a plain object");
127
- }
128
- const { entity: _e, name: _n, ...defWithoutCarriers } = definition;
129
- return ok({
130
- kind: "relation",
131
- source: sourceLocationFromNode(call, sourceFile),
132
- entityName,
133
- relationName: nameInit.getLiteralValue(),
134
- definition: defWithoutCarriers,
135
- });
136
- }
137
- const entityName = readNameOrRef(first);
138
- if (!entityName) {
139
- return fail("relation", sourceLocationFromNode(call, sourceFile), 'first argument must be a string literal or an inline { name: "..." } object (or use the object form)');
140
- }
141
- const relationNameArg = args[1];
142
- const relationName = relationNameArg && readNameLiteral(relationNameArg);
143
- if (!relationName) {
144
- return fail("relation", sourceLocationFromNode(call, sourceFile), "second argument must be a string literal relation name, or an identifier resolving to one");
145
- }
146
- const defArg = args[2];
147
- if (!defArg) {
148
- return fail("relation", sourceLocationFromNode(call, sourceFile), "expected a definition object as third argument");
149
- }
150
- const definition = readDataLiteralNode(defArg);
151
- if (!isPlainObject(definition)) {
152
- return fail("relation", sourceLocationFromNode(call, sourceFile), "definition could not be read as a plain object");
153
- }
154
- return ok({
155
- kind: "relation",
156
- source: sourceLocationFromNode(call, sourceFile),
157
- entityName,
158
- relationName,
159
- definition: definition,
160
- });
161
- }
162
- export function extractNav(call, sourceFile) {
163
- const arg = call.getArguments()[0];
164
- if (!arg) {
165
- return fail("nav", sourceLocationFromNode(call, sourceFile), "expected a NavDefinition object as first argument");
166
- }
167
- const definition = readDataLiteralNode(arg);
168
- if (!isPlainObject(definition)) {
169
- return fail("nav", sourceLocationFromNode(call, sourceFile), "definition could not be read as a plain object");
170
- }
171
- return ok({
172
- kind: "nav",
173
- source: sourceLocationFromNode(call, sourceFile),
174
- definition: definition,
175
- });
176
- }
177
- export function extractWorkspace(call, sourceFile) {
178
- const arg = call.getArguments()[0];
179
- if (!arg) {
180
- return fail("workspace", sourceLocationFromNode(call, sourceFile), "expected a WorkspaceDefinition object as first argument");
181
- }
182
- const definition = readDataLiteralNode(arg);
183
- if (!isPlainObject(definition)) {
184
- return fail("workspace", sourceLocationFromNode(call, sourceFile), "definition could not be read as a plain object");
185
- }
186
- return ok({
187
- kind: "workspace",
188
- source: sourceLocationFromNode(call, sourceFile),
189
- definition: definition,
190
- });
191
- }
@@ -1,23 +0,0 @@
1
- import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { ClaimKeyType } from "../../types/handlers.ts";
3
- import type { ParseError } from "../parse.ts";
4
- import type { ClaimKeyPattern, ConfigPattern, MetricPattern, ReferenceDataPattern, SecretNamespacePattern, SecretPattern, TranslationsPattern, UseExtensionPattern } from "../patterns.ts";
5
- import { type ExtractOutput, type ReadDataLiteralOptions } from "./shared.ts";
6
- export type NamedOptionsResult = {
7
- readonly kind: "ok";
8
- readonly name: string;
9
- readonly options: Record<string, unknown>;
10
- } | {
11
- readonly kind: "error";
12
- readonly error: ParseError;
13
- };
14
- export declare function readNamedOptions(call: CallExpression, sourceFile: SourceFile, methodName: string, readOptions?: ReadDataLiteralOptions): NamedOptionsResult;
15
- export declare function extractConfig(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ConfigPattern>;
16
- export declare function extractTranslations(call: CallExpression, sourceFile: SourceFile): ExtractOutput<TranslationsPattern>;
17
- export declare function extractMetric(call: CallExpression, sourceFile: SourceFile): ExtractOutput<MetricPattern>;
18
- export declare function extractSecret(call: CallExpression, sourceFile: SourceFile): ExtractOutput<SecretPattern>;
19
- export declare function extractSecretNamespace(call: CallExpression, sourceFile: SourceFile): ExtractOutput<SecretNamespacePattern>;
20
- export declare function isClaimKeyType(value: unknown): value is ClaimKeyType;
21
- export declare function extractClaimKey(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ClaimKeyPattern>;
22
- export declare function extractReferenceData(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ReferenceDataPattern>;
23
- export declare function extractUseExtension(call: CallExpression, sourceFile: SourceFile): ExtractOutput<UseExtensionPattern>;
@@ -1,292 +0,0 @@
1
- import { SyntaxKind } from "ts-morph";
2
- import { sourceLocationFromNode } from "../source-location.js";
3
- import { fail, isPlainObject, ok, readDataLiteralNode, readNameLiteral, readNameLiteralRef, readNameOrRef, } from "./shared.js";
4
- export function readNamedOptions(call, sourceFile, methodName, readOptions = {}) {
5
- const args = call.getArguments();
6
- const first = args[0];
7
- if (!first) {
8
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "expected at least one argument");
9
- }
10
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
11
- if (obj && args.length === 1) {
12
- const nameInit = obj
13
- .getProperty("name")
14
- ?.asKind(SyntaxKind.PropertyAssignment)
15
- ?.getInitializer()
16
- ?.asKind(SyntaxKind.StringLiteral);
17
- if (!nameInit) {
18
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
19
- }
20
- const data = readDataLiteralNode(obj, readOptions);
21
- if (!isPlainObject(data)) {
22
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "argument could not be read as a plain object");
23
- }
24
- const { name: _name, ...optionsWithoutName } = data;
25
- return { kind: "ok", name: nameInit.getLiteralValue(), options: optionsWithoutName };
26
- }
27
- const name = readNameLiteral(first);
28
- if (name === undefined) {
29
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "first argument must be a string literal name, or an identifier resolving to one (or use the object form)");
30
- }
31
- const optionsArg = args[1];
32
- if (!optionsArg) {
33
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "expected an options object as second argument");
34
- }
35
- const options = readDataLiteralNode(optionsArg, readOptions);
36
- if (!isPlainObject(options)) {
37
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "options could not be read as a plain object");
38
- }
39
- return { kind: "ok", name, options };
40
- }
41
- export function extractConfig(call, sourceFile) {
42
- const arg = call.getArguments()[0];
43
- if (!arg) {
44
- return fail("config", sourceLocationFromNode(call, sourceFile), "expected `{ keys: { ... } }` as first argument");
45
- }
46
- const obj = readDataLiteralNode(arg);
47
- if (!isPlainObject(obj)) {
48
- return fail("config", sourceLocationFromNode(call, sourceFile), "argument could not be read as a plain object");
49
- }
50
- const keys = obj["keys"];
51
- if (!isPlainObject(keys)) {
52
- return fail("config", sourceLocationFromNode(call, sourceFile), "missing or non-object `keys` property");
53
- }
54
- return ok({
55
- kind: "config",
56
- source: sourceLocationFromNode(call, sourceFile),
57
- keys: keys,
58
- });
59
- }
60
- export function extractTranslations(call, sourceFile) {
61
- const arg = call.getArguments()[0];
62
- if (!arg) {
63
- return fail("translations", sourceLocationFromNode(call, sourceFile), "expected `{ keys: { ... } }` as first argument");
64
- }
65
- const obj = readDataLiteralNode(arg);
66
- if (!isPlainObject(obj)) {
67
- return fail("translations", sourceLocationFromNode(call, sourceFile), "argument could not be read as a plain object");
68
- }
69
- const keys = obj["keys"];
70
- if (!isPlainObject(keys)) {
71
- return fail("translations", sourceLocationFromNode(call, sourceFile), "missing or non-object `keys` property");
72
- }
73
- return ok({
74
- kind: "translations",
75
- source: sourceLocationFromNode(call, sourceFile),
76
- keys: keys,
77
- });
78
- }
79
- export function extractMetric(call, sourceFile) {
80
- const parsed = readNamedOptions(call, sourceFile, "metric");
81
- if (parsed.kind === "error")
82
- return parsed;
83
- return ok({
84
- kind: "metric",
85
- source: sourceLocationFromNode(call, sourceFile),
86
- shortName: parsed.name,
87
- options: parsed.options,
88
- });
89
- }
90
- export function extractSecret(call, sourceFile) {
91
- const parsed = readNamedOptions(call, sourceFile, "secret", { functionValuesAsRaw: true });
92
- if (parsed.kind === "error")
93
- return parsed;
94
- return ok({
95
- kind: "secret",
96
- source: sourceLocationFromNode(call, sourceFile),
97
- shortName: parsed.name,
98
- options: parsed.options,
99
- });
100
- }
101
- export function extractSecretNamespace(call, sourceFile) {
102
- const parsed = readNamedOptions(call, sourceFile, "secretNamespace");
103
- if (parsed.kind === "error")
104
- return parsed;
105
- return ok({
106
- kind: "secretNamespace",
107
- source: sourceLocationFromNode(call, sourceFile),
108
- shortName: parsed.name,
109
- options: parsed.options,
110
- });
111
- }
112
- export function isClaimKeyType(value) {
113
- return (value === "string" ||
114
- value === "number" ||
115
- value === "boolean" ||
116
- value === "string[]" ||
117
- value === "object");
118
- }
119
- export function extractClaimKey(call, sourceFile) {
120
- const parsed = readNamedOptions(call, sourceFile, "claimKey");
121
- if (parsed.kind === "error")
122
- return parsed;
123
- const claimType = parsed.options["type"];
124
- if (!isClaimKeyType(claimType)) {
125
- return fail("claimKey", sourceLocationFromNode(call, sourceFile), 'type must be one of "string" | "number" | "boolean" | "string[]" | "object"');
126
- }
127
- return ok({
128
- kind: "claimKey",
129
- source: sourceLocationFromNode(call, sourceFile),
130
- shortName: parsed.name,
131
- claimType,
132
- });
133
- }
134
- export function extractReferenceData(call, sourceFile) {
135
- const args = call.getArguments();
136
- const first = args[0];
137
- if (!first) {
138
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
139
- }
140
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
141
- if (obj && args.length === 1) {
142
- const entityInit = obj
143
- .getProperty("entity")
144
- ?.asKind(SyntaxKind.PropertyAssignment)
145
- ?.getInitializer();
146
- if (!entityInit) {
147
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "object form requires an `entity` property");
148
- }
149
- const entityName = readNameOrRef(entityInit);
150
- if (!entityName) {
151
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), '`entity` must be a string literal or `{ name: "..." }` ref');
152
- }
153
- const dataInit = obj
154
- .getProperty("data")
155
- ?.asKind(SyntaxKind.PropertyAssignment)
156
- ?.getInitializer();
157
- if (!dataInit) {
158
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "object form requires a `data` property");
159
- }
160
- const data = readDataLiteralNode(dataInit);
161
- if (!Array.isArray(data) || !data.every(isPlainObject)) {
162
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "data must be an array of plain objects");
163
- }
164
- let upsertKey;
165
- const upsertKeyInit = obj
166
- .getProperty("upsertKey")
167
- ?.asKind(SyntaxKind.PropertyAssignment)
168
- ?.getInitializer()
169
- ?.asKind(SyntaxKind.StringLiteral);
170
- if (upsertKeyInit) {
171
- upsertKey = upsertKeyInit.getLiteralValue();
172
- }
173
- return ok({
174
- kind: "referenceData",
175
- source: sourceLocationFromNode(call, sourceFile),
176
- entityName,
177
- data: data,
178
- ...(upsertKey !== undefined && { upsertKey }),
179
- });
180
- }
181
- const entityName = readNameOrRef(first);
182
- if (!entityName) {
183
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), 'first argument must be a string literal or an inline { name: "..." } object (or use the object form)');
184
- }
185
- const dataArg = args[1];
186
- if (!dataArg) {
187
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "expected a data array as second argument");
188
- }
189
- const data = readDataLiteralNode(dataArg);
190
- if (!Array.isArray(data) || !data.every(isPlainObject)) {
191
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "data must be an array of plain objects");
192
- }
193
- let upsertKey;
194
- const optionsArg = args[2];
195
- if (optionsArg) {
196
- const options = readDataLiteralNode(optionsArg);
197
- if (!isPlainObject(options)) {
198
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "options could not be read as a plain object");
199
- }
200
- if (options["upsertKey"] !== undefined) {
201
- if (typeof options["upsertKey"] !== "string") {
202
- return fail("referenceData", sourceLocationFromNode(call, sourceFile), "upsertKey must be a string when provided");
203
- }
204
- upsertKey = options["upsertKey"];
205
- }
206
- }
207
- return ok({
208
- kind: "referenceData",
209
- source: sourceLocationFromNode(call, sourceFile),
210
- entityName,
211
- data: data,
212
- ...(upsertKey !== undefined && { upsertKey }),
213
- });
214
- }
215
- const USE_EXTENSION_READ_OPTIONS = { functionValuesAsRaw: true };
216
- export function extractUseExtension(call, sourceFile) {
217
- const args = call.getArguments();
218
- const first = args[0];
219
- if (!first) {
220
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
221
- }
222
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
223
- if (obj && args.length === 1) {
224
- const nameInit = obj
225
- .getProperty("name")
226
- ?.asKind(SyntaxKind.PropertyAssignment)
227
- ?.getInitializer()
228
- ?.asKind(SyntaxKind.StringLiteral);
229
- if (!nameInit) {
230
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
231
- }
232
- const entityInit = obj
233
- .getProperty("entity")
234
- ?.asKind(SyntaxKind.PropertyAssignment)
235
- ?.getInitializer();
236
- if (!entityInit) {
237
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "object form requires an `entity` property");
238
- }
239
- const entityName = readNameOrRef(entityInit);
240
- if (!entityName) {
241
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), '`entity` must be a string literal or `{ name: "..." }` ref');
242
- }
243
- let options;
244
- const optionsInit = obj
245
- .getProperty("options")
246
- ?.asKind(SyntaxKind.PropertyAssignment)
247
- ?.getInitializer();
248
- if (optionsInit) {
249
- const parsed = readDataLiteralNode(optionsInit, USE_EXTENSION_READ_OPTIONS);
250
- if (!isPlainObject(parsed)) {
251
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "options could not be read as a plain object");
252
- }
253
- options = parsed;
254
- }
255
- return ok({
256
- kind: "useExtension",
257
- source: sourceLocationFromNode(call, sourceFile),
258
- extensionName: nameInit.getLiteralValue(),
259
- entityName,
260
- ...(options !== undefined && { options }),
261
- });
262
- }
263
- const extensionNameRef = readNameLiteralRef(first);
264
- if (extensionNameRef === undefined) {
265
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "first argument must be a string literal extension name, or an identifier resolving to one (or use the object form)");
266
- }
267
- const entityRefArg = args[1];
268
- if (!entityRefArg) {
269
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "expected an entity reference as second argument");
270
- }
271
- const entityName = readNameOrRef(entityRefArg);
272
- if (!entityName) {
273
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), 'second argument must be a string literal or an inline { name: "..." } object');
274
- }
275
- const optionsArg = args[2];
276
- let options;
277
- if (optionsArg) {
278
- const parsed = readDataLiteralNode(optionsArg, USE_EXTENSION_READ_OPTIONS);
279
- if (!isPlainObject(parsed)) {
280
- return fail("useExtension", sourceLocationFromNode(call, sourceFile), "options could not be read as a plain object");
281
- }
282
- options = parsed;
283
- }
284
- return ok({
285
- kind: "useExtension",
286
- source: sourceLocationFromNode(call, sourceFile),
287
- extensionName: extensionNameRef.value,
288
- ...(extensionNameRef.raw !== undefined && { extensionNameRaw: extensionNameRef.raw }),
289
- entityName,
290
- ...(options !== undefined && { options }),
291
- });
292
- }
@@ -1,9 +0,0 @@
1
- import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { EnvSchemaPattern, ExposesApiPattern, ExtendsRegistrarPattern, UsesApiPattern } from "../patterns.ts";
3
- import { type ExtractOutput } from "./shared.ts";
4
- export declare function extractEnvSchema(call: CallExpression, sourceFile: SourceFile): ExtractOutput<EnvSchemaPattern>;
5
- export declare function extractExtendsRegistrar(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ExtendsRegistrarPattern>;
6
- export declare function extractUsesApi(call: CallExpression, sourceFile: SourceFile): ExtractOutput<UsesApiPattern>;
7
- export declare function extractExposesApi(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ExposesApiPattern>;
8
- export declare function extractStoreTable(call: CallExpression, sourceFile: SourceFile): ExtractOutput<never>;
9
- export declare function extractBootCheck(call: CallExpression, sourceFile: SourceFile): ExtractOutput<never>;
@@ -1,68 +0,0 @@
1
- import { sourceLocationFromNode } from "../source-location.js";
2
- import { fail, ok, readNameLiteral, readNameLiteralRef } from "./shared.js";
3
- export function extractEnvSchema(call, sourceFile) {
4
- const arg = call.getArguments()[0];
5
- if (!arg) {
6
- return fail("envSchema", sourceLocationFromNode(call, sourceFile), "expected a single Zod-object schema argument (e.g. z.object({...}))");
7
- }
8
- return ok({
9
- kind: "envSchema",
10
- source: sourceLocationFromNode(call, sourceFile),
11
- schemaBody: sourceLocationFromNode(arg, sourceFile),
12
- });
13
- }
14
- export function extractExtendsRegistrar(call, sourceFile) {
15
- const args = call.getArguments();
16
- const first = args[0];
17
- const extensionNameRef = first && readNameLiteralRef(first);
18
- if (!extensionNameRef) {
19
- return fail("extendsRegistrar", sourceLocationFromNode(call, sourceFile), "first argument must be a string literal extension name, or an identifier resolving to one");
20
- }
21
- const defArg = args[1];
22
- if (!defArg) {
23
- return fail("extendsRegistrar", sourceLocationFromNode(call, sourceFile), "expected a definition argument");
24
- }
25
- return ok({
26
- kind: "extendsRegistrar",
27
- source: sourceLocationFromNode(call, sourceFile),
28
- extensionName: extensionNameRef.value,
29
- ...(extensionNameRef.raw !== undefined && { extensionNameRaw: extensionNameRef.raw }),
30
- defBody: sourceLocationFromNode(defArg, sourceFile),
31
- });
32
- }
33
- export function extractUsesApi(call, sourceFile) {
34
- const arg = call.getArguments()[0];
35
- const apiName = arg && readNameLiteral(arg);
36
- if (!apiName) {
37
- return fail("usesApi", sourceLocationFromNode(call, sourceFile), 'expected a single string-literal API name (e.g. "sessions.revokeAllForUser"), or an identifier resolving to one');
38
- }
39
- return ok({
40
- kind: "usesApi",
41
- source: sourceLocationFromNode(call, sourceFile),
42
- apiName,
43
- });
44
- }
45
- export function extractExposesApi(call, sourceFile) {
46
- const arg = call.getArguments()[0];
47
- const apiName = arg && readNameLiteral(arg);
48
- if (!apiName) {
49
- return fail("exposesApi", sourceLocationFromNode(call, sourceFile), 'expected a single string-literal API name (e.g. "sessions.revokeAllForUser"), or an identifier resolving to one');
50
- }
51
- return ok({
52
- kind: "exposesApi",
53
- source: sourceLocationFromNode(call, sourceFile),
54
- apiName,
55
- });
56
- }
57
- export function extractStoreTable(call, sourceFile) {
58
- // The meta argument is always a factory call (defineUnmanagedTable /
59
- // deriveEntityTableMeta) or a captured identifier — never an inline literal,
60
- // so there is nothing to extract statically. A clean ParseError (not
61
- // UnknownPattern) marks it design-time-unreadable, like entity-by-identifier.
62
- return fail("storeTable", sourceLocationFromNode(call, sourceFile), "storeTable meta is a factory/identifier argument, not a static literal");
63
- }
64
- export function extractBootCheck(call, sourceFile) {
65
- // The argument is a runtime closure over the composed feature list —
66
- // nothing to extract statically, so a clean ParseError like storeTable.
67
- return fail("bootCheck", sourceLocationFromNode(call, sourceFile), "bootCheck takes a runtime closure, not a static literal");
68
- }
@@ -1,4 +0,0 @@
1
- import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { TreeActionsPattern } from "../patterns.ts";
3
- import { type ExtractOutput } from "./shared.ts";
4
- export declare function extractTreeActions(call: CallExpression, sourceFile: SourceFile): ExtractOutput<TreeActionsPattern>;
@@ -1,17 +0,0 @@
1
- import { sourceLocationFromNode } from "../source-location.js";
2
- import { fail, isPlainObject, ok, readDataLiteralNode } from "./shared.js";
3
- export function extractTreeActions(call, sourceFile) {
4
- const arg = call.getArguments()[0];
5
- if (!arg) {
6
- return fail("treeActions", sourceLocationFromNode(call, sourceFile), "expected an action-map object literal as first argument");
7
- }
8
- const definitions = readDataLiteralNode(arg);
9
- if (!isPlainObject(definitions)) {
10
- return fail("treeActions", sourceLocationFromNode(call, sourceFile), "action-map could not be read as a plain object");
11
- }
12
- return ok({
13
- kind: "treeActions",
14
- source: sourceLocationFromNode(call, sourceFile),
15
- definitions: definitions,
16
- });
17
- }