@primate/core 0.4.5 → 0.5.0

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 (412) hide show
  1. package/lib/private/App.d.ts +531 -3
  2. package/lib/private/App.js +8 -3
  3. package/lib/private/Binder.d.ts +2 -2
  4. package/lib/private/Flags.d.ts +3 -3
  5. package/lib/private/Module.d.ts +5 -5
  6. package/lib/private/app/Facade.d.ts +566 -0
  7. package/lib/private/app/Facade.js +33 -0
  8. package/lib/private/asset/Asset.d.ts +1 -1
  9. package/lib/private/backend/Module.d.ts +1 -1
  10. package/lib/private/backend/Module.js +2 -5
  11. package/lib/private/backend/TAG.d.ts +1 -1
  12. package/lib/private/backend/TAG.js +1 -1
  13. package/lib/private/build/App.d.ts +2 -2
  14. package/lib/private/build/App.js +0 -2
  15. package/lib/private/build/client/index.js +12 -7
  16. package/lib/private/build/hook.js +4 -3
  17. package/lib/private/build/index.js +14 -13
  18. package/lib/private/build/presets.d.ts +10 -0
  19. package/lib/private/build/presets.js +39 -0
  20. package/lib/private/build/server/index.js +5 -7
  21. package/lib/private/build/server/plugin/assets.js +9 -7
  22. package/lib/private/build/server/plugin/config.js +11 -4
  23. package/lib/private/build/server/plugin/db-default.d.ts +4 -0
  24. package/lib/private/build/server/plugin/db-default.js +45 -0
  25. package/lib/private/build/server/plugin/frontend.js +4 -2
  26. package/lib/private/build/server/plugin/live-reload.d.ts +4 -0
  27. package/lib/private/build/server/plugin/{hot-reload.js → live-reload.js} +4 -4
  28. package/lib/private/build/server/plugin/native-addons.js +6 -4
  29. package/lib/private/build/server/plugin/node-imports.js +2 -2
  30. package/lib/private/build/server/plugin/route.js +2 -2
  31. package/lib/private/build/server/plugin/store-wrap.js +2 -2
  32. package/lib/private/build/server/plugin/store.js +6 -6
  33. package/lib/private/build/server/plugin/stores.js +4 -5
  34. package/lib/private/build/server/plugin/view.js +4 -4
  35. package/lib/private/build/server/plugin/views.js +4 -4
  36. package/lib/private/build/server/plugin/virtual-pages.js +8 -8
  37. package/lib/private/build/server/plugin/virtual-routes.js +8 -13
  38. package/lib/private/build/server/plugin/wasm.js +2 -3
  39. package/lib/private/bye.js +2 -3
  40. package/lib/private/client/Data.d.ts +1 -1
  41. package/lib/private/client/ValidateInit.d.ts +1 -3
  42. package/lib/private/client/ValidationError.d.ts +1 -1
  43. package/lib/private/client/app.js +2 -1
  44. package/lib/private/client/create-form.d.ts +31 -0
  45. package/lib/private/client/create-form.js +124 -0
  46. package/lib/private/client/extract-issues.d.ts +4 -0
  47. package/lib/private/client/extract-issues.js +20 -0
  48. package/lib/private/client/spa/index.d.ts +1 -1
  49. package/lib/private/client/spa/index.js +4 -5
  50. package/lib/private/client/{toValidated.d.ts → to-validated.d.ts} +2 -4
  51. package/lib/private/client/{toValidated.js → to-validated.js} +1 -1
  52. package/lib/private/client/validate-field.d.ts +3 -0
  53. package/lib/private/client/validate-field.js +41 -0
  54. package/lib/private/config/index.d.ts +2 -21
  55. package/lib/private/config/index.js +3 -1
  56. package/lib/private/config/schema.d.ts +13 -9
  57. package/lib/private/config/schema.js +10 -5
  58. package/lib/private/cookie.d.ts +5 -5
  59. package/lib/private/cookie.js +10 -14
  60. package/lib/private/db/As.d.ts +10 -0
  61. package/lib/private/db/DB.d.ts +33 -0
  62. package/lib/private/db/DB.js +2 -0
  63. package/lib/private/db/DataDict.d.ts +5 -0
  64. package/lib/private/db/DataKey.d.ts +4 -0
  65. package/lib/private/db/DataValue.d.ts +17 -0
  66. package/lib/private/db/MemoryDB.d.ts +35 -0
  67. package/lib/private/db/MemoryDB.js +317 -0
  68. package/lib/private/db/PK.d.ts +3 -0
  69. package/lib/private/db/PK.js +2 -0
  70. package/lib/private/{database → db}/Query.d.ts +2 -2
  71. package/lib/private/{database → db}/QueryBuilder.d.ts +2 -3
  72. package/lib/private/db/ReadArgs.d.ts +9 -0
  73. package/lib/private/db/ReadArgs.js +2 -0
  74. package/lib/private/db/ReadRelationsArgs.d.ts +6 -0
  75. package/lib/private/db/ReadRelationsArgs.js +2 -0
  76. package/lib/private/{database → db}/Schema.d.ts +1 -2
  77. package/lib/private/db/Sort.d.ts +4 -0
  78. package/lib/private/{database → db}/TypeMap.d.ts +2 -3
  79. package/lib/private/{database → db}/Types.d.ts +1 -1
  80. package/lib/private/db/With.d.ts +16 -0
  81. package/lib/private/db/With.js +2 -0
  82. package/lib/private/db/common.d.ts +18 -0
  83. package/lib/private/db/common.js +36 -0
  84. package/lib/private/db/error.d.ts +81 -0
  85. package/lib/private/db/error.js +199 -0
  86. package/lib/private/db/sql.d.ts +28 -0
  87. package/lib/private/db/sql.js +177 -0
  88. package/lib/private/db/storage.d.ts +3 -0
  89. package/lib/private/db/storage.js +3 -0
  90. package/lib/private/db/symbol/wrap.js +2 -0
  91. package/lib/private/db/symbol.js +2 -0
  92. package/lib/private/db/test.d.ts +4 -0
  93. package/lib/private/db/test.js +1384 -0
  94. package/lib/private/frontend/Module.d.ts +6 -6
  95. package/lib/private/frontend/Module.js +28 -23
  96. package/lib/private/frontend/Render.d.ts +1 -2
  97. package/lib/private/frontend/ServerData.d.ts +1 -1
  98. package/lib/private/frontend/ServerView.d.ts +1 -2
  99. package/lib/private/frontend/View.d.ts +1 -1
  100. package/lib/private/frontend/ViewOptions.d.ts +1 -1
  101. package/lib/private/frontend/ViewResponse.d.ts +1 -1
  102. package/lib/private/hash.js +0 -1
  103. package/lib/private/i18n/Catalog.d.ts +5 -2
  104. package/lib/private/i18n/Formatter.js +20 -8
  105. package/lib/private/i18n/Module.d.ts +3 -3
  106. package/lib/private/i18n/Module.js +28 -17
  107. package/lib/private/i18n/format.d.ts +4 -0
  108. package/lib/private/i18n/format.js +95 -0
  109. package/lib/private/i18n/index/client.d.ts +9 -0
  110. package/lib/private/i18n/index/client.js +152 -0
  111. package/lib/private/i18n/index/server.d.ts +9 -0
  112. package/lib/private/i18n/index/server.js +57 -0
  113. package/lib/private/i18n/index/types.d.ts +33 -0
  114. package/lib/private/i18n/index/types.js +2 -0
  115. package/lib/private/i18n/locale.d.ts +9 -3
  116. package/lib/private/i18n/ordinals.d.ts +1 -1
  117. package/lib/private/i18n/resolve.d.ts +7 -0
  118. package/lib/private/i18n/resolve.js +30 -0
  119. package/lib/private/i18n/schema.d.ts +4 -4
  120. package/lib/private/i18n/schema.js +6 -10
  121. package/lib/private/i18n/storage.d.ts +3 -0
  122. package/lib/private/i18n/storage.js +5 -0
  123. package/lib/private/i18n/validate.d.ts +2 -0
  124. package/lib/private/i18n/validate.js +21 -0
  125. package/lib/private/log.d.ts +1 -0
  126. package/lib/private/log.js +10 -10
  127. package/lib/private/module/Hook.d.ts +1 -1
  128. package/lib/private/module/Next.d.ts +1 -1
  129. package/lib/private/orm/ForeignKey.d.ts +11 -0
  130. package/lib/private/orm/ForeignKey.js +22 -0
  131. package/lib/private/orm/PrimaryKey.d.ts +15 -0
  132. package/lib/private/orm/PrimaryKey.js +35 -0
  133. package/lib/private/orm/Set.d.ts +11 -0
  134. package/lib/private/orm/Set.js +2 -0
  135. package/lib/private/orm/Store.d.ts +171 -0
  136. package/lib/private/orm/Store.js +518 -0
  137. package/lib/private/orm/foreign.d.ts +4 -0
  138. package/lib/private/orm/foreign.js +5 -0
  139. package/lib/private/orm/key.d.ts +8 -0
  140. package/lib/private/orm/key.js +4 -0
  141. package/lib/private/orm/parse.d.ts +12 -0
  142. package/lib/private/orm/parse.js +29 -0
  143. package/lib/private/orm/primary.d.ts +5 -0
  144. package/lib/private/orm/primary.js +5 -0
  145. package/lib/private/orm/relation.d.ts +43 -0
  146. package/lib/private/orm/relation.js +26 -0
  147. package/lib/private/orm/types.d.ts +18 -0
  148. package/lib/private/orm/types.js +2 -0
  149. package/lib/private/orm/wrap.d.ts +5 -0
  150. package/lib/private/orm/wrap.js +5 -0
  151. package/lib/private/paths.d.ts +2 -2
  152. package/lib/private/request/RequestBag.d.ts +1 -1
  153. package/lib/private/request/RequestBag.js +11 -7
  154. package/lib/private/request/RequestBody.d.ts +2 -4
  155. package/lib/private/request/RequestBody.js +8 -11
  156. package/lib/private/request/RequestContext.d.ts +12 -0
  157. package/lib/private/request/RequestContext.js +31 -0
  158. package/lib/private/request/RequestFacade.d.ts +16 -6
  159. package/lib/private/request/parse.d.ts +2 -2
  160. package/lib/private/request/parse.js +54 -16
  161. package/lib/private/request/route.js +37 -21
  162. package/lib/private/request/router.d.ts +1 -1
  163. package/lib/private/request/router.js +2 -2
  164. package/lib/private/request/sContext.d.ts +3 -0
  165. package/lib/private/request/sContext.js +2 -0
  166. package/lib/private/response/ResponseFunction.d.ts +1 -2
  167. package/lib/private/response/ResponseLike.d.ts +1 -1
  168. package/lib/private/response/binary.d.ts +1 -1
  169. package/lib/private/response/binary.js +4 -3
  170. package/lib/private/response/json.d.ts +1 -1
  171. package/lib/private/response/json.js +2 -2
  172. package/lib/private/response/redirect.js +1 -1
  173. package/lib/private/response/respond.js +7 -10
  174. package/lib/private/response/sse.d.ts +1 -1
  175. package/lib/private/response/sse.js +2 -2
  176. package/lib/private/response/text.d.ts +1 -1
  177. package/lib/private/response/text.js +3 -3
  178. package/lib/private/response/view.d.ts +2 -2
  179. package/lib/private/response/view.js +3 -3
  180. package/lib/private/response.d.ts +1 -1
  181. package/lib/private/route/Handler.d.ts +1 -1
  182. package/lib/private/route/hook.d.ts +6 -0
  183. package/lib/private/route/hook.js +5 -0
  184. package/lib/private/route/router.d.ts +9 -5
  185. package/lib/private/route/router.js +34 -17
  186. package/lib/private/route/wrap.js +2 -2
  187. package/lib/private/serve/App.d.ts +5 -18
  188. package/lib/private/serve/App.js +91 -82
  189. package/lib/private/serve/Init.d.ts +3 -3
  190. package/lib/private/serve/hook.js +1 -7
  191. package/lib/private/serve/index.js +6 -2
  192. package/lib/private/serve/module/Dev.d.ts +1 -1
  193. package/lib/private/serve/module/Dev.js +9 -5
  194. package/lib/private/serve/module/Handle.js +2 -2
  195. package/lib/private/session/Data.d.ts +1 -2
  196. package/lib/private/session/SessionHandle.d.ts +1 -1
  197. package/lib/private/session/SessionHandle.js +10 -9
  198. package/lib/private/session/SessionModule.js +7 -7
  199. package/lib/private/session/index.d.ts +3 -4
  200. package/lib/private/session/schema.d.ts +6 -6
  201. package/lib/private/session/schema.js +5 -4
  202. package/lib/private/session/storage.d.ts +1 -2
  203. package/lib/private/session/storage.js +2 -2
  204. package/lib/private/tags.js +2 -2
  205. package/lib/private/target/Target.d.ts +1 -1
  206. package/lib/public/AppFacade.d.ts +2 -0
  207. package/lib/public/AppFacade.js +2 -0
  208. package/lib/public/build/presets.d.ts +2 -0
  209. package/lib/public/build/presets.js +2 -0
  210. package/lib/public/build/transform.d.ts +2 -0
  211. package/lib/public/build/transform.js +2 -0
  212. package/lib/public/client.d.ts +14 -0
  213. package/lib/public/client.js +10 -0
  214. package/lib/public/db/MemoryDB.d.ts +2 -0
  215. package/lib/public/db/MemoryDB.js +2 -0
  216. package/lib/public/db/error.d.ts +2 -0
  217. package/lib/public/db/error.js +2 -0
  218. package/lib/public/db/sql.d.ts +2 -0
  219. package/lib/public/db/sql.js +2 -0
  220. package/lib/public/db/test.d.ts +2 -0
  221. package/lib/public/db/test.js +2 -0
  222. package/lib/public/db.d.ts +12 -0
  223. package/lib/public/db.js +2 -0
  224. package/lib/public/orm/Store.d.ts +2 -0
  225. package/lib/public/orm/Store.js +2 -0
  226. package/lib/public/orm/key.d.ts +2 -0
  227. package/lib/public/orm/key.js +2 -0
  228. package/lib/public/orm/relation.d.ts +2 -0
  229. package/lib/public/orm/relation.js +2 -0
  230. package/lib/public/orm/wrap.d.ts +2 -0
  231. package/lib/public/orm/wrap.js +2 -0
  232. package/lib/public/request.d.ts +4 -0
  233. package/lib/public/request.js +2 -0
  234. package/lib/public/response.d.ts +22 -0
  235. package/lib/public/response.js +19 -0
  236. package/lib/public/route/hook.d.ts +2 -0
  237. package/lib/public/route/hook.js +2 -0
  238. package/package.json +28 -23
  239. package/lib/private/build/client/reload.d.ts +0 -7
  240. package/lib/private/build/client/reload.js +0 -6
  241. package/lib/private/build/server/plugin/database-default.d.ts +0 -4
  242. package/lib/private/build/server/plugin/database-default.js +0 -48
  243. package/lib/private/build/server/plugin/hot-reload.d.ts +0 -4
  244. package/lib/private/client/validate.d.ts +0 -3
  245. package/lib/private/client/validate.js +0 -54
  246. package/lib/private/database/As.d.ts +0 -7
  247. package/lib/private/database/Binds.d.ts +0 -4
  248. package/lib/private/database/Binds.js +0 -2
  249. package/lib/private/database/Changes.d.ts +0 -11
  250. package/lib/private/database/Changes.js +0 -2
  251. package/lib/private/database/ColumnTypes.d.ts +0 -11
  252. package/lib/private/database/ColumnTypes.js +0 -2
  253. package/lib/private/database/DataDict.d.ts +0 -5
  254. package/lib/private/database/DataKey.d.ts +0 -4
  255. package/lib/private/database/DataValue.d.ts +0 -5
  256. package/lib/private/database/Database.d.ts +0 -56
  257. package/lib/private/database/Database.js +0 -153
  258. package/lib/private/database/InMemoryDatabase.d.ts +0 -37
  259. package/lib/private/database/InMemoryDatabase.js +0 -181
  260. package/lib/private/database/Sort.d.ts +0 -4
  261. package/lib/private/database/Store.d.ts +0 -172
  262. package/lib/private/database/Store.js +0 -261
  263. package/lib/private/database/storage.d.ts +0 -4
  264. package/lib/private/database/storage.js +0 -3
  265. package/lib/private/database/symbol/wrap.js +0 -2
  266. package/lib/private/database/symbol.js +0 -2
  267. package/lib/private/database/test.d.ts +0 -4
  268. package/lib/private/database/test.js +0 -678
  269. package/lib/private/database/wrap.d.ts +0 -5
  270. package/lib/private/database/wrap.js +0 -5
  271. package/lib/private/i18n/index.d.ts +0 -28
  272. package/lib/private/i18n/index.js +0 -236
  273. package/lib/private/route/guard.d.ts +0 -4
  274. package/lib/private/route/guard.js +0 -22
  275. package/lib/private/wasm/API.d.ts +0 -7
  276. package/lib/private/wasm/API.js +0 -2
  277. package/lib/private/wasm/BufferViewSource.d.ts +0 -4
  278. package/lib/private/wasm/BufferViewSource.js +0 -2
  279. package/lib/private/wasm/Exports.d.ts +0 -23
  280. package/lib/private/wasm/Exports.js +0 -2
  281. package/lib/private/wasm/I32.d.ts +0 -5
  282. package/lib/private/wasm/I32.js +0 -2
  283. package/lib/private/wasm/I32_SIZE.d.ts +0 -3
  284. package/lib/private/wasm/I32_SIZE.js +0 -2
  285. package/lib/private/wasm/Instantiation.d.ts +0 -12
  286. package/lib/private/wasm/Instantiation.js +0 -2
  287. package/lib/private/wasm/Tagged.d.ts +0 -7
  288. package/lib/private/wasm/Tagged.js +0 -2
  289. package/lib/private/wasm/buffersize.d.ts +0 -2
  290. package/lib/private/wasm/buffersize.js +0 -5
  291. package/lib/private/wasm/decode-bytes.d.ts +0 -3
  292. package/lib/private/wasm/decode-bytes.js +0 -5
  293. package/lib/private/wasm/decode-json.d.ts +0 -7
  294. package/lib/private/wasm/decode-json.js +0 -11
  295. package/lib/private/wasm/decode-option.d.ts +0 -5
  296. package/lib/private/wasm/decode-option.js +0 -10
  297. package/lib/private/wasm/decode-response.d.ts +0 -19
  298. package/lib/private/wasm/decode-response.js +0 -90
  299. package/lib/private/wasm/decode-string.d.ts +0 -3
  300. package/lib/private/wasm/decode-string.js +0 -5
  301. package/lib/private/wasm/decode-websocket-close.d.ts +0 -5
  302. package/lib/private/wasm/decode-websocket-close.js +0 -6
  303. package/lib/private/wasm/decode-websocket-send.d.ts +0 -6
  304. package/lib/private/wasm/decode-websocket-send.js +0 -19
  305. package/lib/private/wasm/encode-buffer.d.ts +0 -3
  306. package/lib/private/wasm/encode-buffer.js +0 -6
  307. package/lib/private/wasm/encode-request.d.ts +0 -9
  308. package/lib/private/wasm/encode-request.js +0 -195
  309. package/lib/private/wasm/encode-session.d.ts +0 -3
  310. package/lib/private/wasm/encode-session.js +0 -25
  311. package/lib/private/wasm/encode-string-map.d.ts +0 -5
  312. package/lib/private/wasm/encode-string-map.js +0 -14
  313. package/lib/private/wasm/encode-string.d.ts +0 -13
  314. package/lib/private/wasm/encode-string.js +0 -17
  315. package/lib/private/wasm/encode-url.d.ts +0 -11
  316. package/lib/private/wasm/encode-url.js +0 -14
  317. package/lib/private/wasm/encode-websocket-close.d.ts +0 -2
  318. package/lib/private/wasm/encode-websocket-close.js +0 -7
  319. package/lib/private/wasm/encode-websocket-message.d.ts +0 -4
  320. package/lib/private/wasm/encode-websocket-message.js +0 -30
  321. package/lib/private/wasm/encode-websocket-open.d.ts +0 -2
  322. package/lib/private/wasm/encode-websocket-open.js +0 -7
  323. package/lib/private/wasm/filesize.d.ts +0 -2
  324. package/lib/private/wasm/filesize.js +0 -8
  325. package/lib/private/wasm/instantiate.d.ts +0 -37
  326. package/lib/private/wasm/instantiate.js +0 -408
  327. package/lib/private/wasm/open-websocket.d.ts +0 -4
  328. package/lib/private/wasm/open-websocket.js +0 -26
  329. package/lib/private/wasm/stringsize.d.ts +0 -3
  330. package/lib/private/wasm/stringsize.js +0 -5
  331. package/lib/private/wasm/urlsize.d.ts +0 -2
  332. package/lib/private/wasm/urlsize.js +0 -5
  333. package/lib/public/Database.d.ts +0 -2
  334. package/lib/public/Database.js +0 -2
  335. package/lib/public/client/ValidateInit.d.ts +0 -2
  336. package/lib/public/client/ValidateInit.js +0 -2
  337. package/lib/public/client/ValidateUpdater.d.ts +0 -2
  338. package/lib/public/client/ValidateUpdater.js +0 -2
  339. package/lib/public/client/ValidationError.d.ts +0 -2
  340. package/lib/public/client/ValidationError.js +0 -2
  341. package/lib/public/client/toValidated.d.ts +0 -2
  342. package/lib/public/client/toValidated.js +0 -2
  343. package/lib/public/client/validate.d.ts +0 -2
  344. package/lib/public/client/validate.js +0 -2
  345. package/lib/public/database/As.d.ts +0 -2
  346. package/lib/public/database/As.js +0 -2
  347. package/lib/public/database/DataDict.d.ts +0 -2
  348. package/lib/public/database/DataDict.js +0 -2
  349. package/lib/public/database/InMemoryDatabase.d.ts +0 -2
  350. package/lib/public/database/InMemoryDatabase.js +0 -2
  351. package/lib/public/database/Sort.d.ts +0 -2
  352. package/lib/public/database/Sort.js +0 -2
  353. package/lib/public/database/Store.d.ts +0 -2
  354. package/lib/public/database/Store.js +0 -2
  355. package/lib/public/database/TypeMap.d.ts +0 -2
  356. package/lib/public/database/TypeMap.js +0 -2
  357. package/lib/public/database/Types.d.ts +0 -2
  358. package/lib/public/database/Types.js +0 -2
  359. package/lib/public/database/test.d.ts +0 -2
  360. package/lib/public/database/test.js +0 -2
  361. package/lib/public/database/wrap.d.ts +0 -2
  362. package/lib/public/database/wrap.js +0 -2
  363. package/lib/public/request/RequestBody.d.ts +0 -2
  364. package/lib/public/request/RequestBody.js +0 -2
  365. package/lib/public/request/RequestFacade.d.ts +0 -2
  366. package/lib/public/request/RequestFacade.js +0 -2
  367. package/lib/public/request/Verb.d.ts +0 -2
  368. package/lib/public/request/Verb.js +0 -2
  369. package/lib/public/response/ResponseFunction.d.ts +0 -2
  370. package/lib/public/response/ResponseFunction.js +0 -2
  371. package/lib/public/response/ResponseLike.d.ts +0 -2
  372. package/lib/public/response/ResponseLike.js +0 -2
  373. package/lib/public/response/binary.d.ts +0 -2
  374. package/lib/public/response/binary.js +0 -2
  375. package/lib/public/response/error.d.ts +0 -2
  376. package/lib/public/response/error.js +0 -2
  377. package/lib/public/response/json.d.ts +0 -2
  378. package/lib/public/response/json.js +0 -2
  379. package/lib/public/response/redirect.d.ts +0 -2
  380. package/lib/public/response/redirect.js +0 -2
  381. package/lib/public/response/sse.d.ts +0 -2
  382. package/lib/public/response/sse.js +0 -2
  383. package/lib/public/response/text.d.ts +0 -2
  384. package/lib/public/response/text.js +0 -2
  385. package/lib/public/response/view.d.ts +0 -2
  386. package/lib/public/response/view.js +0 -2
  387. package/lib/public/response/ws.d.ts +0 -2
  388. package/lib/public/response/ws.js +0 -2
  389. package/lib/public/wasm/decode-json.d.ts +0 -5
  390. package/lib/public/wasm/decode-json.js +0 -3
  391. package/lib/public/wasm/decode-response.d.ts +0 -3
  392. package/lib/public/wasm/decode-response.js +0 -3
  393. package/lib/public/wasm/encode-request.d.ts +0 -3
  394. package/lib/public/wasm/encode-request.js +0 -3
  395. package/lib/public/wasm/encode-session.d.ts +0 -3
  396. package/lib/public/wasm/encode-session.js +0 -3
  397. package/lib/public/wasm/instantiate.d.ts +0 -4
  398. package/lib/public/wasm/instantiate.js +0 -3
  399. /package/lib/private/{database → db}/As.js +0 -0
  400. /package/lib/private/{database → db}/DataDict.js +0 -0
  401. /package/lib/private/{database → db}/DataKey.js +0 -0
  402. /package/lib/private/{database → db}/DataValue.js +0 -0
  403. /package/lib/private/{database → db}/Query.js +0 -0
  404. /package/lib/private/{database → db}/QueryBuilder.js +0 -0
  405. /package/lib/private/{database → db}/Schema.js +0 -0
  406. /package/lib/private/{database → db}/Sort.js +0 -0
  407. /package/lib/private/{database → db}/TypeMap.js +0 -0
  408. /package/lib/private/{database → db}/Types.js +0 -0
  409. /package/lib/private/{database → db}/primary.d.ts +0 -0
  410. /package/lib/private/{database → db}/primary.js +0 -0
  411. /package/lib/private/{database → db}/symbol/wrap.d.ts +0 -0
  412. /package/lib/private/{database → db}/symbol.d.ts +0 -0
@@ -1,20 +1,22 @@
1
1
  import kSerialize from "#session/k-serialize";
2
2
  import assert from "@rcompat/assert";
3
- import maybe from "@rcompat/assert/maybe";
3
+ import is from "@rcompat/is";
4
4
  export default class SessionHandle {
5
5
  #id;
6
6
  #data;
7
7
  #schema;
8
8
  #dirty = false;
9
9
  constructor(id, data, schema) {
10
- maybe(id).uuid();
11
- maybe(data).record();
12
- maybe(schema).object();
13
- maybe(schema?.parse).function();
14
- assert((id === undefined) === (data === undefined), "both `id` and `data` must be defined or undefined");
10
+ assert.maybe.uuid(id);
11
+ assert.maybe.dict(data);
12
+ assert.maybe.object(schema);
13
+ assert.maybe.function(schema?.parse);
14
+ assert.true((id === undefined) === (data === undefined), "both `id` and `data` must be defined or undefined");
15
15
  this.#id = id;
16
16
  this.#data = data;
17
- this.#schema = schema ?? { parse: (x) => x };
17
+ this.#schema = schema?.parse
18
+ ? schema
19
+ : { parse: (x) => x };
18
20
  }
19
21
  get exists() {
20
22
  return this.#id !== undefined;
@@ -43,8 +45,7 @@ export default class SessionHandle {
43
45
  if (!this.exists)
44
46
  throw new Error("cannot set() on non-existent session");
45
47
  const previous = this.#data;
46
- // @ts-expect-error TEST
47
- const candidate = typeof next === "function" ? next(previous) : next;
48
+ const candidate = is.function(next) ? next(previous) : next;
48
49
  this.#data = this.#schema.parse(candidate);
49
50
  this.#dirty = true;
50
51
  }
@@ -46,16 +46,16 @@ export default class SessionModule extends Module {
46
46
  const sid = request.cookies.try(name);
47
47
  // Look up session by session_id
48
48
  const existing = sid !== undefined
49
- ? await this.#store.find({ session_id: sid }, { limit: 1 })
49
+ ? await this.#store.find({ where: { session_id: sid }, limit: 1 })
50
50
  : [];
51
51
  const exists = existing.length > 0;
52
52
  let data = undefined;
53
- let dbId = undefined;
53
+ let db_id = undefined;
54
54
  if (exists) {
55
55
  const record = existing[0];
56
56
  const { id: _id, session_id: _sid, ...rest } = record;
57
57
  data = rest;
58
- dbId = _id;
58
+ db_id = _id;
59
59
  }
60
60
  const session_type = p.omit(this.#store.type, "id", "session_id");
61
61
  const session = new SessionHandle(sid, data, session_type);
@@ -95,13 +95,13 @@ export default class SessionModule extends Module {
95
95
  response.headers.append("set-cookie", cookie(name, snap.id, options));
96
96
  return response;
97
97
  }
98
- // from here: session existed (dbId is defined)
98
+ // from here: session existed (db_id is defined)
99
99
  // fast-path: session exists, same id and not dirty -> noop
100
100
  if (snap.exists && snap.id === sid && !snap.dirty)
101
101
  return response;
102
102
  // current absent -> destroy + clear cookie
103
103
  if (!snap.exists) {
104
- await this.#store.delete(dbId);
104
+ await this.#store.delete(db_id);
105
105
  response.headers.append("set-cookie", cookie(name, "", {
106
106
  ...options, maxAge: 0,
107
107
  }));
@@ -109,13 +109,13 @@ export default class SessionModule extends Module {
109
109
  }
110
110
  // session recreated in route -> destroy old, create new, set cookie
111
111
  if (snap.id !== sid) {
112
- await this.#store.delete(dbId);
112
+ await this.#store.delete(db_id);
113
113
  await this.#store.insert({ session_id: snap.id, ...snap.data });
114
114
  response.headers.append("set-cookie", cookie(name, snap.id, options));
115
115
  return response;
116
116
  }
117
117
  // dirty -> replace session contents
118
- await this.#store.update(dbId, snap.data);
118
+ await this.#store.update(db_id, { set: snap.data });
119
119
  return response;
120
120
  }
121
121
  }
@@ -1,15 +1,14 @@
1
- import type DatabaseStore from "#database/Store";
1
+ import type Store from "#orm/Store";
2
2
  import configSchema from "#session/schema";
3
3
  import type SessionFacade from "#session/SessionFacade";
4
- import type InferStore from "pema/InferStore";
5
- import type StoreSchema from "pema/StoreSchema";
4
+ import type { InferStore, StoreSchema } from "pema";
6
5
  type ConfigInput = typeof configSchema.input;
7
6
  type X<T> = {
8
7
  [K in keyof T]: T[K];
9
8
  } & {};
10
9
  type Infer<S extends StoreSchema> = X<Omit<InferStore<S>, "id" | "session_id">>;
11
10
  export default function session<S extends StoreSchema>(config: {
12
- store: DatabaseStore<S>;
11
+ store: Store<S>;
13
12
  } & Partial<ConfigInput>): SessionFacade<Infer<S>>;
14
13
  export default function session(Infer?: Omit<Partial<ConfigInput>, "store">): SessionFacade<unknown>;
15
14
  export {};
@@ -1,12 +1,12 @@
1
- import Store from "#database/Store";
1
+ import Store from "#orm/Store";
2
2
  declare const _default: import("pema").ObjectType<{
3
3
  cookie: import("pema").ObjectType<{
4
- httpOnly: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
5
- name: import("pema").DefaultType<import("pema/string").StringType, "session_id">;
6
- path: import("pema").DefaultType<import("pema/string").StringType, "/">;
7
- sameSite: import("pema").DefaultType<import("pema/union").UnionType<[import("pema").LiteralType<"Strict">, import("pema").LiteralType<"Lax">, import("pema").LiteralType<"None">]>, "Lax" | "None" | "Strict">;
4
+ httpOnly: import("pema").DefaultType<import("pema").BooleanType, true>;
5
+ name: import("pema").DefaultType<import("pema").StringType, "session_id">;
6
+ path: import("pema").DefaultType<import("pema").StringType, "/">;
7
+ sameSite: import("pema").DefaultType<import("pema").UnionType<[import("pema").LiteralType<"Strict">, import("pema").LiteralType<"Lax">, import("pema").LiteralType<"None">]>, "Lax" | "None" | "Strict">;
8
8
  }>;
9
- store: import("pema").DefaultType<import("pema").ConstructorType<typeof Store>, Store<import("pema/StoreSchema").default>>;
9
+ store: import("pema").DefaultType<import("pema").ConstructorType<typeof Store>, Store<import("../orm/types.js").StoreInput, import("@rcompat/type").Dict<import("../orm/relation.js").Relation>>>;
10
10
  }>;
11
11
  export default _default;
12
12
  //# sourceMappingURL=schema.d.ts.map
@@ -1,5 +1,6 @@
1
- import InMemoryDatabase from "#database/InMemoryDatabase";
2
- import Store from "#database/Store";
1
+ import MemoryDB from "#db/MemoryDB";
2
+ import key from "#orm/key";
3
+ import Store from "#orm/Store";
3
4
  import p from "pema";
4
5
  export default p({
5
6
  cookie: {
@@ -10,9 +11,9 @@ export default p({
10
11
  },
11
12
  store: p.constructor(Store).default(() => {
12
13
  return new Store({
13
- id: p.primary,
14
+ id: key.primary(p.string),
14
15
  session_id: p.string.uuid(),
15
- }, { database: new InMemoryDatabase(), name: "session" });
16
+ }, { db: new MemoryDB(), name: "session" });
16
17
  }),
17
18
  });
18
19
  //# sourceMappingURL=schema.js.map
@@ -1,5 +1,4 @@
1
1
  import type SessionHandle from "#session/SessionHandle";
2
- import AsyncLocalStorage from "@rcompat/async/context";
3
- declare const _default: <Data>() => AsyncLocalStorage<SessionHandle<Data>>;
2
+ declare const _default: <Data>() => import("node:async_hooks").AsyncLocalStorage<SessionHandle<Data>>;
4
3
  export default _default;
5
4
  //# sourceMappingURL=storage.d.ts.map
@@ -1,5 +1,5 @@
1
- import AsyncLocalStorage from "@rcompat/async/context";
1
+ import io from "@rcompat/io";
2
2
  import cache from "@rcompat/kv/cache";
3
3
  const s = Symbol("primate.session");
4
- export default () => cache.get(s, () => new AsyncLocalStorage);
4
+ export default () => cache.get(s, () => new io.async.Context());
5
5
  //# sourceMappingURL=storage.js.map
@@ -1,5 +1,5 @@
1
- import empty from "@rcompat/record/empty";
2
- const attribute = (attributes) => empty(attributes)
1
+ import dict from "@rcompat/dict";
2
+ const attribute = (attributes) => dict.empty(attributes)
3
3
  ? ""
4
4
  : " ".concat(Object.entries(attributes)
5
5
  .map(([key, value]) => `${key}="${value}"`).join(" "));
@@ -1,5 +1,5 @@
1
1
  import type App from "#App";
2
- import type MaybePromise from "@rcompat/type/MaybePromise";
2
+ import type { MaybePromise } from "@rcompat/type";
3
3
  export default interface Target {
4
4
  name: string;
5
5
  runner: (app: App) => MaybePromise<void>;
@@ -0,0 +1,2 @@
1
+ export type { default } from "#app/Facade";
2
+ //# sourceMappingURL=AppFacade.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AppFacade.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#build/presets";
2
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#build/presets";
2
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1,2 @@
1
+ export { transformSync as default } from "esbuild";
2
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { transformSync as default } from "esbuild";
2
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1,14 @@
1
+ import createForm, { type FormInit, type FormView } from "#client/create-form";
2
+ import toValidated from "#client/to-validated";
3
+ import validateField from "#client/validate-field";
4
+ import type ValidateInit from "#client/ValidateInit";
5
+ import type ValidateUpdater from "#client/ValidateUpdater";
6
+ import type ValidationError from "#client/ValidationError";
7
+ declare const client: {
8
+ createForm: typeof createForm;
9
+ validateField: typeof validateField;
10
+ toValidated: typeof toValidated;
11
+ };
12
+ export default client;
13
+ export type { FormInit, FormView, ValidateInit, ValidateUpdater, ValidationError, };
14
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1,10 @@
1
+ import createForm from "#client/create-form";
2
+ import toValidated from "#client/to-validated";
3
+ import validateField from "#client/validate-field";
4
+ const client = {
5
+ createForm, // headless form controller
6
+ validateField, // low-level single-value transport
7
+ toValidated, // adapter to create field stores/hooks
8
+ };
9
+ export default client;
10
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/MemoryDB";
2
+ //# sourceMappingURL=MemoryDB.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/MemoryDB";
2
+ //# sourceMappingURL=MemoryDB.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/error";
2
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/error";
2
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/sql";
2
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/sql";
2
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/test";
2
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/test";
2
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1,12 @@
1
+ export type { default as As } from "#db/As";
2
+ export type { default as DataDict } from "#db/DataDict";
3
+ export type { default as DB } from "#db/DB";
4
+ export type { default as PK } from "#db/PK";
5
+ export type { default as Sort } from "#db/Sort";
6
+ export type { default as TypeMap } from "#db/TypeMap";
7
+ export type { default as Types } from "#db/Types";
8
+ export type { default as With } from "#db/With";
9
+ export type { default as ReadArgs } from "#db/ReadArgs";
10
+ export type { default as ReadRelationsArgs } from "#db/ReadRelationsArgs";
11
+ export { default } from "#db/common";
12
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#db/common";
2
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/Store";
2
+ //# sourceMappingURL=Store.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/Store";
2
+ //# sourceMappingURL=Store.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/key";
2
+ //# sourceMappingURL=key.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/key";
2
+ //# sourceMappingURL=key.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/relation";
2
+ //# sourceMappingURL=relation.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/relation";
2
+ //# sourceMappingURL=relation.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/wrap";
2
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#orm/wrap";
2
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1,4 @@
1
+ export type { default as RequestBody } from "#request/RequestBody";
2
+ export type { default as RequestFacade } from "#request/RequestFacade";
3
+ export type { default as Verb } from "#request/Verb";
4
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1,22 @@
1
+ import binary from "#response/binary";
2
+ import error from "#response/error";
3
+ import view from "#response/view";
4
+ export type { default as ResponseFunction } from "#response/ResponseFunction";
5
+ export type { default as ResponseLike } from "#response/ResponseLike";
6
+ declare const _default: {
7
+ binary: typeof binary;
8
+ error: typeof error;
9
+ json: (body: unknown, init?: ResponseInit) => (app: import("./ServeApp.js").default) => import("@rcompat/type").MaybePromise<Response>;
10
+ redirect: (location: string, status?: 302 | 301 | 300 | 304 | 308 | 303 | 307) => import("#response/ResponseFunction").default;
11
+ sse: (body: {
12
+ close?(): undefined;
13
+ open(events: {
14
+ send(name: string, data: unknown): undefined;
15
+ }): undefined;
16
+ }, init?: ResponseInit) => (app: import("./ServeApp.js").default) => import("@rcompat/type").MaybePromise<Response>;
17
+ text: (body: string, init?: ResponseInit) => (app: import("./ServeApp.js").default) => import("@rcompat/type").MaybePromise<Response>;
18
+ view: typeof view;
19
+ ws: (actions: import("@rcompat/http/Actions").default) => import("#response/ResponseFunction").default;
20
+ };
21
+ export default _default;
22
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1,19 @@
1
+ import binary from "#response/binary";
2
+ import error from "#response/error";
3
+ import json from "#response/json";
4
+ import redirect from "#response/redirect";
5
+ import sse from "#response/sse";
6
+ import text from "#response/text";
7
+ import view from "#response/view";
8
+ import ws from "#response/ws";
9
+ export default {
10
+ binary,
11
+ error,
12
+ json,
13
+ redirect,
14
+ sse,
15
+ text,
16
+ view,
17
+ ws,
18
+ };
19
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#route/hook";
2
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#route/hook";
2
+ //# sourceMappingURL=hook.js.map
package/package.json CHANGED
@@ -1,41 +1,46 @@
1
1
  {
2
2
  "name": "@primate/core",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "description": "The universal web framework",
5
5
  "homepage": "https://primate.run",
6
6
  "bugs": "https://github.com/primate-run/primate/issues",
7
+ "type": "module",
7
8
  "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/primate-run/primate",
12
+ "directory": "packages/core"
13
+ },
8
14
  "files": [
9
15
  "/lib/**/*.js",
10
16
  "/lib/**/*.d.ts",
11
17
  "/lib/private/defaults/*.html",
12
18
  "!/**/*.spec.*"
13
19
  ],
14
- "repository": {
15
- "type": "git",
16
- "url": "https://github.com/primate-run/primate",
17
- "directory": "packages/core"
18
- },
19
20
  "dependencies": {
20
- "@rcompat/args": "^0.8.0",
21
- "@rcompat/assert": "^0.3.1",
22
- "@rcompat/async": "^0.9.0",
23
- "@rcompat/bufferview": "^0.3.0",
24
- "@rcompat/cli": "^0.11.3",
25
- "@rcompat/crypto": "^0.11.0",
26
- "@rcompat/fs": "^0.22.4",
27
- "@rcompat/function": "^0.9.0",
28
- "@rcompat/http": "^0.16.1",
29
- "@rcompat/kv": "^0.3.0",
30
- "@rcompat/record": "^0.9.1",
31
- "@rcompat/runtime": "^0.6.0",
32
- "@rcompat/string": "^0.10.1",
33
- "@rcompat/type": "^0.6.1",
34
- "esbuild": "^0.27.1",
35
- "pema": "^0.4.0"
21
+ "@rcompat/args": "^0.11.0",
22
+ "@rcompat/assert": "^0.6.0",
23
+ "@rcompat/cli": "^0.14.0",
24
+ "@rcompat/crypto": "^0.14.0",
25
+ "@rcompat/dict": "^0.3.1",
26
+ "@rcompat/fn": "^0.3.0",
27
+ "@rcompat/fs": "^0.25.2",
28
+ "@rcompat/http": "^0.21.0",
29
+ "@rcompat/io": "^0.3.0",
30
+ "@rcompat/is": "^0.4.2",
31
+ "@rcompat/kv": "^0.6.0",
32
+ "@rcompat/runtime": "^0.9.0",
33
+ "@rcompat/string": "^0.13.0",
34
+ "@rcompat/type": "^0.9.0",
35
+ "esbuild": "^0.27.3",
36
+ "pema": "^0.5.0"
36
37
  },
37
- "type": "module",
38
38
  "imports": {
39
+ "#i18n/index": {
40
+ "apekit": "./src/private/i18n/index/client.ts",
41
+ "browser": "./lib/private/i18n/index/client.js",
42
+ "default": "./lib/private/i18n/index/server.js"
43
+ },
39
44
  "#*": {
40
45
  "apekit": "./src/private/*.ts",
41
46
  "default": "./lib/private/*.js"
@@ -1,7 +0,0 @@
1
- declare const _default: {
2
- path: string;
3
- host: string;
4
- port: number;
5
- };
6
- export default _default;
7
- //# sourceMappingURL=reload.d.ts.map
@@ -1,6 +0,0 @@
1
- export default {
2
- path: "/esbuild",
3
- host: "localhost",
4
- port: 6262,
5
- };
6
- //# sourceMappingURL=reload.js.map
@@ -1,4 +0,0 @@
1
- import type BuildApp from "#build/App";
2
- import type { Plugin } from "esbuild";
3
- export default function plugin_server_database_default(app: BuildApp): Plugin;
4
- //# sourceMappingURL=database-default.d.ts.map
@@ -1,48 +0,0 @@
1
- import fail from "#fail";
2
- export default function plugin_server_database_default(app) {
3
- return {
4
- name: "primate/server/database-default",
5
- setup(build) {
6
- build.onResolve({ filter: /^app:database$/ }, () => {
7
- return { path: "database-default", namespace: "primate-database" };
8
- });
9
- build.onLoad({ filter: /.*/, namespace: "primate-database" }, async () => {
10
- const base = app.path.config.join("database");
11
- const default_db = {
12
- contents: `
13
- import DefaultDatabase from "primate/database/default";
14
- export default new DefaultDatabase();
15
- `,
16
- loader: "js",
17
- resolveDir: app.root.path,
18
- };
19
- if (!await base.exists())
20
- return default_db;
21
- const dbs = await base.collect(f => f.name.endsWith(".ts") || f.name.endsWith(".js"));
22
- const n = dbs.length;
23
- if (n === 0)
24
- return default_db;
25
- const by_name = {};
26
- for (const d of dbs)
27
- by_name[d.name] = d;
28
- const pick = (stem) => by_name[`${stem}.ts`] ?? by_name[`${stem}.js`];
29
- let db = pick("index");
30
- if (db === undefined)
31
- db = pick("default");
32
- if (db === undefined) {
33
- if (dbs.length === 1)
34
- db = dbs[0];
35
- else
36
- throw fail("multiple database drivers, add index or default.(t|j)s; found {0}", dbs.map(f => f.name).join(", "));
37
- }
38
- const contents = `export { default } from ${JSON.stringify(db.path)};`;
39
- return {
40
- contents,
41
- loader: "js",
42
- resolveDir: app.root.path,
43
- };
44
- });
45
- },
46
- };
47
- }
48
- //# sourceMappingURL=database-default.js.map
@@ -1,4 +0,0 @@
1
- import type BuildApp from "#build/App";
2
- import type { Plugin } from "esbuild";
3
- export default function plugin_server_hot_reload(app: BuildApp): Plugin;
4
- //# sourceMappingURL=hot-reload.d.ts.map
@@ -1,3 +0,0 @@
1
- import type ValidateInit from "#client/ValidateInit";
2
- export default function validate<T>(init: ValidateInit<T>, value: T): Promise<void>;
3
- //# sourceMappingURL=validate.d.ts.map
@@ -1,54 +0,0 @@
1
- function extract(payload, defaultPath) {
2
- // scalar: { message, messages }
3
- if ("messages" in payload) {
4
- return payload.messages.map(m => ({ message: m, path: defaultPath }));
5
- }
6
- // keyed: { "/field": { message, messages }, ... }
7
- const issues = [];
8
- for (const [path, bundle] of Object.entries(payload)) {
9
- for (const message of bundle.messages) {
10
- issues.push({ message, path: path });
11
- }
12
- }
13
- return issues;
14
- }
15
- function focus(issues, path) {
16
- if (path === undefined) {
17
- return issues;
18
- }
19
- const focused = issues.filter(i => i.path === path);
20
- return focused.length ? focused : issues;
21
- }
22
- export default async function validate(init, value) {
23
- const headers = {
24
- "content-type": "application/json",
25
- ...(init.headers ?? {}),
26
- };
27
- if (init.path !== undefined) {
28
- headers["x-validate-path"] = init.path;
29
- }
30
- const bodyValue = init.map?.(value) ?? value;
31
- let body;
32
- try {
33
- body = JSON.stringify(bodyValue);
34
- }
35
- catch {
36
- const message = "Cannot serialize body. Provide a `map` that returns JSON.";
37
- throw new Error(message);
38
- }
39
- const { method, url } = init;
40
- const response = await fetch(url, { body, headers, method });
41
- if (response.ok)
42
- return;
43
- const payload = await response.json();
44
- const defaultPath = init.path ?? "";
45
- const defaultIssues = [{ message: "Validation failed", path: defaultPath }];
46
- const allIssues = extract(payload, defaultPath);
47
- const focusedIssues = focus(allIssues, init.path);
48
- const issues = focusedIssues.length > 0 ? focusedIssues : defaultIssues;
49
- throw Object.assign(new Error(issues[0].message), {
50
- issues,
51
- name: "ValidationError",
52
- });
53
- }
54
- //# sourceMappingURL=validate.js.map
@@ -1,7 +0,0 @@
1
- import type Types from "#database/Types";
2
- type As = {
3
- name: string;
4
- types: Types;
5
- };
6
- export type { As as default };
7
- //# sourceMappingURL=As.d.ts.map
@@ -1,4 +0,0 @@
1
- import type Dict from "@rcompat/type/Dict";
2
- type Binds = Dict;
3
- export type { Binds as default };
4
- //# sourceMappingURL=Binds.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Binds.js.map