@aotter/mantle 0.2.0-alpha.1 → 0.2.0-alpha.11

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 (936) hide show
  1. package/README.md +180 -45
  2. package/dist/auth/adapter.d.ts +32 -0
  3. package/dist/auth/adapter.js +261 -0
  4. package/dist/auth/admin.d.ts +3 -0
  5. package/dist/auth/admin.js +18 -0
  6. package/dist/auth/caller.d.ts +86 -0
  7. package/dist/auth/caller.js +128 -0
  8. package/dist/auth/{createAuthRoutes.js → consent.js} +26 -54
  9. package/dist/auth/hardening.d.ts +24 -0
  10. package/dist/auth/hardening.js +33 -0
  11. package/dist/auth/identity.d.ts +121 -0
  12. package/dist/auth/identity.js +192 -0
  13. package/dist/auth/oauth.d.ts +63 -0
  14. package/dist/auth/oauth.js +185 -0
  15. package/dist/auth/resource-seeds.js +8 -0
  16. package/dist/auth/route-http.js +33 -0
  17. package/dist/auth/routes.d.ts +32 -0
  18. package/dist/auth/routes.js +80 -0
  19. package/dist/build/compiler.d.ts +122 -0
  20. package/dist/build/compiler.js +3 -0
  21. package/dist/{spec → build/spec}/domain/model/ManifestGrammar.d.ts +30 -43
  22. package/dist/{spec → build/spec}/domain/model/RuntimePlan.d.ts +77 -3
  23. package/dist/{spec → build/spec}/domain/model/SqlIr.d.ts +39 -6
  24. package/dist/build/spec/domain/model/UserFields.d.ts +21 -0
  25. package/dist/{spec → build/spec}/domain/service/PlanFingerprint.d.ts +4 -1
  26. package/dist/{spec → build/spec}/kernel/diagnostic.d.ts +1 -30
  27. package/dist/bun/assets.d.ts +2 -0
  28. package/dist/bun/assets.js +22 -0
  29. package/dist/domain/adminOrder.js +22 -0
  30. package/dist/domain/columns.js +42 -0
  31. package/dist/domain/describe/chunk-SGMRVDGE.js +1 -0
  32. package/dist/domain/describe/index.d.ts +58 -0
  33. package/dist/domain/describe/index.js +1 -0
  34. package/dist/domain/describe/target-hash.d.ts +8 -0
  35. package/dist/domain/describe/target-hash.js +1 -0
  36. package/dist/domain/describe/targets.d.ts +40 -0
  37. package/dist/domain/entry.js +19 -0
  38. package/dist/domain/generated-tools.js +18 -0
  39. package/dist/domain/generation.d.ts +16 -0
  40. package/dist/domain/generation.js +1 -0
  41. package/dist/domain/input.js +15 -0
  42. package/dist/domain/model.js +1 -0
  43. package/dist/domain/paging.js +213 -0
  44. package/dist/domain/recipes.js +22 -0
  45. package/dist/domain/userReferences.js +4 -0
  46. package/dist/domain/wireScalars.js +41 -0
  47. package/dist/infrastructure/adminEntries.js +156 -0
  48. package/dist/infrastructure/adminPaging.js +70 -0
  49. package/dist/infrastructure/artifacts.js +67 -0
  50. package/dist/infrastructure/authSchema.js +74 -0
  51. package/dist/infrastructure/bundle.js +159 -0
  52. package/dist/infrastructure/cli.js +111 -0
  53. package/dist/infrastructure/generate.d.ts +12 -0
  54. package/dist/infrastructure/generate.js +175 -0
  55. package/dist/infrastructure/generateAuth.d.ts +8 -0
  56. package/dist/infrastructure/generateAuth.js +66 -0
  57. package/dist/infrastructure/help.js +55 -0
  58. package/dist/infrastructure/init.js +50 -0
  59. package/dist/infrastructure/inputs.js +32 -0
  60. package/dist/infrastructure/mounts.js +22 -0
  61. package/dist/infrastructure/wrangler.js +103 -0
  62. package/dist/kernel/authorization.d.ts +4 -0
  63. package/dist/kernel/authorization.js +15 -0
  64. package/dist/kernel/binds.d.ts +60 -0
  65. package/dist/kernel/binds.js +39 -0
  66. package/dist/kernel/caller-identity.d.ts +21 -0
  67. package/dist/kernel/caller-identity.js +7 -0
  68. package/dist/kernel/caller-mode.d.ts +4 -0
  69. package/dist/kernel/caller-mode.js +14 -0
  70. package/dist/kernel/contract-error.d.ts +12 -0
  71. package/dist/kernel/contract-error.js +14 -0
  72. package/dist/kernel/contracts.d.ts +135 -0
  73. package/dist/kernel/contracts.js +56 -0
  74. package/dist/{spec/domain/service/CloudflareCron.d.ts → kernel/cron.d.ts} +0 -1
  75. package/dist/{spec/domain/service/CloudflareCron.js → kernel/cron.js} +0 -9
  76. package/dist/kernel/dialect/common.d.ts +38 -0
  77. package/dist/kernel/dialect/common.js +3 -0
  78. package/dist/kernel/dialect/postgres.d.ts +16 -0
  79. package/dist/kernel/dialect/postgres.js +16 -0
  80. package/dist/kernel/dialect/sqlite.d.ts +20 -0
  81. package/dist/kernel/dialect/sqlite.js +29 -0
  82. package/dist/kernel/drain.d.ts +5 -0
  83. package/dist/kernel/drain.js +29 -0
  84. package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
  85. package/dist/kernel/driver/bun-sqlite.js +73 -0
  86. package/dist/kernel/driver/d1.d.ts +24 -0
  87. package/dist/kernel/driver/d1.js +21 -0
  88. package/dist/kernel/driver/postgres.d.ts +25 -0
  89. package/dist/kernel/driver/postgres.js +84 -0
  90. package/dist/kernel/driver/transaction-context.d.ts +10 -0
  91. package/dist/kernel/driver/transaction-context.js +28 -0
  92. package/dist/kernel/email.d.ts +28 -0
  93. package/dist/{auth/emailTemplates.js → kernel/email.js} +9 -2
  94. package/dist/kernel/host-access.d.ts +10 -0
  95. package/dist/kernel/host-access.js +64 -0
  96. package/dist/kernel/host-caller.d.ts +39 -0
  97. package/dist/kernel/host-caller.js +53 -0
  98. package/dist/kernel/json-body.d.ts +4 -0
  99. package/dist/kernel/json-body.js +42 -0
  100. package/dist/kernel/mcp-apps.d.ts +69 -0
  101. package/dist/kernel/mcp-apps.js +35 -0
  102. package/dist/kernel/mcp-call.d.ts +5 -0
  103. package/dist/kernel/mcp-call.js +24 -0
  104. package/dist/kernel/mcp-handler.js +347 -0
  105. package/dist/kernel/mcp.d.ts +110 -0
  106. package/dist/kernel/mcp.js +45 -0
  107. package/dist/kernel/media.d.ts +27 -0
  108. package/dist/kernel/media.js +198 -0
  109. package/dist/kernel/paging.d.ts +55 -0
  110. package/dist/kernel/paging.js +87 -0
  111. package/dist/kernel/publishing.d.ts +4 -0
  112. package/dist/kernel/publishing.js +15 -0
  113. package/dist/{cloudflare/r2Media.d.ts → kernel/r2-media.d.ts} +4 -5
  114. package/dist/kernel/r2-media.js +71 -0
  115. package/dist/kernel/rest-dispatch.js +37 -0
  116. package/dist/kernel/rest-router.js +63 -0
  117. package/dist/kernel/rest.d.ts +58 -0
  118. package/dist/kernel/rest.js +38 -0
  119. package/dist/kernel/scalars.d.ts +6 -0
  120. package/dist/kernel/scalars.js +36 -0
  121. package/dist/kernel/search.js +4 -0
  122. package/dist/{core/site.d.ts → kernel/site-types.d.ts} +38 -9
  123. package/dist/kernel/site-types.js +1 -0
  124. package/dist/kernel/site.d.ts +39 -0
  125. package/dist/kernel/site.js +30 -0
  126. package/dist/kernel/store.d.ts +175 -0
  127. package/dist/kernel/store.js +244 -0
  128. package/dist/kernel/surface-failure.d.ts +10 -0
  129. package/dist/kernel/surface-failure.js +29 -0
  130. package/dist/kernel/surface.d.ts +10 -0
  131. package/dist/kernel/surface.js +16 -0
  132. package/dist/kernel/sweep.d.ts +17 -0
  133. package/dist/kernel/sweep.js +26 -0
  134. package/dist/kernel/translations.d.ts +1 -0
  135. package/dist/kernel/translations.js +12 -0
  136. package/dist/kernel/user-caller.d.ts +31 -0
  137. package/dist/kernel/user-caller.js +61 -0
  138. package/dist/kernel/user-field-name.js +3 -0
  139. package/dist/kernel/user-fields.d.ts +35 -0
  140. package/dist/kernel/user-fields.js +71 -0
  141. package/dist/kernel/validation.d.ts +15 -0
  142. package/dist/kernel/validation.js +46 -0
  143. package/dist/kernel/web-gateway.js +66 -0
  144. package/dist/kernel/web-head.js +14 -0
  145. package/dist/kernel/web-index.js +39 -0
  146. package/dist/kernel/web-response.js +7 -0
  147. package/dist/kernel/web-serve.js +97 -0
  148. package/dist/kernel/web.d.ts +77 -0
  149. package/dist/kernel/web.js +43 -0
  150. package/dist/kernel/where.js +21 -0
  151. package/dist/testing/index.d.ts +1 -37
  152. package/dist/testing/index.js +1 -43
  153. package/dist/usecase/adminBindings.js +150 -0
  154. package/dist/usecase/adminClient.js +66 -0
  155. package/dist/usecase/adminDescriptors.js +100 -0
  156. package/dist/usecase/generate.js +160 -0
  157. package/dist/usecase/handlers.js +18 -0
  158. package/dist/usecase/mcp-media.js +16 -0
  159. package/dist/usecase/mcp.js +96 -0
  160. package/dist/usecase/paging.js +69 -0
  161. package/dist/usecase/publishing.js +59 -0
  162. package/dist/usecase/refusals.js +27 -0
  163. package/dist/usecase/rest.js +53 -0
  164. package/dist/usecase/search.js +7 -0
  165. package/dist/usecase/site.js +38 -0
  166. package/dist/usecase/stores.js +52 -0
  167. package/dist/usecase/tool-version.js +6 -0
  168. package/dist/usecase/translations.js +76 -0
  169. package/dist/usecase/ttl.js +20 -0
  170. package/dist/usecase/validation.js +221 -0
  171. package/dist/usecase/web.js +23 -0
  172. package/docs/examples/README.md +39 -16
  173. package/docs/examples/app-shell/README.md +121 -0
  174. package/docs/examples/app-shell/accept.mjs +91 -0
  175. package/docs/examples/app-shell/gitignore +7 -0
  176. package/docs/examples/app-shell/package.json +43 -0
  177. package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
  178. package/docs/examples/app-shell/smoke-kit.mjs +168 -0
  179. package/docs/examples/app-shell/src/auth.ts +58 -0
  180. package/docs/examples/app-shell/src/handlers.ts +5 -0
  181. package/docs/examples/app-shell/src/index.ts +4 -0
  182. package/docs/examples/app-shell/src/routes.ts +16 -0
  183. package/docs/examples/app-shell/src/schedule.ts +8 -0
  184. package/docs/examples/app-shell/src/service.ts +71 -0
  185. package/docs/examples/app-shell/src/sign-in.ts +41 -0
  186. package/docs/examples/app-shell/src/signup.ts +8 -0
  187. package/docs/examples/{reference-service → app-shell}/tsconfig.json +6 -2
  188. package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
  189. package/docs/examples/app-shell/wrangler.jsonc +62 -0
  190. package/docs/examples/club-events/README.md +65 -0
  191. package/docs/examples/club-events/manifests/club-events.yaml +247 -0
  192. package/docs/examples/club-events/smoke.mjs +127 -0
  193. package/docs/examples/club-events/src/handlers.ts +25 -0
  194. package/docs/examples/club-events/src/signup.ts +9 -0
  195. package/docs/examples/generated-web/README.md +78 -0
  196. package/docs/examples/generated-web/posts.yaml +38 -0
  197. package/docs/examples/generated-web/seed.sql +6 -0
  198. package/docs/examples/generated-web/src/worker.ts +43 -0
  199. package/docs/examples/generated-web/tsconfig.json +8 -0
  200. package/docs/examples/generated-web/wrangler.jsonc +8 -0
  201. package/docs/examples/purchasing/.dev.vars.example +6 -0
  202. package/docs/examples/purchasing/README.md +99 -0
  203. package/docs/examples/purchasing/manifests/purchasing.yaml +374 -0
  204. package/docs/examples/purchasing/seed.sql +4 -0
  205. package/docs/examples/purchasing/smoke.mjs +191 -0
  206. package/docs/examples/purchasing/src/admin.tsx +13 -0
  207. package/docs/examples/purchasing/src/handlers.ts +33 -0
  208. package/docs/examples/purchasing/src/notify.ts +29 -0
  209. package/docs/examples/purchasing/src/requests-page.ts +57 -0
  210. package/docs/examples/purchasing/src/routes.ts +53 -0
  211. package/docs/examples/purchasing/src/schedule.ts +31 -0
  212. package/docs/examples/purchasing/src/signup.ts +5 -0
  213. package/docs/examples/purchasing/src/supplier.ts +32 -0
  214. package/docs/examples/purchasing/wrangler.jsonc +69 -0
  215. package/docs/examples/recipes/README.md +60 -0
  216. package/docs/examples/recipes/manifests/recipes.yaml +75 -0
  217. package/docs/examples/recipes/smoke.mjs +102 -0
  218. package/docs/examples/recipes/src/media.ts +13 -0
  219. package/docs/examples/recipes/src/pages.ts +99 -0
  220. package/docs/examples/recipes/src/routes.ts +71 -0
  221. package/docs/examples/recipes/src/site-config.ts +12 -0
  222. package/docs/examples/recipes/wrangler.jsonc +74 -0
  223. package/docs/handbook/cloudflare/authentication.md +186 -108
  224. package/docs/handbook/cloudflare/chatgpt-sites.md +5 -112
  225. package/docs/handbook/cloudflare/deploy-and-operate.md +59 -87
  226. package/docs/handbook/cloudflare/media-r2.md +61 -82
  227. package/docs/handbook/cloudflare/service-entry.md +223 -119
  228. package/docs/handbook/concepts/authorization.md +10 -117
  229. package/docs/handbook/concepts/four-atoms.md +9 -92
  230. package/docs/handbook/concepts/lifecycle-and-locales.md +9 -80
  231. package/docs/handbook/concepts/mcp-and-agents.md +24 -116
  232. package/docs/handbook/concepts/procedures-and-triggers.md +5 -162
  233. package/docs/handbook/concepts/runtime-and-adapters.md +15 -183
  234. package/docs/handbook/concepts/views.md +10 -109
  235. package/docs/handbook/examples/hub.md +2 -18
  236. package/docs/handbook/guides/adapter-guide.md +11 -0
  237. package/docs/handbook/guides/admin-ui.md +113 -136
  238. package/docs/handbook/guides/agent-setup.md +32 -27
  239. package/docs/handbook/guides/agent-workflow-acceptance.md +232 -0
  240. package/docs/handbook/guides/email.md +86 -0
  241. package/docs/handbook/guides/local-testing.md +40 -0
  242. package/docs/handbook/guides/mcp-apps.md +560 -0
  243. package/docs/handbook/guides/native-admin.md +566 -0
  244. package/docs/handbook/guides/native-execution.md +133 -0
  245. package/docs/handbook/guides/oauth.md +219 -0
  246. package/docs/handbook/guides/postgres-adapters.md +56 -0
  247. package/docs/handbook/guides/public-pages.md +93 -0
  248. package/docs/handbook/guides/size-and-startup.md +9 -0
  249. package/docs/handbook/guides/sql-patterns.md +266 -0
  250. package/docs/handbook/guides/typed-queries.md +210 -100
  251. package/docs/handbook/navigation.json +176 -30
  252. package/docs/handbook/reference/admin-descriptors.md +56 -0
  253. package/docs/handbook/reference/authorization.md +44 -52
  254. package/docs/handbook/reference/describe.md +56 -0
  255. package/docs/handbook/reference/diagnostics.md +19 -77
  256. package/docs/handbook/reference/features.md +45 -53
  257. package/docs/handbook/reference/manifest.md +6 -69
  258. package/docs/handbook/reference/procedure.md +11 -115
  259. package/docs/handbook/reference/schema.md +81 -172
  260. package/docs/handbook/reference/site-config.md +5 -65
  261. package/docs/handbook/reference/sql.md +64 -0
  262. package/docs/handbook/reference/surface.md +396 -93
  263. package/docs/handbook/reference/trigger.md +62 -89
  264. package/docs/handbook/reference/view.md +40 -158
  265. package/docs/handbook/releases/index.md +198 -12
  266. package/docs/handbook/start/agents.md +45 -0
  267. package/docs/handbook/start/overview.md +9 -56
  268. package/docs/handbook/start/project-and-cli.md +51 -131
  269. package/docs/handbook/start/quickstart-worker.md +38 -115
  270. package/docs/skills/develop/SKILL.md +77 -121
  271. package/docs/skills/integrate/SKILL.md +37 -84
  272. package/docs/skills/media-gc/SKILL.md +21 -8
  273. package/docs/skills/provision/SKILL.md +31 -87
  274. package/docs/skills/update/SKILL.md +20 -34
  275. package/docs/source/scripts/postgres-adapter.ts +101 -0
  276. package/docs/upgrade-0.1-to-0.2.md +26 -10
  277. package/package.json +120 -112
  278. package/skills/README.md +67 -0
  279. package/skills/mantle/SKILL.md +76 -0
  280. package/dist/admin/consent.d.ts +0 -17
  281. package/dist/admin/consent.d.ts.map +0 -1
  282. package/dist/admin/consent.js +0 -17
  283. package/dist/admin/consent.js.map +0 -1
  284. package/dist/admin/createAdminSurface.d.ts +0 -22
  285. package/dist/admin/createAdminSurface.d.ts.map +0 -1
  286. package/dist/admin/createAdminSurface.js +0 -589
  287. package/dist/admin/createAdminSurface.js.map +0 -1
  288. package/dist/admin/developerConsole.d.ts +0 -264
  289. package/dist/admin/developerConsole.d.ts.map +0 -1
  290. package/dist/admin/developerConsole.js +0 -136
  291. package/dist/admin/developerConsole.js.map +0 -1
  292. package/dist/admin/identity.d.ts +0 -62
  293. package/dist/admin/identity.d.ts.map +0 -1
  294. package/dist/admin/identity.js +0 -7
  295. package/dist/admin/identity.js.map +0 -1
  296. package/dist/admin/index.d.ts +0 -4
  297. package/dist/admin/index.d.ts.map +0 -1
  298. package/dist/admin/index.js +0 -4
  299. package/dist/admin/index.js.map +0 -1
  300. package/dist/admin/procedureFlow.d.ts +0 -25
  301. package/dist/admin/procedureFlow.d.ts.map +0 -1
  302. package/dist/admin/procedureFlow.js +0 -154
  303. package/dist/admin/procedureFlow.js.map +0 -1
  304. package/dist/auth/ConsoleEmailSender.d.ts +0 -15
  305. package/dist/auth/ConsoleEmailSender.d.ts.map +0 -1
  306. package/dist/auth/ConsoleEmailSender.js +0 -19
  307. package/dist/auth/ConsoleEmailSender.js.map +0 -1
  308. package/dist/auth/appleClientSecret.d.ts +0 -75
  309. package/dist/auth/appleClientSecret.d.ts.map +0 -1
  310. package/dist/auth/appleClientSecret.js +0 -116
  311. package/dist/auth/appleClientSecret.js.map +0 -1
  312. package/dist/auth/buildAuth.d.ts +0 -4565
  313. package/dist/auth/buildAuth.d.ts.map +0 -1
  314. package/dist/auth/buildAuth.js +0 -307
  315. package/dist/auth/buildAuth.js.map +0 -1
  316. package/dist/auth/callerResolver.d.ts +0 -48
  317. package/dist/auth/callerResolver.d.ts.map +0 -1
  318. package/dist/auth/callerResolver.js +0 -49
  319. package/dist/auth/callerResolver.js.map +0 -1
  320. package/dist/auth/createAuthRoutes.d.ts +0 -22
  321. package/dist/auth/createAuthRoutes.d.ts.map +0 -1
  322. package/dist/auth/createAuthRoutes.js.map +0 -1
  323. package/dist/auth/createMantleAuth.d.ts +0 -3
  324. package/dist/auth/createMantleAuth.d.ts.map +0 -1
  325. package/dist/auth/createMantleAuth.js +0 -483
  326. package/dist/auth/createMantleAuth.js.map +0 -1
  327. package/dist/auth/db.d.ts +0 -17
  328. package/dist/auth/db.d.ts.map +0 -1
  329. package/dist/auth/db.js +0 -24
  330. package/dist/auth/db.js.map +0 -1
  331. package/dist/auth/emailTemplates.d.ts +0 -7
  332. package/dist/auth/emailTemplates.d.ts.map +0 -1
  333. package/dist/auth/emailTemplates.js.map +0 -1
  334. package/dist/auth/index.d.ts +0 -9
  335. package/dist/auth/index.d.ts.map +0 -1
  336. package/dist/auth/index.js +0 -7
  337. package/dist/auth/index.js.map +0 -1
  338. package/dist/auth/methods.d.ts +0 -717
  339. package/dist/auth/methods.d.ts.map +0 -1
  340. package/dist/auth/methods.js +0 -321
  341. package/dist/auth/methods.js.map +0 -1
  342. package/dist/auth/oauthTokens.d.ts +0 -24
  343. package/dist/auth/oauthTokens.d.ts.map +0 -1
  344. package/dist/auth/oauthTokens.js +0 -146
  345. package/dist/auth/oauthTokens.js.map +0 -1
  346. package/dist/auth/setupIncomplete.d.ts +0 -16
  347. package/dist/auth/setupIncomplete.d.ts.map +0 -1
  348. package/dist/auth/setupIncomplete.js +0 -50
  349. package/dist/auth/setupIncomplete.js.map +0 -1
  350. package/dist/auth/types.d.ts +0 -440
  351. package/dist/auth/types.d.ts.map +0 -1
  352. package/dist/auth/types.js +0 -10
  353. package/dist/auth/types.js.map +0 -1
  354. package/dist/bun/index.d.ts +0 -65
  355. package/dist/bun/index.d.ts.map +0 -1
  356. package/dist/bun/index.js +0 -130
  357. package/dist/bun/index.js.map +0 -1
  358. package/dist/cli/emitModule.d.ts +0 -7
  359. package/dist/cli/emitModule.d.ts.map +0 -1
  360. package/dist/cli/emitModule.js +0 -127
  361. package/dist/cli/emitModule.js.map +0 -1
  362. package/dist/cli/generate.d.ts +0 -8
  363. package/dist/cli/generate.d.ts.map +0 -1
  364. package/dist/cli/generate.js +0 -355
  365. package/dist/cli/generate.js.map +0 -1
  366. package/dist/cli/main.d.ts +0 -3
  367. package/dist/cli/main.d.ts.map +0 -1
  368. package/dist/cli/main.js +0 -21
  369. package/dist/cli/main.js.map +0 -1
  370. package/dist/cli/preset.d.ts +0 -18
  371. package/dist/cli/preset.d.ts.map +0 -1
  372. package/dist/cli/preset.js +0 -352
  373. package/dist/cli/preset.js.map +0 -1
  374. package/dist/cloudflare/index.d.ts +0 -21
  375. package/dist/cloudflare/index.d.ts.map +0 -1
  376. package/dist/cloudflare/index.js +0 -14
  377. package/dist/cloudflare/index.js.map +0 -1
  378. package/dist/cloudflare/r2Media.d.ts.map +0 -1
  379. package/dist/cloudflare/r2Media.js +0 -69
  380. package/dist/cloudflare/r2Media.js.map +0 -1
  381. package/dist/core/caller.d.ts +0 -35
  382. package/dist/core/caller.d.ts.map +0 -1
  383. package/dist/core/caller.js +0 -3
  384. package/dist/core/caller.js.map +0 -1
  385. package/dist/core/createMantle.d.ts +0 -22
  386. package/dist/core/createMantle.d.ts.map +0 -1
  387. package/dist/core/createMantle.js +0 -117
  388. package/dist/core/createMantle.js.map +0 -1
  389. package/dist/core/dialect.d.ts +0 -41
  390. package/dist/core/dialect.d.ts.map +0 -1
  391. package/dist/core/dialect.js +0 -7
  392. package/dist/core/dialect.js.map +0 -1
  393. package/dist/core/driver.d.ts +0 -17
  394. package/dist/core/driver.d.ts.map +0 -1
  395. package/dist/core/driver.js +0 -2
  396. package/dist/core/driver.js.map +0 -1
  397. package/dist/core/email.d.ts +0 -17
  398. package/dist/core/email.d.ts.map +0 -1
  399. package/dist/core/email.js +0 -2
  400. package/dist/core/email.js.map +0 -1
  401. package/dist/core/index.d.ts +0 -16
  402. package/dist/core/index.d.ts.map +0 -1
  403. package/dist/core/index.js +0 -16
  404. package/dist/core/index.js.map +0 -1
  405. package/dist/core/invocation.d.ts +0 -66
  406. package/dist/core/invocation.d.ts.map +0 -1
  407. package/dist/core/invocation.js +0 -3
  408. package/dist/core/invocation.js.map +0 -1
  409. package/dist/core/runtime/auth.d.ts +0 -9
  410. package/dist/core/runtime/auth.d.ts.map +0 -1
  411. package/dist/core/runtime/auth.js +0 -39
  412. package/dist/core/runtime/auth.js.map +0 -1
  413. package/dist/core/runtime/createRuntime.d.ts +0 -23
  414. package/dist/core/runtime/createRuntime.d.ts.map +0 -1
  415. package/dist/core/runtime/createRuntime.js +0 -214
  416. package/dist/core/runtime/createRuntime.js.map +0 -1
  417. package/dist/core/runtime/verifyPlan.d.ts +0 -34
  418. package/dist/core/runtime/verifyPlan.d.ts.map +0 -1
  419. package/dist/core/runtime/verifyPlan.js +0 -301
  420. package/dist/core/runtime/verifyPlan.js.map +0 -1
  421. package/dist/core/service.d.ts +0 -45
  422. package/dist/core/service.d.ts.map +0 -1
  423. package/dist/core/service.js +0 -2
  424. package/dist/core/service.js.map +0 -1
  425. package/dist/core/site.d.ts.map +0 -1
  426. package/dist/core/site.js +0 -2
  427. package/dist/core/site.js.map +0 -1
  428. package/dist/core/siteConfig.d.ts +0 -5
  429. package/dist/core/siteConfig.d.ts.map +0 -1
  430. package/dist/core/siteConfig.js +0 -24
  431. package/dist/core/siteConfig.js.map +0 -1
  432. package/dist/core/sql/allowlist.d.ts +0 -65
  433. package/dist/core/sql/allowlist.d.ts.map +0 -1
  434. package/dist/core/sql/allowlist.js +0 -705
  435. package/dist/core/sql/allowlist.js.map +0 -1
  436. package/dist/core/sql/ast.d.ts +0 -24
  437. package/dist/core/sql/ast.d.ts.map +0 -1
  438. package/dist/core/sql/ast.js +0 -32
  439. package/dist/core/sql/ast.js.map +0 -1
  440. package/dist/core/sql/compile.d.ts +0 -50
  441. package/dist/core/sql/compile.d.ts.map +0 -1
  442. package/dist/core/sql/compile.js +0 -48
  443. package/dist/core/sql/compile.js.map +0 -1
  444. package/dist/core/sql/policy.d.ts +0 -121
  445. package/dist/core/sql/policy.d.ts.map +0 -1
  446. package/dist/core/sql/policy.js +0 -379
  447. package/dist/core/sql/policy.js.map +0 -1
  448. package/dist/core/sql/positions.d.ts +0 -30
  449. package/dist/core/sql/positions.d.ts.map +0 -1
  450. package/dist/core/sql/positions.js +0 -22
  451. package/dist/core/sql/positions.js.map +0 -1
  452. package/dist/core/sql/run.d.ts +0 -76
  453. package/dist/core/sql/run.d.ts.map +0 -1
  454. package/dist/core/sql/run.js +0 -267
  455. package/dist/core/sql/run.js.map +0 -1
  456. package/dist/core/store/createStore.d.ts +0 -49
  457. package/dist/core/store/createStore.d.ts.map +0 -1
  458. package/dist/core/store/createStore.js +0 -227
  459. package/dist/core/store/createStore.js.map +0 -1
  460. package/dist/core/store/cursor.d.ts +0 -4
  461. package/dist/core/store/cursor.d.ts.map +0 -1
  462. package/dist/core/store/cursor.js +0 -22
  463. package/dist/core/store/cursor.js.map +0 -1
  464. package/dist/core/store/json.d.ts +0 -80
  465. package/dist/core/store/json.d.ts.map +0 -1
  466. package/dist/core/store/json.js +0 -342
  467. package/dist/core/store/json.js.map +0 -1
  468. package/dist/core/store.d.ts +0 -160
  469. package/dist/core/store.d.ts.map +0 -1
  470. package/dist/core/store.js +0 -2
  471. package/dist/core/store.js.map +0 -1
  472. package/dist/core/wire.d.ts +0 -20
  473. package/dist/core/wire.d.ts.map +0 -1
  474. package/dist/core/wire.js +0 -84
  475. package/dist/core/wire.js.map +0 -1
  476. package/dist/core/withCaller.d.ts +0 -16
  477. package/dist/core/withCaller.d.ts.map +0 -1
  478. package/dist/core/withCaller.js +0 -29
  479. package/dist/core/withCaller.js.map +0 -1
  480. package/dist/d1/adapter.d.ts +0 -12
  481. package/dist/d1/adapter.d.ts.map +0 -1
  482. package/dist/d1/adapter.js +0 -23
  483. package/dist/d1/adapter.js.map +0 -1
  484. package/dist/d1/codec.d.ts +0 -14
  485. package/dist/d1/codec.d.ts.map +0 -1
  486. package/dist/d1/codec.js +0 -136
  487. package/dist/d1/codec.js.map +0 -1
  488. package/dist/d1/compile/index.d.ts +0 -9
  489. package/dist/d1/compile/index.d.ts.map +0 -1
  490. package/dist/d1/compile/index.js +0 -9
  491. package/dist/d1/compile/index.js.map +0 -1
  492. package/dist/d1/dialect.d.ts +0 -4
  493. package/dist/d1/dialect.d.ts.map +0 -1
  494. package/dist/d1/dialect.js +0 -13
  495. package/dist/d1/dialect.js.map +0 -1
  496. package/dist/d1/executor.d.ts +0 -13
  497. package/dist/d1/executor.d.ts.map +0 -1
  498. package/dist/d1/executor.js +0 -91
  499. package/dist/d1/executor.js.map +0 -1
  500. package/dist/d1/index.d.ts +0 -6
  501. package/dist/d1/index.d.ts.map +0 -1
  502. package/dist/d1/index.js +0 -6
  503. package/dist/d1/index.js.map +0 -1
  504. package/dist/d1/lower.d.ts +0 -8
  505. package/dist/d1/lower.d.ts.map +0 -1
  506. package/dist/d1/lower.js +0 -167
  507. package/dist/d1/lower.js.map +0 -1
  508. package/dist/d1/media.d.ts +0 -5
  509. package/dist/d1/media.d.ts.map +0 -1
  510. package/dist/d1/media.js +0 -157
  511. package/dist/d1/media.js.map +0 -1
  512. package/dist/d1/migrations.d.ts +0 -12
  513. package/dist/d1/migrations.d.ts.map +0 -1
  514. package/dist/d1/migrations.js +0 -111
  515. package/dist/d1/migrations.js.map +0 -1
  516. package/dist/d1/print.d.ts +0 -28
  517. package/dist/d1/print.d.ts.map +0 -1
  518. package/dist/d1/print.js +0 -54
  519. package/dist/d1/print.js.map +0 -1
  520. package/dist/d1/site.d.ts +0 -17
  521. package/dist/d1/site.d.ts.map +0 -1
  522. package/dist/d1/site.js +0 -63
  523. package/dist/d1/site.js.map +0 -1
  524. package/dist/d1/storage.d.ts +0 -34
  525. package/dist/d1/storage.d.ts.map +0 -1
  526. package/dist/d1/storage.js +0 -288
  527. package/dist/d1/storage.js.map +0 -1
  528. package/dist/d1/tz.d.ts +0 -21
  529. package/dist/d1/tz.d.ts.map +0 -1
  530. package/dist/d1/tz.js +0 -54
  531. package/dist/d1/tz.js.map +0 -1
  532. package/dist/d1/validator.d.ts +0 -10
  533. package/dist/d1/validator.d.ts.map +0 -1
  534. package/dist/d1/validator.js +0 -33
  535. package/dist/d1/validator.js.map +0 -1
  536. package/dist/mcp/apps.d.ts +0 -43
  537. package/dist/mcp/apps.d.ts.map +0 -1
  538. package/dist/mcp/apps.js +0 -57
  539. package/dist/mcp/apps.js.map +0 -1
  540. package/dist/mcp/catalog.d.ts +0 -55
  541. package/dist/mcp/catalog.d.ts.map +0 -1
  542. package/dist/mcp/catalog.js +0 -81
  543. package/dist/mcp/catalog.js.map +0 -1
  544. package/dist/mcp/createMcpSurface.d.ts +0 -34
  545. package/dist/mcp/createMcpSurface.d.ts.map +0 -1
  546. package/dist/mcp/createMcpSurface.js +0 -150
  547. package/dist/mcp/createMcpSurface.js.map +0 -1
  548. package/dist/mcp/index.d.ts +0 -4
  549. package/dist/mcp/index.d.ts.map +0 -1
  550. package/dist/mcp/index.js +0 -4
  551. package/dist/mcp/index.js.map +0 -1
  552. package/dist/postgres/adapter.d.ts +0 -20
  553. package/dist/postgres/adapter.d.ts.map +0 -1
  554. package/dist/postgres/adapter.js +0 -44
  555. package/dist/postgres/adapter.js.map +0 -1
  556. package/dist/postgres/codec.d.ts +0 -13
  557. package/dist/postgres/codec.d.ts.map +0 -1
  558. package/dist/postgres/codec.js +0 -110
  559. package/dist/postgres/codec.js.map +0 -1
  560. package/dist/postgres/compile/index.d.ts +0 -9
  561. package/dist/postgres/compile/index.d.ts.map +0 -1
  562. package/dist/postgres/compile/index.js +0 -9
  563. package/dist/postgres/compile/index.js.map +0 -1
  564. package/dist/postgres/driver.d.ts +0 -92
  565. package/dist/postgres/driver.d.ts.map +0 -1
  566. package/dist/postgres/driver.js +0 -110
  567. package/dist/postgres/driver.js.map +0 -1
  568. package/dist/postgres/executor.d.ts +0 -20
  569. package/dist/postgres/executor.d.ts.map +0 -1
  570. package/dist/postgres/executor.js +0 -69
  571. package/dist/postgres/executor.js.map +0 -1
  572. package/dist/postgres/index.d.ts +0 -7
  573. package/dist/postgres/index.d.ts.map +0 -1
  574. package/dist/postgres/index.js +0 -7
  575. package/dist/postgres/index.js.map +0 -1
  576. package/dist/postgres/lower.d.ts +0 -6
  577. package/dist/postgres/lower.d.ts.map +0 -1
  578. package/dist/postgres/lower.js +0 -157
  579. package/dist/postgres/lower.js.map +0 -1
  580. package/dist/postgres/print.d.ts +0 -11
  581. package/dist/postgres/print.d.ts.map +0 -1
  582. package/dist/postgres/print.js +0 -121
  583. package/dist/postgres/print.js.map +0 -1
  584. package/dist/postgres/storage.d.ts +0 -19
  585. package/dist/postgres/storage.d.ts.map +0 -1
  586. package/dist/postgres/storage.js +0 -201
  587. package/dist/postgres/storage.js.map +0 -1
  588. package/dist/postgres/textRows.d.ts +0 -10
  589. package/dist/postgres/textRows.d.ts.map +0 -1
  590. package/dist/postgres/textRows.js +0 -44
  591. package/dist/postgres/textRows.js.map +0 -1
  592. package/dist/postgres/validator.d.ts +0 -12
  593. package/dist/postgres/validator.d.ts.map +0 -1
  594. package/dist/postgres/validator.js +0 -46
  595. package/dist/postgres/validator.js.map +0 -1
  596. package/dist/spec/domain/index.d.ts +0 -3
  597. package/dist/spec/domain/index.d.ts.map +0 -1
  598. package/dist/spec/domain/index.js +0 -3
  599. package/dist/spec/domain/index.js.map +0 -1
  600. package/dist/spec/domain/model/ContentState.d.ts +0 -8
  601. package/dist/spec/domain/model/ContentState.d.ts.map +0 -1
  602. package/dist/spec/domain/model/ContentState.js +0 -7
  603. package/dist/spec/domain/model/ContentState.js.map +0 -1
  604. package/dist/spec/domain/model/Entry.d.ts +0 -29
  605. package/dist/spec/domain/model/Entry.d.ts.map +0 -1
  606. package/dist/spec/domain/model/Entry.js +0 -16
  607. package/dist/spec/domain/model/Entry.js.map +0 -1
  608. package/dist/spec/domain/model/Locale.d.ts +0 -30
  609. package/dist/spec/domain/model/Locale.d.ts.map +0 -1
  610. package/dist/spec/domain/model/Locale.js +0 -33
  611. package/dist/spec/domain/model/Locale.js.map +0 -1
  612. package/dist/spec/domain/model/ManifestGrammar.d.ts.map +0 -1
  613. package/dist/spec/domain/model/ManifestGrammar.js +0 -149
  614. package/dist/spec/domain/model/ManifestGrammar.js.map +0 -1
  615. package/dist/spec/domain/model/MediaMimeAccept.d.ts +0 -55
  616. package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +0 -1
  617. package/dist/spec/domain/model/MediaMimeAccept.js +0 -90
  618. package/dist/spec/domain/model/MediaMimeAccept.js.map +0 -1
  619. package/dist/spec/domain/model/RuntimePlan.d.ts.map +0 -1
  620. package/dist/spec/domain/model/RuntimePlan.js +0 -4
  621. package/dist/spec/domain/model/RuntimePlan.js.map +0 -1
  622. package/dist/spec/domain/model/SiteConfig.d.ts +0 -173
  623. package/dist/spec/domain/model/SiteConfig.d.ts.map +0 -1
  624. package/dist/spec/domain/model/SiteConfig.js +0 -13
  625. package/dist/spec/domain/model/SiteConfig.js.map +0 -1
  626. package/dist/spec/domain/model/SqlIr.d.ts.map +0 -1
  627. package/dist/spec/domain/model/SqlIr.js +0 -95
  628. package/dist/spec/domain/model/SqlIr.js.map +0 -1
  629. package/dist/spec/domain/model/index.d.ts +0 -14
  630. package/dist/spec/domain/model/index.d.ts.map +0 -1
  631. package/dist/spec/domain/model/index.js +0 -14
  632. package/dist/spec/domain/model/index.js.map +0 -1
  633. package/dist/spec/domain/service/CloudflareCron.d.ts.map +0 -1
  634. package/dist/spec/domain/service/CloudflareCron.js.map +0 -1
  635. package/dist/spec/domain/service/CrossSchemaChecker.d.ts +0 -34
  636. package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +0 -1
  637. package/dist/spec/domain/service/CrossSchemaChecker.js +0 -114
  638. package/dist/spec/domain/service/CrossSchemaChecker.js.map +0 -1
  639. package/dist/spec/domain/service/EntryDataValidator.d.ts +0 -56
  640. package/dist/spec/domain/service/EntryDataValidator.d.ts.map +0 -1
  641. package/dist/spec/domain/service/EntryDataValidator.js +0 -88
  642. package/dist/spec/domain/service/EntryDataValidator.js.map +0 -1
  643. package/dist/spec/domain/service/JsonSchemaToZod.d.ts +0 -29
  644. package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +0 -1
  645. package/dist/spec/domain/service/JsonSchemaToZod.js +0 -156
  646. package/dist/spec/domain/service/JsonSchemaToZod.js.map +0 -1
  647. package/dist/spec/domain/service/LifecycleStateMachine.d.ts +0 -75
  648. package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +0 -1
  649. package/dist/spec/domain/service/LifecycleStateMachine.js +0 -76
  650. package/dist/spec/domain/service/LifecycleStateMachine.js.map +0 -1
  651. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +0 -29
  652. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +0 -1
  653. package/dist/spec/domain/service/LocaleCanonicalizer.js +0 -96
  654. package/dist/spec/domain/service/LocaleCanonicalizer.js.map +0 -1
  655. package/dist/spec/domain/service/ManifestFieldChecks.d.ts +0 -60
  656. package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +0 -1
  657. package/dist/spec/domain/service/ManifestFieldChecks.js +0 -116
  658. package/dist/spec/domain/service/ManifestFieldChecks.js.map +0 -1
  659. package/dist/spec/domain/service/ManifestGraphValidator.d.ts +0 -15
  660. package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +0 -1
  661. package/dist/spec/domain/service/ManifestGraphValidator.js +0 -225
  662. package/dist/spec/domain/service/ManifestGraphValidator.js.map +0 -1
  663. package/dist/spec/domain/service/ManifestLinker.d.ts +0 -45
  664. package/dist/spec/domain/service/ManifestLinker.d.ts.map +0 -1
  665. package/dist/spec/domain/service/ManifestLinker.js +0 -92
  666. package/dist/spec/domain/service/ManifestLinker.js.map +0 -1
  667. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +0 -16
  668. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +0 -1
  669. package/dist/spec/domain/service/ManifestLocaleTrimmer.js +0 -76
  670. package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +0 -1
  671. package/dist/spec/domain/service/ManifestParser.d.ts +0 -49
  672. package/dist/spec/domain/service/ManifestParser.d.ts.map +0 -1
  673. package/dist/spec/domain/service/ManifestParser.js +0 -203
  674. package/dist/spec/domain/service/ManifestParser.js.map +0 -1
  675. package/dist/spec/domain/service/ManifestPartition.d.ts +0 -9
  676. package/dist/spec/domain/service/ManifestPartition.d.ts.map +0 -1
  677. package/dist/spec/domain/service/ManifestPartition.js +0 -19
  678. package/dist/spec/domain/service/ManifestPartition.js.map +0 -1
  679. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +0 -33
  680. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +0 -1
  681. package/dist/spec/domain/service/ManifestPathDiagnoser.js +0 -43
  682. package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +0 -1
  683. package/dist/spec/domain/service/ManifestSourceSpans.d.ts +0 -10
  684. package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +0 -1
  685. package/dist/spec/domain/service/ManifestSourceSpans.js +0 -76
  686. package/dist/spec/domain/service/ManifestSourceSpans.js.map +0 -1
  687. package/dist/spec/domain/service/McpToolNaming.d.ts +0 -25
  688. package/dist/spec/domain/service/McpToolNaming.d.ts.map +0 -1
  689. package/dist/spec/domain/service/McpToolNaming.js +0 -50
  690. package/dist/spec/domain/service/McpToolNaming.js.map +0 -1
  691. package/dist/spec/domain/service/PlanFingerprint.d.ts.map +0 -1
  692. package/dist/spec/domain/service/PlanFingerprint.js +0 -14
  693. package/dist/spec/domain/service/PlanFingerprint.js.map +0 -1
  694. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +0 -4
  695. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +0 -1
  696. package/dist/spec/domain/service/ProcedureViewSpecChecks.js +0 -211
  697. package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +0 -1
  698. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +0 -42
  699. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +0 -1
  700. package/dist/spec/domain/service/SchemaAdminUiChecker.js +0 -289
  701. package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +0 -1
  702. package/dist/spec/domain/service/SchemaIndexChecker.d.ts +0 -33
  703. package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +0 -1
  704. package/dist/spec/domain/service/SchemaIndexChecker.js +0 -256
  705. package/dist/spec/domain/service/SchemaIndexChecker.js.map +0 -1
  706. package/dist/spec/domain/service/SchemaSearchChecker.d.ts +0 -11
  707. package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +0 -1
  708. package/dist/spec/domain/service/SchemaSearchChecker.js +0 -78
  709. package/dist/spec/domain/service/SchemaSearchChecker.js.map +0 -1
  710. package/dist/spec/domain/service/SchemaSpecChecks.d.ts +0 -31
  711. package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +0 -1
  712. package/dist/spec/domain/service/SchemaSpecChecks.js +0 -445
  713. package/dist/spec/domain/service/SchemaSpecChecks.js.map +0 -1
  714. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +0 -39
  715. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +0 -1
  716. package/dist/spec/domain/service/SiteDefaultsValidator.js +0 -194
  717. package/dist/spec/domain/service/SiteDefaultsValidator.js.map +0 -1
  718. package/dist/spec/domain/service/SqlClassify.d.ts +0 -19
  719. package/dist/spec/domain/service/SqlClassify.d.ts.map +0 -1
  720. package/dist/spec/domain/service/SqlClassify.js +0 -42
  721. package/dist/spec/domain/service/SqlClassify.js.map +0 -1
  722. package/dist/spec/domain/service/SqlRefusal.d.ts +0 -16
  723. package/dist/spec/domain/service/SqlRefusal.d.ts.map +0 -1
  724. package/dist/spec/domain/service/SqlRefusal.js +0 -20
  725. package/dist/spec/domain/service/SqlRefusal.js.map +0 -1
  726. package/dist/spec/domain/service/SqlTypes.d.ts +0 -40
  727. package/dist/spec/domain/service/SqlTypes.d.ts.map +0 -1
  728. package/dist/spec/domain/service/SqlTypes.js +0 -110
  729. package/dist/spec/domain/service/SqlTypes.js.map +0 -1
  730. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +0 -3
  731. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +0 -1
  732. package/dist/spec/domain/service/StaffRoleHierarchy.js +0 -19
  733. package/dist/spec/domain/service/StaffRoleHierarchy.js.map +0 -1
  734. package/dist/spec/domain/service/TriggerGraphChecks.d.ts +0 -16
  735. package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +0 -1
  736. package/dist/spec/domain/service/TriggerGraphChecks.js +0 -337
  737. package/dist/spec/domain/service/TriggerGraphChecks.js.map +0 -1
  738. package/dist/spec/domain/service/TriggerSpecChecks.d.ts +0 -4
  739. package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +0 -1
  740. package/dist/spec/domain/service/TriggerSpecChecks.js +0 -89
  741. package/dist/spec/domain/service/TriggerSpecChecks.js.map +0 -1
  742. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +0 -11
  743. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +0 -1
  744. package/dist/spec/domain/service/ValidatedAdminUiProjection.js +0 -26
  745. package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +0 -1
  746. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +0 -14
  747. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +0 -1
  748. package/dist/spec/domain/service/ViewAdminUiChecker.js +0 -53
  749. package/dist/spec/domain/service/ViewAdminUiChecker.js.map +0 -1
  750. package/dist/spec/domain/service/index.d.ts +0 -24
  751. package/dist/spec/domain/service/index.d.ts.map +0 -1
  752. package/dist/spec/domain/service/index.js +0 -24
  753. package/dist/spec/domain/service/index.js.map +0 -1
  754. package/dist/spec/index.d.ts +0 -10
  755. package/dist/spec/index.d.ts.map +0 -1
  756. package/dist/spec/index.js +0 -12
  757. package/dist/spec/index.js.map +0 -1
  758. package/dist/spec/infrastructure/cli/parseArgsError.d.ts +0 -16
  759. package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +0 -1
  760. package/dist/spec/infrastructure/cli/parseArgsError.js +0 -34
  761. package/dist/spec/infrastructure/cli/parseArgsError.js.map +0 -1
  762. package/dist/spec/infrastructure/index.d.ts +0 -2
  763. package/dist/spec/infrastructure/index.d.ts.map +0 -1
  764. package/dist/spec/infrastructure/index.js +0 -2
  765. package/dist/spec/infrastructure/index.js.map +0 -1
  766. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +0 -18
  767. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +0 -1
  768. package/dist/spec/infrastructure/sql/PgQueryParser.js +0 -17
  769. package/dist/spec/infrastructure/sql/PgQueryParser.js.map +0 -1
  770. package/dist/spec/infrastructure/sql/compilePlan.d.ts +0 -37
  771. package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +0 -1
  772. package/dist/spec/infrastructure/sql/compilePlan.js +0 -282
  773. package/dist/spec/infrastructure/sql/compilePlan.js.map +0 -1
  774. package/dist/spec/infrastructure/sql/compileSql.d.ts +0 -35
  775. package/dist/spec/infrastructure/sql/compileSql.d.ts.map +0 -1
  776. package/dist/spec/infrastructure/sql/compileSql.js +0 -92
  777. package/dist/spec/infrastructure/sql/compileSql.js.map +0 -1
  778. package/dist/spec/infrastructure/sql/frontEnd.d.ts +0 -8
  779. package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +0 -1
  780. package/dist/spec/infrastructure/sql/frontEnd.js +0 -100
  781. package/dist/spec/infrastructure/sql/frontEnd.js.map +0 -1
  782. package/dist/spec/infrastructure/sql/index.d.ts +0 -4
  783. package/dist/spec/infrastructure/sql/index.d.ts.map +0 -1
  784. package/dist/spec/infrastructure/sql/index.js +0 -4
  785. package/dist/spec/infrastructure/sql/index.js.map +0 -1
  786. package/dist/spec/kernel/diagnostic.d.ts.map +0 -1
  787. package/dist/spec/kernel/diagnostic.js +0 -296
  788. package/dist/spec/kernel/diagnostic.js.map +0 -1
  789. package/dist/spec/kernel/index.d.ts +0 -8
  790. package/dist/spec/kernel/index.d.ts.map +0 -1
  791. package/dist/spec/kernel/index.js +0 -8
  792. package/dist/spec/kernel/index.js.map +0 -1
  793. package/dist/spec/usecase/EmitTypes.d.ts +0 -22
  794. package/dist/spec/usecase/EmitTypes.d.ts.map +0 -1
  795. package/dist/spec/usecase/EmitTypes.js +0 -182
  796. package/dist/spec/usecase/EmitTypes.js.map +0 -1
  797. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +0 -8
  798. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +0 -1
  799. package/dist/spec/usecase/ValidateManifestsUseCase.js +0 -101
  800. package/dist/spec/usecase/ValidateManifestsUseCase.js.map +0 -1
  801. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +0 -27
  802. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +0 -1
  803. package/dist/spec/usecase/dto/ValidateManifestsRequest.js +0 -2
  804. package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +0 -1
  805. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +0 -14
  806. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +0 -1
  807. package/dist/spec/usecase/dto/ValidateManifestsResponse.js +0 -2
  808. package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +0 -1
  809. package/dist/spec/usecase/dto/index.d.ts +0 -3
  810. package/dist/spec/usecase/dto/index.d.ts.map +0 -1
  811. package/dist/spec/usecase/dto/index.js +0 -3
  812. package/dist/spec/usecase/dto/index.js.map +0 -1
  813. package/dist/spec/usecase/index.d.ts +0 -10
  814. package/dist/spec/usecase/index.d.ts.map +0 -1
  815. package/dist/spec/usecase/index.js +0 -10
  816. package/dist/spec/usecase/index.js.map +0 -1
  817. package/dist/testing/cases/before-hook.d.ts +0 -4
  818. package/dist/testing/cases/before-hook.d.ts.map +0 -1
  819. package/dist/testing/cases/before-hook.js +0 -71
  820. package/dist/testing/cases/before-hook.js.map +0 -1
  821. package/dist/testing/cases/corpus.d.ts +0 -12
  822. package/dist/testing/cases/corpus.d.ts.map +0 -1
  823. package/dist/testing/cases/corpus.js +0 -91
  824. package/dist/testing/cases/corpus.js.map +0 -1
  825. package/dist/testing/cases/policy.d.ts +0 -74
  826. package/dist/testing/cases/policy.d.ts.map +0 -1
  827. package/dist/testing/cases/policy.js +0 -142
  828. package/dist/testing/cases/policy.js.map +0 -1
  829. package/dist/testing/cases/printer.d.ts +0 -4
  830. package/dist/testing/cases/printer.d.ts.map +0 -1
  831. package/dist/testing/cases/printer.js +0 -32
  832. package/dist/testing/cases/printer.js.map +0 -1
  833. package/dist/testing/cases/report-view.d.ts +0 -5
  834. package/dist/testing/cases/report-view.d.ts.map +0 -1
  835. package/dist/testing/cases/report-view.js +0 -33
  836. package/dist/testing/cases/report-view.js.map +0 -1
  837. package/dist/testing/cases/requisition.d.ts +0 -4
  838. package/dist/testing/cases/requisition.d.ts.map +0 -1
  839. package/dist/testing/cases/requisition.js +0 -38
  840. package/dist/testing/cases/requisition.js.map +0 -1
  841. package/dist/testing/cases/search-places.d.ts +0 -4
  842. package/dist/testing/cases/search-places.d.ts.map +0 -1
  843. package/dist/testing/cases/search-places.js +0 -60
  844. package/dist/testing/cases/search-places.js.map +0 -1
  845. package/dist/testing/cases/stock.d.ts +0 -4
  846. package/dist/testing/cases/stock.d.ts.map +0 -1
  847. package/dist/testing/cases/stock.js +0 -35
  848. package/dist/testing/cases/stock.js.map +0 -1
  849. package/dist/testing/cases/store.d.ts +0 -4
  850. package/dist/testing/cases/store.d.ts.map +0 -1
  851. package/dist/testing/cases/store.js +0 -100
  852. package/dist/testing/cases/store.js.map +0 -1
  853. package/dist/testing/harness.d.ts +0 -94
  854. package/dist/testing/harness.d.ts.map +0 -1
  855. package/dist/testing/harness.js +0 -168
  856. package/dist/testing/harness.js.map +0 -1
  857. package/dist/testing/index.d.ts.map +0 -1
  858. package/dist/testing/index.js.map +0 -1
  859. package/dist/testing/report.d.ts +0 -15
  860. package/dist/testing/report.d.ts.map +0 -1
  861. package/dist/testing/report.js +0 -22
  862. package/dist/testing/report.js.map +0 -1
  863. package/dist/web/createRestSurface.d.ts +0 -7
  864. package/dist/web/createRestSurface.d.ts.map +0 -1
  865. package/dist/web/createRestSurface.js +0 -39
  866. package/dist/web/createRestSurface.js.map +0 -1
  867. package/dist/web/index.d.ts +0 -2
  868. package/dist/web/index.d.ts.map +0 -1
  869. package/dist/web/index.js +0 -2
  870. package/dist/web/index.js.map +0 -1
  871. package/docs/adr/0001-four-atom-manifest-model.md +0 -440
  872. package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
  873. package/docs/adr/0007-ai-as-primary-author.md +0 -473
  874. package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
  875. package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
  876. package/docs/adr/0010-locale-and-translates.md +0 -453
  877. package/docs/adr/0011-adapter-port-spec.md +0 -281
  878. package/docs/adr/0012-views-as-public-rest.md +0 -161
  879. package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
  880. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -919
  881. package/docs/adr/0016-site-semantic-layer.md +0 -70
  882. package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
  883. package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
  884. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -244
  885. package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
  886. package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
  887. package/docs/adr/0022-caller-observed-version-occ.md +0 -212
  888. package/docs/adr/0023-port-failure-contract.md +0 -69
  889. package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
  890. package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
  891. package/docs/adr/0026-progressive-generate.md +0 -36
  892. package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
  893. package/docs/adr/0028-schema-ttl-expiry.md +0 -33
  894. package/docs/adr/0029-mcp-apps-interaction-contracts.md +0 -324
  895. package/docs/adr/0030-store.md +0 -40
  896. package/docs/adr/0031-host-cloud-core-contract.md +0 -25
  897. package/docs/adr/0032-store-centric-core-and-service-contract.md +0 -361
  898. package/docs/adr/0033-storage-converges-to-the-plan.md +0 -92
  899. package/docs/adr/0034-store-is-authored-as-sql.md +0 -192
  900. package/docs/adr/0035-sql-dialects.md +0 -154
  901. package/docs/adr/0036-host-and-dialect.md +0 -65
  902. package/docs/adr/0037-postgresql-is-the-reference-dialect.md +0 -124
  903. package/docs/adr/0038-bun-native-host.md +0 -63
  904. package/docs/adr/README.md +0 -96
  905. package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
  906. package/docs/adr/adr-lite-808-route-readiness.md +0 -47
  907. package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
  908. package/docs/adr/adr-lite-812-native-parity.md +0 -150
  909. package/docs/adr/adr-lite-823-home-statistics.md +0 -64
  910. package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
  911. package/docs/adr/adr-lite-845-frontend-client.md +0 -38
  912. package/docs/adr/adr-lite-861-admin-webmcp.md +0 -48
  913. package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
  914. package/docs/examples/commerce-inventory.md +0 -481
  915. package/docs/examples/commerce.md +0 -254
  916. package/docs/examples/guarded-api.md +0 -238
  917. package/docs/examples/intake-hooks.md +0 -237
  918. package/docs/examples/intake.md +0 -127
  919. package/docs/examples/legal-documents.md +0 -218
  920. package/docs/examples/procurement.md +0 -215
  921. package/docs/examples/publication.md +0 -211
  922. package/docs/examples/reference-service/.mantle/generated/mantle.ts +0 -174
  923. package/docs/examples/reference-service/.mantle/generated/plan.json +0 -1936
  924. package/docs/examples/reference-service/README.md +0 -33
  925. package/docs/examples/reference-service/manifests/catalog.yaml +0 -103
  926. package/docs/examples/reference-service/manifests/orders.yaml +0 -120
  927. package/docs/examples/reference-service/mantle.config.json +0 -1
  928. package/docs/examples/reference-service/package.json +0 -27
  929. package/docs/examples/reference-service/smoke.mjs +0 -156
  930. package/docs/examples/reference-service/src/handlers.ts +0 -36
  931. package/docs/examples/reference-service/src/index.ts +0 -33
  932. package/docs/examples/reference-service/src/service.ts +0 -78
  933. package/docs/examples/reference-service/wrangler.jsonc +0 -26
  934. package/docs/examples/reservation.md +0 -142
  935. package/docs/skills/develop/mcp-app.md +0 -79
  936. /package/docs/examples/{reference-service → app-shell}/.dev.vars.example +0 -0
@@ -0,0 +1,103 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import { basename, dirname, join, relative, resolve } from "node:path";
4
+ import { isDeepStrictEqual } from "node:util";
5
+ import { applyEdits, modify, parse } from "jsonc-parser";
6
+ const requiredFlags = ["nodejs_compat", "global_fetch_strictly_public"];
7
+ function compatibilityDate(dir) {
8
+ try {
9
+ let from = join(dir, "package.json");
10
+ for (const name of ["wrangler", "miniflare", "workerd"])
11
+ from = createRequire(from).resolve(`${name}/package.json`);
12
+ const [, y, m, d] = /^\d+\.(\d{4})(\d{2})(\d{2})\./.exec(JSON.parse(readFileSync(from, "utf8")).version) ?? [];
13
+ if (y)
14
+ return `${y}-${m}-${d}`;
15
+ }
16
+ catch { }
17
+ return "2026-09-28";
18
+ }
19
+ export function configureWrangler(configPath, entry, outdir, generated, check = false, assets, publicFetchRequired = false) {
20
+ const configDir = dirname(resolve(configPath));
21
+ const local = (path) => relative(configDir, resolve(path)).replaceAll("\\", "/") || ".";
22
+ const output = local(outdir);
23
+ const quote = (arg) => /^[\w./-]+$/.test(arg) ? arg : `'${arg.replaceAll("'", "'\\''")}'`;
24
+ const worker = `${output}/worker`;
25
+ const assetsFlag = assets !== undefined && resolve(assets) !== resolve(outdir, "client") ? ` --assets ${quote(assets)}` : "";
26
+ const keys = {
27
+ main: `${worker}/${basename(entry).replace(/\.[^.]+$/, "")}.js`, no_bundle: true,
28
+ find_additional_modules: true, base_dir: worker,
29
+ rules: [{ type: "ESModule", globs: ["**/*.js"], fallthrough: true }],
30
+ build: { command: `mantle bundle ${quote(entry)} ${quote(outdir)}${assetsFlag}`, watch_dir: [local(dirname(entry)), local(generated)] },
31
+ };
32
+ if (configPath.endsWith(".toml")) {
33
+ if (check)
34
+ throw new Error("--check requires a JSON or JSONC Wrangler config; TOML generation only prints manual edits.");
35
+ console.log(`Leave ${configPath} unchanged. Add these Wrangler TOML keys (include nodejs_compat and global_fetch_strictly_public in every compatibility_flags override):\n` +
36
+ `main = ${JSON.stringify(keys.main)}\nno_bundle = true\nfind_additional_modules = true\nbase_dir = ${JSON.stringify(worker)}\ncompatibility_flags = ${JSON.stringify(requiredFlags)}\n\n` +
37
+ (assets === undefined ? "" : `[assets]\ndirectory = ${JSON.stringify(local(assets))}\nbinding = "ASSETS"\nrun_worker_first = true\nhtml_handling = "none"\n\n`) +
38
+ `[[rules]]\ntype = "ESModule"\nglobs = ["**/*.js"]\nfallthrough = true\n\n[build]\ncommand = ${JSON.stringify(keys.build.command)}\nwatch_dir = ${JSON.stringify(keys.build.watch_dir)}`);
39
+ return false;
40
+ }
41
+ const exists = existsSync(configPath);
42
+ const original = exists ? readFileSync(configPath, "utf8") : JSON.stringify({ name: "your-worker-name", compatibility_date: compatibilityDate(configDir) }, null, 2) + "\n";
43
+ let text = original;
44
+ const errors = [];
45
+ const config = parse(text, errors, { allowTrailingComma: true });
46
+ if (errors.length || !config || typeof config !== "object" || Array.isArray(config))
47
+ throw new Error(`${configPath} must be a valid JSONC object.`);
48
+ const indent = text.match(/\n([ \t]+)"/)?.[1] ?? " ";
49
+ const formattingOptions = { insertSpaces: !indent.includes("\t"), tabSize: indent.length, eol: text.includes("\r\n") ? "\r\n" : "\n" };
50
+ const { rules: [rule], build: buildKeys, ...top } = keys;
51
+ const edit = (path, value) => {
52
+ if (!isDeepStrictEqual(path.reduce((v, k) => v?.[k], config), value))
53
+ text = applyEdits(text, modify(text, path, value, { formattingOptions }));
54
+ };
55
+ const ensureFlags = (path, flags) => {
56
+ if (flags !== undefined && (!Array.isArray(flags) || !flags.every(flag => typeof flag === "string")))
57
+ throw new Error(`${configPath}: ${path.join(".")} must be an array of strings.`);
58
+ const privateFetch = Array.isArray(flags) && flags.includes("global_fetch_private_origin");
59
+ if (privateFetch && (publicFetchRequired || flags.includes("global_fetch_strictly_public")))
60
+ throw new Error(`${configPath}: ${path.join(".")} includes global_fetch_private_origin, which conflicts with public OAuth/CIMD fetch routing. Remove it and use global_fetch_strictly_public.`);
61
+ const required = privateFetch ? ["nodejs_compat"] : requiredFlags;
62
+ if (flags === undefined)
63
+ edit(path, required);
64
+ else
65
+ for (const flag of required)
66
+ if (!flags.includes(flag))
67
+ edit([...path, -1], flag);
68
+ };
69
+ ensureFlags(["compatibility_flags"], config.compatibility_flags);
70
+ for (const [name, environment] of Object.entries(config.env ?? {})) {
71
+ if (environment?.compatibility_flags !== undefined)
72
+ ensureFlags(["env", name, "compatibility_flags"], environment.compatibility_flags);
73
+ }
74
+ for (const [key, value] of Object.entries(top))
75
+ edit([key], value);
76
+ for (const [key, value] of Object.entries(buildKeys))
77
+ edit(["build", key], value);
78
+ if (assets !== undefined) {
79
+ const wireAssets = (path, current) => {
80
+ edit([...path, "directory"], local(assets));
81
+ const ownsDefaults = current === undefined || current?.binding === undefined;
82
+ if (ownsDefaults && current?.binding === undefined)
83
+ edit([...path, "binding"], "ASSETS");
84
+ if (ownsDefaults && current?.run_worker_first === undefined)
85
+ edit([...path, "run_worker_first"], true);
86
+ if (current?.html_handling === undefined && (current?.run_worker_first === true || (ownsDefaults && current?.run_worker_first === undefined)))
87
+ edit([...path, "html_handling"], "none");
88
+ };
89
+ wireAssets(["assets"], config.assets);
90
+ for (const [name, environment] of Object.entries(config.env ?? {})) {
91
+ if (environment?.assets !== undefined)
92
+ wireAssets(["env", name, "assets"], environment.assets);
93
+ }
94
+ }
95
+ if (!(config.rules ?? []).some((r) => isDeepStrictEqual(r, rule)))
96
+ edit(config.rules === undefined ? ["rules"] : ["rules", -1], config.rules === undefined ? [rule] : rule);
97
+ const changed = !exists || text !== original;
98
+ if (changed && !check)
99
+ writeFileSync(configPath, text);
100
+ if (!exists && !check)
101
+ console.log(`Created ${configPath}. Set name and compatibility_date for your Worker, and add your D1/Hyperdrive bindings and other application settings.`);
102
+ return changed;
103
+ }
@@ -0,0 +1,4 @@
1
+ import { type Authorize, type Target, type Caller } from "./contracts.js";
2
+ /** Rejections deny; synchronous application failures remain internal errors. */
3
+ export declare function authorized(authorize: Authorize, target: Target, caller: Caller): Promise<boolean>;
4
+ export declare function authorizeTarget(authorize: Authorize, target: Target, caller: Caller): Promise<void>;
@@ -0,0 +1,15 @@
1
+ import { ContractError } from "./contracts.js";
2
+ export async function authorized(authorize, target, caller) {
3
+ let result;
4
+ try {
5
+ result = authorize(target, caller);
6
+ }
7
+ catch (cause) {
8
+ throw new Error("Authorization failed.", { cause });
9
+ }
10
+ return await Promise.resolve(result).catch(() => false) === true;
11
+ }
12
+ export async function authorizeTarget(authorize, target, caller) {
13
+ if (!await authorized(authorize, target, caller))
14
+ throw new ContractError("AUTH_DENIED", "Target is not authorized.", target.kind + "/" + target.name);
15
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Core's bind recipes (`BindSpec` in the policy rewriter), evaluated for one call. Generated Views, generated
3
+ * Procedures and the Store all bind through this one function. Input recipes carry the authored field name; `version` reads the Store's lock from `input`.
4
+ */
5
+ import { type Caller } from "./contracts.js";
6
+ import type { Dialect } from "./dialect/common.js";
7
+ export type Recipe = {
8
+ readonly k: "user";
9
+ readonly field: string;
10
+ readonly type: "string" | "number";
11
+ readonly multiple: boolean;
12
+ readonly scope?: true;
13
+ } | {
14
+ readonly k: "uid" | "admin" | "now" | "version";
15
+ } | {
16
+ readonly k: "cutoff";
17
+ readonly seconds: number;
18
+ } | {
19
+ readonly k: "const";
20
+ readonly value: unknown;
21
+ }
22
+ /** A field-scoped Schema's scope column on an SQL INSERT: the Store's insert rule (autofill one value, refuse a value outside the caller's set). */
23
+ | {
24
+ readonly k: "scoped";
25
+ readonly column: string;
26
+ readonly field: string;
27
+ readonly type: "string" | "number";
28
+ readonly name?: string;
29
+ readonly value?: string | number;
30
+ } | {
31
+ readonly k: "input";
32
+ readonly name: string; /** Only a date-time, a date or JSON is converted, so only those carry a type. */
33
+ readonly type?: "timestamptz" | "date" | "json";
34
+ };
35
+ /** One printed statement and how to bind it. `row`: it must affect exactly one row. */
36
+ export interface Step {
37
+ readonly sql: string;
38
+ readonly binds: readonly Recipe[];
39
+ readonly row?: boolean;
40
+ }
41
+ export type Bound = {
42
+ readonly sql: string;
43
+ readonly binds: unknown[];
44
+ readonly row?: boolean;
45
+ };
46
+ /** The dialect functions the recipes in use call; generated code passes only those. */
47
+ export type Values = Partial<Pick<Dialect, "now" | "cutoff" | "timestamp" | "date">> & {
48
+ readonly scopeInsert?: Dialect['scopeInsert'];
49
+ readonly userRefs?: (recipe: Recipe, caller: Caller, input?: Readonly<Record<string, unknown>>) => unknown;
50
+ /** Present only in apps with user fields: keeps, per caller, one printed form of each Schema scope term. */
51
+ readonly scopedAll?: <T>(value: T, caller: Caller) => T;
52
+ };
53
+ /**
54
+ * A declared date-time or date as the engine stores it, and a JSON value as its text (a string, such as a boundary's
55
+ * already converted value, is bound as it is); any other value (and `null`) is bound as it is.
56
+ */
57
+ export declare const encode: (d: Values, type: string | undefined, v: unknown) => unknown;
58
+ export declare function binds(d: Values, recipes: readonly Recipe[], caller: Caller, input?: Readonly<Record<string, unknown>>, ms?: number): unknown[];
59
+ /** Every step's binds, evaluated for a Procedure. */
60
+ export declare function bound(d: Values, steps: readonly Step[], caller: Caller, input?: Readonly<Record<string, unknown>>): Bound[];
@@ -0,0 +1,39 @@
1
+ import { deny, isAdmin } from "./contracts.js";
2
+ export const encode = (d, type, v) => type === "timestamptz" ? (v == null ? null : d.timestamp(v)) : type === "date" ? (v == null ? null : d.date(v))
3
+ : type === "json" && v != null && typeof v !== "string" ? JSON.stringify(v) : v;
4
+ export function binds(d, recipes, caller, input, ms = 0) {
5
+ const out = [];
6
+ for (const r of recipes) {
7
+ switch (r.k) {
8
+ case "uid":
9
+ if (caller.kind === "host")
10
+ deny(caller, isAdmin(caller), "");
11
+ out.push("subject" in caller ? caller.subject : caller.kind === "system" ? `system:${caller.reason}` : null);
12
+ break;
13
+ case "admin":
14
+ out.push(isAdmin(caller) ? 1 : 0);
15
+ break;
16
+ case "now":
17
+ out.push(d.now(ms ||= Date.now()));
18
+ break;
19
+ case "cutoff":
20
+ out.push(d.cutoff(ms ||= Date.now(), r.seconds));
21
+ break;
22
+ case "const":
23
+ out.push(r.value);
24
+ break;
25
+ case "version":
26
+ out.push(input.version);
27
+ break;
28
+ case "input":
29
+ out.push(encode(d, r.type, input[r.name]));
30
+ break;
31
+ default: out.push(d.userRefs(r, caller, input));
32
+ }
33
+ }
34
+ return out;
35
+ }
36
+ export function bound(d, steps, caller, input) {
37
+ const ms = Date.now();
38
+ return steps.map(s => ({ sql: s.sql, binds: binds(d, s.binds, caller, input, ms), row: s.row }));
39
+ }
@@ -0,0 +1,21 @@
1
+ import type { Caller } from "./contracts.js";
2
+ import type { UserValue } from "./user-fields.js";
3
+ type Identity = {
4
+ readonly roles: readonly string[];
5
+ readonly fields: Readonly<Record<string, UserValue>>;
6
+ readonly admin: boolean;
7
+ readonly impersonatedBy?: string;
8
+ readonly host?: true;
9
+ };
10
+ export declare const identities: WeakMap<Caller, Identity>;
11
+ export declare const isHostCaller: (caller: Caller) => boolean;
12
+ export declare const rolesOf: (caller: Caller) => readonly string[];
13
+ export declare const fieldsOf: (caller: Caller) => Readonly<Record<string, UserValue>>;
14
+ export declare const valueFor: (caller: Caller, field: string) => UserValue | undefined;
15
+ export declare const hasRole: (caller: Caller, role: string) => boolean;
16
+ export declare const isAdminCaller: (caller: Caller) => caller is Extract<Caller, {
17
+ kind: "user" | "host";
18
+ }> & {
19
+ readonly admin: true;
20
+ };
21
+ export {};
@@ -0,0 +1,7 @@
1
+ export const identities = /* @__PURE__ */ new WeakMap();
2
+ export const isHostCaller = (caller) => identities.get(caller)?.host === true;
3
+ export const rolesOf = (caller) => identities.get(caller)?.roles ?? [];
4
+ export const fieldsOf = (caller) => identities.get(caller)?.fields ?? {};
5
+ export const valueFor = (caller, field) => identities.get(caller)?.fields[field];
6
+ export const hasRole = (caller, role) => rolesOf(caller).includes(role);
7
+ export const isAdminCaller = (caller) => !!identities.get(caller)?.admin;
@@ -0,0 +1,4 @@
1
+ import type { Caller } from "./contracts.js";
2
+ export declare function modeOf(caller: Caller): "caller" | "trusted";
3
+ /** Only branded host identities may carry freshness authority. */
4
+ export declare function checkFresh(caller: Caller, readOnly: boolean, target?: string): void;
@@ -0,0 +1,14 @@
1
+ import { ContractError } from "./contract-error.js";
2
+ import { isHostCaller } from "./caller-identity.js";
3
+ export function modeOf(caller) {
4
+ const kind = caller.kind;
5
+ if (kind === 'system')
6
+ return 'trusted';
7
+ if (kind === 'user' || kind === 'anonymous' || kind === 'host' && isHostCaller(caller))
8
+ return 'caller';
9
+ throw new ContractError('AUTH_DENIED', 'Unknown caller');
10
+ }
11
+ export function checkFresh(caller, readOnly, target) {
12
+ if (!readOnly && isHostCaller(caller) && "authenticatedAs" in caller && caller.authenticatedAs === "snapshot")
13
+ throw new ContractError("STALE_CALLER", "Snapshot callers cannot write.", target, { status: 403 });
14
+ }
@@ -0,0 +1,12 @@
1
+ export declare class ContractError extends Error {
2
+ readonly code: string;
3
+ readonly path: string;
4
+ /** HTTP status for codes outside the core set `statusOf` maps. */
5
+ readonly status?: number;
6
+ /** Extra wire fields, after `code`, `message` and `path`. */
7
+ readonly fields?: Record<string, unknown>;
8
+ constructor(code: string, message: string, path?: string, options?: ErrorOptions & {
9
+ status?: number;
10
+ fields?: Record<string, unknown>;
11
+ });
12
+ }
@@ -0,0 +1,14 @@
1
+ export class ContractError extends Error {
2
+ code;
3
+ path;
4
+ constructor(code, message, path = "", options) {
5
+ super(message, options);
6
+ this.code = code;
7
+ this.path = path;
8
+ this.name = "ContractError";
9
+ if (options?.status)
10
+ this.status = options.status;
11
+ if (options?.fields)
12
+ this.fields = options.fields;
13
+ }
14
+ }
@@ -0,0 +1,135 @@
1
+ /** Boundary primitives only. No plan, SQL interpreter or resource ownership. */
2
+ import { ContractError } from "./contract-error.js";
3
+ export { ContractError } from "./contract-error.js";
4
+ import { isAdminCaller as isAdmin } from "./caller-identity.js";
5
+ export type CredentialKind = "session" | "oauth" | "api-key" | "personal-token";
6
+ export interface Gateway {
7
+ readonly tenant: string;
8
+ }
9
+ export interface RequestContext {
10
+ readonly props?: unknown;
11
+ }
12
+ /** Gateway mode or the one execution prop carrying forwarded authority. */
13
+ export declare const forwarded: (ctx?: RequestContext, gateway?: Gateway) => boolean;
14
+ /** Generated gateway metadata is loaded only after a forwarded request. */
15
+ export interface AccessTarget {
16
+ readonly targetHash: string;
17
+ readonly opaque: boolean;
18
+ readonly guard?: string;
19
+ readonly variants?: readonly (Pick<AccessTarget, "opaque" | "guard"> & {
20
+ readonly id: string;
21
+ })[];
22
+ }
23
+ export interface AccessEvent {
24
+ readonly v: 1;
25
+ readonly requestId: string;
26
+ readonly target: string;
27
+ readonly targetHash: string;
28
+ readonly caller: {
29
+ readonly kind: string;
30
+ readonly subject: string;
31
+ readonly layer: "admin" | "member";
32
+ };
33
+ readonly outcome: "allow" | "deny" | "error";
34
+ readonly reason?: string;
35
+ readonly field?: string;
36
+ readonly dryRun: boolean;
37
+ }
38
+ export interface GatewayOptions {
39
+ readonly accessTargets?: () => Promise<Readonly<Record<string, AccessTarget>>>;
40
+ readonly onAccess?: (event: AccessEvent) => void | Promise<void>;
41
+ }
42
+ type IdentityCaller = {
43
+ /** Application subject key: opaque, stable, unique across issuers. Never an email. */
44
+ readonly subject: string;
45
+ readonly issuer?: string;
46
+ /** Verified real actor during impersonation; retained only by the original identity. */
47
+ readonly impersonatedBy?: string;
48
+ readonly role: string | null;
49
+ /** Informational; only the private identity brand grants the admin layer. */
50
+ readonly admin?: boolean;
51
+ readonly roles?: readonly string[];
52
+ readonly fields?: Readonly<Record<string, import("./user-fields.js").UserValue>>;
53
+ readonly scopes: readonly string[];
54
+ readonly credential: CredentialKind;
55
+ /** Opaque record id or token JTI, never the raw credential. */
56
+ readonly credentialId: string | null;
57
+ readonly clientId: string | null;
58
+ readonly authenticatedAs?: "snapshot" | "fresh";
59
+ readonly requestId?: string;
60
+ readonly target?: string;
61
+ readonly targetHash?: string;
62
+ readonly dryRun?: boolean;
63
+ };
64
+ export type Caller = {
65
+ readonly kind: "anonymous";
66
+ } | (IdentityCaller & {
67
+ readonly kind: "user";
68
+ }) | (IdentityCaller & {
69
+ readonly kind: "host";
70
+ readonly authenticatedAs: "snapshot" | "fresh";
71
+ readonly requestId: string;
72
+ }) | {
73
+ readonly kind: "system";
74
+ readonly reason: string;
75
+ };
76
+ /** A selected boundary's application authorization target. */
77
+ export type Target = {
78
+ kind: "view" | "procedure" | "schema";
79
+ name: string;
80
+ action?: "read" | "create" | "update" | "delete";
81
+ };
82
+ export type Authorize = (target: Target, caller: Caller) => boolean | Promise<boolean>;
83
+ /** Privilege never follows a member role name. Only the original verified identity carries the admin layer. */
84
+ export { isAdmin };
85
+ /** Both authenticated layers pass ctx.user; the host layer still needs its original brand. */
86
+ export declare const isUser: (caller: Caller) => boolean;
87
+ export declare const hasAdminRole: (caller: Caller, name: string) => boolean;
88
+ /** Only the core transport failures; other codes carry their own status, and unknown codes remain server errors. */
89
+ export declare const statusOf: (code: string) => number;
90
+ /** Redact native errors at the selected boundary; the bare query preserves their identity. */
91
+ export declare function wire(error: unknown): {
92
+ status: number;
93
+ error: {
94
+ code: string;
95
+ message: string;
96
+ path: string;
97
+ [field: string]: unknown;
98
+ };
99
+ };
100
+ /** One result row. */
101
+ export type Row = Record<string, unknown>;
102
+ /** Static declared-column conversions, used only by selected transport boundaries. */
103
+ export type WireColumns = ReadonlyArray<readonly [field: string, type: "json" | "bool" | "int"]>;
104
+ export declare function wireRows(rows: readonly Row[], fields?: WireColumns): readonly Row[];
105
+ /** What a generated SQL Procedure returns: the rows of each statement, in order. */
106
+ export type Output = {
107
+ readonly results: ReadonlyArray<ReadonlyArray<Row>>;
108
+ };
109
+ /** Deny unless `allowed`: a user is AUTH_DENIED, anyone else UNAUTHENTICATED. */
110
+ export declare function deny(caller: Caller, allowed: boolean, path: string): void;
111
+ /** A row statement that changed no row cannot tell why without leaking whether the row exists, so it says how to recover. */
112
+ export declare const ROW_CONFLICT = "No row matched this change: it does not exist or is not visible to you, it changed since it was read, or its state no longer allows this change. Read it again before deciding whether to retry.";
113
+ /** CONFLICT for a write the database refused: a unique-index clash (`fields.kind` "unique"), or a row statement that did not change exactly one row ("row"). */
114
+ export declare const conflict: (path: string, unique: boolean, cause?: unknown) => ContractError;
115
+ /** A Schema `checks` violation (Mantle's SQLite check trigger, or PostgreSQL SQLSTATE 23514) is a CONFLICT naming the check. */
116
+ export declare const checkConflict: (path: string, error: unknown) => ContractError | undefined;
117
+ /** One message on every target, built from the parsed fields; the driver's own text stays in `cause`. */
118
+ export declare const schemaCheckFailed: (path: string, cause: unknown, schema: string | undefined, check: string | undefined) => ContractError;
119
+ /** One result of `unsafe`: the rows (typed by the generated function), plus the affected count. */
120
+ export type PostgresResult = any[] & {
121
+ readonly count: number | null;
122
+ };
123
+ /**
124
+ * The PostgreSQL handle bare generated code calls: Bun.SQL's own shape, so Bun passes its `SQL` directly. A Bun
125
+ * transaction handle suits generated queries; the driver marks Store transaction handles to suppress nested `begin`. Other drivers adapt to it (see README). `begin` must run every statement of `fn` on one connection and
126
+ * COMMIT only after `fn` resolves.
127
+ */
128
+ export interface Postgres {
129
+ unsafe(text: string, values: any[]): PromiseLike<PostgresResult>;
130
+ /** The transaction handle only needs `unsafe`: postgres.js 3.4.9 types it without `begin`. */
131
+ begin<T>(options: string, fn: (tx: Unsafe) => Promise<T>): PromiseLike<T>;
132
+ }
133
+ /** What a read or a single statement needs: a transaction handle suits it too. */
134
+ export type Unsafe = Pick<Postgres, "unsafe">;
135
+ export { checkOrigin, surfaceCaller, surfaceError, surfaceFailure } from "./surface-failure.js";
@@ -0,0 +1,56 @@
1
+ import { ContractError } from "./contract-error.js";
2
+ export { ContractError } from "./contract-error.js";
3
+ import { hasRole, isAdminCaller as isAdmin } from "./caller-identity.js";
4
+ export const forwarded = (ctx, gateway) => !!(gateway || ctx?.props && Object.hasOwn(ctx.props, "mantle"));
5
+ export { isAdmin };
6
+ export const isUser = (caller) => caller.kind === "user" || isAdmin(caller);
7
+ export const hasAdminRole = (caller, name) => isAdmin(caller) && hasRole(caller, name);
8
+ export const statusOf = (code) => ({ __proto__: null,
9
+ INPUT_VALIDATION_FAILED: 400, UNAUTHENTICATED: 401, AUTH_DENIED: 403, NOT_FOUND: 404,
10
+ METHOD_NOT_ALLOWED: 405, CONFLICT: 409, OUTCOME_UNKNOWN: 503,
11
+ }[code] ?? 500);
12
+ export function wire(error) {
13
+ const status = error instanceof ContractError ? error.status ?? statusOf(error.code) : 500;
14
+ if (status !== 500) {
15
+ const { code, message, path, fields } = error;
16
+ return { status, error: { code, message, path, ...fields } };
17
+ }
18
+ return { status, error: { code: "INTERNAL_ERROR", message: "An internal error occurred.", path: "" } };
19
+ }
20
+ export function wireRows(rows, fields = []) {
21
+ if (!fields.length)
22
+ return rows;
23
+ return rows.map(row => {
24
+ const result = { ...row };
25
+ for (const [key, type] of fields)
26
+ if (Object.hasOwn(row, key) && row[key] != null) {
27
+ const value = row[key];
28
+ if (type === "json") {
29
+ try {
30
+ result[key] = JSON.parse(value);
31
+ }
32
+ catch {
33
+ throw new ContractError("INVALID_STORED_JSON", "Persisted JSON could not be parsed.");
34
+ }
35
+ }
36
+ else
37
+ result[key] = type === "bool" ? value === true || value === 1
38
+ : typeof value === "number" || Number.isSafeInteger(Number(value)) ? Number(value) : String(value);
39
+ }
40
+ return result;
41
+ });
42
+ }
43
+ export function deny(caller, allowed, path) {
44
+ if (!allowed)
45
+ throw new ContractError("subject" in caller ? "AUTH_DENIED" : "UNAUTHENTICATED", "Authorization predicate not satisfied.", path);
46
+ }
47
+ export const ROW_CONFLICT = "No row matched this change: it does not exist or is not visible to you, it changed since it was read, or its state no longer allows this change. Read it again before deciding whether to retry.";
48
+ export const conflict = (path, unique, cause) => new ContractError("CONFLICT", unique ? "A unique constraint of the Schema was violated." : ROW_CONFLICT, path, { cause, fields: { kind: unique ? "unique" : "row" } });
49
+ export const checkConflict = (path, error) => {
50
+ const message = error?.message ?? "", marker = /MANTLE_CHECK ([^:\n]+): (.+)/.exec(message);
51
+ if (!/MANTLE_CHECK /.test(message))
52
+ return undefined;
53
+ return schemaCheckFailed(path, error, marker?.[1], marker?.[2]?.replace(/: SQLITE_CONSTRAINT.*$/, ""));
54
+ };
55
+ export const schemaCheckFailed = (path, cause, schema, check) => new ContractError("CONFLICT", schema && check ? `A check of the Schema failed: ${schema}: ${check}` : "A check of the Schema failed.", path, { cause, fields: { kind: "check", schema, check } });
56
+ export { checkOrigin, surfaceCaller, surfaceError, surfaceFailure } from "./surface-failure.js";
@@ -1,2 +1 @@
1
1
  export declare function toCloudflareCron(cron: string): string;
2
- //# sourceMappingURL=CloudflareCron.d.ts.map
@@ -1,12 +1,6 @@
1
- /**
2
- * `toCloudflareCron` (ADR-0032 decision 5 and amendment "the service preset"): a five-field POSIX cron (weekday 0 = Sunday) as
3
- * Cloudflare's cron triggers spell it (weekday 1 = Sunday through 7 = Saturday). Only explicit weekday numbers move. It lives in
4
- * spec, outside the barrel, so the CLI can write `wrangler.jsonc` with it; `@aotter/mantle/cloudflare` is its public home.
5
- */
6
1
  const PART = /^(\*|\d+|[A-Za-z]{3})(?:-(\d+|[A-Za-z]{3}))?(?:\/(\d+))?$/;
7
2
  const MONTHS = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
8
3
  const DAYS = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
9
- /** label, lowest, highest, names (by value from `lowest`) */
10
4
  const FIELDS = [["minute", 0, 59, null], ["hour", 0, 23, null], ["day of month", 1, 31, null], ["month", 1, 12, MONTHS], ["weekday", 0, 6, DAYS]];
11
5
  export function toCloudflareCron(cron) {
12
6
  const refuse = (why) => {
@@ -18,7 +12,6 @@ export function toCloudflareCron(cron) {
18
12
  const weekday = [];
19
13
  fields.forEach((field, i) => {
20
14
  const [label, min, max, names] = FIELDS[i];
21
- // a value as a number: a name counts as its number, and a number must be written plainly (`01` and `1` are one value)
22
15
  const value = (token) => {
23
16
  if (/^\d+$/.test(token)) {
24
17
  if (token.length > 1 && token.startsWith("0"))
@@ -55,9 +48,7 @@ export function toCloudflareCron(cron) {
55
48
  if (i === 4)
56
49
  weekday.push(...out);
57
50
  });
58
- // POSIX runs on either day when both are restricted; Cloudflare does not document that rule, so only one may be
59
51
  if (fields[2] !== "*" && fields[4] !== "*")
60
52
  refuse("restrict the day of month or the weekday, not both");
61
53
  return [...fields.slice(0, 4), weekday.join(",")].join(" ");
62
54
  }
63
- //# sourceMappingURL=CloudflareCron.js.map
@@ -0,0 +1,38 @@
1
+ /** What SQLite and PostgreSQL spell identically, defined once; each dialect module re-exports it. */
2
+ /** A (possibly schema-qualified) name, quoted. */
3
+ export declare const ident: (name: string) => string;
4
+ /** A literal piece of text for a LIKE pattern: `\`, `%` and `_` match themselves. Pair with `likeEscape`. */
5
+ export declare const escapeLike: (value: string) => string;
6
+ export declare const likeEscape = " ESCAPE '\\'";
7
+ /**
8
+ * How one engine spells SQL and stores values, exactly what the Store needs: each dialect module exports it as `dialect` (and its
9
+ * members by name, so a bundle that uses a few carries only those). A generated bundle imports one dialect; nothing branches on it.
10
+ */
11
+ export interface Dialect {
12
+ readonly userRefs?: import('../binds.js').Values['userRefs'];
13
+ readonly anyOf?: (column: string, placeholder: string, type: 'string' | 'number') => string;
14
+ readonly scopeInsert?: (scopes: readonly {
15
+ readonly column: string;
16
+ readonly field: string;
17
+ readonly type: 'string' | 'number';
18
+ }[], caller: import('../contracts.js').Caller, set: object) => object;
19
+ /** The `n`th (1-based) numbered placeholder. */
20
+ param(n: number): string;
21
+ ident(name: string): string;
22
+ escapeLike(value: string): string;
23
+ likeEscape: string;
24
+ /** The LIKE keyword; PostgreSQL's is case-sensitive unless `insensitive`. */
25
+ like(insensitive: boolean): string;
26
+ /** Search declared text fields; the caller separately permits an exact id match. */
27
+ search(table: string, fields: readonly string[], alias: string, query: string): string;
28
+ /** A declared date-time / date in its wire form (ISO UTC with six digits, `YYYY-MM-DD`): text parts interleaved with the operand. */
29
+ wireTimestamp<T>(v: T): (string | T)[];
30
+ wireDate<T>(v: T): (string | T)[];
31
+ /** Bind values: `now()` and a TTL cutoff from epoch milliseconds, declared ISO inputs, and the typed Store inputs. */
32
+ now(ms: number): unknown;
33
+ cutoff(ms: number, seconds: number): unknown;
34
+ timestamp(v: string | Date): unknown;
35
+ date(v: string): unknown;
36
+ /** A placeholder compared with, or written to, a column of this type, so every driver sends the value verbatim (postgres.js would turn text bound to timestamptz or date into a JavaScript Date and lose microseconds). */
37
+ cast(placeholder: string, type: string): string;
38
+ }
@@ -0,0 +1,3 @@
1
+ export const ident = (name) => name.split(".").map(part => `"${part.replaceAll('"', '""')}"`).join(".");
2
+ export const escapeLike = (value) => value.replace(/[\\%_]/g, "\\$&");
3
+ export const likeEscape = " ESCAPE '\\'";
@@ -0,0 +1,16 @@
1
+ /** PostgreSQL: `$n` placeholders, time as timestamptz (ISO text keeps every microsecond). */
2
+ import { isoTimestamptz } from "../scalars.js";
3
+ import { escapeLike, ident, likeEscape, type Dialect } from "./common.js";
4
+ export { ident, escapeLike, likeEscape };
5
+ export declare const param: (n: number) => string;
6
+ export declare const anyOf: (column: string, placeholder: string, type: "string" | "number") => string;
7
+ export declare const like: (insensitive: boolean) => string;
8
+ export declare const wireTimestamp: <T>(v: T) => (string | T)[];
9
+ export declare const wireDate: <T>(v: T) => (string | T)[];
10
+ export declare const now: (ms: number) => Date;
11
+ export declare const cutoff: (ms: number, seconds: number) => Date;
12
+ export declare const timestamp: typeof isoTimestamptz;
13
+ export declare const date: (v: string) => string;
14
+ export declare const cast: (placeholder: string, type: string) => string;
15
+ export declare const search: (_table: string, fields: readonly string[], alias: string, query: string) => string;
16
+ export declare const dialect: Dialect;
@@ -0,0 +1,16 @@
1
+ import { isoDate, isoTimestamptz } from "../scalars.js";
2
+ import { searchLike } from "../search.js";
3
+ import { escapeLike, ident, likeEscape } from "./common.js";
4
+ export { ident, escapeLike, likeEscape };
5
+ export const param = (n) => `$${n}`;
6
+ export const anyOf = (column, placeholder, type) => `${column} = ANY(CAST(CAST(${placeholder} AS text) AS ${type === 'number' ? 'float8' : 'text'}[]))`;
7
+ export const like = (insensitive) => insensitive ? "ILIKE" : "LIKE";
8
+ export const wireTimestamp = (v) => ["to_char((", v, ") AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.US\"Z\"')"];
9
+ export const wireDate = (v) => ["to_char(", v, ", 'YYYY-MM-DD')"];
10
+ export const now = (ms) => new Date(ms);
11
+ export const cutoff = (ms, seconds) => new Date(ms - seconds * 1000);
12
+ export const timestamp = isoTimestamptz;
13
+ export const date = isoDate;
14
+ export const cast = (placeholder, type) => type === "timestamptz" || type === "date" ? `CAST(CAST(${placeholder} AS text) AS ${type})` : type === "json" ? `CAST(CAST(${placeholder} AS text) AS jsonb)` : placeholder;
15
+ export const search = (_table, fields, alias, query) => searchLike(fields.map(field => `${alias}.${ident(field)}`), query, "ILIKE");
16
+ export const dialect = { param, ident, escapeLike, likeEscape, like, search, wireTimestamp, wireDate, now, cutoff, timestamp, date, cast, anyOf };
@@ -0,0 +1,20 @@
1
+ /** SQLite and Cloudflare D1: `?n` placeholders, time as microseconds and dates as days since the epoch. */
2
+ import { encodeDate, encodeTimestamptz } from "../scalars.js";
3
+ import { escapeLike, ident, likeEscape, type Dialect } from "./common.js";
4
+ export { ident, escapeLike, likeEscape };
5
+ export declare const param: (n: number) => string;
6
+ export declare const anyOf: (column: string, placeholder: string) => string;
7
+ export declare const like: () => string;
8
+ /** A write that broke a UNIQUE index or the id's UNIQUE (bun:sqlite and D1 word it the same). */
9
+ export declare const unique: (error: unknown) => boolean;
10
+ /** Positive rollback evidence only. Plain/network/I/O errors are deliberately uncertain. */
11
+ export declare function definitive(error: unknown): boolean;
12
+ export declare const wireTimestamp: <T>(v: T) => (string | T)[];
13
+ export declare const wireDate: <T>(v: T) => (string | T)[];
14
+ export declare const now: (ms: number) => number;
15
+ export declare const cutoff: (ms: number, seconds: number) => number;
16
+ export declare const timestamp: typeof encodeTimestamptz;
17
+ export declare const date: typeof encodeDate;
18
+ export declare const cast: (placeholder: string) => string;
19
+ export declare function search(table: string, fields: readonly string[], alias: string, query: string): string;
20
+ export declare const dialect: Dialect;