@ekrist1/vulse 0.1.6-alpha.3

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 (481) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +104 -0
  3. package/dist/admin/client/active-locale.d.ts +3 -0
  4. package/dist/admin/client/active-locale.d.ts.map +1 -0
  5. package/dist/admin/client/active-locale.js +14 -0
  6. package/dist/admin/client/api.d.ts +14 -0
  7. package/dist/admin/client/api.d.ts.map +1 -0
  8. package/dist/admin/client/api.js +26 -0
  9. package/dist/admin/client/form-from-zod.d.ts +2 -0
  10. package/dist/admin/client/form-from-zod.d.ts.map +1 -0
  11. package/dist/admin/client/form-from-zod.js +1 -0
  12. package/dist/admin/client/live-preview-enabled.d.ts +3 -0
  13. package/dist/admin/client/live-preview-enabled.d.ts.map +1 -0
  14. package/dist/admin/client/live-preview-enabled.js +6 -0
  15. package/dist/cli/collection-scaffold.d.ts +14 -0
  16. package/dist/cli/collection-scaffold.d.ts.map +1 -0
  17. package/dist/cli/collection-scaffold.js +44 -0
  18. package/dist/cli/index.d.ts +3 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +74 -0
  21. package/dist/cli/migrate.d.ts +5 -0
  22. package/dist/cli/migrate.d.ts.map +1 -0
  23. package/dist/cli/migrate.js +10 -0
  24. package/dist/cli/platform.d.ts +12 -0
  25. package/dist/cli/platform.d.ts.map +1 -0
  26. package/dist/cli/platform.js +38 -0
  27. package/dist/cli/seed-admin.d.ts +19 -0
  28. package/dist/cli/seed-admin.d.ts.map +1 -0
  29. package/dist/cli/seed-admin.js +59 -0
  30. package/dist/cli/setup.d.ts +29 -0
  31. package/dist/cli/setup.d.ts.map +1 -0
  32. package/dist/cli/setup.js +254 -0
  33. package/dist/core/access.d.ts +5 -0
  34. package/dist/core/access.d.ts.map +1 -0
  35. package/dist/core/access.js +6 -0
  36. package/dist/core/blocks/schema.d.ts +81 -0
  37. package/dist/core/blocks/schema.d.ts.map +1 -0
  38. package/dist/core/blocks/schema.js +54 -0
  39. package/dist/core/blueprints/code-to-definition.d.ts +6 -0
  40. package/dist/core/blueprints/code-to-definition.d.ts.map +1 -0
  41. package/dist/core/blueprints/code-to-definition.js +147 -0
  42. package/dist/core/blueprints/compile.d.ts +10 -0
  43. package/dist/core/blueprints/compile.d.ts.map +1 -0
  44. package/dist/core/blueprints/compile.js +153 -0
  45. package/dist/core/blueprints/define.d.ts +6 -0
  46. package/dist/core/blueprints/define.d.ts.map +1 -0
  47. package/dist/core/blueprints/define.js +8 -0
  48. package/dist/core/blueprints/definition.d.ts +963 -0
  49. package/dist/core/blueprints/definition.d.ts.map +1 -0
  50. package/dist/core/blueprints/definition.js +151 -0
  51. package/dist/core/blueprints/load.d.ts +11 -0
  52. package/dist/core/blueprints/load.d.ts.map +1 -0
  53. package/dist/core/blueprints/load.js +137 -0
  54. package/dist/core/blueprints/mutations.d.ts +8 -0
  55. package/dist/core/blueprints/mutations.d.ts.map +1 -0
  56. package/dist/core/blueprints/mutations.js +191 -0
  57. package/dist/core/blueprints/preview-path.d.ts +15 -0
  58. package/dist/core/blueprints/preview-path.d.ts.map +1 -0
  59. package/dist/core/blueprints/preview-path.js +25 -0
  60. package/dist/core/blueprints/reflect-fields.d.ts +36 -0
  61. package/dist/core/blueprints/reflect-fields.d.ts.map +1 -0
  62. package/dist/core/blueprints/reflect-fields.js +229 -0
  63. package/dist/core/blueprints/registry.d.ts +9 -0
  64. package/dist/core/blueprints/registry.d.ts.map +1 -0
  65. package/dist/core/blueprints/registry.js +11 -0
  66. package/dist/core/blueprints/seed.d.ts +5 -0
  67. package/dist/core/blueprints/seed.d.ts.map +1 -0
  68. package/dist/core/blueprints/seed.js +17 -0
  69. package/dist/core/blueprints/select-helpers.d.ts +10 -0
  70. package/dist/core/blueprints/select-helpers.d.ts.map +1 -0
  71. package/dist/core/blueprints/select-helpers.js +26 -0
  72. package/dist/core/blueprints/seo.d.ts +41 -0
  73. package/dist/core/blueprints/seo.d.ts.map +1 -0
  74. package/dist/core/blueprints/seo.js +125 -0
  75. package/dist/core/blueprints/types.d.ts +60 -0
  76. package/dist/core/blueprints/types.d.ts.map +1 -0
  77. package/dist/core/blueprints/types.js +1 -0
  78. package/dist/core/blueprints/zod-helpers.d.ts +79 -0
  79. package/dist/core/blueprints/zod-helpers.d.ts.map +1 -0
  80. package/dist/core/blueprints/zod-helpers.js +72 -0
  81. package/dist/core/db.d.ts +7 -0
  82. package/dist/core/db.d.ts.map +1 -0
  83. package/dist/core/db.js +8 -0
  84. package/dist/core/errors.d.ts +21 -0
  85. package/dist/core/errors.d.ts.map +1 -0
  86. package/dist/core/errors.js +29 -0
  87. package/dist/core/forms/compile.d.ts +9 -0
  88. package/dist/core/forms/compile.d.ts.map +1 -0
  89. package/dist/core/forms/compile.js +80 -0
  90. package/dist/core/forms/definition.d.ts +226 -0
  91. package/dist/core/forms/definition.d.ts.map +1 -0
  92. package/dist/core/forms/definition.js +83 -0
  93. package/dist/core/forms/rate-limit.d.ts +10 -0
  94. package/dist/core/forms/rate-limit.d.ts.map +1 -0
  95. package/dist/core/forms/rate-limit.js +31 -0
  96. package/dist/core/forms/unique.d.ts +5 -0
  97. package/dist/core/forms/unique.d.ts.map +1 -0
  98. package/dist/core/forms/unique.js +30 -0
  99. package/dist/core/globals/compile.d.ts +13 -0
  100. package/dist/core/globals/compile.d.ts.map +1 -0
  101. package/dist/core/globals/compile.js +17 -0
  102. package/dist/core/globals/definition.d.ts +161 -0
  103. package/dist/core/globals/definition.d.ts.map +1 -0
  104. package/dist/core/globals/definition.js +23 -0
  105. package/dist/core/locales.d.ts +14 -0
  106. package/dist/core/locales.d.ts.map +1 -0
  107. package/dist/core/locales.js +35 -0
  108. package/dist/core/migrations.d.ts +3 -0
  109. package/dist/core/migrations.d.ts.map +1 -0
  110. package/dist/core/migrations.js +41 -0
  111. package/dist/core/parse-content.d.ts +14 -0
  112. package/dist/core/parse-content.d.ts.map +1 -0
  113. package/dist/core/parse-content.js +68 -0
  114. package/dist/core/plugins/definition.d.ts +99 -0
  115. package/dist/core/plugins/definition.d.ts.map +1 -0
  116. package/dist/core/plugins/definition.js +10 -0
  117. package/dist/core/preview-content.d.ts +16 -0
  118. package/dist/core/preview-content.d.ts.map +1 -0
  119. package/dist/core/preview-content.js +8 -0
  120. package/dist/core/repos/entries.d.ts +102 -0
  121. package/dist/core/repos/entries.d.ts.map +1 -0
  122. package/dist/core/repos/entries.js +393 -0
  123. package/dist/core/repos/forms.d.ts +82 -0
  124. package/dist/core/repos/forms.d.ts.map +1 -0
  125. package/dist/core/repos/forms.js +199 -0
  126. package/dist/core/repos/globals.d.ts +31 -0
  127. package/dist/core/repos/globals.d.ts.map +1 -0
  128. package/dist/core/repos/globals.js +150 -0
  129. package/dist/core/repos/media.d.ts +39 -0
  130. package/dist/core/repos/media.d.ts.map +1 -0
  131. package/dist/core/repos/media.js +81 -0
  132. package/dist/core/repos/preview-sessions.d.ts +35 -0
  133. package/dist/core/repos/preview-sessions.d.ts.map +1 -0
  134. package/dist/core/repos/preview-sessions.js +85 -0
  135. package/dist/core/repos/revisions.d.ts +24 -0
  136. package/dist/core/repos/revisions.d.ts.map +1 -0
  137. package/dist/core/repos/revisions.js +44 -0
  138. package/dist/core/repos/settings.d.ts +9 -0
  139. package/dist/core/repos/settings.d.ts.map +1 -0
  140. package/dist/core/repos/settings.js +21 -0
  141. package/dist/core/schema.d.ts +2717 -0
  142. package/dist/core/schema.d.ts.map +1 -0
  143. package/dist/core/schema.js +220 -0
  144. package/dist/core/sets/compile.d.ts +8 -0
  145. package/dist/core/sets/compile.d.ts.map +1 -0
  146. package/dist/core/sets/compile.js +4 -0
  147. package/dist/core/sets/definition.d.ts +53 -0
  148. package/dist/core/sets/definition.d.ts.map +1 -0
  149. package/dist/core/sets/definition.js +7 -0
  150. package/dist/core/sets/service.d.ts +13 -0
  151. package/dist/core/sets/service.d.ts.map +1 -0
  152. package/dist/core/sets/service.js +68 -0
  153. package/dist/core/sets/validate-tree.d.ts +4 -0
  154. package/dist/core/sets/validate-tree.d.ts.map +1 -0
  155. package/dist/core/sets/validate-tree.js +40 -0
  156. package/dist/core/slug.d.ts +5 -0
  157. package/dist/core/slug.d.ts.map +1 -0
  158. package/dist/core/slug.js +25 -0
  159. package/dist/index.d.ts +16 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +19 -0
  162. package/dist/integration/cron.d.ts +4 -0
  163. package/dist/integration/cron.d.ts.map +1 -0
  164. package/dist/integration/cron.js +2 -0
  165. package/dist/integration/index.d.ts +9 -0
  166. package/dist/integration/index.d.ts.map +1 -0
  167. package/dist/integration/index.js +63 -0
  168. package/dist/integration/inject-admin-routes.d.ts +12 -0
  169. package/dist/integration/inject-admin-routes.d.ts.map +1 -0
  170. package/dist/integration/inject-admin-routes.js +35 -0
  171. package/dist/integration/inject-routes.d.ts +11 -0
  172. package/dist/integration/inject-routes.d.ts.map +1 -0
  173. package/dist/integration/inject-routes.js +51 -0
  174. package/dist/integration/install-hook.d.ts +2 -0
  175. package/dist/integration/install-hook.d.ts.map +1 -0
  176. package/dist/integration/install-hook.js +74 -0
  177. package/dist/integration/live-preview-middleware-helpers.d.ts +29 -0
  178. package/dist/integration/live-preview-middleware-helpers.d.ts.map +1 -0
  179. package/dist/integration/live-preview-middleware-helpers.js +75 -0
  180. package/dist/integration/loader-binding.d.ts +6 -0
  181. package/dist/integration/loader-binding.d.ts.map +1 -0
  182. package/dist/integration/loader-binding.js +15 -0
  183. package/dist/integration/middleware.d.ts +2 -0
  184. package/dist/integration/middleware.d.ts.map +1 -0
  185. package/dist/integration/middleware.js +51 -0
  186. package/dist/integration/type-gen.d.ts +2 -0
  187. package/dist/integration/type-gen.d.ts.map +1 -0
  188. package/dist/integration/type-gen.js +26 -0
  189. package/dist/integration/vite-plugin-blueprints.d.ts +3 -0
  190. package/dist/integration/vite-plugin-blueprints.d.ts.map +1 -0
  191. package/dist/integration/vite-plugin-blueprints.js +33 -0
  192. package/dist/integration/wrangler-patch.d.ts +6 -0
  193. package/dist/integration/wrangler-patch.d.ts.map +1 -0
  194. package/dist/integration/wrangler-patch.js +18 -0
  195. package/dist/integration.d.ts +3 -0
  196. package/dist/integration.d.ts.map +1 -0
  197. package/dist/integration.js +1 -0
  198. package/dist/loader.d.ts +3 -0
  199. package/dist/loader.d.ts.map +1 -0
  200. package/dist/loader.js +1 -0
  201. package/dist/package-name.d.ts +3 -0
  202. package/dist/package-name.d.ts.map +1 -0
  203. package/dist/package-name.js +2 -0
  204. package/dist/scaffold/collection-write.d.ts +14 -0
  205. package/dist/scaffold/collection-write.d.ts.map +1 -0
  206. package/dist/scaffold/collection-write.js +59 -0
  207. package/dist/scaffold/collection.d.ts +36 -0
  208. package/dist/scaffold/collection.d.ts.map +1 -0
  209. package/dist/scaffold/collection.js +231 -0
  210. package/dist/server/assets/live-preview-bridge.content.d.ts +2 -0
  211. package/dist/server/assets/live-preview-bridge.content.d.ts.map +1 -0
  212. package/dist/server/assets/live-preview-bridge.content.js +2 -0
  213. package/dist/server/better-auth.d.ts +71 -0
  214. package/dist/server/better-auth.d.ts.map +1 -0
  215. package/dist/server/better-auth.js +68 -0
  216. package/dist/server/cf-images.d.ts +12 -0
  217. package/dist/server/cf-images.d.ts.map +1 -0
  218. package/dist/server/cf-images.js +27 -0
  219. package/dist/server/cron.d.ts +9 -0
  220. package/dist/server/cron.d.ts.map +1 -0
  221. package/dist/server/cron.js +26 -0
  222. package/dist/server/email.d.ts +10 -0
  223. package/dist/server/email.d.ts.map +1 -0
  224. package/dist/server/email.js +9 -0
  225. package/dist/server/endpoints/api-auth.d.ts +5 -0
  226. package/dist/server/endpoints/api-auth.d.ts.map +1 -0
  227. package/dist/server/endpoints/api-auth.js +7 -0
  228. package/dist/server/endpoints/api-vulse-blueprints.d.ts +6 -0
  229. package/dist/server/endpoints/api-vulse-blueprints.d.ts.map +1 -0
  230. package/dist/server/endpoints/api-vulse-blueprints.js +19 -0
  231. package/dist/server/endpoints/api-vulse-entries-locales.d.ts +4 -0
  232. package/dist/server/endpoints/api-vulse-entries-locales.d.ts.map +1 -0
  233. package/dist/server/endpoints/api-vulse-entries-locales.js +9 -0
  234. package/dist/server/endpoints/api-vulse-entries-move.d.ts +3 -0
  235. package/dist/server/endpoints/api-vulse-entries-move.d.ts.map +1 -0
  236. package/dist/server/endpoints/api-vulse-entries-move.js +5 -0
  237. package/dist/server/endpoints/api-vulse-entries-publish.d.ts +3 -0
  238. package/dist/server/endpoints/api-vulse-entries-publish.d.ts.map +1 -0
  239. package/dist/server/endpoints/api-vulse-entries-publish.js +5 -0
  240. package/dist/server/endpoints/api-vulse-entries-tree.d.ts +3 -0
  241. package/dist/server/endpoints/api-vulse-entries-tree.d.ts.map +1 -0
  242. package/dist/server/endpoints/api-vulse-entries-tree.js +5 -0
  243. package/dist/server/endpoints/api-vulse-entries.d.ts +6 -0
  244. package/dist/server/endpoints/api-vulse-entries.d.ts.map +1 -0
  245. package/dist/server/endpoints/api-vulse-entries.js +19 -0
  246. package/dist/server/endpoints/api-vulse-form-handle.d.ts +6 -0
  247. package/dist/server/endpoints/api-vulse-form-handle.d.ts.map +1 -0
  248. package/dist/server/endpoints/api-vulse-form-handle.js +27 -0
  249. package/dist/server/endpoints/api-vulse-form-public.d.ts +3 -0
  250. package/dist/server/endpoints/api-vulse-form-public.d.ts.map +1 -0
  251. package/dist/server/endpoints/api-vulse-form-public.js +5 -0
  252. package/dist/server/endpoints/api-vulse-form-submit.d.ts +3 -0
  253. package/dist/server/endpoints/api-vulse-form-submit.d.ts.map +1 -0
  254. package/dist/server/endpoints/api-vulse-form-submit.js +5 -0
  255. package/dist/server/endpoints/api-vulse-form-upload.d.ts +3 -0
  256. package/dist/server/endpoints/api-vulse-form-upload.d.ts.map +1 -0
  257. package/dist/server/endpoints/api-vulse-form-upload.js +5 -0
  258. package/dist/server/endpoints/api-vulse-forms.d.ts +4 -0
  259. package/dist/server/endpoints/api-vulse-forms.d.ts.map +1 -0
  260. package/dist/server/endpoints/api-vulse-forms.js +9 -0
  261. package/dist/server/endpoints/api-vulse-globals-handle.d.ts +5 -0
  262. package/dist/server/endpoints/api-vulse-globals-handle.d.ts.map +1 -0
  263. package/dist/server/endpoints/api-vulse-globals-handle.js +19 -0
  264. package/dist/server/endpoints/api-vulse-globals-public-handle.d.ts +3 -0
  265. package/dist/server/endpoints/api-vulse-globals-public-handle.d.ts.map +1 -0
  266. package/dist/server/endpoints/api-vulse-globals-public-handle.js +5 -0
  267. package/dist/server/endpoints/api-vulse-globals-public.d.ts +3 -0
  268. package/dist/server/endpoints/api-vulse-globals-public.d.ts.map +1 -0
  269. package/dist/server/endpoints/api-vulse-globals-public.js +5 -0
  270. package/dist/server/endpoints/api-vulse-globals-value.d.ts +3 -0
  271. package/dist/server/endpoints/api-vulse-globals-value.d.ts.map +1 -0
  272. package/dist/server/endpoints/api-vulse-globals-value.js +7 -0
  273. package/dist/server/endpoints/api-vulse-globals.d.ts +4 -0
  274. package/dist/server/endpoints/api-vulse-globals.d.ts.map +1 -0
  275. package/dist/server/endpoints/api-vulse-globals.js +9 -0
  276. package/dist/server/endpoints/api-vulse-media-file.d.ts +3 -0
  277. package/dist/server/endpoints/api-vulse-media-file.d.ts.map +1 -0
  278. package/dist/server/endpoints/api-vulse-media-file.js +5 -0
  279. package/dist/server/endpoints/api-vulse-media-id.d.ts +4 -0
  280. package/dist/server/endpoints/api-vulse-media-id.d.ts.map +1 -0
  281. package/dist/server/endpoints/api-vulse-media-id.js +9 -0
  282. package/dist/server/endpoints/api-vulse-media.d.ts +4 -0
  283. package/dist/server/endpoints/api-vulse-media.d.ts.map +1 -0
  284. package/dist/server/endpoints/api-vulse-media.js +9 -0
  285. package/dist/server/endpoints/api-vulse-preview-bridge.d.ts +3 -0
  286. package/dist/server/endpoints/api-vulse-preview-bridge.d.ts.map +1 -0
  287. package/dist/server/endpoints/api-vulse-preview-bridge.js +9 -0
  288. package/dist/server/endpoints/api-vulse-preview-sessions-id.d.ts +3 -0
  289. package/dist/server/endpoints/api-vulse-preview-sessions-id.d.ts.map +1 -0
  290. package/dist/server/endpoints/api-vulse-preview-sessions-id.js +10 -0
  291. package/dist/server/endpoints/api-vulse-preview-sessions.d.ts +3 -0
  292. package/dist/server/endpoints/api-vulse-preview-sessions.d.ts.map +1 -0
  293. package/dist/server/endpoints/api-vulse-preview-sessions.js +5 -0
  294. package/dist/server/endpoints/api-vulse-preview-start.d.ts +3 -0
  295. package/dist/server/endpoints/api-vulse-preview-start.d.ts.map +1 -0
  296. package/dist/server/endpoints/api-vulse-preview-start.js +5 -0
  297. package/dist/server/endpoints/api-vulse-preview-stop.d.ts +3 -0
  298. package/dist/server/endpoints/api-vulse-preview-stop.d.ts.map +1 -0
  299. package/dist/server/endpoints/api-vulse-preview-stop.js +5 -0
  300. package/dist/server/endpoints/api-vulse-revisions-restore.d.ts +3 -0
  301. package/dist/server/endpoints/api-vulse-revisions-restore.d.ts.map +1 -0
  302. package/dist/server/endpoints/api-vulse-revisions-restore.js +5 -0
  303. package/dist/server/endpoints/api-vulse-revisions.d.ts +3 -0
  304. package/dist/server/endpoints/api-vulse-revisions.d.ts.map +1 -0
  305. package/dist/server/endpoints/api-vulse-revisions.js +5 -0
  306. package/dist/server/endpoints/api-vulse-search.d.ts +3 -0
  307. package/dist/server/endpoints/api-vulse-search.d.ts.map +1 -0
  308. package/dist/server/endpoints/api-vulse-search.js +5 -0
  309. package/dist/server/endpoints/api-vulse-sets.d.ts +6 -0
  310. package/dist/server/endpoints/api-vulse-sets.d.ts.map +1 -0
  311. package/dist/server/endpoints/api-vulse-sets.js +19 -0
  312. package/dist/server/endpoints/api-vulse-settings.d.ts +4 -0
  313. package/dist/server/endpoints/api-vulse-settings.d.ts.map +1 -0
  314. package/dist/server/endpoints/api-vulse-settings.js +9 -0
  315. package/dist/server/endpoints/api-vulse-users-id.d.ts +4 -0
  316. package/dist/server/endpoints/api-vulse-users-id.d.ts.map +1 -0
  317. package/dist/server/endpoints/api-vulse-users-id.js +9 -0
  318. package/dist/server/endpoints/api-vulse-users-reset-password.d.ts +3 -0
  319. package/dist/server/endpoints/api-vulse-users-reset-password.d.ts.map +1 -0
  320. package/dist/server/endpoints/api-vulse-users-reset-password.js +5 -0
  321. package/dist/server/endpoints/api-vulse-users-role.d.ts +4 -0
  322. package/dist/server/endpoints/api-vulse-users-role.d.ts.map +1 -0
  323. package/dist/server/endpoints/api-vulse-users-role.js +6 -0
  324. package/dist/server/endpoints/api-vulse-users.d.ts +3 -0
  325. package/dist/server/endpoints/api-vulse-users.d.ts.map +1 -0
  326. package/dist/server/endpoints/api-vulse-users.js +5 -0
  327. package/dist/server/endpoints/with-runtime.d.ts +2 -0
  328. package/dist/server/endpoints/with-runtime.d.ts.map +1 -0
  329. package/dist/server/endpoints/with-runtime.js +10 -0
  330. package/dist/server/env.d.ts +16 -0
  331. package/dist/server/env.d.ts.map +1 -0
  332. package/dist/server/env.js +9 -0
  333. package/dist/server/envelope.d.ts +15 -0
  334. package/dist/server/envelope.d.ts.map +1 -0
  335. package/dist/server/envelope.js +16 -0
  336. package/dist/server/forms/email.d.ts +8 -0
  337. package/dist/server/forms/email.d.ts.map +1 -0
  338. package/dist/server/forms/email.js +6 -0
  339. package/dist/server/forms/process-submission.d.ts +8 -0
  340. package/dist/server/forms/process-submission.d.ts.map +1 -0
  341. package/dist/server/forms/process-submission.js +75 -0
  342. package/dist/server/forms/queue.d.ts +8 -0
  343. package/dist/server/forms/queue.d.ts.map +1 -0
  344. package/dist/server/forms/queue.js +17 -0
  345. package/dist/server/forms/templates.d.ts +9 -0
  346. package/dist/server/forms/templates.d.ts.map +1 -0
  347. package/dist/server/forms/templates.js +14 -0
  348. package/dist/server/forms/webhook.d.ts +2 -0
  349. package/dist/server/forms/webhook.d.ts.map +1 -0
  350. package/dist/server/forms/webhook.js +17 -0
  351. package/dist/server/handler.d.ts +17 -0
  352. package/dist/server/handler.d.ts.map +1 -0
  353. package/dist/server/handler.js +45 -0
  354. package/dist/server/image-probe.d.ts +6 -0
  355. package/dist/server/image-probe.d.ts.map +1 -0
  356. package/dist/server/image-probe.js +38 -0
  357. package/dist/server/loader.d.ts +10 -0
  358. package/dist/server/loader.d.ts.map +1 -0
  359. package/dist/server/loader.js +42 -0
  360. package/dist/server/plugins.d.ts +17 -0
  361. package/dist/server/plugins.d.ts.map +1 -0
  362. package/dist/server/plugins.js +134 -0
  363. package/dist/server/preview.d.ts +7 -0
  364. package/dist/server/preview.d.ts.map +1 -0
  365. package/dist/server/preview.js +22 -0
  366. package/dist/server/r2.d.ts +8 -0
  367. package/dist/server/r2.d.ts.map +1 -0
  368. package/dist/server/r2.js +9 -0
  369. package/dist/server/routes/blueprints.d.ts +10 -0
  370. package/dist/server/routes/blueprints.d.ts.map +1 -0
  371. package/dist/server/routes/blueprints.js +46 -0
  372. package/dist/server/routes/entries.d.ts +16 -0
  373. package/dist/server/routes/entries.d.ts.map +1 -0
  374. package/dist/server/routes/entries.js +262 -0
  375. package/dist/server/routes/form-submit.d.ts +10 -0
  376. package/dist/server/routes/form-submit.d.ts.map +1 -0
  377. package/dist/server/routes/form-submit.js +155 -0
  378. package/dist/server/routes/form-upload.d.ts +11 -0
  379. package/dist/server/routes/form-upload.d.ts.map +1 -0
  380. package/dist/server/routes/form-upload.js +87 -0
  381. package/dist/server/routes/forms.d.ts +14 -0
  382. package/dist/server/routes/forms.d.ts.map +1 -0
  383. package/dist/server/routes/forms.js +78 -0
  384. package/dist/server/routes/globals-public.d.ts +6 -0
  385. package/dist/server/routes/globals-public.d.ts.map +1 -0
  386. package/dist/server/routes/globals-public.js +30 -0
  387. package/dist/server/routes/globals.d.ts +11 -0
  388. package/dist/server/routes/globals.d.ts.map +1 -0
  389. package/dist/server/routes/globals.js +84 -0
  390. package/dist/server/routes/media.d.ts +23 -0
  391. package/dist/server/routes/media.d.ts.map +1 -0
  392. package/dist/server/routes/media.js +129 -0
  393. package/dist/server/routes/preview-sessions.d.ts +9 -0
  394. package/dist/server/routes/preview-sessions.d.ts.map +1 -0
  395. package/dist/server/routes/preview-sessions.js +74 -0
  396. package/dist/server/routes/preview.d.ts +6 -0
  397. package/dist/server/routes/preview.d.ts.map +1 -0
  398. package/dist/server/routes/preview.js +37 -0
  399. package/dist/server/routes/revisions.d.ts +7 -0
  400. package/dist/server/routes/revisions.d.ts.map +1 -0
  401. package/dist/server/routes/revisions.js +26 -0
  402. package/dist/server/routes/search.d.ts +6 -0
  403. package/dist/server/routes/search.d.ts.map +1 -0
  404. package/dist/server/routes/search.js +28 -0
  405. package/dist/server/routes/sets.d.ts +10 -0
  406. package/dist/server/routes/sets.d.ts.map +1 -0
  407. package/dist/server/routes/sets.js +33 -0
  408. package/dist/server/routes/settings.d.ts +7 -0
  409. package/dist/server/routes/settings.d.ts.map +1 -0
  410. package/dist/server/routes/settings.js +21 -0
  411. package/dist/server/routes/users.d.ts +10 -0
  412. package/dist/server/routes/users.d.ts.map +1 -0
  413. package/dist/server/routes/users.js +113 -0
  414. package/dist/server/runtime.d.ts +49 -0
  415. package/dist/server/runtime.d.ts.map +1 -0
  416. package/dist/server/runtime.js +69 -0
  417. package/dist/server/sdk/collections.d.ts +25 -0
  418. package/dist/server/sdk/collections.d.ts.map +1 -0
  419. package/dist/server/sdk/collections.js +76 -0
  420. package/dist/server/sdk/index.d.ts +45 -0
  421. package/dist/server/sdk/index.d.ts.map +1 -0
  422. package/dist/server/sdk/index.js +13 -0
  423. package/dist/server/sdk/media.d.ts +7 -0
  424. package/dist/server/sdk/media.d.ts.map +1 -0
  425. package/dist/server/sdk/media.js +9 -0
  426. package/dist/server/sdk/search.d.ts +19 -0
  427. package/dist/server/sdk/search.d.ts.map +1 -0
  428. package/dist/server/sdk/search.js +58 -0
  429. package/dist/server.d.ts +8 -0
  430. package/dist/server.d.ts.map +1 -0
  431. package/dist/server.js +6 -0
  432. package/dist/version.d.ts +2 -0
  433. package/dist/version.d.ts.map +1 -0
  434. package/dist/version.js +2 -0
  435. package/migrations/0000_init.sql +114 -0
  436. package/migrations/0001_collections_sets.sql +21 -0
  437. package/migrations/0003_fts.sql +22 -0
  438. package/migrations/0004_forms.sql +58 -0
  439. package/migrations/0005_globals.sql +16 -0
  440. package/migrations/0006_preview_sessions.sql +16 -0
  441. package/migrations/meta/0000_snapshot.json +672 -0
  442. package/migrations/meta/_journal.json +13 -0
  443. package/package.json +130 -0
  444. package/src/client/BlockRenderer.astro +40 -0
  445. package/src/client/BlockRenderer.vue +42 -0
  446. package/src/client/Node.vue +21 -0
  447. package/src/client/ProseMirrorRenderer.vue +31 -0
  448. package/src/client/auth.ts +28 -0
  449. package/src/client/blocks/Blockquote.vue +12 -0
  450. package/src/client/blocks/BulletList.vue +12 -0
  451. package/src/client/blocks/CodeBlock.vue +12 -0
  452. package/src/client/blocks/Emoji.vue +14 -0
  453. package/src/client/blocks/HardBreak.vue +1 -0
  454. package/src/client/blocks/Heading.vue +17 -0
  455. package/src/client/blocks/ListItem.vue +12 -0
  456. package/src/client/blocks/OrderedList.vue +12 -0
  457. package/src/client/blocks/Paragraph.vue +12 -0
  458. package/src/client/blocks/Text.vue +33 -0
  459. package/src/client/blocks/VulseAccordion.vue +16 -0
  460. package/src/client/blocks/VulseAccordionGroup.vue +12 -0
  461. package/src/client/blocks/VulseCallout.vue +14 -0
  462. package/src/client/blocks/VulseIframe.vue +65 -0
  463. package/src/client/blocks/VulseImage.vue +30 -0
  464. package/src/client/blocks/VulseSet.vue +26 -0
  465. package/src/client/blocks/VulseVideo.vue +18 -0
  466. package/src/client/components/ForgotPasswordForm.astro +71 -0
  467. package/src/client/components/FormRenderer.astro +40 -0
  468. package/src/client/components/ResetPasswordForm.astro +72 -0
  469. package/src/client/components/SessionGuard.astro +27 -0
  470. package/src/client/components/SignInForm.astro +57 -0
  471. package/src/client/components/SignOutButton.astro +22 -0
  472. package/src/client/components/SignUpForm.astro +61 -0
  473. package/src/client/components/VulseImage.vue +25 -0
  474. package/src/client/embed.ts +52 -0
  475. package/src/client/index.ts +2 -0
  476. package/src/client/inject.ts +4 -0
  477. package/src/client/live-preview-bridge.ts +20 -0
  478. package/src/client/pm-defaults.ts +38 -0
  479. package/src/client/pm-types.ts +21 -0
  480. package/src/client/render-pm-html.ts +154 -0
  481. package/src/client/url.ts +35 -0
@@ -0,0 +1,76 @@
1
+ import { readLocalesConfig } from '../../core/locales.js';
2
+ import { EntriesRepo } from '../../core/repos/entries.js';
3
+ import { evaluate } from '../../core/access.js';
4
+ function parseDate(v) {
5
+ if (v === undefined)
6
+ return undefined;
7
+ const d = v instanceof Date ? v : new Date(v);
8
+ return Number.isNaN(d.getTime()) ? undefined : d;
9
+ }
10
+ export function collectionsSdk(db, reg) {
11
+ const entries = new EntriesRepo(db);
12
+ async function resolveLocale(explicit) {
13
+ if (explicit)
14
+ return explicit;
15
+ return (await readLocalesConfig(db)).defaultLocale;
16
+ }
17
+ async function gatedRows(name, audience, listOpts, status) {
18
+ const bp = reg.get(name);
19
+ if (!bp)
20
+ throw new Error(`Unknown collection: ${name}`);
21
+ const rows = await entries.list({ collection: name, ...(status ? { status } : {}), ...listOpts });
22
+ const out = [];
23
+ for (const r of rows) {
24
+ const allowed = await evaluate(bp, 'read', {
25
+ user: audience ?? null,
26
+ entry: { id: r.id, status: r.status, createdBy: r.createdBy, content: r.content },
27
+ });
28
+ if (allowed)
29
+ out.push(r);
30
+ }
31
+ return out;
32
+ }
33
+ return {
34
+ find: async (collection, opts = {}) => {
35
+ const status = opts.includeDrafts ? undefined : 'published';
36
+ const publishedAfter = parseDate(opts.publishedAfter);
37
+ const publishedBefore = parseDate(opts.publishedBefore);
38
+ return gatedRows(collection, opts.audience ?? null, {
39
+ locale: await resolveLocale(opts.locale),
40
+ ...(opts.limit !== undefined ? { limit: opts.limit } : {}),
41
+ ...(opts.offset !== undefined ? { offset: opts.offset } : {}),
42
+ ...(opts.createdBy !== undefined ? { createdBy: opts.createdBy } : {}),
43
+ ...(publishedAfter !== undefined ? { publishedAfter } : {}),
44
+ ...(publishedBefore !== undefined ? { publishedBefore } : {}),
45
+ ...(opts.orderBy !== undefined ? { orderBy: opts.orderBy } : {}),
46
+ ...(opts.order !== undefined ? { order: opts.order } : {}),
47
+ }, status);
48
+ },
49
+ findById: async (collection, id, opts = {}) => {
50
+ const bp = reg.get(collection);
51
+ if (!bp)
52
+ throw new Error(`Unknown collection: ${collection}`);
53
+ const r = await entries.findById(id, await resolveLocale(opts.locale));
54
+ if (!r)
55
+ return null;
56
+ const allowed = await evaluate(bp, 'read', {
57
+ user: opts.audience ?? null,
58
+ entry: { id: r.id, status: r.status, createdBy: r.createdBy, content: r.content },
59
+ });
60
+ return allowed ? r : null;
61
+ },
62
+ findBySlug: async (collection, slug, opts = {}) => {
63
+ const bp = reg.get(collection);
64
+ if (!bp)
65
+ throw new Error(`Unknown collection: ${collection}`);
66
+ const r = await entries.findBySlug(collection, slug, await resolveLocale(opts.locale));
67
+ if (!r)
68
+ return null;
69
+ const allowed = await evaluate(bp, 'read', {
70
+ user: opts.audience ?? null,
71
+ entry: { id: r.id, status: r.status, createdBy: r.createdBy, content: r.content },
72
+ });
73
+ return allowed ? r : null;
74
+ },
75
+ };
76
+ }
@@ -0,0 +1,45 @@
1
+ import type { VulseDb } from '../../core/db.js';
2
+ import type { Auth } from '../better-auth.js';
3
+ import type { BlueprintRegistry } from '../../core/blueprints/registry.js';
4
+ import type { CfImagesConfig } from '../cf-images.js';
5
+ export declare function createSdk(db: VulseDb, auth: Auth, registry: BlueprintRegistry, cfImages: CfImagesConfig): {
6
+ collections: {
7
+ find: (collection: string, opts?: import("./collections.js").CollectionFindOptions) => Promise<import("../../core/repos/entries.js").EntryRow[]>;
8
+ findById: (collection: string, id: string, opts?: import("./collections.js").CollectionSdkOptions) => Promise<import("../../core/repos/entries.js").EntryRow | null>;
9
+ findBySlug: (collection: string, slug: string, opts?: import("./collections.js").CollectionSdkOptions) => Promise<import("../../core/repos/entries.js").EntryRow | null>;
10
+ };
11
+ media: {
12
+ url: (id: string, variant?: import("../cf-images.js").Variant | string) => string | null;
13
+ findById: (id: string) => Promise<import("../../core/repos/media.js").MediaRow | null>;
14
+ };
15
+ search: {
16
+ query: (query: string, opts?: import("./search.js").SearchOptions) => Promise<import("./search.js").SearchResult[]>;
17
+ };
18
+ auth: {
19
+ session: (request: Request) => Promise<{
20
+ session: {
21
+ id: string;
22
+ createdAt: Date;
23
+ updatedAt: Date;
24
+ userId: string;
25
+ expiresAt: Date;
26
+ token: string;
27
+ ipAddress?: string | null | undefined | undefined;
28
+ userAgent?: string | null | undefined | undefined;
29
+ };
30
+ user: {
31
+ id: string;
32
+ createdAt: Date;
33
+ updatedAt: Date;
34
+ email: string;
35
+ emailVerified: boolean;
36
+ name: string;
37
+ image?: string | null | undefined | undefined;
38
+ role: string;
39
+ displayName?: string | null | undefined;
40
+ };
41
+ } | null>;
42
+ };
43
+ };
44
+ export type VulseSdk = ReturnType<typeof createSdk>;
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,wBAAgB,SAAS,CACvB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,cAAc;;;;;;;;;;;;;;2BAOD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;EAG/B;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { collectionsSdk } from './collections.js';
2
+ import { mediaSdk } from './media.js';
3
+ import { searchSdk } from './search.js';
4
+ export function createSdk(db, auth, registry, cfImages) {
5
+ return {
6
+ collections: collectionsSdk(db, registry),
7
+ media: mediaSdk(db, cfImages),
8
+ search: searchSdk(db),
9
+ auth: {
10
+ session: (request) => auth.api.getSession({ headers: request.headers }),
11
+ },
12
+ };
13
+ }
@@ -0,0 +1,7 @@
1
+ import type { VulseDb } from '../../core/db.js';
2
+ import { type CfImagesConfig, type Variant } from '../cf-images.js';
3
+ export declare function mediaSdk(db: VulseDb, cfg: CfImagesConfig): {
4
+ url: (id: string, variant?: Variant | string) => string | null;
5
+ findById: (id: string) => Promise<import("../../core/repos/media.js").MediaRow | null>;
6
+ };
7
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/server/sdk/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAoB,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAErF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc;cAG3C,MAAM,YAAW,OAAO,GAAG,MAAM;mBAC5B,MAAM;EAExB"}
@@ -0,0 +1,9 @@
1
+ import { MediaRepo } from '../../core/repos/media.js';
2
+ import { buildDeliveryUrl } from '../cf-images.js';
3
+ export function mediaSdk(db, cfg) {
4
+ const repo = new MediaRepo(db);
5
+ return {
6
+ url: (id, variant = 'card') => buildDeliveryUrl(cfg, id, variant),
7
+ findById: (id) => repo.findById(id),
8
+ };
9
+ }
@@ -0,0 +1,19 @@
1
+ import type { VulseDb } from '../../core/db.js';
2
+ export interface SearchResult {
3
+ entryId: string;
4
+ collection: string;
5
+ locale: string;
6
+ slug: string;
7
+ title: string;
8
+ snippet: string;
9
+ }
10
+ export interface SearchOptions {
11
+ collections?: string[];
12
+ limit?: number;
13
+ includeDrafts?: boolean;
14
+ locale?: string;
15
+ }
16
+ export declare function searchSdk(db: VulseDb): {
17
+ query: (query: string, opts?: SearchOptions) => Promise<SearchResult[]>;
18
+ };
19
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/server/sdk/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAmBD,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO;mBAIZ,MAAM,SAAQ,aAAa,KAAQ,OAAO,CAAC,YAAY,EAAE,CAAC;EAkDlF"}
@@ -0,0 +1,58 @@
1
+ function safeCollection(name) {
2
+ if (!/^[a-z0-9_-]+$/.test(name))
3
+ throw new Error(`Invalid collection: ${name}`);
4
+ return name;
5
+ }
6
+ function buildMatchExpression(query) {
7
+ // FTS5: quote each token and append * for prefix match. Doubling " escapes it
8
+ // inside the quoted token. Tokens that reduce to empty after stripping non-
9
+ // word characters are dropped.
10
+ const tokens = query
11
+ .split(/\s+/)
12
+ .map((t) => t.replace(/[^\p{L}\p{N}_]+/gu, ''))
13
+ .filter((t) => t.length > 0)
14
+ .map((t) => `"${t.replace(/"/g, '""')}"*`);
15
+ return tokens.join(' ');
16
+ }
17
+ export function searchSdk(db) {
18
+ const d1 = db.$client;
19
+ return {
20
+ query: async (query, opts = {}) => {
21
+ const limit = Math.max(1, Math.min(opts.limit ?? 20, 100));
22
+ const match = buildMatchExpression(query);
23
+ if (!match)
24
+ return [];
25
+ const parts = [
26
+ `SELECT f.entry_id, f.collection, f.locale, f.slug, f.title,`,
27
+ `snippet(vulse_entries_fts, 4, '<mark>', '</mark>', '…', 8) AS snippet`,
28
+ `FROM vulse_entries_fts f`,
29
+ `INNER JOIN vulse_entry_locales el`,
30
+ ` ON el.entry_id = f.entry_id AND el.locale = f.locale`,
31
+ `WHERE vulse_entries_fts MATCH ?`,
32
+ ];
33
+ const binds = [match];
34
+ if (opts.locale) {
35
+ parts.push(`AND f.locale = ?`);
36
+ binds.push(opts.locale);
37
+ }
38
+ if (!opts.includeDrafts)
39
+ parts.push(`AND el.status = 'published'`);
40
+ if (opts.collections && opts.collections.length > 0) {
41
+ const collections = opts.collections.map(safeCollection);
42
+ const placeholders = collections.map(() => '?').join(', ');
43
+ parts.push(`AND f.collection IN (${placeholders})`);
44
+ binds.push(...collections);
45
+ }
46
+ parts.push(`LIMIT ${limit}`);
47
+ const { results } = await d1.prepare(parts.join(' ')).bind(...binds).all();
48
+ return results.map((r) => ({
49
+ entryId: r.entry_id,
50
+ collection: r.collection,
51
+ locale: r.locale,
52
+ slug: r.slug,
53
+ title: r.title ?? r.slug,
54
+ snippet: r.snippet,
55
+ }));
56
+ },
57
+ };
58
+ }
@@ -0,0 +1,8 @@
1
+ export { createSdk } from './server/sdk/index.js';
2
+ export type { VulseSdk } from './server/sdk/index.js';
3
+ export { getRuntime, invalidateRuntime } from './server/runtime.js';
4
+ export { getRuntimeEnv } from './server/env.js';
5
+ export { createDb } from './core/db.js';
6
+ export { registryForRequest } from './core/blueprints/load.js';
7
+ export { resolvePreviewContent, type VulseLivePreviewLocals, type PreviewLocals } from './core/preview-content.js';
8
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
package/dist/server.js ADDED
@@ -0,0 +1,6 @@
1
+ export { createSdk } from './server/sdk/index.js';
2
+ export { getRuntime, invalidateRuntime } from './server/runtime.js';
3
+ export { getRuntimeEnv } from './server/env.js';
4
+ export { createDb } from './core/db.js';
5
+ export { registryForRequest } from './core/blueprints/load.js';
6
+ export { resolvePreviewContent } from './core/preview-content.js';
@@ -0,0 +1,2 @@
1
+ export declare const VULSE_VERSION = "0.1.6-alpha.3";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ // Generated by sync-version — do not edit
2
+ export const VULSE_VERSION = "0.1.6-alpha.3";
@@ -0,0 +1,114 @@
1
+ CREATE TABLE `account` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `user_id` text NOT NULL,
4
+ `account_id` text NOT NULL,
5
+ `provider_id` text NOT NULL,
6
+ `access_token` text,
7
+ `refresh_token` text,
8
+ `id_token` text,
9
+ `access_token_expires_at` integer,
10
+ `refresh_token_expires_at` integer,
11
+ `scope` text,
12
+ `password` text,
13
+ `created_at` integer NOT NULL,
14
+ `updated_at` integer NOT NULL,
15
+ FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
16
+ );
17
+ --> statement-breakpoint
18
+ CREATE TABLE `vulse_entries` (
19
+ `id` text PRIMARY KEY NOT NULL,
20
+ `collection` text NOT NULL,
21
+ `parent_id` text REFERENCES `vulse_entries`(`id`) ON DELETE cascade,
22
+ `sort_order` integer DEFAULT 0 NOT NULL,
23
+ `created_at` integer NOT NULL,
24
+ `updated_at` integer NOT NULL,
25
+ `created_by` text
26
+ );
27
+ --> statement-breakpoint
28
+ CREATE INDEX `vulse_entries_collection` ON `vulse_entries` (`collection`);--> statement-breakpoint
29
+ CREATE INDEX `vulse_entries_tree` ON `vulse_entries` (`collection`,`parent_id`,`sort_order`);--> statement-breakpoint
30
+ CREATE TABLE `vulse_entry_locales` (
31
+ `entry_id` text NOT NULL REFERENCES `vulse_entries`(`id`) ON DELETE cascade,
32
+ `collection` text NOT NULL,
33
+ `locale` text NOT NULL,
34
+ `slug` text NOT NULL,
35
+ `status` text DEFAULT 'draft' NOT NULL CHECK (`status` IN ('draft', 'published')),
36
+ `version` integer DEFAULT 1 NOT NULL,
37
+ `content` text NOT NULL,
38
+ `draft_content` text,
39
+ `published_at` integer,
40
+ `updated_at` integer NOT NULL,
41
+ `updated_by` text,
42
+ PRIMARY KEY (`entry_id`, `locale`)
43
+ );
44
+ --> statement-breakpoint
45
+ CREATE UNIQUE INDEX `vulse_entry_locales_collection_locale_slug` ON `vulse_entry_locales` (`collection`,`locale`,`slug`);--> statement-breakpoint
46
+ CREATE INDEX `vulse_entry_locales_status_published` ON `vulse_entry_locales` (`collection`,`locale`,`status`,`published_at`);--> statement-breakpoint
47
+ CREATE TABLE `vulse_entry_revisions` (
48
+ `id` text PRIMARY KEY NOT NULL,
49
+ `entry_id` text NOT NULL,
50
+ `locale` text NOT NULL,
51
+ `version` integer NOT NULL,
52
+ `content` text NOT NULL,
53
+ `author_id` text,
54
+ `change_summary` text,
55
+ `created_at` integer NOT NULL,
56
+ FOREIGN KEY (`entry_id`) REFERENCES `vulse_entries`(`id`) ON UPDATE no action ON DELETE cascade
57
+ );
58
+ --> statement-breakpoint
59
+ CREATE INDEX `vulse_entry_revisions_entry_locale_version` ON `vulse_entry_revisions` (`entry_id`,`locale`,`version`);--> statement-breakpoint
60
+ CREATE TABLE `vulse_media` (
61
+ `id` text PRIMARY KEY NOT NULL,
62
+ `r2_key` text NOT NULL,
63
+ `mime` text NOT NULL,
64
+ `size` integer NOT NULL,
65
+ `width` integer,
66
+ `height` integer,
67
+ `alt` text,
68
+ `blurhash` text,
69
+ `uploaded_by` text,
70
+ `created_at` integer NOT NULL,
71
+ `deleted_at` integer
72
+ );
73
+ --> statement-breakpoint
74
+ CREATE INDEX `vulse_media_active` ON `vulse_media` (`created_at`) WHERE `deleted_at` IS NULL;--> statement-breakpoint
75
+ CREATE TABLE `session` (
76
+ `id` text PRIMARY KEY NOT NULL,
77
+ `user_id` text NOT NULL,
78
+ `token` text NOT NULL,
79
+ `expires_at` integer NOT NULL,
80
+ `ip_address` text,
81
+ `user_agent` text,
82
+ `created_at` integer NOT NULL,
83
+ `updated_at` integer NOT NULL,
84
+ FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
85
+ );
86
+ --> statement-breakpoint
87
+ CREATE UNIQUE INDEX `session_token_unique` ON `session` (`token`);--> statement-breakpoint
88
+ CREATE TABLE `vulse_settings` (
89
+ `key` text PRIMARY KEY NOT NULL,
90
+ `value` text NOT NULL,
91
+ `updated_at` integer NOT NULL
92
+ );
93
+ --> statement-breakpoint
94
+ CREATE TABLE `user` (
95
+ `id` text PRIMARY KEY NOT NULL,
96
+ `name` text NOT NULL,
97
+ `email` text NOT NULL,
98
+ `email_verified` integer DEFAULT false NOT NULL,
99
+ `image` text,
100
+ `role` text DEFAULT 'member' NOT NULL CHECK (`role` IN ('admin', 'editor', 'member')),
101
+ `display_name` text,
102
+ `created_at` integer NOT NULL,
103
+ `updated_at` integer NOT NULL
104
+ );
105
+ --> statement-breakpoint
106
+ CREATE UNIQUE INDEX `user_email_unique` ON `user` (`email`);--> statement-breakpoint
107
+ CREATE TABLE `verification` (
108
+ `id` text PRIMARY KEY NOT NULL,
109
+ `identifier` text NOT NULL,
110
+ `value` text NOT NULL,
111
+ `expires_at` integer NOT NULL,
112
+ `created_at` integer NOT NULL,
113
+ `updated_at` integer NOT NULL
114
+ );
@@ -0,0 +1,21 @@
1
+ CREATE TABLE `vulse_collections` (
2
+ `handle` text PRIMARY KEY NOT NULL,
3
+ `label` text NOT NULL,
4
+ `definition` text NOT NULL,
5
+ `blueprint_hash` text NOT NULL,
6
+ `schema_version` integer DEFAULT 1 NOT NULL,
7
+ `singleton` integer DEFAULT 0 NOT NULL,
8
+ `tree` integer DEFAULT 0 NOT NULL,
9
+ `drafts` integer DEFAULT 0 NOT NULL,
10
+ `created_at` integer NOT NULL,
11
+ `updated_at` integer NOT NULL
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE TABLE `vulse_sets` (
15
+ `handle` text PRIMARY KEY NOT NULL,
16
+ `label` text NOT NULL,
17
+ `definition` text NOT NULL,
18
+ `schema_version` integer DEFAULT 1 NOT NULL,
19
+ `created_at` integer NOT NULL,
20
+ `updated_at` integer NOT NULL
21
+ );
@@ -0,0 +1,22 @@
1
+ CREATE VIRTUAL TABLE vulse_entries_fts USING fts5(
2
+ entry_id UNINDEXED, collection UNINDEXED, locale UNINDEXED, slug, title, body
3
+ );
4
+ --> statement-breakpoint
5
+ CREATE TRIGGER vulse_entry_locales_fts_insert AFTER INSERT ON vulse_entry_locales BEGIN
6
+ INSERT INTO vulse_entries_fts(entry_id, collection, locale, slug, title, body)
7
+ VALUES (NEW.entry_id, NEW.collection, NEW.locale, NEW.slug,
8
+ json_extract(NEW.content, '$.title'),
9
+ json_extract(NEW.content, '$.body'));
10
+ END;
11
+ --> statement-breakpoint
12
+ CREATE TRIGGER vulse_entry_locales_fts_update AFTER UPDATE OF content, slug ON vulse_entry_locales BEGIN
13
+ DELETE FROM vulse_entries_fts WHERE entry_id = OLD.entry_id AND locale = OLD.locale;
14
+ INSERT INTO vulse_entries_fts(entry_id, collection, locale, slug, title, body)
15
+ VALUES (NEW.entry_id, NEW.collection, NEW.locale, NEW.slug,
16
+ json_extract(NEW.content, '$.title'),
17
+ json_extract(NEW.content, '$.body'));
18
+ END;
19
+ --> statement-breakpoint
20
+ CREATE TRIGGER vulse_entry_locales_fts_delete AFTER DELETE ON vulse_entry_locales BEGIN
21
+ DELETE FROM vulse_entries_fts WHERE entry_id = OLD.entry_id AND locale = OLD.locale;
22
+ END;
@@ -0,0 +1,58 @@
1
+ CREATE TABLE vulse_forms (
2
+ handle TEXT PRIMARY KEY,
3
+ label TEXT NOT NULL,
4
+ definition TEXT NOT NULL,
5
+ schema_version INTEGER NOT NULL DEFAULT 1,
6
+ enabled INTEGER NOT NULL DEFAULT 1,
7
+ created_at INTEGER NOT NULL,
8
+ updated_at INTEGER NOT NULL
9
+ );
10
+ --> statement-breakpoint
11
+ CREATE TABLE vulse_form_submissions (
12
+ id TEXT PRIMARY KEY,
13
+ form_handle TEXT NOT NULL REFERENCES vulse_forms(handle) ON DELETE CASCADE,
14
+ payload TEXT NOT NULL,
15
+ file_refs TEXT NOT NULL DEFAULT '[]',
16
+ meta TEXT NOT NULL,
17
+ status TEXT NOT NULL DEFAULT 'received' CHECK (status IN ('received', 'processed', 'failed')),
18
+ error TEXT,
19
+ created_at INTEGER NOT NULL
20
+ );
21
+ --> statement-breakpoint
22
+ CREATE INDEX vulse_form_submissions_form_created
23
+ ON vulse_form_submissions(form_handle, created_at DESC);
24
+ --> statement-breakpoint
25
+ CREATE INDEX vulse_form_submissions_form_status
26
+ ON vulse_form_submissions(form_handle, status);
27
+ --> statement-breakpoint
28
+ CREATE TABLE vulse_form_upload_drafts (
29
+ id TEXT PRIMARY KEY,
30
+ form_handle TEXT NOT NULL REFERENCES vulse_forms(handle) ON DELETE CASCADE,
31
+ field_name TEXT NOT NULL,
32
+ media_id TEXT NOT NULL REFERENCES vulse_media(id) ON DELETE CASCADE,
33
+ expires_at INTEGER NOT NULL,
34
+ created_at INTEGER NOT NULL
35
+ );
36
+ --> statement-breakpoint
37
+ CREATE INDEX vulse_form_upload_drafts_expires
38
+ ON vulse_form_upload_drafts(expires_at);
39
+ --> statement-breakpoint
40
+ CREATE TABLE vulse_form_unique_values (
41
+ form_handle TEXT NOT NULL REFERENCES vulse_forms(handle) ON DELETE CASCADE,
42
+ field_name TEXT NOT NULL,
43
+ value_hash TEXT NOT NULL,
44
+ submission_id TEXT NOT NULL REFERENCES vulse_form_submissions(id) ON DELETE CASCADE,
45
+ created_at INTEGER NOT NULL,
46
+ PRIMARY KEY (form_handle, field_name, value_hash)
47
+ );
48
+ --> statement-breakpoint
49
+ CREATE INDEX vulse_form_unique_values_submission
50
+ ON vulse_form_unique_values(submission_id);
51
+ --> statement-breakpoint
52
+ CREATE TABLE vulse_form_rate_limits (
53
+ form_handle TEXT NOT NULL,
54
+ ip_hash TEXT NOT NULL,
55
+ window_start INTEGER NOT NULL,
56
+ count INTEGER NOT NULL DEFAULT 1,
57
+ PRIMARY KEY (form_handle, ip_hash, window_start)
58
+ );
@@ -0,0 +1,16 @@
1
+ CREATE TABLE vulse_global_sets (
2
+ handle TEXT PRIMARY KEY,
3
+ label TEXT NOT NULL,
4
+ definition TEXT NOT NULL,
5
+ blueprint_hash TEXT NOT NULL DEFAULT '',
6
+ schema_version INTEGER NOT NULL DEFAULT 1,
7
+ created_at INTEGER NOT NULL,
8
+ updated_at INTEGER NOT NULL
9
+ );
10
+ --> statement-breakpoint
11
+ CREATE TABLE vulse_global_values (
12
+ handle TEXT PRIMARY KEY REFERENCES vulse_global_sets(handle) ON DELETE CASCADE,
13
+ content TEXT NOT NULL DEFAULT '{}',
14
+ created_at INTEGER NOT NULL,
15
+ updated_at INTEGER NOT NULL
16
+ );
@@ -0,0 +1,16 @@
1
+ CREATE TABLE vulse_preview_sessions (
2
+ id TEXT PRIMARY KEY,
3
+ user_id TEXT NOT NULL,
4
+ entry_id TEXT,
5
+ collection TEXT NOT NULL,
6
+ locale TEXT NOT NULL DEFAULT 'default',
7
+ slug TEXT NOT NULL,
8
+ content TEXT NOT NULL,
9
+ expires_at INTEGER NOT NULL,
10
+ created_at INTEGER NOT NULL,
11
+ updated_at INTEGER NOT NULL
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE INDEX vulse_preview_sessions_expires ON vulse_preview_sessions(expires_at);
15
+ --> statement-breakpoint
16
+ CREATE INDEX vulse_preview_sessions_user ON vulse_preview_sessions(user_id);