@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
@@ -0,0 +1,199 @@
1
+ import fail from "#fail";
2
+ function coded(fns) {
3
+ return Object.fromEntries(Object.entries(fns).map(([key, fn]) => [
4
+ key,
5
+ (...args) => {
6
+ const err = fn(...args);
7
+ err.code = key;
8
+ return err;
9
+ },
10
+ ]));
11
+ }
12
+ function db_missing() {
13
+ return fail("database missing");
14
+ }
15
+ function store_name_required() {
16
+ return fail("store name required");
17
+ }
18
+ function unregistered_schema() {
19
+ return fail("no store registered for schema");
20
+ }
21
+ function record_not_found(field, value) {
22
+ return fail("no record with {0} = {1}", field, value);
23
+ }
24
+ function key_duplicate(key) {
25
+ return fail("key {0} already exists", key);
26
+ }
27
+ const STORE = coded({
28
+ db_missing,
29
+ store_name_required,
30
+ unregistered_schema,
31
+ record_not_found,
32
+ key_duplicate,
33
+ });
34
+ function pk_undefined(store) {
35
+ return fail("{0}: store has no primary key", store);
36
+ }
37
+ function pk_immutable(pk) {
38
+ return fail("primary key {0} cannot be updated", pk);
39
+ }
40
+ function pk_duplicate(pk) {
41
+ return fail("primary key {0} already exists", pk);
42
+ }
43
+ function pk_invalid(pk) {
44
+ return fail("pk must be string, number or bigint, got {0}", kind_of(pk));
45
+ }
46
+ function pk_required(table) {
47
+ return fail("pk is required but has generate={0} in table {1}", false, table);
48
+ }
49
+ const PK = coded({
50
+ pk_undefined,
51
+ pk_immutable,
52
+ pk_duplicate,
53
+ pk_invalid,
54
+ pk_required,
55
+ });
56
+ function field_unknown(field, context) {
57
+ return fail("{0}: unknown field on {1}", field, context);
58
+ }
59
+ function field_duplicate(field, context) {
60
+ return fail("{0}: duplicate field on {1}", field, context);
61
+ }
62
+ function field_required(operator) {
63
+ return fail("{0}: at least one field required", operator);
64
+ }
65
+ function field_undefined(field, context) {
66
+ return fail("{0}: undefined value on {1}", field, context);
67
+ }
68
+ function fields_unknown(fields) {
69
+ return fail("unknown fields {0}", fields.join(", "));
70
+ }
71
+ const FIELD = coded({
72
+ field_unknown,
73
+ field_duplicate,
74
+ field_required,
75
+ field_undefined,
76
+ fields_unknown,
77
+ });
78
+ function null_not_allowed(field) {
79
+ return fail("{0}: null not allowed", field);
80
+ }
81
+ const NULL = coded({
82
+ null_not_allowed,
83
+ });
84
+ function kind_of(x) {
85
+ if (x === null)
86
+ return "null";
87
+ if (x instanceof Date)
88
+ return "Date";
89
+ if (x instanceof URL)
90
+ return "URL";
91
+ if (x instanceof Blob)
92
+ return "Blob";
93
+ return typeof x;
94
+ }
95
+ function wrong_type(type, field, got, op = "value") {
96
+ return fail("{0}: {1} requires {2}, got {3}", field, op, type, kind_of(got));
97
+ }
98
+ function operator_unknown(field, operator) {
99
+ return fail("{0}: unknown operator {1}", field, operator);
100
+ }
101
+ function operator_empty(field) {
102
+ return fail("{0}: empty operator", field);
103
+ }
104
+ function operator_scalar(field) {
105
+ return fail("{0}: operator requires scalar value", field);
106
+ }
107
+ const OPERATOR = coded({
108
+ operator_unknown,
109
+ operator_empty,
110
+ wrong_type,
111
+ operator_scalar,
112
+ });
113
+ function sort_empty() {
114
+ return fail("empty sort");
115
+ }
116
+ function sort_invalid() {
117
+ return fail("sort invalid");
118
+ }
119
+ function sort_invalid_value(field, value) {
120
+ return fail("{0}: invalid sort value, received {1}", field, kind_of(value));
121
+ }
122
+ function select_empty() {
123
+ return fail("empty select");
124
+ }
125
+ function select_invalid() {
126
+ return fail("invalid select");
127
+ }
128
+ function limit_invalid() {
129
+ return fail("invalid limit");
130
+ }
131
+ function select_invalid_value(index, x) {
132
+ return fail("select[{0}]: must be string, received {1}", index, kind_of(x));
133
+ }
134
+ function where_required() {
135
+ return fail("where required");
136
+ }
137
+ function where_invalid() {
138
+ return fail("where invalid");
139
+ }
140
+ function where_invalid_value(field, value) {
141
+ return fail("{0}: invalid where value, received {1}", field, kind_of(value));
142
+ }
143
+ function set_empty() {
144
+ return fail("empty set on update");
145
+ }
146
+ const QUERY = coded({
147
+ sort_empty,
148
+ sort_invalid,
149
+ sort_invalid_value,
150
+ select_empty,
151
+ select_invalid,
152
+ select_invalid_value,
153
+ where_required,
154
+ where_invalid,
155
+ where_invalid_value,
156
+ set_empty,
157
+ limit_invalid,
158
+ });
159
+ function relation_unknown(relation) {
160
+ return fail("unknown relation {0}", relation);
161
+ }
162
+ function relation_requires_pk(type) {
163
+ return fail("relation loading requires {0} primary key", type);
164
+ }
165
+ const RELATION = coded({
166
+ relation_unknown,
167
+ relation_requires_pk,
168
+ });
169
+ function option_unknown(option) {
170
+ return fail("unknown option {0}", option);
171
+ }
172
+ function identifier_invalid(identifier) {
173
+ return fail("invalid identifier {0}", identifier);
174
+ }
175
+ function count_with_invalid() {
176
+ return fail("count and with are mutually exclusive");
177
+ }
178
+ function count_overflow(table, count) {
179
+ return fail("{0}: count overflow, received {1} (max {2})", table, count, Number.MAX_SAFE_INTEGER);
180
+ }
181
+ const MISC = coded({
182
+ option_unknown,
183
+ identifier_invalid,
184
+ count_with_invalid,
185
+ count_overflow,
186
+ });
187
+ const errors = {
188
+ ...STORE,
189
+ ...PK,
190
+ ...FIELD,
191
+ ...NULL,
192
+ ...OPERATOR,
193
+ ...QUERY,
194
+ ...RELATION,
195
+ ...MISC,
196
+ };
197
+ export const Code = Object.fromEntries(Object.keys(errors).map(k => [k, k]));
198
+ export default errors;
199
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1,28 @@
1
+ import type As from "#db/As";
2
+ import type ReadRelationsArgs from "#db/ReadRelationsArgs";
3
+ import type Sort from "#db/Sort";
4
+ import type Types from "#db/Types";
5
+ import type With from "#db/With";
6
+ import type { Dict } from "@rcompat/type";
7
+ import type { DataKey } from "pema";
8
+ declare function quote(name: string): string;
9
+ declare function Q(strings: TemplateStringsArray, ...values: (string | unknown[])[]): string;
10
+ declare const sql: {
11
+ quote: typeof quote;
12
+ orderBy(types: Types, sort?: Sort, alias?: string): string;
13
+ limit(limit?: number): string;
14
+ aliases(tables: string[]): Dict<string>;
15
+ aliased(aliases: Dict<string>, as: As, fields?: string[]): string;
16
+ columns(types: Types, columns?: string[]): string;
17
+ bindKey(column: string, op: string): string;
18
+ joinable(parent: As, relations: With): boolean;
19
+ unbind<R>(types: Types, row: Dict, unbinder: (key: DataKey, value: unknown) => R): Dict<R>;
20
+ nest<T>(as: As, args: {
21
+ rows: Dict[];
22
+ aliases: Dict<string>;
23
+ }, relation_args: ReadRelationsArgs, unbind: (type: DataKey, value: unknown) => T): Dict[];
24
+ Q: typeof Q;
25
+ OPS: Dict<">" | ">=" | "<" | "<=">;
26
+ };
27
+ export default sql;
28
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1,177 @@
1
+ import E from "#db/error";
2
+ import assert from "@rcompat/assert";
3
+ import is from "@rcompat/is";
4
+ function normalize_sort(key, direction) {
5
+ if (!is.string(direction))
6
+ throw E.sort_invalid();
7
+ const l = direction.toLowerCase();
8
+ if (l !== "asc" && l !== "desc")
9
+ throw E.sort_invalid_value(key, direction);
10
+ return l.toUpperCase();
11
+ }
12
+ function assert_columns(types, columns) {
13
+ const known = new Set(Object.keys(types));
14
+ const unknown = columns.filter(c => !known.has(c));
15
+ if (unknown.length > 0)
16
+ throw E.fields_unknown(unknown);
17
+ }
18
+ function quote(name) {
19
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name))
20
+ throw E.identifier_invalid(name);
21
+ return `\`${name}\``;
22
+ }
23
+ function Q(strings, ...values) {
24
+ return strings.reduce((result, string, i) => {
25
+ if (i === values.length)
26
+ return result + string;
27
+ const value = values[i];
28
+ let processed;
29
+ if (Array.isArray(value)) {
30
+ processed = value.join(", ");
31
+ }
32
+ else if (typeof value === "string") {
33
+ processed = sql.quote(value);
34
+ }
35
+ else {
36
+ throw "Q: use only strings or arrays";
37
+ }
38
+ return result + string + processed;
39
+ }, "");
40
+ }
41
+ ;
42
+ const OPS = {
43
+ $gt: ">",
44
+ $gte: ">=",
45
+ $lt: "<",
46
+ $lte: "<=",
47
+ $after: ">",
48
+ $before: "<",
49
+ };
50
+ const sql = {
51
+ quote,
52
+ orderBy(types, sort, alias) {
53
+ if (sort === undefined)
54
+ return "";
55
+ const columns = Object.entries(sort);
56
+ if (columns.length === 0)
57
+ throw E.field_required("sort");
58
+ assert_columns(types, columns.map(([k]) => k));
59
+ const order = columns
60
+ .map(([k, direction]) => {
61
+ const quoted = quote(k);
62
+ const col = alias ? `${alias}.${quoted}` : quoted;
63
+ return `${col} ${normalize_sort(k, direction)}`;
64
+ })
65
+ .join(", ");
66
+ return ` ORDER BY ${order}`;
67
+ },
68
+ limit(limit) {
69
+ return limit !== undefined ? ` LIMIT ${limit}` : "";
70
+ },
71
+ aliases(tables) {
72
+ const counts = {};
73
+ const result = {};
74
+ for (const table of tables) {
75
+ const prefix = table[0].toLowerCase();
76
+ counts[prefix] ??= 0;
77
+ result[table] = `${prefix}${counts[prefix]++}`;
78
+ }
79
+ return result;
80
+ },
81
+ aliased(aliases, as, fields) {
82
+ const alias = aliases[as.table];
83
+ return (fields ?? Object.keys(as.types))
84
+ .map(f => `${alias}.${quote(f)} AS ${alias}_${f}`)
85
+ .join(", ");
86
+ },
87
+ columns(types, columns) {
88
+ if (columns === undefined)
89
+ return "*";
90
+ if (columns.length === 0)
91
+ throw E.field_required("select");
92
+ assert_columns(types, columns);
93
+ return columns.map(quote).join(", ");
94
+ },
95
+ bindKey(column, op) {
96
+ const suffix = op.startsWith("$") ? op.slice(1) : op;
97
+ return `${column}__${suffix}`;
98
+ },
99
+ joinable(parent, relations) {
100
+ const rels = Object.values(relations);
101
+ if (rels.length !== 1)
102
+ return false;
103
+ const r = rels[0];
104
+ if (parent.pk === null)
105
+ return false;
106
+ return (!r.reverse &&
107
+ r.kind === "many" &&
108
+ r.limit === undefined &&
109
+ r.sort === undefined &&
110
+ Object.keys(r.where).length === 0 &&
111
+ r.as.pk !== null);
112
+ },
113
+ unbind(types, row, unbinder) {
114
+ const out = {};
115
+ for (const [key, value] of Object.entries(row)) {
116
+ if (value === null)
117
+ continue;
118
+ assert.true(key in types, `unexpected column: ${key}`);
119
+ out[key] = unbinder(types[key], value);
120
+ }
121
+ return out;
122
+ },
123
+ nest(as, args, relation_args, unbind) {
124
+ if (as.pk === null)
125
+ throw E.relation_requires_pk("parent");
126
+ const base_alias = args.aliases[as.table];
127
+ const base_pk_key = `${base_alias}_${as.pk}`;
128
+ const base_fields = relation_args.fields ?? Object.keys(as.types);
129
+ const grouped = new Map();
130
+ for (const base_row of args.rows) {
131
+ const pk_value = base_row[base_pk_key];
132
+ const relation_entries = Object.entries(relation_args.with);
133
+ if (!grouped.has(pk_value)) {
134
+ const parent = {};
135
+ for (const f of base_fields) {
136
+ const v = base_row[`${base_alias}_${f}`];
137
+ if (v == null)
138
+ continue;
139
+ parent[f] = unbind(as.types[f], v);
140
+ }
141
+ for (const [name, relation] of relation_entries) {
142
+ parent[name] = relation.kind === "many" ? [] : null;
143
+ }
144
+ grouped.set(pk_value, parent);
145
+ }
146
+ const parent = grouped.get(pk_value);
147
+ for (const [name, relation] of relation_entries) {
148
+ const alias = args.aliases[relation.as.table];
149
+ const pk = relation.as.pk;
150
+ if (pk === null)
151
+ continue;
152
+ const pk_key = `${alias}_${pk}`;
153
+ if (base_row[pk_key] == null)
154
+ continue;
155
+ const fields = relation.fields ?? Object.keys(relation.as.types);
156
+ const row = {};
157
+ for (const field of fields) {
158
+ const v = base_row[`${alias}_${field}`];
159
+ if (v == null)
160
+ continue;
161
+ row[field] = unbind(relation.as.types[field], v);
162
+ }
163
+ if (relation.kind === "many") {
164
+ parent[name].push(row);
165
+ }
166
+ else if (parent[name] === null) {
167
+ parent[name] = row;
168
+ }
169
+ }
170
+ }
171
+ return [...grouped.values()];
172
+ },
173
+ Q,
174
+ OPS,
175
+ };
176
+ export default sql;
177
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: import("node:async_hooks").AsyncLocalStorage<unknown>;
2
+ export default _default;
3
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1,3 @@
1
+ import io from "@rcompat/io";
2
+ export default new io.async.Context();
3
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1,2 @@
1
+ export default Symbol("@primate/core/db/wrap");
2
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1,2 @@
1
+ export default Symbol("@primate/core/db");
2
+ //# sourceMappingURL=symbol.js.map
@@ -0,0 +1,4 @@
1
+ import type DB from "#db/DB";
2
+ declare const _default: <D extends DB>(db: D) => void;
3
+ export default _default;
4
+ //# sourceMappingURL=test.d.ts.map