@aotter/mantle 0.1.5-alpha.1 → 0.2.0-alpha.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 (870) hide show
  1. package/README.md +39 -306
  2. package/dist/admin/consent.d.ts +17 -0
  3. package/dist/admin/consent.d.ts.map +1 -0
  4. package/dist/admin/consent.js +17 -0
  5. package/dist/admin/consent.js.map +1 -0
  6. package/dist/admin/createAdminSurface.d.ts +22 -0
  7. package/dist/admin/createAdminSurface.d.ts.map +1 -0
  8. package/dist/admin/createAdminSurface.js +589 -0
  9. package/dist/admin/createAdminSurface.js.map +1 -0
  10. package/dist/admin/developerConsole.d.ts +264 -0
  11. package/dist/admin/developerConsole.d.ts.map +1 -0
  12. package/dist/admin/developerConsole.js +136 -0
  13. package/dist/admin/developerConsole.js.map +1 -0
  14. package/dist/admin/identity.d.ts +62 -0
  15. package/dist/admin/identity.d.ts.map +1 -0
  16. package/dist/admin/identity.js +7 -0
  17. package/dist/admin/identity.js.map +1 -0
  18. package/dist/admin/index.d.ts +4 -0
  19. package/dist/admin/index.d.ts.map +1 -0
  20. package/dist/admin/index.js +4 -0
  21. package/dist/admin/index.js.map +1 -0
  22. package/dist/admin/procedureFlow.d.ts +25 -0
  23. package/dist/admin/procedureFlow.d.ts.map +1 -0
  24. package/dist/admin/procedureFlow.js +154 -0
  25. package/dist/admin/procedureFlow.js.map +1 -0
  26. package/dist/auth/ConsoleEmailSender.d.ts +15 -0
  27. package/dist/auth/ConsoleEmailSender.d.ts.map +1 -0
  28. package/dist/auth/ConsoleEmailSender.js +19 -0
  29. package/dist/auth/ConsoleEmailSender.js.map +1 -0
  30. package/dist/auth/appleClientSecret.d.ts +75 -0
  31. package/dist/auth/appleClientSecret.d.ts.map +1 -0
  32. package/dist/auth/appleClientSecret.js +116 -0
  33. package/dist/auth/appleClientSecret.js.map +1 -0
  34. package/dist/auth/buildAuth.d.ts +4565 -0
  35. package/dist/auth/buildAuth.d.ts.map +1 -0
  36. package/dist/auth/buildAuth.js +307 -0
  37. package/dist/auth/buildAuth.js.map +1 -0
  38. package/dist/auth/callerResolver.d.ts +48 -0
  39. package/dist/auth/callerResolver.d.ts.map +1 -0
  40. package/dist/auth/callerResolver.js +49 -0
  41. package/dist/auth/callerResolver.js.map +1 -0
  42. package/dist/auth/createAuthRoutes.d.ts +22 -0
  43. package/dist/auth/createAuthRoutes.d.ts.map +1 -0
  44. package/dist/auth/createAuthRoutes.js +128 -0
  45. package/dist/auth/createAuthRoutes.js.map +1 -0
  46. package/dist/auth/createMantleAuth.d.ts +3 -0
  47. package/dist/auth/createMantleAuth.d.ts.map +1 -0
  48. package/dist/auth/createMantleAuth.js +483 -0
  49. package/dist/auth/createMantleAuth.js.map +1 -0
  50. package/dist/auth/db.d.ts +17 -0
  51. package/dist/auth/db.d.ts.map +1 -0
  52. package/dist/auth/db.js +24 -0
  53. package/dist/auth/db.js.map +1 -0
  54. package/dist/auth/emailTemplates.d.ts +7 -0
  55. package/dist/auth/emailTemplates.d.ts.map +1 -0
  56. package/dist/auth/emailTemplates.js +27 -0
  57. package/dist/auth/emailTemplates.js.map +1 -0
  58. package/dist/auth/index.d.ts +9 -0
  59. package/dist/auth/index.d.ts.map +1 -0
  60. package/dist/auth/index.js +7 -0
  61. package/dist/auth/index.js.map +1 -0
  62. package/dist/auth/methods.d.ts +717 -0
  63. package/dist/auth/methods.d.ts.map +1 -0
  64. package/dist/auth/methods.js +321 -0
  65. package/dist/auth/methods.js.map +1 -0
  66. package/dist/auth/oauthTokens.d.ts +24 -0
  67. package/dist/auth/oauthTokens.d.ts.map +1 -0
  68. package/dist/auth/oauthTokens.js +146 -0
  69. package/dist/auth/oauthTokens.js.map +1 -0
  70. package/dist/auth/setupIncomplete.d.ts +16 -0
  71. package/dist/auth/setupIncomplete.d.ts.map +1 -0
  72. package/dist/auth/setupIncomplete.js +50 -0
  73. package/dist/auth/setupIncomplete.js.map +1 -0
  74. package/dist/auth/types.d.ts +440 -0
  75. package/dist/auth/types.d.ts.map +1 -0
  76. package/dist/auth/types.js +10 -0
  77. package/dist/auth/types.js.map +1 -0
  78. package/dist/bun/index.d.ts +65 -0
  79. package/dist/bun/index.d.ts.map +1 -0
  80. package/dist/bun/index.js +130 -0
  81. package/dist/bun/index.js.map +1 -0
  82. package/dist/cli/emitModule.d.ts +7 -0
  83. package/dist/cli/emitModule.d.ts.map +1 -0
  84. package/dist/cli/emitModule.js +127 -0
  85. package/dist/cli/emitModule.js.map +1 -0
  86. package/dist/cli/generate.d.ts +4 -16
  87. package/dist/cli/generate.d.ts.map +1 -1
  88. package/dist/cli/generate.js +318 -262
  89. package/dist/cli/generate.js.map +1 -1
  90. package/dist/cli/main.d.ts +1 -1
  91. package/dist/cli/main.d.ts.map +1 -1
  92. package/dist/cli/main.js +15 -71
  93. package/dist/cli/main.js.map +1 -1
  94. package/dist/cli/preset.d.ts +18 -0
  95. package/dist/cli/preset.d.ts.map +1 -0
  96. package/dist/cli/preset.js +352 -0
  97. package/dist/cli/preset.js.map +1 -0
  98. package/dist/cloudflare/index.d.ts +21 -0
  99. package/dist/cloudflare/index.d.ts.map +1 -0
  100. package/dist/cloudflare/index.js +14 -0
  101. package/dist/cloudflare/index.js.map +1 -0
  102. package/dist/cloudflare/r2Media.d.ts +43 -0
  103. package/dist/cloudflare/r2Media.d.ts.map +1 -0
  104. package/dist/cloudflare/r2Media.js +69 -0
  105. package/dist/cloudflare/r2Media.js.map +1 -0
  106. package/dist/core/caller.d.ts +35 -0
  107. package/dist/core/caller.d.ts.map +1 -0
  108. package/dist/core/caller.js +3 -0
  109. package/dist/core/caller.js.map +1 -0
  110. package/dist/core/createMantle.d.ts +22 -0
  111. package/dist/core/createMantle.d.ts.map +1 -0
  112. package/dist/core/createMantle.js +117 -0
  113. package/dist/core/createMantle.js.map +1 -0
  114. package/dist/core/dialect.d.ts +41 -0
  115. package/dist/core/dialect.d.ts.map +1 -0
  116. package/dist/core/dialect.js +7 -0
  117. package/dist/core/dialect.js.map +1 -0
  118. package/dist/core/driver.d.ts +17 -0
  119. package/dist/core/driver.d.ts.map +1 -0
  120. package/dist/core/driver.js +2 -0
  121. package/dist/core/driver.js.map +1 -0
  122. package/dist/core/email.d.ts +17 -0
  123. package/dist/core/email.d.ts.map +1 -0
  124. package/dist/core/email.js +2 -0
  125. package/dist/core/email.js.map +1 -0
  126. package/dist/core/index.d.ts +16 -0
  127. package/dist/core/index.d.ts.map +1 -0
  128. package/dist/core/index.js +16 -0
  129. package/dist/core/index.js.map +1 -0
  130. package/dist/core/invocation.d.ts +66 -0
  131. package/dist/core/invocation.d.ts.map +1 -0
  132. package/dist/core/invocation.js +3 -0
  133. package/dist/core/invocation.js.map +1 -0
  134. package/dist/core/runtime/auth.d.ts +9 -0
  135. package/dist/core/runtime/auth.d.ts.map +1 -0
  136. package/dist/core/runtime/auth.js +39 -0
  137. package/dist/core/runtime/auth.js.map +1 -0
  138. package/dist/core/runtime/createRuntime.d.ts +23 -0
  139. package/dist/core/runtime/createRuntime.d.ts.map +1 -0
  140. package/dist/core/runtime/createRuntime.js +214 -0
  141. package/dist/core/runtime/createRuntime.js.map +1 -0
  142. package/dist/core/runtime/verifyPlan.d.ts +34 -0
  143. package/dist/core/runtime/verifyPlan.d.ts.map +1 -0
  144. package/dist/core/runtime/verifyPlan.js +301 -0
  145. package/dist/core/runtime/verifyPlan.js.map +1 -0
  146. package/dist/core/service.d.ts +45 -0
  147. package/dist/core/service.d.ts.map +1 -0
  148. package/dist/core/service.js +2 -0
  149. package/dist/core/service.js.map +1 -0
  150. package/dist/core/site.d.ts +117 -0
  151. package/dist/core/site.d.ts.map +1 -0
  152. package/dist/core/site.js +2 -0
  153. package/dist/core/site.js.map +1 -0
  154. package/dist/core/siteConfig.d.ts +5 -0
  155. package/dist/core/siteConfig.d.ts.map +1 -0
  156. package/dist/core/siteConfig.js +24 -0
  157. package/dist/core/siteConfig.js.map +1 -0
  158. package/dist/core/sql/allowlist.d.ts +65 -0
  159. package/dist/core/sql/allowlist.d.ts.map +1 -0
  160. package/dist/core/sql/allowlist.js +705 -0
  161. package/dist/core/sql/allowlist.js.map +1 -0
  162. package/dist/core/sql/ast.d.ts +24 -0
  163. package/dist/core/sql/ast.d.ts.map +1 -0
  164. package/dist/core/sql/ast.js +32 -0
  165. package/dist/core/sql/ast.js.map +1 -0
  166. package/dist/core/sql/compile.d.ts +50 -0
  167. package/dist/core/sql/compile.d.ts.map +1 -0
  168. package/dist/core/sql/compile.js +48 -0
  169. package/dist/core/sql/compile.js.map +1 -0
  170. package/dist/core/sql/policy.d.ts +121 -0
  171. package/dist/core/sql/policy.d.ts.map +1 -0
  172. package/dist/core/sql/policy.js +379 -0
  173. package/dist/core/sql/policy.js.map +1 -0
  174. package/dist/core/sql/positions.d.ts +30 -0
  175. package/dist/core/sql/positions.d.ts.map +1 -0
  176. package/dist/core/sql/positions.js +22 -0
  177. package/dist/core/sql/positions.js.map +1 -0
  178. package/dist/core/sql/run.d.ts +76 -0
  179. package/dist/core/sql/run.d.ts.map +1 -0
  180. package/dist/core/sql/run.js +267 -0
  181. package/dist/core/sql/run.js.map +1 -0
  182. package/dist/core/store/createStore.d.ts +49 -0
  183. package/dist/core/store/createStore.d.ts.map +1 -0
  184. package/dist/core/store/createStore.js +227 -0
  185. package/dist/core/store/createStore.js.map +1 -0
  186. package/dist/core/store/cursor.d.ts +4 -0
  187. package/dist/core/store/cursor.d.ts.map +1 -0
  188. package/dist/core/store/cursor.js +22 -0
  189. package/dist/core/store/cursor.js.map +1 -0
  190. package/dist/core/store/json.d.ts +80 -0
  191. package/dist/core/store/json.d.ts.map +1 -0
  192. package/dist/core/store/json.js +342 -0
  193. package/dist/core/store/json.js.map +1 -0
  194. package/dist/core/store.d.ts +160 -0
  195. package/dist/core/store.d.ts.map +1 -0
  196. package/dist/core/store.js +2 -0
  197. package/dist/core/store.js.map +1 -0
  198. package/dist/core/wire.d.ts +20 -0
  199. package/dist/core/wire.d.ts.map +1 -0
  200. package/dist/core/wire.js +84 -0
  201. package/dist/core/wire.js.map +1 -0
  202. package/dist/core/withCaller.d.ts +16 -0
  203. package/dist/core/withCaller.d.ts.map +1 -0
  204. package/dist/core/withCaller.js +29 -0
  205. package/dist/core/withCaller.js.map +1 -0
  206. package/dist/d1/adapter.d.ts +12 -0
  207. package/dist/d1/adapter.d.ts.map +1 -0
  208. package/dist/d1/adapter.js +23 -0
  209. package/dist/d1/adapter.js.map +1 -0
  210. package/dist/d1/codec.d.ts +14 -0
  211. package/dist/d1/codec.d.ts.map +1 -0
  212. package/dist/d1/codec.js +136 -0
  213. package/dist/d1/codec.js.map +1 -0
  214. package/dist/d1/compile/index.d.ts +9 -0
  215. package/dist/d1/compile/index.d.ts.map +1 -0
  216. package/dist/d1/compile/index.js +9 -0
  217. package/dist/d1/compile/index.js.map +1 -0
  218. package/dist/d1/dialect.d.ts +4 -0
  219. package/dist/d1/dialect.d.ts.map +1 -0
  220. package/dist/d1/dialect.js +13 -0
  221. package/dist/d1/dialect.js.map +1 -0
  222. package/dist/d1/executor.d.ts +13 -0
  223. package/dist/d1/executor.d.ts.map +1 -0
  224. package/dist/d1/executor.js +91 -0
  225. package/dist/d1/executor.js.map +1 -0
  226. package/dist/d1/index.d.ts +6 -0
  227. package/dist/d1/index.d.ts.map +1 -0
  228. package/dist/d1/index.js +6 -0
  229. package/dist/d1/index.js.map +1 -0
  230. package/dist/d1/lower.d.ts +8 -0
  231. package/dist/d1/lower.d.ts.map +1 -0
  232. package/dist/d1/lower.js +167 -0
  233. package/dist/d1/lower.js.map +1 -0
  234. package/dist/d1/media.d.ts +5 -0
  235. package/dist/d1/media.d.ts.map +1 -0
  236. package/dist/d1/media.js +157 -0
  237. package/dist/d1/media.js.map +1 -0
  238. package/dist/d1/migrations.d.ts +12 -0
  239. package/dist/d1/migrations.d.ts.map +1 -0
  240. package/dist/d1/migrations.js +111 -0
  241. package/dist/d1/migrations.js.map +1 -0
  242. package/dist/d1/print.d.ts +28 -0
  243. package/dist/d1/print.d.ts.map +1 -0
  244. package/dist/d1/print.js +54 -0
  245. package/dist/d1/print.js.map +1 -0
  246. package/dist/d1/site.d.ts +17 -0
  247. package/dist/d1/site.d.ts.map +1 -0
  248. package/dist/d1/site.js +63 -0
  249. package/dist/d1/site.js.map +1 -0
  250. package/dist/d1/storage.d.ts +34 -0
  251. package/dist/d1/storage.d.ts.map +1 -0
  252. package/dist/d1/storage.js +288 -0
  253. package/dist/d1/storage.js.map +1 -0
  254. package/dist/d1/tz.d.ts +21 -0
  255. package/dist/d1/tz.d.ts.map +1 -0
  256. package/dist/d1/tz.js +54 -0
  257. package/dist/d1/tz.js.map +1 -0
  258. package/dist/d1/validator.d.ts +10 -0
  259. package/dist/d1/validator.d.ts.map +1 -0
  260. package/dist/d1/validator.js +33 -0
  261. package/dist/d1/validator.js.map +1 -0
  262. package/dist/mcp/apps.d.ts +43 -0
  263. package/dist/mcp/apps.d.ts.map +1 -0
  264. package/dist/mcp/apps.js +57 -0
  265. package/dist/mcp/apps.js.map +1 -0
  266. package/dist/mcp/catalog.d.ts +55 -0
  267. package/dist/mcp/catalog.d.ts.map +1 -0
  268. package/dist/mcp/catalog.js +81 -0
  269. package/dist/mcp/catalog.js.map +1 -0
  270. package/dist/mcp/createMcpSurface.d.ts +34 -0
  271. package/dist/mcp/createMcpSurface.d.ts.map +1 -0
  272. package/dist/mcp/createMcpSurface.js +150 -0
  273. package/dist/mcp/createMcpSurface.js.map +1 -0
  274. package/dist/mcp/index.d.ts +4 -0
  275. package/dist/mcp/index.d.ts.map +1 -0
  276. package/dist/mcp/index.js +4 -0
  277. package/dist/mcp/index.js.map +1 -0
  278. package/dist/postgres/adapter.d.ts +20 -0
  279. package/dist/postgres/adapter.d.ts.map +1 -0
  280. package/dist/postgres/adapter.js +44 -0
  281. package/dist/postgres/adapter.js.map +1 -0
  282. package/dist/postgres/codec.d.ts +13 -0
  283. package/dist/postgres/codec.d.ts.map +1 -0
  284. package/dist/postgres/codec.js +110 -0
  285. package/dist/postgres/codec.js.map +1 -0
  286. package/dist/postgres/compile/index.d.ts +9 -0
  287. package/dist/postgres/compile/index.d.ts.map +1 -0
  288. package/dist/postgres/compile/index.js +9 -0
  289. package/dist/postgres/compile/index.js.map +1 -0
  290. package/dist/postgres/driver.d.ts +92 -0
  291. package/dist/postgres/driver.d.ts.map +1 -0
  292. package/dist/postgres/driver.js +110 -0
  293. package/dist/postgres/driver.js.map +1 -0
  294. package/dist/postgres/executor.d.ts +20 -0
  295. package/dist/postgres/executor.d.ts.map +1 -0
  296. package/dist/postgres/executor.js +69 -0
  297. package/dist/postgres/executor.js.map +1 -0
  298. package/dist/postgres/index.d.ts +7 -0
  299. package/dist/postgres/index.d.ts.map +1 -0
  300. package/dist/postgres/index.js +7 -0
  301. package/dist/postgres/index.js.map +1 -0
  302. package/dist/postgres/lower.d.ts +6 -0
  303. package/dist/postgres/lower.d.ts.map +1 -0
  304. package/dist/postgres/lower.js +157 -0
  305. package/dist/postgres/lower.js.map +1 -0
  306. package/dist/postgres/print.d.ts +11 -0
  307. package/dist/postgres/print.d.ts.map +1 -0
  308. package/dist/postgres/print.js +121 -0
  309. package/dist/postgres/print.js.map +1 -0
  310. package/dist/postgres/storage.d.ts +19 -0
  311. package/dist/postgres/storage.d.ts.map +1 -0
  312. package/dist/postgres/storage.js +201 -0
  313. package/dist/postgres/storage.js.map +1 -0
  314. package/dist/postgres/textRows.d.ts +10 -0
  315. package/dist/postgres/textRows.d.ts.map +1 -0
  316. package/dist/postgres/textRows.js +44 -0
  317. package/dist/postgres/textRows.js.map +1 -0
  318. package/dist/postgres/validator.d.ts +12 -0
  319. package/dist/postgres/validator.d.ts.map +1 -0
  320. package/dist/postgres/validator.js +46 -0
  321. package/dist/postgres/validator.js.map +1 -0
  322. package/dist/spec/domain/index.d.ts +3 -0
  323. package/dist/spec/domain/index.d.ts.map +1 -0
  324. package/dist/spec/domain/index.js +3 -0
  325. package/dist/spec/domain/index.js.map +1 -0
  326. package/dist/spec/domain/model/ContentState.d.ts +8 -0
  327. package/dist/spec/domain/model/ContentState.d.ts.map +1 -0
  328. package/dist/spec/domain/model/ContentState.js +7 -0
  329. package/dist/spec/domain/model/ContentState.js.map +1 -0
  330. package/dist/spec/domain/model/Entry.d.ts +29 -0
  331. package/dist/spec/domain/model/Entry.d.ts.map +1 -0
  332. package/dist/spec/domain/model/Entry.js +16 -0
  333. package/dist/spec/domain/model/Entry.js.map +1 -0
  334. package/dist/spec/domain/model/Locale.d.ts +30 -0
  335. package/dist/spec/domain/model/Locale.d.ts.map +1 -0
  336. package/dist/spec/domain/model/Locale.js +33 -0
  337. package/dist/spec/domain/model/Locale.js.map +1 -0
  338. package/dist/spec/domain/model/ManifestGrammar.d.ts +452 -0
  339. package/dist/spec/domain/model/ManifestGrammar.d.ts.map +1 -0
  340. package/dist/spec/domain/model/ManifestGrammar.js +149 -0
  341. package/dist/spec/domain/model/ManifestGrammar.js.map +1 -0
  342. package/dist/spec/domain/model/MediaMimeAccept.d.ts +55 -0
  343. package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +1 -0
  344. package/dist/spec/domain/model/MediaMimeAccept.js +90 -0
  345. package/dist/spec/domain/model/MediaMimeAccept.js.map +1 -0
  346. package/dist/spec/domain/model/RuntimePlan.d.ts +94 -0
  347. package/dist/spec/domain/model/RuntimePlan.d.ts.map +1 -0
  348. package/dist/spec/domain/model/RuntimePlan.js +4 -0
  349. package/dist/spec/domain/model/RuntimePlan.js.map +1 -0
  350. package/dist/spec/domain/model/SiteConfig.d.ts +173 -0
  351. package/dist/spec/domain/model/SiteConfig.d.ts.map +1 -0
  352. package/dist/spec/domain/model/SiteConfig.js +13 -0
  353. package/dist/spec/domain/model/SiteConfig.js.map +1 -0
  354. package/dist/spec/domain/model/SqlIr.d.ts +96 -0
  355. package/dist/spec/domain/model/SqlIr.d.ts.map +1 -0
  356. package/dist/spec/domain/model/SqlIr.js +95 -0
  357. package/dist/spec/domain/model/SqlIr.js.map +1 -0
  358. package/dist/spec/domain/model/index.d.ts +14 -0
  359. package/dist/spec/domain/model/index.d.ts.map +1 -0
  360. package/dist/spec/domain/model/index.js +14 -0
  361. package/dist/spec/domain/model/index.js.map +1 -0
  362. package/dist/spec/domain/service/CloudflareCron.d.ts +2 -0
  363. package/dist/spec/domain/service/CloudflareCron.d.ts.map +1 -0
  364. package/dist/spec/domain/service/CloudflareCron.js +63 -0
  365. package/dist/spec/domain/service/CloudflareCron.js.map +1 -0
  366. package/dist/spec/domain/service/CrossSchemaChecker.d.ts +34 -0
  367. package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +1 -0
  368. package/dist/spec/domain/service/CrossSchemaChecker.js +114 -0
  369. package/dist/spec/domain/service/CrossSchemaChecker.js.map +1 -0
  370. package/dist/spec/domain/service/EntryDataValidator.d.ts +56 -0
  371. package/dist/spec/domain/service/EntryDataValidator.d.ts.map +1 -0
  372. package/dist/spec/domain/service/EntryDataValidator.js +88 -0
  373. package/dist/spec/domain/service/EntryDataValidator.js.map +1 -0
  374. package/dist/spec/domain/service/JsonSchemaToZod.d.ts +29 -0
  375. package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +1 -0
  376. package/dist/spec/domain/service/JsonSchemaToZod.js +156 -0
  377. package/dist/spec/domain/service/JsonSchemaToZod.js.map +1 -0
  378. package/dist/spec/domain/service/LifecycleStateMachine.d.ts +75 -0
  379. package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +1 -0
  380. package/dist/spec/domain/service/LifecycleStateMachine.js +76 -0
  381. package/dist/spec/domain/service/LifecycleStateMachine.js.map +1 -0
  382. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +29 -0
  383. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +1 -0
  384. package/dist/spec/domain/service/LocaleCanonicalizer.js +96 -0
  385. package/dist/spec/domain/service/LocaleCanonicalizer.js.map +1 -0
  386. package/dist/spec/domain/service/ManifestFieldChecks.d.ts +60 -0
  387. package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +1 -0
  388. package/dist/spec/domain/service/ManifestFieldChecks.js +116 -0
  389. package/dist/spec/domain/service/ManifestFieldChecks.js.map +1 -0
  390. package/dist/spec/domain/service/ManifestGraphValidator.d.ts +15 -0
  391. package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +1 -0
  392. package/dist/spec/domain/service/ManifestGraphValidator.js +225 -0
  393. package/dist/spec/domain/service/ManifestGraphValidator.js.map +1 -0
  394. package/dist/spec/domain/service/ManifestLinker.d.ts +45 -0
  395. package/dist/spec/domain/service/ManifestLinker.d.ts.map +1 -0
  396. package/dist/spec/domain/service/ManifestLinker.js +92 -0
  397. package/dist/spec/domain/service/ManifestLinker.js.map +1 -0
  398. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +16 -0
  399. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +1 -0
  400. package/dist/spec/domain/service/ManifestLocaleTrimmer.js +76 -0
  401. package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +1 -0
  402. package/dist/spec/domain/service/ManifestParser.d.ts +49 -0
  403. package/dist/spec/domain/service/ManifestParser.d.ts.map +1 -0
  404. package/dist/spec/domain/service/ManifestParser.js +203 -0
  405. package/dist/spec/domain/service/ManifestParser.js.map +1 -0
  406. package/dist/spec/domain/service/ManifestPartition.d.ts +9 -0
  407. package/dist/spec/domain/service/ManifestPartition.d.ts.map +1 -0
  408. package/dist/spec/domain/service/ManifestPartition.js +19 -0
  409. package/dist/spec/domain/service/ManifestPartition.js.map +1 -0
  410. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +33 -0
  411. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +1 -0
  412. package/dist/spec/domain/service/ManifestPathDiagnoser.js +43 -0
  413. package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +1 -0
  414. package/dist/spec/domain/service/ManifestSourceSpans.d.ts +10 -0
  415. package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +1 -0
  416. package/dist/spec/domain/service/ManifestSourceSpans.js +76 -0
  417. package/dist/spec/domain/service/ManifestSourceSpans.js.map +1 -0
  418. package/dist/spec/domain/service/McpToolNaming.d.ts +25 -0
  419. package/dist/spec/domain/service/McpToolNaming.d.ts.map +1 -0
  420. package/dist/spec/domain/service/McpToolNaming.js +50 -0
  421. package/dist/spec/domain/service/McpToolNaming.js.map +1 -0
  422. package/dist/spec/domain/service/PlanFingerprint.d.ts +4 -0
  423. package/dist/spec/domain/service/PlanFingerprint.d.ts.map +1 -0
  424. package/dist/spec/domain/service/PlanFingerprint.js +14 -0
  425. package/dist/spec/domain/service/PlanFingerprint.js.map +1 -0
  426. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +4 -0
  427. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +1 -0
  428. package/dist/spec/domain/service/ProcedureViewSpecChecks.js +211 -0
  429. package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +1 -0
  430. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +42 -0
  431. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +1 -0
  432. package/dist/spec/domain/service/SchemaAdminUiChecker.js +289 -0
  433. package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +1 -0
  434. package/dist/spec/domain/service/SchemaIndexChecker.d.ts +33 -0
  435. package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +1 -0
  436. package/dist/spec/domain/service/SchemaIndexChecker.js +256 -0
  437. package/dist/spec/domain/service/SchemaIndexChecker.js.map +1 -0
  438. package/dist/spec/domain/service/SchemaSearchChecker.d.ts +11 -0
  439. package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +1 -0
  440. package/dist/spec/domain/service/SchemaSearchChecker.js +78 -0
  441. package/dist/spec/domain/service/SchemaSearchChecker.js.map +1 -0
  442. package/dist/spec/domain/service/SchemaSpecChecks.d.ts +31 -0
  443. package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +1 -0
  444. package/dist/spec/domain/service/SchemaSpecChecks.js +445 -0
  445. package/dist/spec/domain/service/SchemaSpecChecks.js.map +1 -0
  446. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +39 -0
  447. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +1 -0
  448. package/dist/spec/domain/service/SiteDefaultsValidator.js +194 -0
  449. package/dist/spec/domain/service/SiteDefaultsValidator.js.map +1 -0
  450. package/dist/spec/domain/service/SqlClassify.d.ts +19 -0
  451. package/dist/spec/domain/service/SqlClassify.d.ts.map +1 -0
  452. package/dist/spec/domain/service/SqlClassify.js +42 -0
  453. package/dist/spec/domain/service/SqlClassify.js.map +1 -0
  454. package/dist/spec/domain/service/SqlRefusal.d.ts +16 -0
  455. package/dist/spec/domain/service/SqlRefusal.d.ts.map +1 -0
  456. package/dist/spec/domain/service/SqlRefusal.js +20 -0
  457. package/dist/spec/domain/service/SqlRefusal.js.map +1 -0
  458. package/dist/spec/domain/service/SqlTypes.d.ts +40 -0
  459. package/dist/spec/domain/service/SqlTypes.d.ts.map +1 -0
  460. package/dist/spec/domain/service/SqlTypes.js +110 -0
  461. package/dist/spec/domain/service/SqlTypes.js.map +1 -0
  462. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +3 -0
  463. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +1 -0
  464. package/dist/spec/domain/service/StaffRoleHierarchy.js +19 -0
  465. package/dist/spec/domain/service/StaffRoleHierarchy.js.map +1 -0
  466. package/dist/spec/domain/service/TriggerGraphChecks.d.ts +16 -0
  467. package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +1 -0
  468. package/dist/spec/domain/service/TriggerGraphChecks.js +337 -0
  469. package/dist/spec/domain/service/TriggerGraphChecks.js.map +1 -0
  470. package/dist/spec/domain/service/TriggerSpecChecks.d.ts +4 -0
  471. package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +1 -0
  472. package/dist/spec/domain/service/TriggerSpecChecks.js +89 -0
  473. package/dist/spec/domain/service/TriggerSpecChecks.js.map +1 -0
  474. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +11 -0
  475. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +1 -0
  476. package/dist/spec/domain/service/ValidatedAdminUiProjection.js +26 -0
  477. package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +1 -0
  478. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +14 -0
  479. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +1 -0
  480. package/dist/spec/domain/service/ViewAdminUiChecker.js +53 -0
  481. package/dist/spec/domain/service/ViewAdminUiChecker.js.map +1 -0
  482. package/dist/spec/domain/service/index.d.ts +24 -0
  483. package/dist/spec/domain/service/index.d.ts.map +1 -0
  484. package/dist/spec/domain/service/index.js +24 -0
  485. package/dist/spec/domain/service/index.js.map +1 -0
  486. package/dist/spec/index.d.ts +10 -0
  487. package/dist/spec/index.d.ts.map +1 -0
  488. package/dist/spec/index.js +12 -0
  489. package/dist/spec/index.js.map +1 -0
  490. package/dist/spec/infrastructure/cli/parseArgsError.d.ts +16 -0
  491. package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +1 -0
  492. package/dist/spec/infrastructure/cli/parseArgsError.js +34 -0
  493. package/dist/spec/infrastructure/cli/parseArgsError.js.map +1 -0
  494. package/dist/spec/infrastructure/index.d.ts +2 -0
  495. package/dist/spec/infrastructure/index.d.ts.map +1 -0
  496. package/dist/spec/infrastructure/index.js +2 -0
  497. package/dist/spec/infrastructure/index.js.map +1 -0
  498. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +18 -0
  499. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +1 -0
  500. package/dist/spec/infrastructure/sql/PgQueryParser.js +17 -0
  501. package/dist/spec/infrastructure/sql/PgQueryParser.js.map +1 -0
  502. package/dist/spec/infrastructure/sql/compilePlan.d.ts +37 -0
  503. package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +1 -0
  504. package/dist/spec/infrastructure/sql/compilePlan.js +282 -0
  505. package/dist/spec/infrastructure/sql/compilePlan.js.map +1 -0
  506. package/dist/spec/infrastructure/sql/compileSql.d.ts +35 -0
  507. package/dist/spec/infrastructure/sql/compileSql.d.ts.map +1 -0
  508. package/dist/spec/infrastructure/sql/compileSql.js +92 -0
  509. package/dist/spec/infrastructure/sql/compileSql.js.map +1 -0
  510. package/dist/spec/infrastructure/sql/frontEnd.d.ts +8 -0
  511. package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +1 -0
  512. package/dist/spec/infrastructure/sql/frontEnd.js +100 -0
  513. package/dist/spec/infrastructure/sql/frontEnd.js.map +1 -0
  514. package/dist/spec/infrastructure/sql/index.d.ts +4 -0
  515. package/dist/spec/infrastructure/sql/index.d.ts.map +1 -0
  516. package/dist/spec/infrastructure/sql/index.js +4 -0
  517. package/dist/spec/infrastructure/sql/index.js.map +1 -0
  518. package/dist/spec/kernel/diagnostic.d.ts +137 -0
  519. package/dist/spec/kernel/diagnostic.d.ts.map +1 -0
  520. package/dist/spec/kernel/diagnostic.js +296 -0
  521. package/dist/spec/kernel/diagnostic.js.map +1 -0
  522. package/dist/spec/kernel/index.d.ts +8 -0
  523. package/dist/spec/kernel/index.d.ts.map +1 -0
  524. package/dist/spec/kernel/index.js +8 -0
  525. package/dist/spec/kernel/index.js.map +1 -0
  526. package/dist/spec/usecase/EmitTypes.d.ts +22 -0
  527. package/dist/spec/usecase/EmitTypes.d.ts.map +1 -0
  528. package/dist/spec/usecase/EmitTypes.js +182 -0
  529. package/dist/spec/usecase/EmitTypes.js.map +1 -0
  530. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +8 -0
  531. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +1 -0
  532. package/dist/spec/usecase/ValidateManifestsUseCase.js +101 -0
  533. package/dist/spec/usecase/ValidateManifestsUseCase.js.map +1 -0
  534. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +27 -0
  535. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +1 -0
  536. package/dist/spec/usecase/dto/ValidateManifestsRequest.js +2 -0
  537. package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +1 -0
  538. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +14 -0
  539. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +1 -0
  540. package/dist/spec/usecase/dto/ValidateManifestsResponse.js +2 -0
  541. package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +1 -0
  542. package/dist/spec/usecase/dto/index.d.ts +3 -0
  543. package/dist/spec/usecase/dto/index.d.ts.map +1 -0
  544. package/dist/spec/usecase/dto/index.js +3 -0
  545. package/dist/spec/usecase/dto/index.js.map +1 -0
  546. package/dist/spec/usecase/index.d.ts +10 -0
  547. package/dist/spec/usecase/index.d.ts.map +1 -0
  548. package/dist/spec/usecase/index.js +10 -0
  549. package/dist/spec/usecase/index.js.map +1 -0
  550. package/dist/testing/cases/before-hook.d.ts +4 -0
  551. package/dist/testing/cases/before-hook.d.ts.map +1 -0
  552. package/dist/testing/cases/before-hook.js +71 -0
  553. package/dist/testing/cases/before-hook.js.map +1 -0
  554. package/dist/testing/cases/corpus.d.ts +12 -0
  555. package/dist/testing/cases/corpus.d.ts.map +1 -0
  556. package/dist/testing/cases/corpus.js +91 -0
  557. package/dist/testing/cases/corpus.js.map +1 -0
  558. package/dist/testing/cases/policy.d.ts +74 -0
  559. package/dist/testing/cases/policy.d.ts.map +1 -0
  560. package/dist/testing/cases/policy.js +142 -0
  561. package/dist/testing/cases/policy.js.map +1 -0
  562. package/dist/testing/cases/printer.d.ts +4 -0
  563. package/dist/testing/cases/printer.d.ts.map +1 -0
  564. package/dist/testing/cases/printer.js +32 -0
  565. package/dist/testing/cases/printer.js.map +1 -0
  566. package/dist/testing/cases/report-view.d.ts +5 -0
  567. package/dist/testing/cases/report-view.d.ts.map +1 -0
  568. package/dist/testing/cases/report-view.js +33 -0
  569. package/dist/testing/cases/report-view.js.map +1 -0
  570. package/dist/testing/cases/requisition.d.ts +4 -0
  571. package/dist/testing/cases/requisition.d.ts.map +1 -0
  572. package/dist/testing/cases/requisition.js +38 -0
  573. package/dist/testing/cases/requisition.js.map +1 -0
  574. package/dist/testing/cases/search-places.d.ts +4 -0
  575. package/dist/testing/cases/search-places.d.ts.map +1 -0
  576. package/dist/testing/cases/search-places.js +60 -0
  577. package/dist/testing/cases/search-places.js.map +1 -0
  578. package/dist/testing/cases/stock.d.ts +4 -0
  579. package/dist/testing/cases/stock.d.ts.map +1 -0
  580. package/dist/testing/cases/stock.js +35 -0
  581. package/dist/testing/cases/stock.js.map +1 -0
  582. package/dist/testing/cases/store.d.ts +4 -0
  583. package/dist/testing/cases/store.d.ts.map +1 -0
  584. package/dist/testing/cases/store.js +100 -0
  585. package/dist/testing/cases/store.js.map +1 -0
  586. package/dist/testing/harness.d.ts +94 -0
  587. package/dist/testing/harness.d.ts.map +1 -0
  588. package/dist/testing/harness.js +168 -0
  589. package/dist/testing/harness.js.map +1 -0
  590. package/dist/testing/index.d.ts +37 -0
  591. package/dist/testing/index.d.ts.map +1 -0
  592. package/dist/testing/index.js +43 -0
  593. package/dist/testing/index.js.map +1 -0
  594. package/dist/testing/report.d.ts +15 -0
  595. package/dist/testing/report.d.ts.map +1 -0
  596. package/dist/testing/report.js +22 -0
  597. package/dist/testing/report.js.map +1 -0
  598. package/dist/web/createRestSurface.d.ts +7 -0
  599. package/dist/web/createRestSurface.d.ts.map +1 -0
  600. package/dist/web/createRestSurface.js +39 -0
  601. package/dist/web/createRestSurface.js.map +1 -0
  602. package/dist/web/index.d.ts +2 -0
  603. package/dist/web/index.d.ts.map +1 -0
  604. package/dist/web/index.js +2 -0
  605. package/dist/web/index.js.map +1 -0
  606. package/docs/adr/0008-structured-diagnostic-shape.md +2 -2
  607. package/docs/adr/0011-adapter-port-spec.md +2 -2
  608. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +21 -2
  609. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +5 -1
  610. package/docs/adr/0022-caller-observed-version-occ.md +1 -1
  611. package/docs/adr/0024-manifest-native-schema-tables.md +2 -2
  612. package/docs/adr/0027-scheduled-procedure-triggers.md +1 -1
  613. package/docs/adr/0028-schema-ttl-expiry.md +3 -3
  614. package/docs/adr/0029-mcp-apps-interaction-contracts.md +324 -0
  615. package/docs/adr/0030-store.md +40 -0
  616. package/docs/adr/0031-host-cloud-core-contract.md +25 -0
  617. package/docs/adr/0032-store-centric-core-and-service-contract.md +361 -0
  618. package/docs/adr/0033-storage-converges-to-the-plan.md +92 -0
  619. package/docs/adr/0034-store-is-authored-as-sql.md +192 -0
  620. package/docs/adr/0035-sql-dialects.md +154 -0
  621. package/docs/adr/0036-host-and-dialect.md +65 -0
  622. package/docs/adr/0037-postgresql-is-the-reference-dialect.md +124 -0
  623. package/docs/adr/0038-bun-native-host.md +63 -0
  624. package/docs/adr/README.md +23 -8
  625. package/docs/adr/adr-lite-861-admin-webmcp.md +6 -0
  626. package/docs/adr/adr-lite-909-admin-ui-kit.md +1 -1
  627. package/docs/examples/README.md +16 -18
  628. package/docs/examples/commerce-inventory.md +481 -0
  629. package/docs/examples/commerce.md +254 -0
  630. package/docs/examples/guarded-api.md +238 -0
  631. package/docs/examples/intake-hooks.md +237 -0
  632. package/docs/examples/intake.md +127 -0
  633. package/docs/examples/legal-documents.md +218 -0
  634. package/docs/examples/procurement.md +215 -0
  635. package/docs/examples/publication.md +211 -0
  636. package/docs/examples/reference-service/.dev.vars.example +4 -0
  637. package/docs/examples/reference-service/.mantle/generated/mantle.ts +174 -0
  638. package/docs/examples/reference-service/.mantle/generated/plan.json +1936 -0
  639. package/docs/examples/reference-service/README.md +33 -0
  640. package/docs/examples/reference-service/manifests/catalog.yaml +103 -0
  641. package/docs/examples/reference-service/manifests/orders.yaml +120 -0
  642. package/docs/examples/reference-service/mantle.config.json +1 -0
  643. package/docs/examples/reference-service/package.json +27 -0
  644. package/docs/examples/reference-service/smoke.mjs +156 -0
  645. package/docs/examples/reference-service/src/handlers.ts +36 -0
  646. package/docs/examples/reference-service/src/index.ts +33 -0
  647. package/docs/examples/reference-service/src/service.ts +78 -0
  648. package/docs/examples/{host-minimal-worker → reference-service}/tsconfig.json +7 -2
  649. package/docs/examples/reference-service/wrangler.jsonc +26 -0
  650. package/docs/examples/reservation.md +142 -0
  651. package/docs/handbook/cloudflare/authentication.md +96 -316
  652. package/docs/handbook/cloudflare/chatgpt-sites.md +104 -15
  653. package/docs/handbook/cloudflare/deploy-and-operate.md +77 -71
  654. package/docs/handbook/cloudflare/media-r2.md +64 -187
  655. package/docs/handbook/cloudflare/service-entry.md +138 -0
  656. package/docs/handbook/concepts/authorization.md +104 -94
  657. package/docs/handbook/concepts/four-atoms.md +68 -144
  658. package/docs/handbook/concepts/lifecycle-and-locales.md +62 -114
  659. package/docs/handbook/concepts/mcp-and-agents.md +112 -117
  660. package/docs/handbook/concepts/procedures-and-triggers.md +126 -181
  661. package/docs/handbook/concepts/runtime-and-adapters.md +177 -163
  662. package/docs/handbook/concepts/views.md +97 -173
  663. package/docs/handbook/examples/hub.md +17 -6
  664. package/docs/handbook/guides/admin-ui.md +101 -96
  665. package/docs/handbook/guides/agent-setup.md +56 -71
  666. package/docs/handbook/guides/typed-queries.md +105 -111
  667. package/docs/handbook/navigation.json +8 -33
  668. package/docs/handbook/reference/authorization.md +52 -271
  669. package/docs/handbook/reference/diagnostics.md +69 -178
  670. package/docs/handbook/reference/features.md +48 -50
  671. package/docs/handbook/reference/manifest.md +56 -116
  672. package/docs/handbook/reference/procedure.md +91 -279
  673. package/docs/handbook/reference/schema.md +154 -239
  674. package/docs/handbook/reference/site-config.md +58 -211
  675. package/docs/handbook/reference/surface.md +69 -181
  676. package/docs/handbook/reference/trigger.md +72 -181
  677. package/docs/handbook/reference/view.md +140 -241
  678. package/docs/handbook/releases/index.md +58 -77
  679. package/docs/handbook/start/overview.md +59 -51
  680. package/docs/handbook/start/project-and-cli.md +132 -105
  681. package/docs/handbook/start/quickstart-worker.md +102 -160
  682. package/docs/skills/develop/SKILL.md +114 -240
  683. package/docs/skills/develop/mcp-app.md +79 -0
  684. package/docs/skills/integrate/SKILL.md +83 -47
  685. package/docs/skills/media-gc/SKILL.md +21 -10
  686. package/docs/skills/provision/SKILL.md +68 -162
  687. package/docs/skills/update/SKILL.md +33 -34
  688. package/docs/upgrade-0.1-to-0.2.md +211 -0
  689. package/package.json +87 -106
  690. package/dist/admin-ui.d.ts +0 -2
  691. package/dist/admin-ui.d.ts.map +0 -1
  692. package/dist/admin-ui.js +0 -2
  693. package/dist/admin-ui.js.map +0 -1
  694. package/dist/admin.d.ts +0 -2
  695. package/dist/admin.d.ts.map +0 -1
  696. package/dist/admin.js +0 -2
  697. package/dist/admin.js.map +0 -1
  698. package/dist/auth.d.ts +0 -2
  699. package/dist/auth.d.ts.map +0 -1
  700. package/dist/auth.js +0 -2
  701. package/dist/auth.js.map +0 -1
  702. package/dist/bun.d.ts +0 -2
  703. package/dist/bun.d.ts.map +0 -1
  704. package/dist/bun.js +0 -2
  705. package/dist/bun.js.map +0 -1
  706. package/dist/cli/generate-cloudflare.d.ts +0 -7
  707. package/dist/cli/generate-cloudflare.d.ts.map +0 -1
  708. package/dist/cli/generate-cloudflare.js +0 -123
  709. package/dist/cli/generate-cloudflare.js.map +0 -1
  710. package/dist/cli/generate-project.d.ts +0 -25
  711. package/dist/cli/generate-project.d.ts.map +0 -1
  712. package/dist/cli/generate-project.js +0 -282
  713. package/dist/cli/generate-project.js.map +0 -1
  714. package/dist/cli/generate-sites.d.ts +0 -8
  715. package/dist/cli/generate-sites.d.ts.map +0 -1
  716. package/dist/cli/generate-sites.js +0 -273
  717. package/dist/cli/generate-sites.js.map +0 -1
  718. package/dist/cli/harness.d.ts +0 -3
  719. package/dist/cli/harness.d.ts.map +0 -1
  720. package/dist/cli/harness.js +0 -214
  721. package/dist/cli/harness.js.map +0 -1
  722. package/dist/cli/skills.d.ts +0 -3
  723. package/dist/cli/skills.d.ts.map +0 -1
  724. package/dist/cli/skills.js +0 -128
  725. package/dist/cli/skills.js.map +0 -1
  726. package/dist/cloudflare.d.ts +0 -2
  727. package/dist/cloudflare.d.ts.map +0 -1
  728. package/dist/cloudflare.js +0 -2
  729. package/dist/cloudflare.js.map +0 -1
  730. package/dist/codegen/emitMantleModule.d.ts +0 -22
  731. package/dist/codegen/emitMantleModule.d.ts.map +0 -1
  732. package/dist/codegen/emitMantleModule.js +0 -291
  733. package/dist/codegen/emitMantleModule.js.map +0 -1
  734. package/dist/codegen.d.ts +0 -2
  735. package/dist/codegen.d.ts.map +0 -1
  736. package/dist/codegen.js +0 -2
  737. package/dist/codegen.js.map +0 -1
  738. package/dist/runtime-testing.d.ts +0 -2
  739. package/dist/runtime-testing.d.ts.map +0 -1
  740. package/dist/runtime-testing.js +0 -2
  741. package/dist/runtime-testing.js.map +0 -1
  742. package/dist/runtime.d.ts +0 -2
  743. package/dist/runtime.d.ts.map +0 -1
  744. package/dist/runtime.js +0 -2
  745. package/dist/runtime.js.map +0 -1
  746. package/dist/spec.d.ts +0 -2
  747. package/dist/spec.d.ts.map +0 -1
  748. package/dist/spec.js +0 -2
  749. package/dist/spec.js.map +0 -1
  750. package/dist/vercel-libsql.d.ts +0 -2
  751. package/dist/vercel-libsql.d.ts.map +0 -1
  752. package/dist/vercel-libsql.js +0 -2
  753. package/dist/vercel-libsql.js.map +0 -1
  754. package/dist/vercel.d.ts +0 -2
  755. package/dist/vercel.d.ts.map +0 -1
  756. package/dist/vercel.js +0 -2
  757. package/dist/vercel.js.map +0 -1
  758. package/dist/web.d.ts +0 -2
  759. package/dist/web.d.ts.map +0 -1
  760. package/dist/web.js +0 -2
  761. package/dist/web.js.map +0 -1
  762. package/docs/adapter-guide.md +0 -222
  763. package/docs/agent-prompts.md +0 -64
  764. package/docs/api-mcp-authorization.md +0 -5
  765. package/docs/assets/mantle-admin-developer.png +0 -0
  766. package/docs/assets/mantle-admin-operations.png +0 -0
  767. package/docs/assets/mantle-hero.jpg +0 -0
  768. package/docs/auth-hosting-model.md +0 -166
  769. package/docs/cloudflare-low-level-composition.md +0 -5
  770. package/docs/consumer-onboarding-audit.md +0 -65
  771. package/docs/deferred-lifecycle-queues.md +0 -5
  772. package/docs/design-atoms.md +0 -16
  773. package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
  774. package/docs/direct-authoring.md +0 -5
  775. package/docs/examples/builtin-commerce.md +0 -269
  776. package/docs/examples/builtin-intake.md +0 -143
  777. package/docs/examples/builtin-legal-documents.md +0 -189
  778. package/docs/examples/builtin-procurement.md +0 -241
  779. package/docs/examples/builtin-publication.md +0 -241
  780. package/docs/examples/builtin-reservation.md +0 -149
  781. package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
  782. package/docs/examples/cf-primitives-guarded-api.md +0 -429
  783. package/docs/examples/cf-primitives-intake-hooks.md +0 -319
  784. package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
  785. package/docs/examples/host-chatgpt-sites/README.md +0 -70
  786. package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
  787. package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
  788. package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
  789. package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
  790. package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
  791. package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
  792. package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
  793. package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
  794. package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
  795. package/docs/examples/host-chatgpt-sites/package.json +0 -1
  796. package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
  797. package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
  798. package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
  799. package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
  800. package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
  801. package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
  802. package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
  803. package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
  804. package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
  805. package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
  806. package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
  807. package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
  808. package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
  809. package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
  810. package/docs/examples/host-local-admin-otp/README.md +0 -80
  811. package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
  812. package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
  813. package/docs/examples/host-local-admin-otp/package.json +0 -29
  814. package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
  815. package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
  816. package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
  817. package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
  818. package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
  819. package/docs/examples/host-minimal-worker/README.md +0 -41
  820. package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
  821. package/docs/examples/host-minimal-worker/package.json +0 -26
  822. package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
  823. package/docs/examples/host-minimal-worker/src/index.ts +0 -4
  824. package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
  825. package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
  826. package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
  827. package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
  828. package/docs/handbook/chatgpt-sites/index.md +0 -133
  829. package/docs/handbook/cloudflare/bindings.md +0 -291
  830. package/docs/handbook/cloudflare/conventional-worker.md +0 -166
  831. package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
  832. package/docs/handbook/cloudflare/low-level-composition.md +0 -169
  833. package/docs/handbook/cloudflare/public-web.md +0 -144
  834. package/docs/handbook/cloudflare/site-chrome.md +0 -75
  835. package/docs/handbook/examples/commerce-transaction.md +0 -11
  836. package/docs/handbook/examples/commerce.md +0 -11
  837. package/docs/handbook/examples/guarded-api.md +0 -10
  838. package/docs/handbook/examples/intake-form.md +0 -12
  839. package/docs/handbook/examples/intake-hooks.md +0 -11
  840. package/docs/handbook/examples/legal-documents.md +0 -10
  841. package/docs/handbook/examples/procurement-approvals.md +0 -10
  842. package/docs/handbook/examples/publication.md +0 -10
  843. package/docs/handbook/examples/reservation.md +0 -10
  844. package/docs/handbook/start/quickstart-admin.md +0 -52
  845. package/docs/labels.md +0 -71
  846. package/docs/media-uploads.md +0 -5
  847. package/docs/migration-0.1.2.md +0 -13
  848. package/docs/performance-harness.md +0 -228
  849. package/docs/release-process.md +0 -244
  850. package/docs/schema-indexes.md +0 -5
  851. package/docs/sealed-pipeline-ownership.md +0 -101
  852. package/docs/skills/plugin/SKILL.md +0 -132
  853. package/docs/skills/theme/SKILL.md +0 -77
  854. package/docs/spec-only-host-adoption.md +0 -157
  855. package/docs/transaction-patterns.md +0 -5
  856. package/skills/README.md +0 -127
  857. package/skills/develop/SKILL.md +0 -258
  858. package/skills/install/SKILL.md +0 -112
  859. package/skills/integrate/SKILL.md +0 -60
  860. package/skills/media-gc/SKILL.md +0 -85
  861. package/skills/plugin/SKILL.md +0 -132
  862. package/skills/provision/SKILL.md +0 -194
  863. package/skills/theme/SKILL.md +0 -77
  864. package/skills/update/SKILL.md +0 -51
  865. package/templates/chatgpt-sites/auth.ts +0 -66
  866. package/templates/chatgpt-sites/build.mjs +0 -14
  867. package/templates/chatgpt-sites/env.ts +0 -1
  868. package/templates/chatgpt-sites/mcp.ts +0 -48
  869. package/templates/chatgpt-sites/public-mcp.ts +0 -29
  870. package/templates/chatgpt-sites/smoke-local.mjs +0 -20
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Store: the only path to Mantle-owned entry storage (ADR-0032 decision 1, ADR-0034).
3
+ * `select` and `write` keep ADR-0030's JSON shape; the runtime turns it into the same SQL IR
4
+ * as a manifest's SQL, injects scope, TTL, published-only and OCC, then hands it to a StoreExecutor.
5
+ */
6
+ import type { SqlNode } from "../spec/domain/index.js";
7
+ import type { Caller } from "./caller.js";
8
+ import type { InvocationCause } from "./invocation.js";
9
+ export type StoreScalar = string | number | boolean | null;
10
+ /** `{ select, from, where }`, allowed only as the right side of `in` / `notIn`. */
11
+ export interface StoreSubquery {
12
+ readonly select: string;
13
+ readonly from: string;
14
+ readonly where?: StoreWhere;
15
+ }
16
+ export interface StoreComparison {
17
+ readonly eq?: StoreScalar;
18
+ readonly ne?: StoreScalar;
19
+ readonly gt?: string | number;
20
+ readonly gte?: string | number;
21
+ readonly lt?: string | number;
22
+ readonly lte?: string | number;
23
+ readonly like?: string;
24
+ readonly in?: readonly StoreScalar[] | StoreSubquery;
25
+ readonly notIn?: readonly StoreScalar[] | StoreSubquery;
26
+ readonly isNull?: boolean;
27
+ }
28
+ /** `{ column: value }` is equality and sibling keys are AND; `and` / `or` take non-empty arrays, `not` one condition. */
29
+ export interface StoreWhere {
30
+ readonly and?: readonly StoreWhere[];
31
+ readonly or?: readonly StoreWhere[];
32
+ readonly not?: StoreWhere;
33
+ readonly [column: string]: StoreScalar | StoreComparison | StoreWhere | readonly StoreWhere[] | undefined;
34
+ }
35
+ export interface StoreSelect {
36
+ readonly from: string;
37
+ /** Projection; omitted returns native columns plus every Schema field. */
38
+ readonly columns?: readonly string[];
39
+ readonly where?: StoreWhere;
40
+ /** At most one column; `id` breaks ties. Defaults to `{ updatedAt: "desc" }`. */
41
+ readonly orderBy?: Readonly<Record<string, "asc" | "desc">>;
42
+ /** Default 50, maximum 500. */
43
+ readonly limit?: number;
44
+ /** One opaque, versioned format bound to `from` and `orderBy` (ADR-0032 decision 1). */
45
+ readonly cursor?: string;
46
+ /** Rows whose declared `searchableFields` contain this text, or whose `id` is it (ADR-0035 decision 7). Ordering stays `orderBy`. */
47
+ readonly search?: string;
48
+ }
49
+ /** How `store.view` runs a View. `search` and `filters` match only the outputs the View's `uiSchema.list.searchFields` and `filterFields` name (ADR-0032 decision 5). */
50
+ export interface StoreViewOptions {
51
+ readonly input?: Readonly<Record<string, unknown>>;
52
+ readonly limit?: number;
53
+ readonly cursor?: string;
54
+ /** Text an output in `searchFields` contains (case-insensitive `LIKE`). */
55
+ readonly search?: string;
56
+ /** Output name to the value it equals; each name is one of `filterFields`. */
57
+ readonly filters?: Readonly<Record<string, StoreScalar>>;
58
+ }
59
+ /** A flat row: native columns next to Schema fields. */
60
+ export type StoreRow = Readonly<Record<string, unknown>>;
61
+ export interface StoreSelectResult<R = StoreRow> {
62
+ readonly rows: readonly R[];
63
+ readonly nextCursor?: string;
64
+ }
65
+ /** Creates one entry through Schema validation, defaults and hooks; one row of VALUES is a row op. */
66
+ export interface StoreInsert {
67
+ readonly insert: string;
68
+ readonly values: Readonly<Record<string, unknown>>;
69
+ /** Client-generated id (see `store.id()`); omitted generates one. */
70
+ readonly id?: string;
71
+ /** An insert ignored or merged by `onConflict` is a set op and returns `{ affected }`. */
72
+ readonly onConflict?: "ignore" | {
73
+ readonly columns: readonly string[];
74
+ readonly update: Readonly<Record<string, unknown>>;
75
+ };
76
+ }
77
+ /** Row op when `where` pins `id` (may carry `lock`), set op otherwise (ADR-0032 decision 2, ADR-0034 decision 4). */
78
+ export interface StoreUpdate {
79
+ readonly update: string;
80
+ readonly set: Readonly<Record<string, unknown>>;
81
+ readonly where: StoreWhere;
82
+ /** Caller-observed version; becomes a version predicate plus `expect: 1`. */
83
+ readonly lock?: number;
84
+ /** Fail the whole write unless exactly this many rows were affected. */
85
+ readonly expect?: number;
86
+ }
87
+ export interface StoreDelete {
88
+ readonly delete: string;
89
+ readonly where: StoreWhere;
90
+ readonly lock?: number;
91
+ readonly expect?: number;
92
+ }
93
+ export type StoreWriteOp = StoreInsert | StoreUpdate | StoreDelete;
94
+ export type StoreWriteResult = {
95
+ readonly id: string;
96
+ readonly version: number;
97
+ } | {
98
+ readonly affected: number;
99
+ };
100
+ export interface SweepExpiredRequest {
101
+ readonly collection: string;
102
+ readonly limit?: number;
103
+ readonly cursor?: string;
104
+ /** false counts without deleting. */
105
+ readonly delete?: boolean;
106
+ }
107
+ export interface SweepExpiredResult {
108
+ readonly scanned: number;
109
+ readonly removed: number;
110
+ readonly nextCursor?: string;
111
+ }
112
+ /**
113
+ * Host-level Store: no caller scope, TTL visibility still applies. Failures throw `DiagnosticError`:
114
+ * `INPUT_VALIDATION_FAILED`, `CONFLICT` (with `conflict.reason` and an exact `opIndex`; nothing is written),
115
+ * `RESOURCE_UNAVAILABLE`, `OUTCOME_UNKNOWN`.
116
+ */
117
+ export interface MantleStore {
118
+ /** Bind to one request's caller; scope follows the caller. `cause` is the invocation being served, so hooks the Store fires chain to it. */
119
+ as(caller: Caller, cause?: InvocationCause): CallerStore;
120
+ select(query: StoreSelect): Promise<StoreSelectResult>;
121
+ /** Apply every operation or none, in order, as one storage transaction. Results follow operation order. */
122
+ write(ops: readonly StoreWriteOp[]): Promise<readonly StoreWriteResult[]>;
123
+ /** Run a named View as REST and MCP would. `input` is the View's declared `input`. */
124
+ view<R = StoreRow>(name: string, options?: StoreViewOptions): Promise<StoreSelectResult<R>>;
125
+ /** Host-only maintenance; the only path that sees expired rows. */
126
+ sweepExpired(request: SweepExpiredRequest): Promise<SweepExpiredResult>;
127
+ /** A new entry id from the runtime's id generator. */
128
+ id(): string;
129
+ }
130
+ /**
131
+ * Procedure-facing Store. Guard Procedures and before hooks get one whose `write` fails. `sweepExpired` is present only
132
+ * for the system caller (a schedule Trigger's handler, host code): it is the one path that sees expired rows.
133
+ */
134
+ export type CallerStore = Omit<MantleStore, "as" | "sweepExpired"> & {
135
+ readonly sweepExpired?: MantleStore["sweepExpired"];
136
+ };
137
+ /** One compiled statement: validated IR with policy already injected, and numbered binds `?1`, `?2`. */
138
+ export interface StoreStatement {
139
+ readonly ir: SqlNode;
140
+ readonly binds: readonly unknown[];
141
+ /** Checked inside the batch with `changes()`; a mismatch is `CONFLICT` naming this statement. */
142
+ readonly expect?: number;
143
+ }
144
+ /** What one applied statement did. `rows` are its RETURNING rows, hidden `_mantle_id` / `_mantle_version` included. */
145
+ export interface StoreApplied {
146
+ readonly affected: number;
147
+ readonly rows: readonly StoreRow[];
148
+ }
149
+ /**
150
+ * The storage port. Each dialect has one; D1's is SqliteStoreExecutor over a DatabaseDriver (ADR-0035 decision 6).
151
+ * It runs whatever its dialect accepted, so there are no capability flags.
152
+ */
153
+ export interface StoreExecutor {
154
+ /** Bind limit per statement, read by the one Core validator (100 on D1). */
155
+ readonly maxBindings: number;
156
+ select(statement: StoreStatement): Promise<readonly StoreRow[]>;
157
+ /** All or nothing, in order. A failure throws `DiagnosticError` and applies nothing. */
158
+ apply(batch: readonly StoreStatement[]): Promise<readonly StoreApplied[]>;
159
+ }
160
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/core/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/core/store.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ /** HTTP plumbing shared by the REST and Admin surfaces: path matching, query coercion, JSON bodies and the error envelope. Not a public name. */
2
+ import { DiagnosticError, type Diagnostic } from "../spec/kernel/index.js";
3
+ import type { JsonSchema, PlanView } from "../spec/domain/index.js";
4
+ export declare const wireError: (code: Diagnostic["code"], message: string, path: string) => DiagnosticError;
5
+ /** Query and path text to the declared JSON type; anything else stays a string. */
6
+ export declare function coerce(raw: string, schema: JsonSchema | undefined, name: string, path: string): unknown;
7
+ /** `/items/{id}` against a request path, or null. Segments are decoded once; a malformed escape is a routing miss. */
8
+ export declare function match(template: string, path: string): Record<string, string> | null;
9
+ /** A View's declared input, `limit` and `cursor` from a query string, as `store.view` takes them. */
10
+ export declare function viewQuery(name: string, v: PlanView, query: URLSearchParams, path: string): {
11
+ input: Record<string, unknown>;
12
+ limit?: number;
13
+ cursor?: string;
14
+ };
15
+ /** The request body as a JSON object; no body is `{}`. */
16
+ export declare function readJsonObject(request: Request, path: string): Promise<Record<string, unknown>>;
17
+ export declare const json: (body: unknown, status?: number, headers?: Record<string, string>) => Response;
18
+ /** A DiagnosticError answers with its own status; anything else is logged and never leaks. */
19
+ export declare function failure(e: unknown, surface: string, headers?: Record<string, string>): Response;
20
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../src/core/wire.ts"],"names":[],"mappings":"AAAA,iJAAiJ;AACjJ,OAAO,EAAE,eAAe,EAAgD,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACzH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEpE,eAAO,MAAM,SAAS,GAAI,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,MAAM,MAAM,oBAAsG,CAAC;AAExL,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYvG;AAED,sHAAsH;AACtH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAanF;AAED,qGAAqG;AACrG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAU9J;AAID,0DAA0D;AAC1D,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASrG;AAED,eAAO,MAAM,IAAI,GAAI,MAAM,OAAO,EAAE,eAAY,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,QAA4E,CAAC;AAElK,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,CAI/F"}
@@ -0,0 +1,84 @@
1
+ /** HTTP plumbing shared by the REST and Admin surfaces: path matching, query coercion, JSON bodies and the error envelope. Not a public name. */
2
+ import { DiagnosticError, httpStatusFor, makeDiagnostic, redactForWire } from "../spec/kernel/index.js";
3
+ export const wireError = (code, message, path) => new DiagnosticError(makeDiagnostic({ code, phase: "runtime", severity: "error", path, message }));
4
+ /** Query and path text to the declared JSON type; anything else stays a string. */
5
+ export function coerce(raw, schema, name, path) {
6
+ const type = [schema?.type].flat().find((t) => t && t !== "null");
7
+ if (type === "integer" || type === "number") {
8
+ const n = Number(raw);
9
+ if (raw.trim() === "" || !Number.isFinite(n) || (type === "integer" && !Number.isInteger(n)))
10
+ throw wireError("INPUT_VALIDATION_FAILED", `'${name}' must be ${type === "integer" ? "an integer" : "a number"}; got ${JSON.stringify(raw)}.`, path);
11
+ return n;
12
+ }
13
+ if (type === "boolean") {
14
+ if (raw !== "true" && raw !== "false")
15
+ throw wireError("INPUT_VALIDATION_FAILED", `'${name}' must be true or false; got ${JSON.stringify(raw)}.`, path);
16
+ return raw === "true";
17
+ }
18
+ return raw;
19
+ }
20
+ /** `/items/{id}` against a request path, or null. Segments are decoded once; a malformed escape is a routing miss. */
21
+ export function match(template, path) {
22
+ const strip = (p) => (p.length > 1 && p.endsWith("/") ? p.slice(0, -1) : p);
23
+ const t = strip(template).split("/");
24
+ const r = strip(path).split("/");
25
+ if (t.length !== r.length)
26
+ return null;
27
+ const params = {};
28
+ for (const [i, part] of t.entries()) {
29
+ let seg;
30
+ try {
31
+ seg = decodeURIComponent(r[i]);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ if (part.startsWith("{") && part.endsWith("}"))
37
+ params[part.slice(1, -1)] = seg;
38
+ else if (part !== seg)
39
+ return null;
40
+ }
41
+ return params;
42
+ }
43
+ /** A View's declared input, `limit` and `cursor` from a query string, as `store.view` takes them. */
44
+ export function viewQuery(name, v, query, path) {
45
+ const input = {};
46
+ for (const [k, schema] of Object.entries(v.input?.properties ?? {})) {
47
+ const raw = query.get(k);
48
+ if (raw !== null)
49
+ input[k] = coerce(raw, schema, k, path);
50
+ else if (v.input?.required?.includes(k))
51
+ throw wireError("INPUT_VALIDATION_FAILED", `View '${name}' requires query param '${k}'.`, path);
52
+ }
53
+ const limit = query.get("limit");
54
+ const cursor = query.get("cursor");
55
+ return { input, ...(limit === null ? {} : { limit: coerce(limit, { type: "integer" }, "limit", path) }), ...(cursor ? { cursor } : {}) };
56
+ }
57
+ const MAX_BODY = 1_000_000;
58
+ /** The request body as a JSON object; no body is `{}`. */
59
+ export async function readJsonObject(request, path) {
60
+ let body = {};
61
+ if (request.body) {
62
+ const text = await request.text();
63
+ if (text.length > MAX_BODY)
64
+ throw wireError("INPUT_VALIDATION_FAILED", `the request body is larger than ${MAX_BODY} characters`, path);
65
+ try {
66
+ body = text.trim() ? JSON.parse(text) : {};
67
+ }
68
+ catch {
69
+ throw wireError("INPUT_VALIDATION_FAILED", "the request body is not valid JSON", path);
70
+ }
71
+ }
72
+ if (typeof body !== "object" || body === null || Array.isArray(body))
73
+ throw wireError("INPUT_VALIDATION_FAILED", "the request body must be a JSON object", path);
74
+ return body;
75
+ }
76
+ export const json = (body, status = 200, headers) => Response.json(body, { status, ...(headers ? { headers } : {}) });
77
+ /** A DiagnosticError answers with its own status; anything else is logged and never leaks. */
78
+ export function failure(e, surface, headers) {
79
+ if (e instanceof DiagnosticError)
80
+ return json({ error: redactForWire(e.diagnostic) }, httpStatusFor(e.diagnostic), headers);
81
+ console.error(`[mantle ${surface}] unhandled failure`, e);
82
+ return json({ error: { code: "INTERNAL_ERROR", message: "An internal error occurred." } }, 500, headers);
83
+ }
84
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/core/wire.ts"],"names":[],"mappings":"AAAA,iJAAiJ;AACjJ,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAmB,MAAM,yBAAyB,CAAC;AAGzH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAwB,EAAE,OAAe,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAExL,mFAAmF;AACnF,MAAM,UAAU,MAAM,CAAC,GAAW,EAAE,MAA8B,EAAE,IAAY,EAAE,IAAY;IAC5F,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;IAClE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,SAAS,CAAC,yBAAyB,EAAE,IAAI,IAAI,aAAa,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;YAAE,MAAM,SAAS,CAAC,yBAAyB,EAAE,IAAI,IAAI,gCAAgC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxJ,OAAO,GAAG,KAAK,MAAM,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,KAAK,CAAC,QAAgB,EAAE,IAAY;IAClD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACpC,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;aAC3E,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;IACrC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,CAAW,EAAE,KAAsB,EAAE,IAAY;IACvF,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,KAAK,IAAI;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,MAAoB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;aACnE,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,SAAS,CAAC,yBAAyB,EAAE,SAAS,IAAI,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3I,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAW,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACrJ,CAAC;AAED,MAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,IAAY;IACjE,IAAI,IAAI,GAAY,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,MAAM,SAAS,CAAC,yBAAyB,EAAE,mCAAmC,QAAQ,aAAa,EAAE,IAAI,CAAC,CAAC;QACvI,IAAI,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,SAAS,CAAC,yBAAyB,EAAE,oCAAoC,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;IACvJ,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,SAAS,CAAC,yBAAyB,EAAE,wCAAwC,EAAE,IAAI,CAAC,CAAC;IACjK,OAAO,IAA+B,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG,EAAE,OAAgC,EAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAElK,8FAA8F;AAC9F,MAAM,UAAU,OAAO,CAAC,CAAU,EAAE,OAAe,EAAE,OAAgC;IACnF,IAAI,CAAC,YAAY,eAAe;QAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5H,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,6BAA6B,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3G,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { CallerResolver } from "./caller.js";
2
+ import type { Surface } from "./service.js";
3
+ export interface WithCallerOptions {
4
+ /**
5
+ * The protected-resource metadata URL (RFC 9728). The MCP authorization spec has a client find the authorization server from the
6
+ * `resource_metadata` parameter of the 401 challenge, so an MCP entry passes it and every challenge carries it.
7
+ */
8
+ readonly resourceMetadata?: string;
9
+ }
10
+ /**
11
+ * The one authentication boundary of a service's entry (ADR-0032 decision 8): resolve the Caller once per request, then run the
12
+ * surface. An invalid credential is answered here, before any surface runs, and is never treated as anonymous. A cookie session is
13
+ * ambient authority, so it may not mutate across origins; a bearer token is sent on purpose and is not held to that.
14
+ */
15
+ export declare function withCaller(resolve: CallerResolver, surface: Surface, options?: WithCallerOptions): (request: Request) => Promise<Response>;
16
+ //# sourceMappingURL=withCaller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withCaller.d.ts","sourceRoot":"","sources":["../../src/core/withCaller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAO5C,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAmB9I"}
@@ -0,0 +1,29 @@
1
+ import { makeDiagnostic, redactForWire } from "../spec/kernel/index.js";
2
+ const SAFE = new Set(["GET", "HEAD", "OPTIONS"]);
3
+ const refuse = (status, code, message, path, challenge) => Response.json({ error: redactForWire(makeDiagnostic({ code, phase: "runtime", severity: "error", path, message })) }, { status, headers: challenge ? { "www-authenticate": challenge } : {} });
4
+ /**
5
+ * The one authentication boundary of a service's entry (ADR-0032 decision 8): resolve the Caller once per request, then run the
6
+ * surface. An invalid credential is answered here, before any surface runs, and is never treated as anonymous. A cookie session is
7
+ * ambient authority, so it may not mutate across origins; a bearer token is sent on purpose and is not held to that.
8
+ */
9
+ export function withCaller(resolve, surface, options = {}) {
10
+ return async (request) => {
11
+ const r = await resolve(request);
12
+ if ("caller" in r) {
13
+ if (r.caller.kind === "user" && r.caller.credential === "session" && !SAFE.has(request.method)) {
14
+ const site = request.headers.get("sec-fetch-site");
15
+ const origin = request.headers.get("origin");
16
+ // neither header is what Better Auth refuses too: every browser sends one of them on a mutation
17
+ if ((!site && !origin) || (site && site !== "same-origin" && site !== "none") || (origin && origin !== new URL(request.url).origin))
18
+ return refuse(403, "AUTH_DENIED", "Cross-origin session mutation rejected.", "request:origin");
19
+ }
20
+ return surface(request, r.caller);
21
+ }
22
+ const status = r.status ?? 401;
23
+ const challenge = r.challenge && options.resourceMetadata ? `${r.challenge}, resource_metadata="${options.resourceMetadata}"` : r.challenge ?? (options.resourceMetadata ? `Bearer resource_metadata="${options.resourceMetadata}"` : undefined);
24
+ return status === 401
25
+ ? refuse(401, "UNAUTHENTICATED", "The presented credential is missing, malformed, expired, revoked, or invalid.", "request:authorization", challenge)
26
+ : refuse(403, "AUTH_DENIED", "The verified credential lacks a required scope.", "request:authorization", challenge);
27
+ };
28
+ }
29
+ //# sourceMappingURL=withCaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withCaller.js","sourceRoot":"","sources":["../../src/core/withCaller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAuB,MAAM,yBAAyB,CAAC;AAI7F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAEjD,MAAM,MAAM,GAAG,CAAC,MAAiB,EAAE,IAAoB,EAAE,OAAe,EAAE,IAAY,EAAE,SAAkB,EAAE,EAAE,CAC5G,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAUjM;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAuB,EAAE,OAAgB,EAAE,UAA6B,EAAE;IACnG,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,gGAAgG;gBAChG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;oBACjI,OAAO,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,yCAAyC,EAAE,gBAAgB,CAAC,CAAC;YACnG,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;QAC/B,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,wBAAwB,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,6BAA6B,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjP,OAAO,MAAM,KAAK,GAAG;YACnB,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB,EAAE,+EAA+E,EAAE,uBAAuB,EAAE,SAAS,CAAC;YACrJ,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,iDAAiD,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;IACxH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SiteDefaults } from "../spec/domain/index.js";
2
+ import { type RestrictSql } from "../core/dialect.js";
3
+ import type { DatabaseDriver } from "../core/driver.js";
4
+ import type { MantleStorageAdapter } from "../core/service.js";
5
+ /** `restrict`: an operator's own refusals, after the dialect's, on every program (ADR-0037 decision 4). */
6
+ export declare function sqliteStorage(driver: DatabaseDriver, options?: {
7
+ timeZone?: string;
8
+ maxBindings?: number;
9
+ site?: SiteDefaults;
10
+ restrict?: RestrictSql;
11
+ }): MantleStorageAdapter;
12
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/d1/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAM/D,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;CAAO,GAAG,oBAAoB,CAYlL"}
@@ -0,0 +1,23 @@
1
+ /** The MantleStorageAdapter of the SQLite family: converge storage to the plan, then run on one driver (ADR-0033, ADR-0034 decision 6). */
2
+ import { DiagnosticError, makeDiagnostic } from "../spec/kernel/index.js";
3
+ import { restricted } from "../core/dialect.js";
4
+ import { d1Dialect } from "./dialect.js";
5
+ import { SqliteStoreExecutor } from "./executor.js";
6
+ import { prepareSite } from "./site.js";
7
+ import { convergeStorage } from "./storage.js";
8
+ /** `restrict`: an operator's own refusals, after the dialect's, on every program (ADR-0037 decision 4). */
9
+ export function sqliteStorage(driver, options = {}) {
10
+ return {
11
+ dialect: restricted(d1Dialect, options.restrict),
12
+ async prepare(plan) {
13
+ const report = await convergeStorage(driver, plan.schemas, { fingerprint: plan.fingerprint, timeZone: options.timeZone });
14
+ if (report.blocked.length)
15
+ throw new DiagnosticError(report.blocked.map((b) => makeDiagnostic({ code: b.code === "STORAGE_TABLE_NOT_OWNED" ? "STORAGE_TABLE_NOT_OWNED" : "STORAGE_CHANGE_BLOCKED", phase: "boot", severity: "error", path: `storage:${b.schema}`, message: b.message })));
16
+ for (const u of report.undeclared)
17
+ console.warn(`[mantle storage] ${u.code}: ${u.message}`);
18
+ // Core's product tables exist only for a service that selects them
19
+ return { executor: new SqliteStoreExecutor(driver, options.maxBindings), ...(options.site ? { site: await prepareSite(driver, options.site) } : {}) };
20
+ },
21
+ };
22
+ }
23
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/d1/adapter.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAC3I,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAoB,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAC,MAAsB,EAAE,UAAoG,EAAE;IAC1J,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC;QAChD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1H,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;gBACvB,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACjQ,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5F,mEAAmE;YACnE,OAAO,EAAE,QAAQ,EAAE,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** SQLite storage class a Mantle type is bound and CAST as. Every bind goes through `CAST(?n AS <this>)`. */
2
+ export declare function sqliteType(type: string): 'text' | 'integer' | 'real';
3
+ /** '12.34' (or a number) -> 1234n at scale 2. Refuses digits beyond the scale rather than rounding silently. */
4
+ export declare function encodeNumeric(v: string | number, p: number, s: number): number;
5
+ export declare function decodeNumeric(n: number, s: number): string;
6
+ /** ISO-8601 with an explicit offset (or Z) -> microseconds. Refuses a zone-less timestamp. */
7
+ export declare function encodeTimestamptz(v: string | Date | number): number;
8
+ export declare function decodeTimestamptz(us: number): string;
9
+ export declare function encodeDate(v: string | Date): number;
10
+ export declare const decodeDate: (days: number) => string;
11
+ /** JS value -> the value bound for an input of this declared type. */
12
+ export declare function encodeInput(type: string, v: any): unknown;
13
+ export declare function decodeOutput(type: string, v: any): unknown;
14
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/d1/codec.ts"],"names":[],"mappings":"AAQA,6GAA6G;AAC7G,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAQpE;AAED,gHAAgH;AAChH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAU9E;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAgBnE;AACD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAGpD;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CASnD;AACD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAA2D,CAAC;AAQnG,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAiBzD;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAW1D"}
@@ -0,0 +1,136 @@
1
+ // Type encodings (ADR-0034 decision 5) and the boundary codec.
2
+ // timestamptz -> INTEGER microseconds since the epoch (exact to 2255: 2^53 us)
3
+ // date -> INTEGER days since 1970-01-01
4
+ // numeric(p,s)-> INTEGER scaled by 10^s, p <= 15 (D1 rounds integers past 2^53)
5
+ import { SqlRefusal as Refused, parseNumeric } from '../spec/domain/index.js';
6
+ const US_PER_DAY = 86_400_000_000;
7
+ /** SQLite storage class a Mantle type is bound and CAST as. Every bind goes through `CAST(?n AS <this>)`. */
8
+ export function sqliteType(type) {
9
+ if (parseNumeric(type))
10
+ return 'integer';
11
+ switch (type) {
12
+ case 'text':
13
+ case 'json':
14
+ case 'geo': return 'text';
15
+ case 'int4':
16
+ case 'int8':
17
+ case 'integer':
18
+ case 'bool':
19
+ case 'timestamptz':
20
+ case 'date': return 'integer';
21
+ case 'float8':
22
+ case 'real': return 'real';
23
+ }
24
+ throw new Refused('SQL_TYPE', `unknown type ${type}`);
25
+ }
26
+ /** '12.34' (or a number) -> 1234n at scale 2. Refuses digits beyond the scale rather than rounding silently. */
27
+ export function encodeNumeric(v, p, s) {
28
+ const str = typeof v === 'number' ? v.toString() : v.trim();
29
+ const m = /^(-?)(\d+)(?:\.(\d+))?$/.exec(str);
30
+ if (!m)
31
+ throw new Refused('SQL_TYPE', `${str} is not a decimal number`);
32
+ const frac = m[3] ?? '';
33
+ if (frac.length > s)
34
+ throw new Refused('SQL_TYPE', `${str} has more than ${s} fractional digits`);
35
+ const digits = m[2] + frac.padEnd(s, '0');
36
+ if (digits.replace(/^0+/, '').length > p)
37
+ throw new Refused('SQL_TYPE', `${str} does not fit numeric(${p}, ${s})`);
38
+ const n = Number(digits);
39
+ return m[1] ? -n : n;
40
+ }
41
+ export function decodeNumeric(n, s) {
42
+ const neg = n < 0;
43
+ const d = Math.abs(n).toString().padStart(s + 1, '0');
44
+ const out = s ? `${d.slice(0, -s)}.${d.slice(-s)}` : d;
45
+ return neg ? `-${out}` : out;
46
+ }
47
+ /** ISO-8601 with an explicit offset (or Z) -> microseconds. Refuses a zone-less timestamp. */
48
+ export function encodeTimestamptz(v) {
49
+ if (v instanceof Date)
50
+ return v.getTime() * 1000;
51
+ if (typeof v === 'number') {
52
+ if (!Number.isSafeInteger(v))
53
+ throw new Refused('SQL_TYPE', `${v} is not a whole number of microseconds within 2^53`);
54
+ return v;
55
+ }
56
+ const m = /^(\d{4}-\d\d-\d\d)[T ](\d\d:\d\d(?::\d\d)?)(?:\.(\d{1,6}))?(Z|[+-]\d\d(?::?\d\d)?)$/.exec(v.trim());
57
+ if (!m)
58
+ throw new Refused('SQL_TYPE', `'${v}' is not a timestamp with an explicit offset`);
59
+ const [, day, time, fraction, offset] = m;
60
+ const frac = (fraction ?? '').padEnd(6, '0');
61
+ const zone = offset === 'Z' ? 'Z' : offset.length === 3 ? `${offset}:00` : offset.includes(':') ? offset : `${offset.slice(0, 3)}:${offset.slice(3)}`;
62
+ const secs = Date.parse(`${day}T${time.length === 5 ? time + ':00' : time}${zone}`);
63
+ encodeDate(day); // Date.parse rolls 2026-02-30 over to March; a day that does not exist is refused
64
+ const micros = secs * 1000 + Number(frac);
65
+ if (Number.isNaN(secs) || !Number.isSafeInteger(micros))
66
+ throw new Refused('SQL_TYPE', `'${v}' is not a valid timestamp`);
67
+ return micros;
68
+ }
69
+ export function decodeTimestamptz(us) {
70
+ const ms = Math.floor(us / 1000), rest = us - ms * 1000;
71
+ return new Date(ms).toISOString().replace('Z', String(rest).padStart(3, '0') + 'Z');
72
+ }
73
+ export function encodeDate(v) {
74
+ const m = /^(\d{4})-(\d\d)-(\d\d)$/.exec(typeof v === 'string' ? v : v.toISOString().slice(0, 10));
75
+ if (!m)
76
+ throw new Refused('SQL_TYPE', `'${v}' is not a date`);
77
+ const [, y, mo, d] = m;
78
+ const dt = new Date(0);
79
+ dt.setUTCFullYear(+y, +mo - 1, +d); // Date.UTC would read years 0 to 99 as 1900 to 1999
80
+ const days = dt.getTime() / (US_PER_DAY / 1000);
81
+ if (dt.getUTCDate() !== +d)
82
+ throw new Refused('SQL_TYPE', `'${v}' is not a valid date`);
83
+ return days;
84
+ }
85
+ export const decodeDate = (days) => new Date(days * 86_400_000).toISOString().slice(0, 10);
86
+ /** A json column's text as its value. Text that is not JSON (a bare string a SQL literal wrote) reads back as that string, never a throw. */
87
+ function decodeJson(v) {
88
+ if (typeof v !== 'string')
89
+ return v;
90
+ try {
91
+ return JSON.parse(v);
92
+ }
93
+ catch {
94
+ return v;
95
+ }
96
+ }
97
+ /** JS value -> the value bound for an input of this declared type. */
98
+ export function encodeInput(type, v) {
99
+ if (v === null || v === undefined)
100
+ return null;
101
+ const num = parseNumeric(type);
102
+ if (num)
103
+ return encodeNumeric(v, num.p, num.s);
104
+ switch (type) {
105
+ case 'int4':
106
+ case 'int8':
107
+ case 'integer':
108
+ if (!Number.isSafeInteger(v))
109
+ throw new Refused('SQL_TYPE', `${v} is not a safe integer: D1 rounds integers past 2^53`);
110
+ return v;
111
+ case 'float8':
112
+ case 'real': return v;
113
+ case 'bool': return v ? 1 : 0;
114
+ case 'text': return String(v);
115
+ // every value is stored as its JSON text, a string included, so decodeOutput reads back what was written
116
+ case 'json': return JSON.stringify(v);
117
+ case 'timestamptz': return encodeTimestamptz(v);
118
+ case 'date': return encodeDate(v);
119
+ }
120
+ throw new Refused('SQL_TYPE', `cannot encode ${type}`);
121
+ }
122
+ export function decodeOutput(type, v) {
123
+ if (v === null || v === undefined)
124
+ return null;
125
+ const num = parseNumeric(type);
126
+ if (num)
127
+ return decodeNumeric(v, num.s);
128
+ switch (type) {
129
+ case 'bool': return v === 1;
130
+ case 'timestamptz': return decodeTimestamptz(v);
131
+ case 'date': return decodeDate(v);
132
+ case 'json': return decodeJson(v);
133
+ }
134
+ return v;
135
+ }
136
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/d1/codec.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iFAAiF;AACjF,iDAAiD;AACjD,kFAAkF;AAClF,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE9E,MAAM,UAAU,GAAG,cAAc,CAAC;AAElC,6GAA6G;AAC7G,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC;QAAC,KAAK,MAAM,CAAC;QAAC,KAAK,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC;QACpD,KAAK,MAAM,CAAC;QAAC,KAAK,MAAM,CAAC;QAAC,KAAK,SAAS,CAAC;QAAC,KAAK,MAAM,CAAC;QAAC,KAAK,aAAa,CAAC;QAAC,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;QACzG,KAAK,QAAQ,CAAC;QAAC,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,gHAAgH;AAChH,MAAM,UAAU,aAAa,CAAC,CAAkB,EAAE,CAAS,EAAE,CAAS;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,GAAG,0BAA0B,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnH,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/B,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,CAAyB;IACzD,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,oDAAoD,CAAC,CAAC;QACtH,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,GAAG,qFAAqF,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/G,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3F,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAwB,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,MAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAO,CAAC,CAAC,CAAC,GAAG,MAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3J,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,IAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IACrF,UAAU,CAAC,GAAI,CAAC,CAAC,CAAC,kFAAkF;IACpG,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1H,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxD,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACtF,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,CAAgB;IACzC,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAwB,CAAC;IAC9C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAE,EAAE,CAAC,EAAG,GAAG,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC,oDAAoD;IAC3F,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAE;QAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEnG,6IAA6I;AAC7I,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACnD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,CAAM;IAC9C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC;QAAC,KAAK,MAAM,CAAC;QAAC,KAAK,SAAS;YACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACxH,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC;QAAC,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,yGAAyG;QACzG,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,aAAa,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,CAAM;IAC/C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG;QAAE,OAAO,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,aAAa,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `@aotter/mantle/d1/compile`: the D1 dialect's compile side (ADR-0035 decision 3). Loaded only by the CLI, after the shared
3
+ * front end has parsed the source and tagged its relations. `accepts` throws the first refusal (`SqlRefusal`, with its offset).
4
+ */
5
+ /** The D1 dialect as a plan records it (ADR-0035 decision 5). `version` changes when what a D1 plan means changes. */
6
+ export declare const name = "@aotter/mantle/d1";
7
+ export declare const version = "1";
8
+ export { validateProgram as accepts } from "../validator.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/d1/compile/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sHAAsH;AACtH,eAAO,MAAM,IAAI,sBAAsB,CAAC;AACxC,eAAO,MAAM,OAAO,MAAM,CAAC;AAC3B,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `@aotter/mantle/d1/compile`: the D1 dialect's compile side (ADR-0035 decision 3). Loaded only by the CLI, after the shared
3
+ * front end has parsed the source and tagged its relations. `accepts` throws the first refusal (`SqlRefusal`, with its offset).
4
+ */
5
+ /** The D1 dialect as a plan records it (ADR-0035 decision 5). `version` changes when what a D1 plan means changes. */
6
+ export const name = "@aotter/mantle/d1";
7
+ export const version = "1";
8
+ export { validateProgram as accepts } from "../validator.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/d1/compile/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,sHAAsH;AACtH,MAAM,CAAC,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACxC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAC3B,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** The D1 dialect's runtime side (ADR-0035 decision 6): ADR-0034's subset, SQLite encodings and lowering, and Core's injected policy. */
2
+ import type { MantleDialect } from "../core/dialect.js";
3
+ export declare const d1Dialect: MantleDialect;
4
+ //# sourceMappingURL=dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../src/d1/dialect.ts"],"names":[],"mappings":"AAAA,yIAAyI;AACzI,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,eAAO,MAAM,SAAS,EAAE,aAOvB,CAAC"}