@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
@@ -8,8 +8,8 @@ import type Next from "#module/Next";
8
8
  import type NextBuild from "#module/NextBuild";
9
9
  import type NextServe from "#module/NextServe";
10
10
  import type ServeApp from "#serve/App";
11
- import FileRef from "@rcompat/fs/FileRef";
12
- import type MaybePromise from "@rcompat/type/MaybePromise";
11
+ import type { FileRef } from "@rcompat/fs";
12
+ import type { MaybePromise } from "@rcompat/type";
13
13
  export default abstract class FrontendModule<S = ServerView> extends Module {
14
14
  #private;
15
15
  abstract client: boolean;
@@ -24,16 +24,16 @@ export default abstract class FrontendModule<S = ServerView> extends Module {
24
24
  css?: null | string;
25
25
  js: string;
26
26
  }>;
27
- server?: (text: string, file?: FileRef) => MaybePromise<string>;
27
+ server?: (text: string, file: FileRef) => MaybePromise<string>;
28
28
  };
29
29
  css?: {
30
30
  filter: RegExp;
31
31
  };
32
32
  conditions: string[];
33
33
  static schema: import("pema").ObjectType<{
34
- fileExtensions: import("pema").OptionalType<import("pema").ArrayType<import("pema/string").StringType>>;
35
- spa: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
36
- ssr: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
34
+ fileExtensions: import("pema").OptionalType<import("pema").ArrayType<import("pema").StringType>>;
35
+ spa: import("pema").DefaultType<import("pema").BooleanType, true>;
36
+ ssr: import("pema").DefaultType<import("pema").BooleanType, true>;
37
37
  }>;
38
38
  static options: {
39
39
  fileExtensions: string[] | undefined;
@@ -2,14 +2,14 @@ import fail from "#fail";
2
2
  import inline from "#inline";
3
3
  import location from "#location";
4
4
  import Module from "#Module";
5
- import map from "@rcompat/async/map";
6
5
  import hash from "@rcompat/crypto/hash";
7
- import FileRef from "@rcompat/fs/FileRef";
8
- import APPLICATION_JSON from "@rcompat/http/mime/application/json";
6
+ import fn from "@rcompat/fn";
7
+ import fs from "@rcompat/fs";
8
+ import MIME from "@rcompat/http/mime";
9
9
  import Status from "@rcompat/http/Status";
10
10
  import p from "pema";
11
11
  async function normalize(path, frontend) {
12
- const file = new FileRef(path);
12
+ const file = fs.ref(path);
13
13
  const basename = path.slice(0, -file.fullExtension.length);
14
14
  return `p_${await hash(`${basename}.${frontend}`)}`;
15
15
  }
@@ -59,14 +59,21 @@ export default class FrontendModule extends Module {
59
59
  ? await this.render(server.view, server.props)
60
60
  : { body: "", head: "" };
61
61
  if (!this.client) {
62
+ if (app.mode === "development") {
63
+ const app_asset = app.assets.find(asset => asset.src?.includes("app") && asset.src.endsWith(".js"));
64
+ if (!app_asset)
65
+ throw fail("Could not find app.js in assets");
66
+ const app_script = `<script type="module" src="${app_asset.src}"></script>`;
67
+ return { body, head: head.concat(app_script), headers };
68
+ }
62
69
  return { body, head, headers };
63
70
  }
64
71
  const app_asset = app.assets.find(asset => asset.src?.includes("app") && asset.src.endsWith(".js"));
65
72
  if (!app_asset)
66
73
  throw fail("Could not find app.js in assets");
67
74
  const app_script = `<script type="module" src="${app_asset.src}"></script>`;
68
- const json_props = JSON.stringify({ frontend: this.name, ...client });
69
- const hydrated = await inline(json_props, APPLICATION_JSON, "hydration");
75
+ const props = JSON.stringify({ frontend: this.name, ...client });
76
+ const hydrated = await inline(props, MIME.APPLICATION_JSON, "hydration");
70
77
  const script_src = [hydrated.integrity];
71
78
  return {
72
79
  body,
@@ -83,19 +90,12 @@ export default class FrontendModule extends Module {
83
90
  }
84
91
  const views = (await Promise.all(layouts
85
92
  .map(layout => layout(app, { as_layout: true }, request))))
86
- /* set the actual page as the last view */
93
+ // set the actual page as the last view
87
94
  .concat(this.#load(view, props, app));
88
- const $request = {
89
- context: request.context,
90
- cookies: request.cookies.toJSON(),
91
- headers: request.headers.toJSON(),
92
- path: request.path.toJSON(),
93
- query: request.query.toJSON(),
94
- url: request.url,
95
- };
95
+ const $request = request.toJSON();
96
96
  const $props = this.layouts
97
97
  ? {
98
- views: await map(views, ({ name }) => this.normalize(name)),
98
+ views: await fn.async.map(views, ({ name }) => this.normalize(name)),
99
99
  props: views.map(c => c.props),
100
100
  request: $request,
101
101
  }
@@ -107,12 +107,12 @@ export default class FrontendModule extends Module {
107
107
  mode: app.mode,
108
108
  ...$props,
109
109
  };
110
- if (this.spa && request.headers.get("Accept") === APPLICATION_JSON) {
110
+ if (this.spa && request.headers.get("Accept") === MIME.APPLICATION_JSON) {
111
111
  const json_body = JSON.stringify(client);
112
112
  return new Response(json_body, {
113
113
  headers: {
114
114
  ...app.headers(),
115
- "Content-Type": APPLICATION_JSON,
115
+ "Content-Type": MIME.APPLICATION_JSON,
116
116
  "Content-Length": String(app.body_length(json_body)),
117
117
  "Cache-Control": "no-store",
118
118
  },
@@ -151,6 +151,9 @@ export default class FrontendModule extends Module {
151
151
  return next(app);
152
152
  }
153
153
  publish(app) {
154
+ if (app.mode === "development") {
155
+ app.frontends.set(this.name, [...this.fileExtensions]);
156
+ }
154
157
  if (this.compile.client) {
155
158
  const { compile, css, fileExtensions, name, root, conditions } = this;
156
159
  const _normalize = this.normalize.bind(this);
@@ -169,7 +172,7 @@ export default class FrontendModule extends Module {
169
172
  return { namespace: `${name}`, path };
170
173
  });
171
174
  build.onLoad({ filter }, async () => {
172
- const contents = (await compile.client(root.create(app.depth(), app.i18n_active), new FileRef("/tmp"), true)).js;
175
+ const contents = (await compile.client(root.create(app.depth(), app.i18n_active), fs.ref("/tmp"), true)).js;
173
176
  return contents ? { contents, loader: "js", resolveDir } : null;
174
177
  });
175
178
  }
@@ -188,8 +191,10 @@ export default class FrontendModule extends Module {
188
191
  return { namespace: `${name}`, path };
189
192
  });
190
193
  build.onLoad({ filter: views_filter }, async () => {
191
- const views = await views_base
192
- .collect(c => fileExtensions.includes(c.fullExtension));
194
+ const views = await views_base.files({
195
+ recursive: true,
196
+ filter: c => fileExtensions.includes(c.fullExtension),
197
+ });
193
198
  let contents = "";
194
199
  for (const view of views) {
195
200
  const { path } = view.debase(views_base, "/");
@@ -200,7 +205,7 @@ export default class FrontendModule extends Module {
200
205
  });
201
206
  const filter = new RegExp(`(${fileExtensions.map(e => e.replace(".", "\\.")).join("|")})$`);
202
207
  build.onLoad({ filter }, async (args) => {
203
- const file = new FileRef(args.path);
208
+ const file = fs.ref(args.path);
204
209
  // compile file to JavaScript and potentially CSS
205
210
  const compiled = await compile.client(await file.text(), file, false);
206
211
  let contents = compiled.js;
@@ -239,7 +244,7 @@ export default class FrontendModule extends Module {
239
244
  this.prebuild(app);
240
245
  // compile root server
241
246
  if (this.root !== undefined && this.compile.server !== undefined) {
242
- const source = await this.compile.server(this.root.create(app.depth(), app.i18n_active));
247
+ const source = await this.compile.server(this.root.create(app.depth(), app.i18n_active), fs.ref(`root:${this.name}`));
243
248
  app.addRoot(this.rootname, source);
244
249
  }
245
250
  this.publish(app);
@@ -1,5 +1,4 @@
1
- import type Dict from "@rcompat/type/Dict";
2
- import type MaybePromise from "@rcompat/type/MaybePromise";
1
+ import type { Dict, MaybePromise } from "@rcompat/type";
3
2
  type Render<V = unknown> = (view: V, props: Dict) => MaybePromise<{
4
3
  body: string;
5
4
  head?: string;
@@ -1,4 +1,4 @@
1
- import type Dict from "@rcompat/type/Dict";
1
+ import type { Dict } from "@rcompat/type";
2
2
  type ServerData<V> = {
3
3
  view: V;
4
4
  props: Dict;
@@ -1,5 +1,4 @@
1
- import type Dict from "@rcompat/type/Dict";
2
- import type MaybePromise from "@rcompat/type/MaybePromise";
1
+ import type { Dict, MaybePromise } from "@rcompat/type";
3
2
  type ServerView = (props: Dict) => MaybePromise<string>;
4
3
  export { ServerView as default };
5
4
  //# sourceMappingURL=ServerView.d.ts.map
@@ -1,4 +1,4 @@
1
- import type Dict from "@rcompat/type/Dict";
1
+ import type { Dict } from "@rcompat/type";
2
2
  type View = {
3
3
  view: unknown;
4
4
  name: string;
@@ -1,4 +1,4 @@
1
- import type Dict from "@rcompat/type/Dict";
1
+ import type { Dict } from "@rcompat/type";
2
2
  export default interface ViewOptions extends ResponseInit {
3
3
  csp?: {
4
4
  script_src?: string[];
@@ -1,6 +1,6 @@
1
1
  import type ViewOptions from "#frontend/ViewOptions";
2
2
  import type ResponseFunction from "#response/ResponseFunction";
3
- import type Dict from "@rcompat/type/Dict";
3
+ import type { Dict } from "@rcompat/type";
4
4
  type View = (name: string, props?: Dict, options?: ViewOptions) => ResponseFunction;
5
5
  export { View as default };
6
6
  //# sourceMappingURL=ViewResponse.d.ts.map
@@ -1,4 +1,3 @@
1
- import crypto from "@rcompat/crypto";
2
1
  const encoder = new TextEncoder();
3
2
  async function hash(data, algorithm = "sha-384") {
4
3
  const bytes = await crypto.subtle.digest(algorithm, encoder.encode(data));
@@ -1,4 +1,7 @@
1
- import type Dict from "@rcompat/type/Dict";
2
- type Catalog = Dict<string>;
1
+ import type { Dict } from "@rcompat/type";
2
+ type CatalogValue = string | {
3
+ [key: string]: CatalogValue;
4
+ } | CatalogValue[];
5
+ type Catalog = Dict<CatalogValue>;
3
6
  export type { Catalog as default };
4
7
  //# sourceMappingURL=Catalog.d.ts.map
@@ -1,21 +1,22 @@
1
1
  import fail from "#fail";
2
2
  import ordinals from "#i18n/ordinals";
3
3
  import toIntlUnit from "#i18n/toIntlUnit";
4
- import is from "@rcompat/assert/is";
4
+ import assert from "@rcompat/assert";
5
5
  export default class Formatter {
6
6
  #locale;
7
7
  constructor(locale) {
8
- is(locale).string();
8
+ assert.string(locale);
9
9
  this.#locale = locale;
10
10
  }
11
11
  get locale() {
12
12
  return this.#locale;
13
13
  }
14
14
  set locale(locale) {
15
- is(locale).string();
15
+ assert.string(locale);
16
16
  this.#locale = locale;
17
17
  }
18
18
  number(number) {
19
+ assert.number(number);
19
20
  try {
20
21
  return new Intl.NumberFormat(this.#locale).format(number);
21
22
  }
@@ -24,6 +25,7 @@ export default class Formatter {
24
25
  }
25
26
  }
26
27
  date(date) {
28
+ assert.date(date);
27
29
  try {
28
30
  return new Intl.DateTimeFormat(this.#locale).format(date);
29
31
  }
@@ -32,6 +34,8 @@ export default class Formatter {
32
34
  }
33
35
  }
34
36
  currency(currency, amount) {
37
+ assert.string(currency);
38
+ assert.number(amount);
35
39
  const options = { style: "currency", currency };
36
40
  try {
37
41
  return new Intl.NumberFormat(this.#locale, options).format(amount);
@@ -41,6 +45,7 @@ export default class Formatter {
41
45
  }
42
46
  }
43
47
  ordinal(number) {
48
+ assert.number(number);
44
49
  try {
45
50
  const n = Math.trunc(number);
46
51
  const rules = new Intl.PluralRules(this.#locale, { type: "ordinal" });
@@ -58,9 +63,14 @@ export default class Formatter {
58
63
  }
59
64
  }
60
65
  relative(milliseconds, options) {
61
- const defaults = { numeric: "auto", style: "long", ...options };
66
+ assert.number(milliseconds);
67
+ assert.maybe.dict(options);
68
+ assert.maybe.string(options?.numeric);
69
+ assert.maybe.string(options?.style);
70
+ const numeric = options?.numeric ?? "auto";
71
+ const style = options?.style ?? "long";
62
72
  try {
63
- const rtf = new Intl.RelativeTimeFormat(this.#locale, defaults);
73
+ const rtf = new Intl.RelativeTimeFormat(this.#locale, { numeric, style });
64
74
  const s = Math.round(milliseconds / 1000);
65
75
  const abs = Math.abs(s);
66
76
  if (abs >= 31536000)
@@ -82,6 +92,7 @@ export default class Formatter {
82
92
  }
83
93
  }
84
94
  list(items) {
95
+ assert.array(items);
85
96
  try {
86
97
  return new Intl.ListFormat(this.#locale).format(items);
87
98
  }
@@ -90,9 +101,10 @@ export default class Formatter {
90
101
  }
91
102
  }
92
103
  unit(value, u) {
93
- const unit = toIntlUnit(u);
94
- if (unit === undefined)
95
- throw fail("unit {0} not supported", u);
104
+ assert.number(value);
105
+ assert.string(u);
106
+ const intl_unit = toIntlUnit(u);
107
+ const unit = assert.defined(intl_unit, fail("unit {0} not supported", u));
96
108
  const options = { style: "unit", unit };
97
109
  try {
98
110
  return new Intl.NumberFormat(this.#locale, options).format(value);
@@ -9,8 +9,8 @@ export default class I18NModule extends Module {
9
9
  #private;
10
10
  name: string;
11
11
  constructor(config: Config);
12
- serve(app: ServeApp, next: NextServe): import("@rcompat/type/MaybePromise").default<ServeApp>;
13
- handle(request: RequestFacade, next: NextHandle): import("@rcompat/type/MaybePromise").default<Response>;
14
- route(request: RequestFacade, next: NextRoute): import("@rcompat/type/MaybePromise").default<import("../response/ResponseLike.js").default>;
12
+ serve(app: ServeApp, next: NextServe): import("@rcompat/type").MaybePromise<ServeApp>;
13
+ handle(request: RequestFacade, next: NextHandle): Promise<Response>;
14
+ route(request: RequestFacade, next: NextRoute): import("@rcompat/type").MaybePromise<import("../response/ResponseLike.js").default>;
15
15
  }
16
16
  //# sourceMappingURL=Module.d.ts.map
@@ -3,6 +3,7 @@ import bye from "#bye";
3
3
  import cookie from "#cookie";
4
4
  import COOKIE_NAME from "#i18n/constant/COOKIE_NAME";
5
5
  import PERSIST_HEADER from "#i18n/constant/PERSIST_HEADER";
6
+ import storage from "#i18n/storage";
6
7
  import log from "#log";
7
8
  import Module from "#Module";
8
9
  import Status from "@rcompat/http/Status";
@@ -60,10 +61,24 @@ export default class I18NModule extends Module {
60
61
  this.#secure = app.secure;
61
62
  return next(app);
62
63
  }
63
- handle(request, next) {
64
+ async handle(request, next) {
64
65
  const requested = request.headers.try(PERSIST_HEADER);
65
- if (requested === undefined)
66
- return next(request);
66
+ if (requested === undefined) {
67
+ const locale = request.cookies.try(COOKIE_NAME);
68
+ if (locale === undefined)
69
+ return next(request);
70
+ // if has cookie, run route with i18n
71
+ return await new Promise((resolve, reject) => {
72
+ storage().run({ locale }, async () => {
73
+ try {
74
+ resolve(await next(request));
75
+ }
76
+ catch (e) {
77
+ reject(e);
78
+ }
79
+ });
80
+ });
81
+ }
67
82
  // only cookie-persistance is server-supported
68
83
  if (this.#persist !== "cookie")
69
84
  return new Response(null, {
@@ -101,22 +116,18 @@ export default class I18NModule extends Module {
101
116
  .map(s => s.split(";")[0].trim())
102
117
  .filter(Boolean);
103
118
  const mode = this.#persist;
104
- const cookieLocale = mode === "cookie" ? request.cookies.try(COOKIE_NAME) : undefined;
105
- const locale = cookieLocale ??
119
+ const cookie_locale = mode === "cookie"
120
+ ? request.cookies.try(COOKIE_NAME)
121
+ : undefined;
122
+ const locale = cookie_locale ??
106
123
  pick(client_locales, server_locales) ??
107
124
  this.#defaultLocale;
108
- return next({
109
- ...request,
110
- context: {
111
- ...request.context,
112
- i18n: {
113
- currency: this.#currency,
114
- mode,
115
- locale,
116
- locales: server_locales,
117
- },
118
- },
119
- });
125
+ return next(request.set("i18n", {
126
+ currency: this.#currency,
127
+ mode,
128
+ locale,
129
+ locales: server_locales,
130
+ }));
120
131
  }
121
132
  }
122
133
  //# sourceMappingURL=Module.js.map
@@ -0,0 +1,4 @@
1
+ import type Formatter from "#i18n/Formatter";
2
+ import type { Dict } from "@rcompat/type";
3
+ export default function format(input: string, params: Dict, currency: string, formatter: Formatter): string;
4
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1,95 @@
1
+ import is from "@rcompat/is";
2
+ export default function format(input, params, currency, formatter) {
3
+ let template = input;
4
+ // save escaped braces
5
+ template = template.replace(/\{\{/g, "\uE000");
6
+ template = template.replace(/\}\}/g, "\uE001");
7
+ // Process normal parameters with nested brace support
8
+ const template_re = /\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
9
+ template = template.replace(template_re, (_, body) => {
10
+ // name[:spec]
11
+ let name = body;
12
+ let spec;
13
+ const colon = body.indexOf(":");
14
+ if (colon >= 0) {
15
+ name = body.slice(0, colon);
16
+ spec = body.slice(colon + 1);
17
+ }
18
+ const value = params[name];
19
+ if (!spec)
20
+ return value == null ? "" : String(value);
21
+ // number selection: "n|one|other" or "n|zero|one|other"
22
+ const bar = spec.indexOf("|");
23
+ const head = (bar === -1 ? spec : spec.slice(0, bar)).toLowerCase();
24
+ const tail = bar === -1 ? "" : spec.slice(bar + 1);
25
+ // units u(...)/unit(...)
26
+ const m = /^(?:u|unit)\(([^)]+)\)$/.exec(head);
27
+ if (m)
28
+ return formatter.unit(Number(value ?? 0), m[1]);
29
+ switch (head) {
30
+ case "n":
31
+ case "number": {
32
+ if (tail) {
33
+ const options = tail.split("|");
34
+ const n = Number(value ?? 0);
35
+ const formatted = formatter.number(n);
36
+ const plural = () => {
37
+ const category = Number.isFinite(n)
38
+ ? formatter.pluralRules().select(n)
39
+ : "other";
40
+ if (options.length === 2) {
41
+ const [one, other] = options;
42
+ return category === "one" ? one : other;
43
+ }
44
+ if (options.length === 3) {
45
+ const [zero, one, other] = options;
46
+ return n === 0 ? zero : (category === "one" ? one : other);
47
+ }
48
+ if (options.length === 5) {
49
+ const [zero, one, few, many, other] = options;
50
+ if (n === 0)
51
+ return zero;
52
+ switch (category) {
53
+ case "one": return one;
54
+ case "few": return few;
55
+ case "many": return many;
56
+ default: return other;
57
+ }
58
+ }
59
+ return formatted;
60
+ };
61
+ return plural().replace(new RegExp(`\\{${name}\\}`, "g"), formatted);
62
+ }
63
+ return formatter.number(Number(value ?? 0));
64
+ }
65
+ case "d":
66
+ case "date": {
67
+ const d = is.number(value)
68
+ ? new Date(value)
69
+ : is.date(value)
70
+ ? value
71
+ : new Date(NaN);
72
+ return formatter.date(d);
73
+ }
74
+ case "c":
75
+ case "currency":
76
+ return formatter.currency(currency, Number(value ?? 0));
77
+ case "o":
78
+ case "ordinal":
79
+ return formatter.ordinal(Number(value ?? 0));
80
+ case "a":
81
+ case "ago":
82
+ return formatter.relative(Number(value ?? 0));
83
+ case "l":
84
+ case "list":
85
+ return formatter.list(Array.isArray(value) ? value : []);
86
+ default:
87
+ return value == null ? "" : String(value);
88
+ }
89
+ });
90
+ // restore escaped braces
91
+ template = template.replace(/\uE000/g, "{");
92
+ template = template.replace(/\uE001/g, "}");
93
+ return template;
94
+ }
95
+ //# sourceMappingURL=format.js.map