@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,94 +0,0 @@
1
- import type { CallExpression, ObjectLiteralExpression } from "ts-morph";
2
- import { Node } from "ts-morph";
3
- import type { ParseError } from "../parse.ts";
4
- export type ExtractOutput<TPattern> = {
5
- readonly kind: "pattern";
6
- readonly pattern: TPattern;
7
- } | {
8
- readonly kind: "error";
9
- readonly error: ParseError;
10
- };
11
- export declare function ok<TPattern>(pattern: TPattern): ExtractOutput<TPattern>;
12
- export declare function fail(methodName: string, source: ParseError["source"], reason: string): {
13
- readonly kind: "error";
14
- readonly error: ParseError;
15
- };
16
- export declare function readStringLiteralArgs(call: CallExpression): readonly string[] | undefined;
17
- export declare function readBooleanProperty(objectLiteral: Node, propertyName: string): boolean | undefined;
18
- /**
19
- * Marks a value the parser could not resolve into a literal (an Identifier
20
- * reference, a call expression, ...) while preserving its exact source text.
21
- * `renderValue` re-emits `__raw` verbatim instead of re-serializing the
22
- * value, so round-tripping a reference like `eventEntity` never expands it
23
- * into an inlined object literal.
24
- */
25
- export type RawRefSentinel = {
26
- readonly __raw: string;
27
- };
28
- export declare function isRawRefSentinel(value: unknown): value is RawRefSentinel;
29
- export declare function containsRawRefSentinel(value: unknown): boolean;
30
- export type ReadDataLiteralOptions = {
31
- /**
32
- * Keep arrow/function-expression values as `__raw` sentinels instead of
33
- * failing the whole read. Only for pattern options that are code by
34
- * nature (useExtension); data-only definitions (entity, nav) must still
35
- * reject functions.
36
- */
37
- readonly functionValuesAsRaw?: boolean;
38
- };
39
- export declare function readDataLiteralNode(node: Node, readOptions?: ReadDataLiteralOptions): unknown;
40
- /**
41
- * A node's literal string value, or the raw-ref sentinel when it resolves to
42
- * an unresolvable identifier/factory-call/member-access (see
43
- * readDataLiteralNode). undefined for anything else (number, boolean, ...).
44
- */
45
- export declare function readStringOrRaw(node: Node): string | RawRefSentinel | undefined;
46
- /**
47
- * Like readStringLiteralArgs, but an argument that resolves to a raw-ref
48
- * sentinel is kept as that sentinel instead of failing the whole call. Used
49
- * where a value stands in for a single name/key and inlining its resolved
50
- * string would corrupt the render roundtrip (e.g. `r.requires(someFeature.name)`).
51
- */
52
- export declare function readStringOrRawArgs(call: CallExpression): readonly (string | RawRefSentinel)[] | undefined;
53
- export { isPlainObject } from "../../../utils/is-plain-object.ts";
54
- export declare function readPropertyKey(propAssign: import("ts-morph").PropertyAssignment): string;
55
- /**
56
- * Resolved name plus, when the source node was an identifier rather than
57
- * a string literal, the identifier's exact source text. Mirrors
58
- * `RawRefSentinel`'s round-trip contract: extractors that need to re-emit
59
- * the original reference (not its resolved value) keep `raw` alongside
60
- * `value`; extractors that only need the string keep using
61
- * `readNameLiteral`, which discards it.
62
- */
63
- export type NameLiteralRef = {
64
- readonly value: string;
65
- readonly raw?: string;
66
- };
67
- /**
68
- * Like `readNameLiteral`, but for callers that must preserve an
69
- * identifier-authored name across a render → parse round-trip.
70
- * `raw` is populated only when the node resolved via an identifier — a
71
- * string-literal node has nothing worth preserving beyond its value, and
72
- * setting `raw` for it too would make `JSON.stringify(value)` and
73
- * `node.getText()` diverge on quote style.
74
- */
75
- export declare function readNameLiteralRef(node: Node): NameLiteralRef | undefined;
76
- /**
77
- * A node's string value when it's a string literal, or when it's a bare
78
- * Identifier that resolves to one via a `const X = "..."` declaration
79
- * (same-file or imported) — the pattern used throughout the framework's
80
- * own bundled-features for registrar-call names (`EXT_TENANT_DATA`,
81
- * `TENANT_SECRET_READ_EVENT`, ...) instead of repeating string literals.
82
- * undefined for anything unresolvable (factory call, member access,
83
- * external/ambient identifier) — callers keep their existing ParseError
84
- * fallback, no crash. Discards the original identifier text; use
85
- * `readNameLiteralRef` when the caller must preserve it for rendering.
86
- */
87
- export declare function readNameLiteral(node: Node): string | undefined;
88
- export declare function readNameOrRef(node: Node): string | undefined;
89
- /** Resolve an inline object literal or a same-file `const` that initializes to one. */
90
- export declare function resolveSameFileObjectLiteral(node: Node): ObjectLiteralExpression | undefined;
91
- export declare function readObjectPropertyInitializer(obj: ObjectLiteralExpression, propertyName: string): import("ts-morph").Expression | undefined;
92
- export declare function findFunctionLiteral(node: Node): Node | undefined;
93
- export declare function readNameOrRefOrList(node: Node): string | readonly string[] | undefined;
94
- export declare function readVarargsOrArrayProp(call: CallExpression, arrayPropName: "features" | "keys"): readonly (string | RawRefSentinel)[] | undefined;
@@ -1,343 +0,0 @@
1
- import { Node, SyntaxKind } from "ts-morph";
2
- import { isPlainObject } from "../../../utils/is-plain-object.js";
3
- import { findImportBindingForLocalName, findScopedVariableDeclaration, resolveExportedVariable, resolveModuleFile, } from "./resolve-import.js";
4
- export function ok(pattern) {
5
- return { kind: "pattern", pattern };
6
- }
7
- export function fail(methodName, source, reason) {
8
- return { kind: "error", error: { methodName, source, reason } };
9
- }
10
- export function readStringLiteralArgs(call) {
11
- const out = [];
12
- for (const arg of call.getArguments()) {
13
- const literal = arg.asKind(SyntaxKind.StringLiteral);
14
- if (!literal)
15
- return undefined;
16
- out.push(literal.getLiteralValue());
17
- }
18
- return out;
19
- }
20
- export function readBooleanProperty(objectLiteral, propertyName) {
21
- const obj = objectLiteral.asKind(SyntaxKind.ObjectLiteralExpression);
22
- if (!obj)
23
- return undefined;
24
- const prop = obj.getProperty(propertyName);
25
- if (!prop)
26
- return undefined;
27
- const assignment = prop.asKind(SyntaxKind.PropertyAssignment);
28
- if (!assignment)
29
- return undefined;
30
- const initializer = assignment.getInitializer();
31
- if (!initializer)
32
- return undefined;
33
- const kind = initializer.getKind();
34
- if (kind === SyntaxKind.TrueKeyword)
35
- return true;
36
- if (kind === SyntaxKind.FalseKeyword)
37
- return false;
38
- return undefined;
39
- }
40
- export function isRawRefSentinel(value) {
41
- return (value !== null &&
42
- typeof value === "object" &&
43
- !Array.isArray(value) &&
44
- "__raw" in value &&
45
- typeof value.__raw === "string");
46
- }
47
- // Deep check over arrays/plain objects, the only container shapes
48
- // readDataLiteralNode produces.
49
- export function containsRawRefSentinel(value) {
50
- if (isRawRefSentinel(value))
51
- return true;
52
- if (Array.isArray(value))
53
- return value.some(containsRawRefSentinel);
54
- if (isPlainObject(value))
55
- return Object.values(value).some(containsRawRefSentinel);
56
- return false;
57
- }
58
- export function readDataLiteralNode(node, readOptions = {}) {
59
- const kind = node.getKind();
60
- switch (kind) {
61
- case SyntaxKind.StringLiteral:
62
- return node.asKindOrThrow(SyntaxKind.StringLiteral).getLiteralValue();
63
- case SyntaxKind.NoSubstitutionTemplateLiteral:
64
- return node.asKindOrThrow(SyntaxKind.NoSubstitutionTemplateLiteral).getLiteralValue();
65
- case SyntaxKind.NumericLiteral:
66
- return Number(node.asKindOrThrow(SyntaxKind.NumericLiteral).getText());
67
- case SyntaxKind.TrueKeyword:
68
- return true;
69
- case SyntaxKind.FalseKeyword:
70
- return false;
71
- case SyntaxKind.NullKeyword:
72
- return null;
73
- case SyntaxKind.PrefixUnaryExpression: {
74
- const expr = node.asKindOrThrow(SyntaxKind.PrefixUnaryExpression);
75
- if (expr.getOperatorToken() !== SyntaxKind.MinusToken)
76
- return undefined;
77
- const inner = readDataLiteralNode(expr.getOperand(), readOptions);
78
- if (typeof inner !== "number")
79
- return undefined;
80
- return -inner;
81
- }
82
- case SyntaxKind.ArrayLiteralExpression: {
83
- const arr = node.asKindOrThrow(SyntaxKind.ArrayLiteralExpression);
84
- const out = [];
85
- for (const el of arr.getElements()) {
86
- const value = readDataLiteralNode(el, readOptions);
87
- if (value === undefined)
88
- return undefined;
89
- out.push(value);
90
- }
91
- return out;
92
- }
93
- case SyntaxKind.ObjectLiteralExpression: {
94
- const obj = node.asKindOrThrow(SyntaxKind.ObjectLiteralExpression);
95
- const out = {};
96
- for (const prop of obj.getProperties()) {
97
- const propAssign = prop.asKind(SyntaxKind.PropertyAssignment);
98
- if (!propAssign)
99
- return undefined;
100
- const initializer = propAssign.getInitializer();
101
- if (!initializer)
102
- return undefined;
103
- const value = readDataLiteralNode(initializer, readOptions);
104
- if (value === undefined)
105
- return undefined;
106
- out[readPropertyKey(propAssign)] = value;
107
- }
108
- return out;
109
- }
110
- case SyntaxKind.AsExpression:
111
- return readDataLiteralNode(node.asKindOrThrow(SyntaxKind.AsExpression).getExpression(), readOptions);
112
- case SyntaxKind.SatisfiesExpression:
113
- return readDataLiteralNode(node.asKindOrThrow(SyntaxKind.SatisfiesExpression).getExpression(), readOptions);
114
- case SyntaxKind.ParenthesizedExpression:
115
- return readDataLiteralNode(node.asKindOrThrow(SyntaxKind.ParenthesizedExpression).getExpression(), readOptions);
116
- case SyntaxKind.Identifier:
117
- case SyntaxKind.CallExpression:
118
- case SyntaxKind.PropertyAccessExpression:
119
- // Unresolvable reference (const identifier, factory call, member access).
120
- // Keep the exact source text so renderValue can re-emit it verbatim —
121
- // resolving/inlining it would silently rewrite the source on the next
122
- // parse->render roundtrip (see readDataLiteralNode doc above).
123
- return { __raw: node.getText() };
124
- case SyntaxKind.ArrowFunction:
125
- case SyntaxKind.FunctionExpression:
126
- return readOptions.functionValuesAsRaw
127
- ? { __raw: node.getText() }
128
- : undefined;
129
- default:
130
- return undefined;
131
- }
132
- }
133
- /**
134
- * A node's literal string value, or the raw-ref sentinel when it resolves to
135
- * an unresolvable identifier/factory-call/member-access (see
136
- * readDataLiteralNode). undefined for anything else (number, boolean, ...).
137
- */
138
- export function readStringOrRaw(node) {
139
- const value = readDataLiteralNode(node);
140
- if (typeof value === "string")
141
- return value;
142
- if (isRawRefSentinel(value))
143
- return value;
144
- return undefined;
145
- }
146
- /**
147
- * Like readStringLiteralArgs, but an argument that resolves to a raw-ref
148
- * sentinel is kept as that sentinel instead of failing the whole call. Used
149
- * where a value stands in for a single name/key and inlining its resolved
150
- * string would corrupt the render roundtrip (e.g. `r.requires(someFeature.name)`).
151
- */
152
- export function readStringOrRawArgs(call) {
153
- const out = [];
154
- for (const arg of call.getArguments()) {
155
- const value = readStringOrRaw(arg);
156
- if (value === undefined)
157
- return undefined;
158
- out.push(value);
159
- }
160
- return out;
161
- }
162
- export { isPlainObject } from "../../../utils/is-plain-object.js";
163
- export function readPropertyKey(propAssign) {
164
- const nameNode = propAssign.getNameNode();
165
- const literal = nameNode.asKind(SyntaxKind.StringLiteral);
166
- if (literal)
167
- return literal.getLiteralValue();
168
- return propAssign.getName();
169
- }
170
- function unwrapLiteralInitializer(node) {
171
- const literal = node.asKind(SyntaxKind.StringLiteral) ?? node.asKind(SyntaxKind.NoSubstitutionTemplateLiteral);
172
- if (literal)
173
- return literal.getLiteralValue();
174
- const asExpr = node.asKind(SyntaxKind.AsExpression);
175
- if (asExpr)
176
- return unwrapLiteralInitializer(asExpr.getExpression());
177
- const satisfiesExpr = node.asKind(SyntaxKind.SatisfiesExpression);
178
- if (satisfiesExpr)
179
- return unwrapLiteralInitializer(satisfiesExpr.getExpression());
180
- const paren = node.asKind(SyntaxKind.ParenthesizedExpression);
181
- if (paren)
182
- return unwrapLiteralInitializer(paren.getExpression());
183
- return undefined;
184
- }
185
- // `export declare const NAME: "value"` in a .d.ts has no initializer, only a
186
- // string-literal type.
187
- function readDeclaredStringLiteralType(decl) {
188
- const typeNode = decl.getTypeNode();
189
- if (!typeNode || !Node.isLiteralTypeNode(typeNode))
190
- return undefined;
191
- const literal = typeNode.getLiteral();
192
- return Node.isStringLiteral(literal) ? literal.getLiteralValue() : undefined;
193
- }
194
- /**
195
- * Resolves a bare Identifier to the string value of its declaration's
196
- * initializer (`export const EXT_TENANT_DATA = "tenant-data" as const`),
197
- * following imports syntactically across files and packages against a
198
- * real-filesystem Project without ever building a TypeScript program (see
199
- * resolve-import.ts). Only descends into VariableDeclaration initializers; a
200
- * function/class/type definition or an unresolvable import yields undefined,
201
- * never a throw.
202
- */
203
- function resolveIdentifierToStringLiteral(identifier) {
204
- const id = identifier.asKind(SyntaxKind.Identifier);
205
- if (!id)
206
- return undefined;
207
- const name = id.getText();
208
- const scoped = findScopedVariableDeclaration(id, name);
209
- if (scoped) {
210
- const init = scoped.getInitializer();
211
- return init ? unwrapLiteralInitializer(init) : undefined;
212
- }
213
- const binding = findImportBindingForLocalName(id.getSourceFile(), name);
214
- if (!binding)
215
- return undefined;
216
- const targetFile = resolveModuleFile(id.getSourceFile(), binding.moduleSpecifier, {
217
- allowDeclarationFiles: true,
218
- });
219
- if (!targetFile)
220
- return undefined;
221
- const decl = resolveExportedVariable(targetFile, binding.importedName);
222
- if (!decl)
223
- return undefined;
224
- const init = decl.getInitializer();
225
- if (init)
226
- return unwrapLiteralInitializer(init);
227
- return readDeclaredStringLiteralType(decl);
228
- }
229
- /**
230
- * Like `readNameLiteral`, but for callers that must preserve an
231
- * identifier-authored name across a render → parse round-trip.
232
- * `raw` is populated only when the node resolved via an identifier — a
233
- * string-literal node has nothing worth preserving beyond its value, and
234
- * setting `raw` for it too would make `JSON.stringify(value)` and
235
- * `node.getText()` diverge on quote style.
236
- */
237
- export function readNameLiteralRef(node) {
238
- const literal = node.asKind(SyntaxKind.StringLiteral);
239
- if (literal)
240
- return { value: literal.getLiteralValue() };
241
- const resolved = resolveIdentifierToStringLiteral(node);
242
- if (resolved === undefined)
243
- return undefined;
244
- return { value: resolved, raw: node.getText() };
245
- }
246
- /**
247
- * A node's string value when it's a string literal, or when it's a bare
248
- * Identifier that resolves to one via a `const X = "..."` declaration
249
- * (same-file or imported) — the pattern used throughout the framework's
250
- * own bundled-features for registrar-call names (`EXT_TENANT_DATA`,
251
- * `TENANT_SECRET_READ_EVENT`, ...) instead of repeating string literals.
252
- * undefined for anything unresolvable (factory call, member access,
253
- * external/ambient identifier) — callers keep their existing ParseError
254
- * fallback, no crash. Discards the original identifier text; use
255
- * `readNameLiteralRef` when the caller must preserve it for rendering.
256
- */
257
- export function readNameLiteral(node) {
258
- return readNameLiteralRef(node)?.value;
259
- }
260
- export function readNameOrRef(node) {
261
- const literal = readNameLiteral(node);
262
- if (literal !== undefined)
263
- return literal;
264
- const obj = readDataLiteralNode(node);
265
- if (isPlainObject(obj) && typeof obj["name"] === "string")
266
- return obj["name"];
267
- return undefined;
268
- }
269
- /** Resolve an inline object literal or a same-file `const` that initializes to one. */
270
- export function resolveSameFileObjectLiteral(node) {
271
- const direct = node.asKind(SyntaxKind.ObjectLiteralExpression);
272
- if (direct)
273
- return direct;
274
- const identifier = node.asKind(SyntaxKind.Identifier);
275
- if (!identifier)
276
- return undefined;
277
- const varDecl = findScopedVariableDeclaration(identifier, identifier.getText());
278
- return varDecl?.getInitializer()?.asKind(SyntaxKind.ObjectLiteralExpression);
279
- }
280
- export function readObjectPropertyInitializer(obj, propertyName) {
281
- const prop = obj.getProperty(propertyName);
282
- if (!prop)
283
- return undefined;
284
- const assign = prop.asKind(SyntaxKind.PropertyAssignment);
285
- if (assign)
286
- return assign.getInitializer();
287
- const shorthand = prop.asKind(SyntaxKind.ShorthandPropertyAssignment);
288
- if (shorthand)
289
- return shorthand.getNameNode();
290
- return undefined;
291
- }
292
- export function findFunctionLiteral(node) {
293
- if (node.getKind() === SyntaxKind.ArrowFunction)
294
- return node;
295
- if (node.getKind() === SyntaxKind.FunctionExpression)
296
- return node;
297
- const paren = node.asKind(SyntaxKind.ParenthesizedExpression);
298
- if (paren)
299
- return findFunctionLiteral(paren.getExpression());
300
- return undefined;
301
- }
302
- export function readNameOrRefOrList(node) {
303
- const single = readNameOrRef(node);
304
- if (single)
305
- return single;
306
- const arr = node.asKind(SyntaxKind.ArrayLiteralExpression);
307
- if (!arr)
308
- return undefined;
309
- const out = [];
310
- for (const el of arr.getElements()) {
311
- const name = readNameOrRef(el);
312
- if (!name)
313
- return undefined;
314
- out.push(name);
315
- }
316
- return out;
317
- }
318
- export function readVarargsOrArrayProp(call, arrayPropName) {
319
- const args = call.getArguments();
320
- if (args.length === 1) {
321
- const obj = args[0]?.asKind(SyntaxKind.ObjectLiteralExpression);
322
- if (obj) {
323
- const propInit = obj
324
- .getProperty(arrayPropName)
325
- ?.asKind(SyntaxKind.PropertyAssignment)
326
- ?.getInitializer();
327
- if (propInit) {
328
- const arr = propInit.asKind(SyntaxKind.ArrayLiteralExpression);
329
- if (!arr)
330
- return undefined;
331
- const out = [];
332
- for (const el of arr.getElements()) {
333
- const value = readStringOrRaw(el);
334
- if (value === undefined)
335
- return undefined;
336
- out.push(value);
337
- }
338
- return out;
339
- }
340
- }
341
- }
342
- return readStringOrRawArgs(call);
343
- }
@@ -1,16 +0,0 @@
1
- export type { FormFieldLabel, FormFieldSpec, FormInputType, PatternCategory, PatternFormSchema, } from "../pattern-library/index.ts";
2
- export { getPatternSchema, groupByCategory, PATTERN_LIBRARY } from "../pattern-library/index.ts";
3
- export type { ParseError, ParseResult } from "./parse.ts";
4
- export { parseFeatureFile, parseSourceFile } from "./parse.ts";
5
- export type { HandlerHeaderUpdate, PatternChange, PatternId, QueryHandlerHeaderKey, StreamHandlerHeaderKey, WriteHandlerHeaderKey, } from "./patch.ts";
6
- export { addPattern, applyChanges, removePattern, replacePattern, SINGLETON_KINDS, updatePattern, } from "./patch.ts";
7
- export type { AddAuthClaimsArgs, AddClaimKeyArgs, AddConfigArgs, AddDefineEventArgs, AddEntityArgs, AddHookArgs, AddHttpRouteArgs, AddJobArgs, AddMetricArgs, AddMultiStreamProjectionArgs, AddNavArgs, AddNotificationArgs, AddOptionalRequiresArgs, AddProjectionArgs, AddQueryHandlerArgs, AddReadsConfigArgs, AddReferenceDataArgs, AddRelationArgs, AddRequiresArgs, AddScreenArgs, AddSecretArgs, AddStreamHandlerArgs, AddToggleableArgs, AddTranslationsArgs, AddUseExtensionArgs, AddWorkspaceArgs, AddWriteHandlerArgs, FeaturePatcher, } from "./patcher.ts";
8
- export { createFeaturePatcher } from "./patcher.ts";
9
- export type { PatternChangeIssue, PatternChangesParseResult } from "./pattern-change-schema.ts";
10
- export { parsePatternChanges } from "./pattern-change-schema.ts";
11
- export type { AdoptsBundledListsPattern, AuthClaimsPattern, ClaimKeyPattern, ConfigPattern, DefineEventPattern, Editability, EntityPattern, ExtendsRegistrarPattern, FeaturePattern, FeaturePatternKind, HookPattern, HttpRoutePattern, JobPattern, MetricPattern, MultiStreamProjectionPattern, NavPattern, NotificationPattern, OptionalRequiresPattern, ProjectionPattern, QueryHandlerPattern, ReadsConfigPattern, ReferenceDataPattern, RelationPattern, RequiresPattern, ScreenPattern, SecretNamespacePattern, SecretPattern, StreamHandlerPattern, SystemScopePattern, ToggleablePattern, TranslationsPattern, UnknownPattern, UseExtensionPattern, WorkspacePattern, WriteHandlerPattern, } from "./patterns.ts";
12
- export { getEditability } from "./patterns.ts";
13
- export type { RenderFeatureFileInput } from "./render.ts";
14
- export { FEATURE_FILE_VERSION, renderFeatureFile, renderPattern, renderValue, VERSION_HEADER, } from "./render.ts";
15
- export type { SourceLocation, SourcePosition } from "./source-location.ts";
16
- export { sourceLocationFromNode } from "./source-location.ts";
@@ -1,10 +0,0 @@
1
- // Public API of the feature-ast module. Consumers (Designer, AI patcher,
2
- // CLI) import exclusively from here.
3
- export { getPatternSchema, groupByCategory, PATTERN_LIBRARY } from "../pattern-library/index.js";
4
- export { parseFeatureFile, parseSourceFile } from "./parse.js";
5
- export { addPattern, applyChanges, removePattern, replacePattern, SINGLETON_KINDS, updatePattern, } from "./patch.js";
6
- export { createFeaturePatcher } from "./patcher.js";
7
- export { parsePatternChanges } from "./pattern-change-schema.js";
8
- export { getEditability } from "./patterns.js";
9
- export { FEATURE_FILE_VERSION, renderFeatureFile, renderPattern, renderValue, VERSION_HEADER, } from "./render.js";
10
- export { sourceLocationFromNode } from "./source-location.js";
@@ -1,31 +0,0 @@
1
- import type { SourceFile } from "ts-morph";
2
- import type { FeaturePattern } from "./patterns.ts";
3
- import { type SourceLocation } from "./source-location.ts";
4
- export type ParseError = {
5
- readonly methodName: string;
6
- readonly source: SourceLocation;
7
- readonly reason: string;
8
- };
9
- export type ParseResult = {
10
- readonly featureName: string | undefined;
11
- readonly patterns: readonly FeaturePattern[];
12
- readonly errors: readonly ParseError[];
13
- };
14
- /**
15
- * Parse the given feature file and return all recognised r.* calls
16
- * as a FeaturePattern list.
17
- *
18
- * Does NOT throw on TypeScript errors — the visitor works on the syntax
19
- * tree, not on the type checker. Files with type errors can still be
20
- * parsed structurally (Designer keeps showing them, AI can suggest fixes).
21
- *
22
- * Throws on filesystem / parse errors that ts-morph cannot recover from.
23
- */
24
- export declare function parseFeatureFile(filePath: string): ParseResult;
25
- /**
26
- * Same as parseFeatureFile, but for SourceFiles already loaded by the
27
- * caller. Useful for tests + the Designer (which keeps its own Project
28
- * instance and avoids re-IO per parse).
29
- */
30
- export declare function parseSourceFile(sourceFile: SourceFile): ParseResult;
31
- export declare function relativePosixPath(fromDirectory: string, filePath: string): string;