@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,358 +0,0 @@
1
- import { ENTITY_CONVENTION_QUERY_BRAND } from "@cosmicdrift/kumiko-types/handlers";
2
- import { SyntaxKind } from "ts-morph";
3
- import { sourceLocationFromNode } from "../source-location.js";
4
- import { readHeaderValueOrRaw, readOptionalAccessRule, readOptionalAdditionalRateLimits, readOptionalEscapeHatch, readOptionalRateLimit, } from "./hooks.js";
5
- import { fail, findFunctionLiteral, isPlainObject, isRawRefSentinel, ok, readBooleanProperty, readDataLiteralNode, readNameLiteral, readObjectPropertyInitializer, readPropertyKey, } from "./shared.js";
6
- export const AGENT_RISK_VALUES = ["low", "mid", "high"];
7
- function isAgentRisk(value) {
8
- return typeof value === "string" && AGENT_RISK_VALUES.includes(value);
9
- }
10
- export function readOptionalAgentHints(value) {
11
- if (!isPlainObject(value))
12
- return undefined;
13
- const expose = typeof value["expose"] === "boolean" ? value["expose"] : undefined;
14
- const risk = isAgentRisk(value["risk"]) ? value["risk"] : undefined;
15
- if (expose === undefined && risk === undefined)
16
- return undefined;
17
- return {
18
- ...(expose !== undefined && { expose }),
19
- ...(risk !== undefined && { risk }),
20
- };
21
- }
22
- // Record<keyof Def, ...> instead of a looser map: adding a field to
23
- // WriteHandlerDef/QueryHandlerDef/StreamHandlerDef without classifying it
24
- // here is a compile error, not a silent drop on render.
25
- const WRITE_HANDLER_KEY_KINDS = {
26
- name: "modeled",
27
- schema: "modeled",
28
- handler: "modeled",
29
- access: "modeled",
30
- description: "modeled",
31
- agent: "modeled",
32
- excludedFields: "opaque",
33
- unsafeSkipTransitionGuard: "modeled",
34
- rateLimit: "modeled",
35
- additionalRateLimits: "modeled",
36
- rateLimitCost: "opaque",
37
- escapeHatch: "modeled",
38
- tenantlessAnonymous: "opaque",
39
- reserveBeforeTransaction: "opaque",
40
- beforeTransaction: "opaque",
41
- transaction: "opaque",
42
- perform: "opaque",
43
- };
44
- const QUERY_HANDLER_KEY_KINDS = {
45
- name: "modeled",
46
- schema: "modeled",
47
- handler: "modeled",
48
- [ENTITY_CONVENTION_QUERY_BRAND]: "opaque",
49
- access: "modeled",
50
- description: "modeled",
51
- agent: "modeled",
52
- rateLimit: "modeled",
53
- outputSchema: "opaque",
54
- liveEntities: "opaque",
55
- escapeHatch: "modeled",
56
- };
57
- const STREAM_HANDLER_KEY_KINDS = {
58
- name: "modeled",
59
- schema: "modeled",
60
- handler: "modeled",
61
- access: "modeled",
62
- rateLimit: "modeled",
63
- escapeHatch: "modeled",
64
- };
65
- const HANDLER_KEY_KINDS = {
66
- writeHandler: WRITE_HANDLER_KEY_KINDS,
67
- queryHandler: QUERY_HANDLER_KEY_KINDS,
68
- streamHandler: STREAM_HANDLER_KEY_KINDS,
69
- };
70
- function lookupClassification(map, key) {
71
- return key in map ? map[key] : undefined;
72
- }
73
- function isStaticStringNode(node) {
74
- const kind = node.getKind();
75
- return kind === SyntaxKind.StringLiteral || kind === SyntaxKind.NoSubstitutionTemplateLiteral;
76
- }
77
- function isBooleanLiteralNode(node) {
78
- const kind = node.getKind();
79
- return kind === SyntaxKind.TrueKeyword || kind === SyntaxKind.FalseKeyword;
80
- }
81
- // The literal readers below only understand a static string `description` and
82
- // a true/false `unsafeSkipTransitionGuard`; any other value shape is lossy.
83
- function hasUnreadableLiteralValue(key, initializer) {
84
- if (key === "description")
85
- return !(initializer && isStaticStringNode(initializer));
86
- if (key === "unsafeSkipTransitionGuard")
87
- return !(initializer && isBooleanLiteralNode(initializer));
88
- return false;
89
- }
90
- function readStaticStringProperty(obj, key) {
91
- const initializer = obj.getProperty(key)?.asKind(SyntaxKind.PropertyAssignment)?.getInitializer();
92
- return (initializer?.asKind(SyntaxKind.StringLiteral) ??
93
- initializer?.asKind(SyntaxKind.NoSubstitutionTemplateLiteral))?.getLiteralValue();
94
- }
95
- // True when the call's object body/options carry a shape the extractor
96
- // cannot losslessly model property-by-property (a spread, a method/accessor
97
- // shorthand, a computed key, or a key outside the classification map above).
98
- // Callers fall back to the opaque whole-call pattern instead of dropping
99
- // whatever they can't read.
100
- function hasUnmodeledShape(obj, methodName) {
101
- const keyKinds = HANDLER_KEY_KINDS[methodName];
102
- for (const prop of obj.getProperties()) {
103
- if (prop.getKind() === SyntaxKind.SpreadAssignment)
104
- return true;
105
- const propAssign = prop.asKind(SyntaxKind.PropertyAssignment);
106
- if (propAssign) {
107
- if (propAssign.getNameNode().getKind() === SyntaxKind.ComputedPropertyName)
108
- return true;
109
- const key = readPropertyKey(propAssign);
110
- if (lookupClassification(keyKinds, key) !== "modeled")
111
- return true;
112
- const initializer = propAssign.getInitializer();
113
- if (hasUnreadableLiteralValue(key, initializer))
114
- return true;
115
- continue;
116
- }
117
- const shorthand = prop.asKind(SyntaxKind.ShorthandPropertyAssignment);
118
- if (shorthand) {
119
- const key = shorthand.getName();
120
- if (lookupClassification(keyKinds, key) !== "modeled")
121
- return true;
122
- // A shorthand's value is invisible to the literal readers below.
123
- if (key === "description" || key === "unsafeSkipTransitionGuard")
124
- return true;
125
- continue;
126
- }
127
- return true;
128
- }
129
- return false;
130
- }
131
- /**
132
- * Resolves an argument standing in for a handler-call's object-form body:
133
- * either it's already an object literal, or a bare identifier declared
134
- * locally (same file only) with one as its initializer. Anything else
135
- * (imported binding, factory call, ...) is not resolvable here.
136
- */
137
- function resolveObjectLiteralArg(node) {
138
- const direct = node.asKind(SyntaxKind.ObjectLiteralExpression);
139
- if (direct)
140
- return direct;
141
- const identifier = node.asKind(SyntaxKind.Identifier);
142
- if (!identifier)
143
- return undefined;
144
- const varDecl = node.getSourceFile().getVariableDeclaration(identifier.getText());
145
- return varDecl?.getInitializer()?.asKind(SyntaxKind.ObjectLiteralExpression);
146
- }
147
- // Deliberately does NOT resolve identifiers (unlike resolveObjectLiteralArg):
148
- // an options argument authored as a bare reference has no per-property
149
- // nodes to read, so parseHandlerCall falls back to the opaque whole-call
150
- // pattern instead of trying to read headers off it.
151
- function unwrapObjectLiteral(node) {
152
- const direct = node.asKind(SyntaxKind.ObjectLiteralExpression);
153
- if (direct)
154
- return direct;
155
- const asExpr = node.asKind(SyntaxKind.AsExpression);
156
- if (asExpr)
157
- return unwrapObjectLiteral(asExpr.getExpression());
158
- const satisfiesExpr = node.asKind(SyntaxKind.SatisfiesExpression);
159
- if (satisfiesExpr)
160
- return unwrapObjectLiteral(satisfiesExpr.getExpression());
161
- const paren = node.asKind(SyntaxKind.ParenthesizedExpression);
162
- if (paren)
163
- return unwrapObjectLiteral(paren.getExpression());
164
- return undefined;
165
- }
166
- function readHeaderField(init, recognize, methodName, sourceFile, unrecognizedReason) {
167
- if (!init)
168
- return ok(undefined);
169
- const result = readHeaderValueOrRaw(init, recognize);
170
- if (result.kind === "value")
171
- return ok(result.value);
172
- if (result.kind === "raw")
173
- return ok(result.sentinel);
174
- return fail(methodName, sourceLocationFromNode(init, sourceFile), unrecognizedReason);
175
- }
176
- // Shared by the object-form call body and the positional options object,
177
- // which carry the same header shape.
178
- function readHandlerHeaderFields(obj, methodName, sourceFile) {
179
- const accessResult = readHeaderField(readObjectPropertyInitializer(obj, "access"), readOptionalAccessRule, methodName, sourceFile, "access must be a recognized AccessRule ({ roles: [...] } or { openToAll: { reason } }), or a reference to one");
180
- if (accessResult.kind === "error")
181
- return accessResult;
182
- const rateLimitResult = readHeaderField(readObjectPropertyInitializer(obj, "rateLimit"), readOptionalRateLimit, methodName, sourceFile, "rateLimit must be { per, limit, windowSeconds }, a non-empty list of those, or { disabled: true, reason }, or a reference to one");
183
- if (rateLimitResult.kind === "error")
184
- return rateLimitResult;
185
- const additionalRateLimitsResult = readHeaderField(readObjectPropertyInitializer(obj, "additionalRateLimits"), readOptionalAdditionalRateLimits, methodName, sourceFile, "additionalRateLimits must be an array of { per: { payloadField }, limit, windowSeconds }, or a reference to one");
186
- if (additionalRateLimitsResult.kind === "error")
187
- return additionalRateLimitsResult;
188
- const escapeHatchResult = readHeaderField(readObjectPropertyInitializer(obj, "escapeHatch"), readOptionalEscapeHatch, methodName, sourceFile, "escapeHatch must be { reason: string }, or a reference to one");
189
- if (escapeHatchResult.kind === "error")
190
- return escapeHatchResult;
191
- const agentResult = readHeaderField(readObjectPropertyInitializer(obj, "agent"), readOptionalAgentHints, methodName, sourceFile, 'agent must be { expose?: boolean, risk?: "low" | "mid" | "high" }, or a reference to one');
192
- if (agentResult.kind === "error")
193
- return agentResult;
194
- return ok({
195
- ...(accessResult.pattern !== undefined && { access: accessResult.pattern }),
196
- ...(rateLimitResult.pattern !== undefined && { rateLimit: rateLimitResult.pattern }),
197
- ...(additionalRateLimitsResult.pattern !== undefined && {
198
- additionalRateLimits: additionalRateLimitsResult.pattern,
199
- }),
200
- ...(escapeHatchResult.pattern !== undefined && { escapeHatch: escapeHatchResult.pattern }),
201
- ...(agentResult.pattern !== undefined && { agent: agentResult.pattern }),
202
- });
203
- }
204
- export function parseHandlerCall(call, sourceFile, methodName) {
205
- const args = call.getArguments();
206
- const first = args[0];
207
- if (!first) {
208
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "expected at least one argument");
209
- }
210
- const obj = args.length === 1 ? resolveObjectLiteralArg(first) : undefined;
211
- if (obj) {
212
- if (hasUnmodeledShape(obj, methodName)) {
213
- return ok({ source: sourceLocationFromNode(call, sourceFile) });
214
- }
215
- const nameLiteral = obj
216
- .getProperty("name")
217
- ?.asKind(SyntaxKind.PropertyAssignment)
218
- ?.getInitializer()
219
- ?.asKind(SyntaxKind.StringLiteral);
220
- if (!nameLiteral) {
221
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
222
- }
223
- const schemaInit = obj
224
- .getProperty("schema")
225
- ?.asKind(SyntaxKind.PropertyAssignment)
226
- ?.getInitializer();
227
- if (!schemaInit) {
228
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "object form requires a `schema` property");
229
- }
230
- const handlerInit = obj
231
- .getProperty("handler")
232
- ?.asKind(SyntaxKind.PropertyAssignment)
233
- ?.getInitializer();
234
- if (!handlerInit) {
235
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "object form requires a `handler` property");
236
- }
237
- const fn = findFunctionLiteral(handlerInit);
238
- if (!fn) {
239
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "handler must be an inline arrow function or function expression");
240
- }
241
- const headerResult = readHandlerHeaderFields(obj, methodName, sourceFile);
242
- if (headerResult.kind === "error")
243
- return headerResult;
244
- const description = readStaticStringProperty(obj, "description");
245
- const skip = readBooleanProperty(obj, "unsafeSkipTransitionGuard");
246
- return ok({
247
- source: sourceLocationFromNode(call, sourceFile),
248
- handlerName: nameLiteral.getLiteralValue(),
249
- schemaSource: sourceLocationFromNode(schemaInit, sourceFile),
250
- handlerBody: sourceLocationFromNode(fn, sourceFile),
251
- ...headerResult.pattern,
252
- ...(description !== undefined && { description }),
253
- ...(skip === true && { unsafeSkipTransitionGuard: true }),
254
- });
255
- }
256
- // A single reference standing in for the whole handler argument set
257
- // (`r.writeHandler(eventCreateHandler)`, `r.queryHandler(someQuery())`)
258
- // that resolveObjectLiteralArg above couldn't turn into an object literal
259
- // (imported binding, factory call, ...). Keep it recognised as this kind
260
- // instead of ParseErroring. Opaque: renderWriteHandler/
261
- // renderQueryHandler re-emit `source.raw` verbatim when handlerName is
262
- // undefined.
263
- if (args.length === 1 && isRawRefSentinel(readDataLiteralNode(first))) {
264
- return ok({ source: sourceLocationFromNode(call, sourceFile) });
265
- }
266
- const handlerName = readNameLiteral(first);
267
- if (handlerName === undefined) {
268
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "first argument must be a string literal handler name, or an identifier resolving to one (or use the object form)");
269
- }
270
- const schemaArg = args[1];
271
- if (!schemaArg) {
272
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "expected a Zod schema as second argument");
273
- }
274
- const handlerArg = args[2];
275
- if (!handlerArg) {
276
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "expected a handler function as third argument");
277
- }
278
- const fn = findFunctionLiteral(handlerArg);
279
- if (!fn) {
280
- return fail(methodName, sourceLocationFromNode(call, sourceFile), "third argument must be an inline arrow function or function expression");
281
- }
282
- const optionsArg = args[3];
283
- let headerFields = {};
284
- let description;
285
- let skipTransitionGuard;
286
- if (optionsArg) {
287
- const optionsObj = unwrapObjectLiteral(optionsArg);
288
- if (!optionsObj || hasUnmodeledShape(optionsObj, methodName)) {
289
- return ok({ source: sourceLocationFromNode(call, sourceFile) });
290
- }
291
- const headerResult = readHandlerHeaderFields(optionsObj, methodName, sourceFile);
292
- if (headerResult.kind === "error")
293
- return headerResult;
294
- headerFields = headerResult.pattern;
295
- description = readStaticStringProperty(optionsObj, "description");
296
- skipTransitionGuard = readBooleanProperty(optionsObj, "unsafeSkipTransitionGuard");
297
- }
298
- return ok({
299
- source: sourceLocationFromNode(call, sourceFile),
300
- handlerName,
301
- schemaSource: sourceLocationFromNode(schemaArg, sourceFile),
302
- handlerBody: sourceLocationFromNode(fn, sourceFile),
303
- ...headerFields,
304
- ...(description !== undefined && { description }),
305
- ...(skipTransitionGuard === true && { unsafeSkipTransitionGuard: true }),
306
- });
307
- }
308
- export function extractWriteHandler(call, sourceFile) {
309
- const parsed = parseHandlerCall(call, sourceFile, "writeHandler");
310
- if (parsed.kind === "error")
311
- return parsed;
312
- return ok({
313
- kind: "writeHandler",
314
- source: parsed.pattern.source,
315
- handlerName: parsed.pattern.handlerName,
316
- schemaSource: parsed.pattern.schemaSource,
317
- handlerBody: parsed.pattern.handlerBody,
318
- ...(parsed.pattern.access !== undefined && { access: parsed.pattern.access }),
319
- ...(parsed.pattern.description !== undefined && { description: parsed.pattern.description }),
320
- ...(parsed.pattern.agent !== undefined && { agent: parsed.pattern.agent }),
321
- ...(parsed.pattern.rateLimit !== undefined && { rateLimit: parsed.pattern.rateLimit }),
322
- ...(parsed.pattern.additionalRateLimits !== undefined && {
323
- additionalRateLimits: parsed.pattern.additionalRateLimits,
324
- }),
325
- ...(parsed.pattern.unsafeSkipTransitionGuard === true && { unsafeSkipTransitionGuard: true }),
326
- ...(parsed.pattern.escapeHatch !== undefined && { escapeHatch: parsed.pattern.escapeHatch }),
327
- });
328
- }
329
- function readHandlerFields(parsed) {
330
- return {
331
- source: parsed.pattern.source,
332
- handlerName: parsed.pattern.handlerName,
333
- schemaSource: parsed.pattern.schemaSource,
334
- handlerBody: parsed.pattern.handlerBody,
335
- ...(parsed.pattern.access !== undefined && { access: parsed.pattern.access }),
336
- ...(parsed.pattern.rateLimit !== undefined && { rateLimit: parsed.pattern.rateLimit }),
337
- ...(parsed.pattern.escapeHatch !== undefined && { escapeHatch: parsed.pattern.escapeHatch }),
338
- };
339
- }
340
- export function extractQueryHandler(call, sourceFile) {
341
- const parsed = parseHandlerCall(call, sourceFile, "queryHandler");
342
- if (parsed.kind === "error")
343
- return parsed;
344
- return ok({
345
- kind: "queryHandler",
346
- ...readHandlerFields(parsed),
347
- ...(parsed.pattern.description !== undefined && { description: parsed.pattern.description }),
348
- ...(parsed.pattern.agent !== undefined && { agent: parsed.pattern.agent }),
349
- });
350
- }
351
- // StreamHandlerDef has no description/agent at runtime, unlike escapeHatch,
352
- // so readHandlerFields forwards only access/rateLimit/escapeHatch.
353
- export function extractStreamHandler(call, sourceFile) {
354
- const parsed = parseHandlerCall(call, sourceFile, "streamHandler");
355
- if (parsed.kind === "error")
356
- return parsed;
357
- return ok({ kind: "streamHandler", ...readHandlerFields(parsed) });
358
- }
@@ -1,24 +0,0 @@
1
- import type { CallExpression, Node, SourceFile } from "ts-morph";
2
- import type { LifecycleHookType } from "../../constants.ts";
3
- import type { AccessRule, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../../types/handlers.ts";
4
- import type { HookPhase } from "../../types/hooks.ts";
5
- import type { AuthClaimsPattern, HookPattern } from "../patterns.ts";
6
- import { type ExtractOutput, type RawRefSentinel } from "./shared.ts";
7
- export type HeaderReadResult<T> = {
8
- readonly kind: "value";
9
- readonly value: T;
10
- } | {
11
- readonly kind: "raw";
12
- readonly sentinel: RawRefSentinel;
13
- } | {
14
- readonly kind: "unrecognized";
15
- };
16
- export declare function readHeaderValueOrRaw<T>(init: Node, recognize: (value: unknown) => T | undefined): HeaderReadResult<T>;
17
- export declare function isHookType(value: string): value is LifecycleHookType | "validation";
18
- export declare function readOptionalPhase(node: Node | undefined): HookPhase | undefined;
19
- export declare function readOptionalAccessRule(value: unknown): AccessRule | undefined;
20
- export declare function readOptionalRateLimit(value: unknown): RateLimitDeclaration | undefined;
21
- export declare function readOptionalAdditionalRateLimits(value: unknown): readonly PayloadRateLimitOption[] | undefined;
22
- export declare function readOptionalEscapeHatch(value: unknown): EscapeHatchDeclaration | undefined;
23
- export declare function extractHook(call: CallExpression, sourceFile: SourceFile): ExtractOutput<HookPattern>;
24
- export declare function extractAuthClaims(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AuthClaimsPattern>;
@@ -1,248 +0,0 @@
1
- import { isEscapeHatchGrant, isRateLimitOption } from "@cosmicdrift/kumiko-types/handlers";
2
- import { SyntaxKind } from "ts-morph";
3
- import { sourceLocationFromNode } from "../source-location.js";
4
- import { containsRawRefSentinel, fail, findFunctionLiteral, isPlainObject, ok, readDataLiteralNode, readNameLiteral, readNameOrRef, readNameOrRefOrList, readObjectPropertyInitializer, } from "./shared.js";
5
- // Raw-sentinel check runs before recognize: recognize narrows literals and
6
- // would silently drop a nested reference (e.g. roles array plus a
7
- // non-literal personalData) that the whole-object narrowing can't see.
8
- export function readHeaderValueOrRaw(init, recognize) {
9
- const value = readDataLiteralNode(init);
10
- if (value === undefined || containsRawRefSentinel(value)) {
11
- return { kind: "raw", sentinel: { __raw: init.getText() } };
12
- }
13
- const recognized = recognize(value);
14
- if (recognized === undefined)
15
- return { kind: "unrecognized" };
16
- return { kind: "value", value: recognized };
17
- }
18
- export function isHookType(value) {
19
- return (value === "preSave" ||
20
- value === "postSave" ||
21
- value === "preDelete" ||
22
- value === "postDelete" ||
23
- value === "preQuery" ||
24
- value === "validation");
25
- }
26
- export function readOptionalPhase(node) {
27
- if (!node)
28
- return undefined;
29
- const obj = readDataLiteralNode(node);
30
- if (!isPlainObject(obj))
31
- return undefined;
32
- const phase = obj["phase"];
33
- if (phase === "inTransaction" || phase === "afterCommit")
34
- return phase;
35
- return undefined;
36
- }
37
- // `openToAll: true` (deprecated) is not recognised here — isOpenToAllGranted never grants it, so extracting it would round-trip a rule that looks configured but denies everyone.
38
- export function readOptionalAccessRule(value) {
39
- if (!isPlainObject(value))
40
- return undefined;
41
- if (Array.isArray(value["roles"]) && value["roles"].every((r) => typeof r === "string")) {
42
- const personalData = value["personalData"] === "public-intake" ? { personalData: "public-intake" } : {};
43
- return { roles: value["roles"], ...personalData };
44
- }
45
- const openToAll = value["openToAll"];
46
- if (isPlainObject(openToAll) && typeof openToAll["reason"] === "string") {
47
- const personalData = openToAll["personalData"] === "tenant-members"
48
- ? { personalData: "tenant-members" }
49
- : {};
50
- return { openToAll: { reason: openToAll["reason"], ...personalData } };
51
- }
52
- return undefined;
53
- }
54
- export function readOptionalRateLimit(value) {
55
- if (Array.isArray(value)) {
56
- if (!value.every(isRateLimitOption))
57
- return undefined;
58
- const [first, ...rest] = value;
59
- return first === undefined ? undefined : [first, ...rest];
60
- }
61
- if (!isPlainObject(value))
62
- return undefined;
63
- if (value["disabled"] === true) {
64
- // Strict shape: exactly { disabled: true, reason } — anything extra
65
- // isn't RateLimitDisabled and falls through to "unrecognized".
66
- if (typeof value["reason"] !== "string")
67
- return undefined;
68
- if (Object.keys(value).length !== 2)
69
- return undefined;
70
- return { disabled: true, reason: value["reason"] };
71
- }
72
- return isRateLimitOption(value) ? value : undefined;
73
- }
74
- function isPayloadRateLimitOption(value) {
75
- if (!isPlainObject(value))
76
- return false;
77
- const per = value["per"];
78
- return (isPlainObject(per) &&
79
- typeof per["payloadField"] === "string" &&
80
- typeof value["limit"] === "number" &&
81
- typeof value["windowSeconds"] === "number");
82
- }
83
- export function readOptionalAdditionalRateLimits(value) {
84
- if (!Array.isArray(value) || !value.every(isPayloadRateLimitOption))
85
- return undefined;
86
- return value;
87
- }
88
- export function readOptionalEscapeHatch(value) {
89
- if (!isPlainObject(value))
90
- return undefined;
91
- if (typeof value["reason"] !== "string")
92
- return undefined;
93
- const grants = value["grants"];
94
- if (grants === undefined)
95
- return { reason: value["reason"] };
96
- if (!Array.isArray(grants) || !grants.every(isEscapeHatchGrant))
97
- return undefined;
98
- return { reason: value["reason"], grants };
99
- }
100
- // Reads the `escapeHatch` sub-property node first, not via readDataLiteralNode
101
- // on the whole object: a sibling property like `handler` (a closure) isn't
102
- // representable as plain data, which would make the whole-object read
103
- // return undefined. undefined means the property is absent, not an error.
104
- function readOptionalHookEscapeHatch(node) {
105
- const obj = node?.asKind(SyntaxKind.ObjectLiteralExpression);
106
- if (!obj)
107
- return undefined;
108
- const init = readObjectPropertyInitializer(obj, "escapeHatch");
109
- if (!init)
110
- return undefined;
111
- return readHeaderValueOrRaw(init, readOptionalEscapeHatch);
112
- }
113
- // Resolves the hook's escapeHatch into either a field to spread into the
114
- // pattern, or a ParseError for a fully literal but unrecognized shape.
115
- function readHookEscapeHatch(node, call, sourceFile) {
116
- const result = readOptionalHookEscapeHatch(node);
117
- if (!result)
118
- return {};
119
- if (result.kind === "unrecognized") {
120
- return fail("hook", sourceLocationFromNode(call, sourceFile), "escapeHatch must be { reason: string }, or a reference to one");
121
- }
122
- return { escapeHatch: result.kind === "value" ? result.value : result.sentinel };
123
- }
124
- // r.hook's target: a NameOrRef, a list of them, or an entity-wide
125
- // `{ allOf: entityRef }` (replaces the old r.entityHook(type, entity, fn)).
126
- // Checked first so a malformed `{ allOf }` doesn't silently fall through
127
- // to being read as some other object shape.
128
- function readHookTarget(node) {
129
- const obj = node.asKind(SyntaxKind.ObjectLiteralExpression);
130
- if (obj) {
131
- const allOfProp = obj.getProperty("allOf")?.asKind(SyntaxKind.PropertyAssignment);
132
- if (allOfProp) {
133
- const initializer = allOfProp.getInitializer();
134
- const entityName = initializer && readNameOrRef(initializer);
135
- return entityName ? { allOf: entityName } : undefined;
136
- }
137
- }
138
- return readNameOrRefOrList(node);
139
- }
140
- export function extractHook(call, sourceFile) {
141
- const args = call.getArguments();
142
- const first = args[0];
143
- if (!first) {
144
- return fail("hook", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
145
- }
146
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
147
- if (obj && args.length === 1) {
148
- const typeInit = obj
149
- .getProperty("type")
150
- ?.asKind(SyntaxKind.PropertyAssignment)
151
- ?.getInitializer()
152
- ?.asKind(SyntaxKind.StringLiteral);
153
- if (!typeInit) {
154
- return fail("hook", sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `type` property");
155
- }
156
- const hookType = typeInit.getLiteralValue();
157
- if (!isHookType(hookType)) {
158
- return fail("hook", sourceLocationFromNode(call, sourceFile), `hook type "${hookType}" is not one of the lifecycle types or "validation"`);
159
- }
160
- const targetInit = obj
161
- .getProperty("target")
162
- ?.asKind(SyntaxKind.PropertyAssignment)
163
- ?.getInitializer();
164
- if (!targetInit) {
165
- return fail("hook", sourceLocationFromNode(call, sourceFile), "object form requires a `target` property");
166
- }
167
- const target = readHookTarget(targetInit);
168
- if (!target) {
169
- return fail("hook", sourceLocationFromNode(call, sourceFile), "target must be a string literal, an inline { name } object, or an array");
170
- }
171
- const handlerInit = obj
172
- .getProperty("handler")
173
- ?.asKind(SyntaxKind.PropertyAssignment)
174
- ?.getInitializer();
175
- if (!handlerInit) {
176
- return fail("hook", sourceLocationFromNode(call, sourceFile), "object form requires a `handler` property");
177
- }
178
- const fn = findFunctionLiteral(handlerInit);
179
- if (!fn) {
180
- return fail("hook", sourceLocationFromNode(call, sourceFile), "handler must be an inline arrow function or function expression");
181
- }
182
- const phase = readOptionalPhase(obj);
183
- const escapeHatchOutcome = readHookEscapeHatch(obj, call, sourceFile);
184
- if ("kind" in escapeHatchOutcome)
185
- return escapeHatchOutcome;
186
- return ok({
187
- kind: "hook",
188
- source: sourceLocationFromNode(call, sourceFile),
189
- hookType,
190
- target,
191
- fnBody: sourceLocationFromNode(fn, sourceFile),
192
- ...(phase !== undefined && { phase }),
193
- ...escapeHatchOutcome,
194
- });
195
- }
196
- const hookType = readNameLiteral(first);
197
- if (hookType === undefined) {
198
- return fail("hook", sourceLocationFromNode(call, sourceFile), "first argument must be a string literal hook type, or an identifier resolving to one (or use the object form)");
199
- }
200
- if (!isHookType(hookType)) {
201
- return fail("hook", sourceLocationFromNode(call, sourceFile), `hook type "${hookType}" is not one of the lifecycle types or "validation"`);
202
- }
203
- const targetArg = args[1];
204
- if (!targetArg) {
205
- return fail("hook", sourceLocationFromNode(call, sourceFile), "expected a target (NameOrRef or array) as second argument");
206
- }
207
- const target = readHookTarget(targetArg);
208
- if (!target) {
209
- return fail("hook", sourceLocationFromNode(call, sourceFile), "target must be a string literal, an inline { name } object, or an array");
210
- }
211
- const fnArg = args[2];
212
- if (!fnArg) {
213
- return fail("hook", sourceLocationFromNode(call, sourceFile), "expected a hook function as third argument");
214
- }
215
- const fn = findFunctionLiteral(fnArg);
216
- if (!fn) {
217
- return fail("hook", sourceLocationFromNode(call, sourceFile), "third argument must be an inline arrow function or function expression");
218
- }
219
- const phase = readOptionalPhase(args[3]);
220
- const escapeHatchOutcome = readHookEscapeHatch(args[3], call, sourceFile);
221
- if ("kind" in escapeHatchOutcome)
222
- return escapeHatchOutcome;
223
- return ok({
224
- kind: "hook",
225
- source: sourceLocationFromNode(call, sourceFile),
226
- hookType,
227
- target,
228
- fnBody: sourceLocationFromNode(fn, sourceFile),
229
- ...(phase !== undefined && { phase }),
230
- ...escapeHatchOutcome,
231
- });
232
- }
233
- // guard:dup-ok — intentional parallel to extractTree; different Feature-AST extractors by design
234
- export function extractAuthClaims(call, sourceFile) {
235
- const arg = call.getArguments()[0];
236
- if (!arg) {
237
- return fail("authClaims", sourceLocationFromNode(call, sourceFile), "expected a function as first argument");
238
- }
239
- const fn = findFunctionLiteral(arg);
240
- if (!fn) {
241
- return fail("authClaims", sourceLocationFromNode(call, sourceFile), "first argument must be an inline arrow function or function expression");
242
- }
243
- return ok({
244
- kind: "authClaims",
245
- source: sourceLocationFromNode(call, sourceFile),
246
- fnBody: sourceLocationFromNode(fn, sourceFile),
247
- });
248
- }
@@ -1,14 +0,0 @@
1
- export { extractAiClassify, extractAiExtract, extractAiGenerate, } from "./ai-steps.ts";
2
- export { extractDefineEvent, extractNotification, } from "./events.ts";
3
- export { extractQueryHandler, extractStreamHandler, extractWriteHandler, type ParsedHandlerCall, parseHandlerCall, } from "./handlers.ts";
4
- export { extractAuthClaims, extractHook, isHookType, readOptionalAccessRule, readOptionalAdditionalRateLimits, readOptionalPhase, readOptionalRateLimit, } from "./hooks.ts";
5
- export { extractHttpRoute, extractJob, isHttpRouteMethod, } from "./jobs-routes.ts";
6
- export { collectScreenOpaqueProps, extractMultiStreamProjection, extractProjection, extractScreen, readApplyBodies, readScreenStatic, } from "./projections-screens.ts";
7
- export { findImportBindingForLocalName, resolveModuleFile, } from "./resolve-import.ts";
8
- export { extractAdoptsBundledLists, extractDescribe, extractOptionalRequires, extractReadsConfig, extractRequires, extractSystemScope, extractToggleable, extractUiHints, } from "./round1.ts";
9
- export { extractEntity, extractNav, extractRelation, extractWorkspace, } from "./round2.ts";
10
- export { extractClaimKey, extractConfig, extractMetric, extractReferenceData, extractSecret, extractSecretNamespace, extractTranslations, extractUseExtension, isClaimKeyType, type NamedOptionsResult, readNamedOptions, } from "./round3.ts";
11
- export { extractBootCheck, extractEnvSchema, extractExposesApi, extractExtendsRegistrar, extractStoreTable, extractUsesApi, } from "./round5.ts";
12
- export { extractTreeActions } from "./round6.ts";
13
- export type { ExtractOutput } from "./shared.ts";
14
- export { fail, findFunctionLiteral, isPlainObject, ok, readBooleanProperty, readDataLiteralNode, readNameOrRef, readNameOrRefOrList, readObjectPropertyInitializer, readPropertyKey, readStringLiteralArgs, readVarargsOrArrayProp, resolveSameFileObjectLiteral, } from "./shared.ts";
@@ -1,13 +0,0 @@
1
- export { extractAiClassify, extractAiExtract, extractAiGenerate, } from "./ai-steps.js";
2
- export { extractDefineEvent, extractNotification, } from "./events.js";
3
- export { extractQueryHandler, extractStreamHandler, extractWriteHandler, parseHandlerCall, } from "./handlers.js";
4
- export { extractAuthClaims, extractHook, isHookType, readOptionalAccessRule, readOptionalAdditionalRateLimits, readOptionalPhase, readOptionalRateLimit, } from "./hooks.js";
5
- export { extractHttpRoute, extractJob, isHttpRouteMethod, } from "./jobs-routes.js";
6
- export { collectScreenOpaqueProps, extractMultiStreamProjection, extractProjection, extractScreen, readApplyBodies, readScreenStatic, } from "./projections-screens.js";
7
- export { findImportBindingForLocalName, resolveModuleFile, } from "./resolve-import.js";
8
- export { extractAdoptsBundledLists, extractDescribe, extractOptionalRequires, extractReadsConfig, extractRequires, extractSystemScope, extractToggleable, extractUiHints, } from "./round1.js";
9
- export { extractEntity, extractNav, extractRelation, extractWorkspace, } from "./round2.js";
10
- export { extractClaimKey, extractConfig, extractMetric, extractReferenceData, extractSecret, extractSecretNamespace, extractTranslations, extractUseExtension, isClaimKeyType, readNamedOptions, } from "./round3.js";
11
- export { extractBootCheck, extractEnvSchema, extractExposesApi, extractExtendsRegistrar, extractStoreTable, extractUsesApi, } from "./round5.js";
12
- export { extractTreeActions } from "./round6.js";
13
- export { fail, findFunctionLiteral, isPlainObject, ok, readBooleanProperty, readDataLiteralNode, readNameOrRef, readNameOrRefOrList, readObjectPropertyInitializer, readPropertyKey, readStringLiteralArgs, readVarargsOrArrayProp, resolveSameFileObjectLiteral, } from "./shared.js";
@@ -1,7 +0,0 @@
1
- import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { HttpRouteMethod } from "../../types/http-route.ts";
3
- import type { HttpRoutePattern, JobPattern } from "../patterns.ts";
4
- import { type ExtractOutput } from "./shared.ts";
5
- export declare function isHttpRouteMethod(value: string): value is HttpRouteMethod;
6
- export declare function extractJob(call: CallExpression, sourceFile: SourceFile): ExtractOutput<JobPattern>;
7
- export declare function extractHttpRoute(call: CallExpression, sourceFile: SourceFile): ExtractOutput<HttpRoutePattern>;