@primate/core 0.4.6 → 0.6.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 (556) hide show
  1. package/lib/private/App.d.ts +771 -6
  2. package/lib/private/App.js +49 -16
  3. package/lib/private/Binder.d.ts +2 -2
  4. package/lib/private/Flags.d.ts +8 -4
  5. package/lib/private/Module.d.ts +4 -16
  6. package/lib/private/Module.js +1 -17
  7. package/lib/private/app/EnvSchema.d.ts +5 -0
  8. package/lib/private/app/EnvSchema.js +2 -0
  9. package/lib/private/app/Facade.browser.d.ts +11 -0
  10. package/lib/private/app/Facade.browser.js +19 -0
  11. package/lib/private/app/Facade.d.ts +811 -0
  12. package/lib/private/app/Facade.js +56 -0
  13. package/lib/private/asset/Asset.d.ts +1 -1
  14. package/lib/private/build/App.d.ts +2 -2
  15. package/lib/private/build/App.js +0 -2
  16. package/lib/private/build/client/index.js +19 -10
  17. package/lib/private/build/client/plugin/app-request.d.ts +4 -0
  18. package/lib/private/build/client/plugin/app-request.js +19 -0
  19. package/lib/private/build/client/plugin/view.d.ts +4 -0
  20. package/lib/private/build/client/plugin/view.js +13 -0
  21. package/lib/private/build/hook.d.ts +1 -2
  22. package/lib/private/build/hook.js +25 -19
  23. package/lib/private/build/index.d.ts +2 -1
  24. package/lib/private/build/index.js +27 -27
  25. package/lib/private/build/presets.d.ts +10 -0
  26. package/lib/private/build/presets.js +39 -0
  27. package/lib/private/build/server/index.js +10 -14
  28. package/lib/private/build/server/plugin/app-request.d.ts +4 -0
  29. package/lib/private/build/server/plugin/app-request.js +19 -0
  30. package/lib/private/build/server/plugin/assets.js +9 -7
  31. package/lib/private/build/server/plugin/config.js +11 -4
  32. package/lib/private/build/server/plugin/frontend.js +4 -2
  33. package/lib/private/build/server/plugin/live-reload.d.ts +4 -0
  34. package/lib/private/build/server/plugin/{hot-reload.js → live-reload.js} +12 -12
  35. package/lib/private/build/server/plugin/native-addons.js +10 -11
  36. package/lib/private/build/server/plugin/node-imports.js +2 -2
  37. package/lib/private/build/server/plugin/route.js +4 -4
  38. package/lib/private/build/server/plugin/store.js +11 -33
  39. package/lib/private/build/server/plugin/stores.js +12 -9
  40. package/lib/private/build/server/plugin/view.js +5 -5
  41. package/lib/private/build/server/plugin/views.js +4 -4
  42. package/lib/private/build/server/plugin/virtual-pages.js +8 -8
  43. package/lib/private/build/server/plugin/virtual-routes.js +8 -13
  44. package/lib/private/build/server/plugin/wasm.js +2 -3
  45. package/lib/private/build/shared/plugin/app-request.d.ts +4 -0
  46. package/lib/private/build/shared/plugin/app-request.js +19 -0
  47. package/lib/private/bye.js +2 -3
  48. package/lib/private/client/Data.d.ts +3 -2
  49. package/lib/private/client/Render.d.ts +8 -0
  50. package/lib/private/{frontend → client}/ServerData.d.ts +1 -1
  51. package/lib/private/client/ServerView.d.ts +4 -0
  52. package/lib/private/client/ValidateInit.d.ts +1 -3
  53. package/lib/private/client/ValidationError.d.ts +1 -1
  54. package/lib/private/{frontend → client}/View.d.ts +1 -1
  55. package/lib/private/{frontend → client}/ViewOptions.d.ts +1 -1
  56. package/lib/private/{frontend → client}/ViewResponse.d.ts +2 -2
  57. package/lib/private/client/app.js +3 -3
  58. package/lib/private/client/boot.d.ts +5 -0
  59. package/lib/private/client/boot.js +64 -0
  60. package/lib/private/client/create-form.d.ts +32 -0
  61. package/lib/private/client/create-form.js +123 -0
  62. package/lib/private/client/extract-issues.d.ts +4 -0
  63. package/lib/private/client/extract-issues.js +21 -0
  64. package/lib/private/client/http.d.ts +13 -0
  65. package/lib/private/client/http.js +57 -0
  66. package/lib/private/client/index.d.ts +23 -0
  67. package/lib/private/client/index.js +16 -0
  68. package/lib/private/client/navigate.d.ts +13 -0
  69. package/lib/private/client/navigate.js +67 -0
  70. package/lib/private/client/root.d.ts +9 -0
  71. package/lib/private/client/root.js +11 -0
  72. package/lib/private/client/submit.d.ts +2 -0
  73. package/lib/private/client/submit.js +41 -0
  74. package/lib/private/client/{toValidated.d.ts → to-validated.d.ts} +2 -4
  75. package/lib/private/client/{toValidated.js → to-validated.js} +1 -1
  76. package/lib/private/client/validate-field.d.ts +3 -0
  77. package/lib/private/client/validate-field.js +41 -0
  78. package/lib/private/config/index.d.ts +7 -21
  79. package/lib/private/config/index.js +4 -1
  80. package/lib/private/config/schema.d.ts +82 -22
  81. package/lib/private/config/schema.js +25 -7
  82. package/lib/private/cookie.d.ts +12 -6
  83. package/lib/private/cookie.js +10 -14
  84. package/lib/private/db/As.d.ts +10 -0
  85. package/lib/private/db/DB.d.ts +49 -0
  86. package/lib/private/db/DB.js +3 -0
  87. package/lib/private/db/DataDict.d.ts +5 -0
  88. package/lib/private/db/DataKey.d.ts +4 -0
  89. package/lib/private/db/DataValue.d.ts +17 -0
  90. package/lib/private/db/MemoryDB.d.ts +33 -0
  91. package/lib/private/db/MemoryDB.js +335 -0
  92. package/lib/private/db/PK.d.ts +3 -0
  93. package/lib/private/db/PK.js +2 -0
  94. package/lib/private/{database → db}/Query.d.ts +2 -2
  95. package/lib/private/{database → db}/QueryBuilder.d.ts +2 -3
  96. package/lib/private/db/ReadArgs.d.ts +9 -0
  97. package/lib/private/db/ReadArgs.js +2 -0
  98. package/lib/private/db/ReadRelationsArgs.d.ts +6 -0
  99. package/lib/private/db/ReadRelationsArgs.js +2 -0
  100. package/lib/private/{database → db}/Schema.d.ts +1 -2
  101. package/lib/private/db/Sort.d.ts +4 -0
  102. package/lib/private/{database → db}/TypeMap.d.ts +2 -3
  103. package/lib/private/{database → db}/Types.d.ts +1 -1
  104. package/lib/private/db/With.d.ts +16 -0
  105. package/lib/private/db/With.js +2 -0
  106. package/lib/private/db/common.d.ts +25 -0
  107. package/lib/private/db/common.js +67 -0
  108. package/lib/private/db/errors.d.ts +104 -0
  109. package/lib/private/db/errors.js +237 -0
  110. package/lib/private/db/migrate/apply.d.ts +2 -0
  111. package/lib/private/db/migrate/apply.js +32 -0
  112. package/lib/private/db/migrate/bundle.d.ts +3 -0
  113. package/lib/private/db/migrate/bundle.js +22 -0
  114. package/lib/private/db/migrate/create.d.ts +2 -0
  115. package/lib/private/db/migrate/create.js +154 -0
  116. package/lib/private/db/migrate/index.d.ts +10 -0
  117. package/lib/private/db/migrate/index.js +6 -0
  118. package/lib/private/db/migrate/status.d.ts +2 -0
  119. package/lib/private/db/migrate/status.js +38 -0
  120. package/lib/private/db/migrate/store.d.ts +5 -0
  121. package/lib/private/db/migrate/store.js +33 -0
  122. package/lib/private/db/sql.d.ts +28 -0
  123. package/lib/private/db/sql.js +177 -0
  124. package/lib/private/db/storage.d.ts +3 -0
  125. package/lib/private/db/storage.js +3 -0
  126. package/lib/private/db/symbol.js +2 -0
  127. package/lib/private/db/test.d.ts +4 -0
  128. package/lib/private/db/test.js +1750 -0
  129. package/lib/private/errors.d.ts +88 -0
  130. package/lib/private/errors.js +211 -0
  131. package/lib/private/frontend.d.ts +72 -0
  132. package/lib/private/frontend.js +245 -0
  133. package/lib/private/hash.js +0 -1
  134. package/lib/private/i18n/Catalog.d.ts +5 -2
  135. package/lib/private/i18n/Formatter.js +21 -9
  136. package/lib/private/i18n/errors.d.ts +16 -0
  137. package/lib/private/i18n/errors.js +27 -0
  138. package/lib/private/i18n/format.d.ts +4 -0
  139. package/lib/private/i18n/format.js +95 -0
  140. package/lib/private/i18n/index/client.d.ts +9 -0
  141. package/lib/private/i18n/index/client.js +152 -0
  142. package/lib/private/i18n/index/server.d.ts +9 -0
  143. package/lib/private/i18n/index/server.js +57 -0
  144. package/lib/private/i18n/index/types.d.ts +33 -0
  145. package/lib/private/i18n/index/types.js +2 -0
  146. package/lib/private/i18n/locale.d.ts +9 -3
  147. package/lib/private/i18n/module.d.ts +3 -0
  148. package/lib/private/i18n/module.js +115 -0
  149. package/lib/private/i18n/ordinals.d.ts +1 -1
  150. package/lib/private/i18n/resolve.d.ts +7 -0
  151. package/lib/private/i18n/resolve.js +30 -0
  152. package/lib/private/i18n/schema.d.ts +10 -5
  153. package/lib/private/i18n/schema.js +6 -10
  154. package/lib/private/i18n/storage.d.ts +3 -0
  155. package/lib/private/i18n/storage.js +5 -0
  156. package/lib/private/i18n/validate.d.ts +2 -0
  157. package/lib/private/i18n/validate.js +19 -0
  158. package/lib/private/index.d.ts +14 -0
  159. package/lib/private/index.js +2 -0
  160. package/lib/private/log.d.ts +1 -0
  161. package/lib/private/log.js +15 -14
  162. package/lib/private/module/Hook.d.ts +1 -1
  163. package/lib/private/module/Next.d.ts +1 -1
  164. package/lib/private/module/Setup.d.ts +21 -0
  165. package/lib/private/module/Setup.js +2 -0
  166. package/lib/private/module/create.d.ts +16 -0
  167. package/lib/private/module/create.js +28 -0
  168. package/lib/private/orm/ExtractSchema.d.ts +9 -0
  169. package/lib/private/orm/ExtractSchema.js +2 -0
  170. package/lib/private/orm/ForeignKey.d.ts +14 -0
  171. package/lib/private/orm/ForeignKey.js +25 -0
  172. package/lib/private/orm/PrimaryKey.d.ts +17 -0
  173. package/lib/private/orm/PrimaryKey.js +38 -0
  174. package/lib/private/orm/StoreInput.d.ts +10 -0
  175. package/lib/private/orm/StoreInput.js +2 -0
  176. package/lib/private/orm/key.d.ts +8 -0
  177. package/lib/private/orm/key.js +8 -0
  178. package/lib/private/orm/parse.d.ts +13 -0
  179. package/lib/private/orm/parse.js +29 -0
  180. package/lib/private/orm/relation.d.ts +43 -0
  181. package/lib/private/orm/relation.js +26 -0
  182. package/lib/private/orm/store.d.ts +187 -0
  183. package/lib/private/orm/store.js +542 -0
  184. package/lib/private/paths.d.ts +2 -2
  185. package/lib/private/paths.js +3 -3
  186. package/lib/private/request/RequestBag.d.ts +5 -1
  187. package/lib/private/request/RequestBag.js +16 -9
  188. package/lib/private/request/RequestBody.d.ts +6 -11
  189. package/lib/private/request/RequestBody.js +51 -59
  190. package/lib/private/request/RequestContext.d.ts +12 -0
  191. package/lib/private/request/RequestContext.js +31 -0
  192. package/lib/private/request/RequestFacade.d.ts +11 -6
  193. package/lib/private/request/RequestPublic.d.ts +9 -0
  194. package/lib/private/request/RequestPublic.js +2 -0
  195. package/lib/private/request/RequestView.d.ts +11 -0
  196. package/lib/private/request/RequestView.js +3 -0
  197. package/lib/private/request/handle.d.ts +4 -0
  198. package/lib/private/request/handle.js +18 -0
  199. package/lib/private/request/parse.d.ts +2 -2
  200. package/lib/private/request/parse.js +55 -16
  201. package/lib/private/request/route.js +37 -22
  202. package/lib/private/request/router.d.ts +1 -1
  203. package/lib/private/request/router.js +22 -50
  204. package/lib/private/{database/symbol/wrap.d.ts → request/sContext.d.ts} +1 -1
  205. package/lib/private/request/sContext.js +2 -0
  206. package/lib/private/request/storage.d.ts +4 -0
  207. package/lib/private/request/storage.js +5 -0
  208. package/lib/private/response/ResponseFunction.d.ts +2 -3
  209. package/lib/private/response/ResponseLike.d.ts +1 -1
  210. package/lib/private/response/binary.d.ts +1 -1
  211. package/lib/private/response/binary.js +4 -3
  212. package/lib/private/response/error.d.ts +1 -1
  213. package/lib/private/response/error.js +1 -1
  214. package/lib/private/response/json.d.ts +1 -1
  215. package/lib/private/response/json.js +2 -2
  216. package/lib/private/response/redirect.d.ts +5 -5
  217. package/lib/private/response/redirect.js +9 -10
  218. package/lib/private/response/respond.js +16 -17
  219. package/lib/private/response/sse.d.ts +1 -1
  220. package/lib/private/response/sse.js +2 -2
  221. package/lib/private/response/text.d.ts +1 -1
  222. package/lib/private/response/text.js +3 -3
  223. package/lib/private/response/view.d.ts +3 -3
  224. package/lib/private/response/view.js +7 -14
  225. package/lib/private/response/ws.d.ts +1 -1
  226. package/lib/private/response.d.ts +1 -1
  227. package/lib/private/route/Handler.d.ts +1 -1
  228. package/lib/private/route/hook.d.ts +6 -0
  229. package/lib/private/route/hook.js +5 -0
  230. package/lib/private/route/router.d.ts +6 -2
  231. package/lib/private/route/router.js +32 -18
  232. package/lib/private/route/wrap.js +2 -2
  233. package/lib/private/serve/App.d.ts +11 -25
  234. package/lib/private/serve/App.js +138 -120
  235. package/lib/private/serve/Init.d.ts +5 -5
  236. package/lib/private/serve/dev-module.d.ts +2 -0
  237. package/lib/private/serve/dev-module.js +34 -0
  238. package/lib/private/serve/hook.d.ts +1 -2
  239. package/lib/private/serve/hook.js +2 -9
  240. package/lib/private/serve/index.d.ts +1 -1
  241. package/lib/private/serve/index.js +36 -2
  242. package/lib/private/server/TAG.d.ts +3 -0
  243. package/lib/private/server/TAG.js +2 -0
  244. package/lib/private/server/index.d.ts +5 -0
  245. package/lib/private/server/index.js +6 -0
  246. package/lib/private/session/Data.d.ts +1 -2
  247. package/lib/private/session/SessionHandle.d.ts +1 -1
  248. package/lib/private/session/SessionHandle.js +11 -9
  249. package/lib/private/session/index.d.ts +3 -4
  250. package/lib/private/session/module.d.ts +3 -0
  251. package/lib/private/session/module.js +114 -0
  252. package/lib/private/session/schema.d.ts +17 -9
  253. package/lib/private/session/schema.js +11 -6
  254. package/lib/private/session/storage.d.ts +1 -2
  255. package/lib/private/session/storage.js +2 -2
  256. package/lib/private/tags.js +2 -2
  257. package/lib/private/target/Manager.js +6 -12
  258. package/lib/private/target/Target.d.ts +1 -1
  259. package/lib/public/AppFacade.d.ts +2 -0
  260. package/lib/public/AppFacade.js +2 -0
  261. package/lib/public/build/presets.d.ts +2 -0
  262. package/lib/public/build/presets.js +2 -0
  263. package/lib/public/build/transform.d.ts +2 -0
  264. package/lib/public/build/transform.js +2 -0
  265. package/lib/public/client.d.ts +3 -0
  266. package/lib/public/client.js +2 -0
  267. package/lib/public/db/MemoryDB.d.ts +2 -0
  268. package/lib/public/db/MemoryDB.js +2 -0
  269. package/lib/public/db/errors.d.ts +2 -0
  270. package/lib/public/db/errors.js +2 -0
  271. package/lib/public/db/migrate.d.ts +2 -0
  272. package/lib/public/db/migrate.js +2 -0
  273. package/lib/public/db/sql.d.ts +2 -0
  274. package/lib/public/db/sql.js +2 -0
  275. package/lib/public/db/test.d.ts +2 -0
  276. package/lib/public/db/test.js +2 -0
  277. package/lib/public/db.d.ts +12 -0
  278. package/lib/public/db.js +2 -0
  279. package/lib/public/frontend.d.ts +3 -0
  280. package/lib/public/frontend.js +2 -0
  281. package/lib/public/index.d.ts +2 -0
  282. package/lib/public/index.js +2 -0
  283. package/lib/public/orm/key.d.ts +2 -0
  284. package/lib/public/orm/key.js +2 -0
  285. package/lib/public/orm/relation.d.ts +2 -0
  286. package/lib/public/orm/relation.js +2 -0
  287. package/lib/public/orm/store.d.ts +2 -0
  288. package/lib/public/orm/store.js +2 -0
  289. package/lib/public/request/server.d.ts +5 -0
  290. package/lib/public/request/server.js +7 -0
  291. package/lib/public/response.d.ts +22 -0
  292. package/lib/public/response.js +19 -0
  293. package/lib/public/route/hook.d.ts +2 -0
  294. package/lib/public/route/hook.js +2 -0
  295. package/lib/public/server.d.ts +3 -0
  296. package/lib/public/server.js +2 -0
  297. package/package.json +40 -30
  298. package/lib/private/AppError.d.ts +0 -4
  299. package/lib/private/AppError.js +0 -8
  300. package/lib/private/backend/Module.d.ts +0 -18
  301. package/lib/private/backend/Module.js +0 -22
  302. package/lib/private/backend/TAG.d.ts +0 -3
  303. package/lib/private/backend/TAG.js +0 -2
  304. package/lib/private/build/client/reload.d.ts +0 -7
  305. package/lib/private/build/client/reload.js +0 -6
  306. package/lib/private/build/server/plugin/database-default.d.ts +0 -4
  307. package/lib/private/build/server/plugin/database-default.js +0 -48
  308. package/lib/private/build/server/plugin/hot-reload.d.ts +0 -4
  309. package/lib/private/build/server/plugin/store-wrap.d.ts +0 -4
  310. package/lib/private/build/server/plugin/store-wrap.js +0 -33
  311. package/lib/private/client/spa/index.d.ts +0 -6
  312. package/lib/private/client/spa/index.js +0 -201
  313. package/lib/private/client/validate.d.ts +0 -3
  314. package/lib/private/client/validate.js +0 -54
  315. package/lib/private/database/As.d.ts +0 -7
  316. package/lib/private/database/Binds.d.ts +0 -4
  317. package/lib/private/database/Binds.js +0 -2
  318. package/lib/private/database/Changes.d.ts +0 -11
  319. package/lib/private/database/Changes.js +0 -2
  320. package/lib/private/database/ColumnTypes.d.ts +0 -11
  321. package/lib/private/database/ColumnTypes.js +0 -2
  322. package/lib/private/database/DataDict.d.ts +0 -5
  323. package/lib/private/database/DataKey.d.ts +0 -4
  324. package/lib/private/database/DataValue.d.ts +0 -5
  325. package/lib/private/database/Database.d.ts +0 -56
  326. package/lib/private/database/Database.js +0 -153
  327. package/lib/private/database/InMemoryDatabase.d.ts +0 -37
  328. package/lib/private/database/InMemoryDatabase.js +0 -181
  329. package/lib/private/database/Sort.d.ts +0 -4
  330. package/lib/private/database/Store.d.ts +0 -172
  331. package/lib/private/database/Store.js +0 -261
  332. package/lib/private/database/storage.d.ts +0 -4
  333. package/lib/private/database/storage.js +0 -3
  334. package/lib/private/database/symbol/wrap.js +0 -2
  335. package/lib/private/database/symbol.js +0 -2
  336. package/lib/private/database/test.d.ts +0 -4
  337. package/lib/private/database/test.js +0 -678
  338. package/lib/private/database/wrap.d.ts +0 -5
  339. package/lib/private/database/wrap.js +0 -5
  340. package/lib/private/fail.d.ts +0 -3
  341. package/lib/private/fail.js +0 -5
  342. package/lib/private/frontend/Module.d.ts +0 -62
  343. package/lib/private/frontend/Module.js +0 -250
  344. package/lib/private/frontend/Render.d.ts +0 -9
  345. package/lib/private/frontend/ServerView.d.ts +0 -5
  346. package/lib/private/i18n/Module.d.ts +0 -16
  347. package/lib/private/i18n/Module.js +0 -122
  348. package/lib/private/i18n/index.d.ts +0 -28
  349. package/lib/private/i18n/index.js +0 -236
  350. package/lib/private/module/BuildHook.d.ts +0 -5
  351. package/lib/private/module/BuildHook.js +0 -2
  352. package/lib/private/module/NextBuild.d.ts +0 -5
  353. package/lib/private/module/NextBuild.js +0 -2
  354. package/lib/private/module/NextServe.d.ts +0 -5
  355. package/lib/private/module/NextServe.js +0 -2
  356. package/lib/private/reducer.d.ts +0 -24
  357. package/lib/private/reducer.js +0 -10
  358. package/lib/private/route/guard.d.ts +0 -4
  359. package/lib/private/route/guard.js +0 -22
  360. package/lib/private/serve/module/Dev.d.ts +0 -11
  361. package/lib/private/serve/module/Dev.js +0 -28
  362. package/lib/private/serve/module/Handle.d.ts +0 -10
  363. package/lib/private/serve/module/Handle.js +0 -15
  364. package/lib/private/session/SessionModule.d.ts +0 -14
  365. package/lib/private/session/SessionModule.js +0 -122
  366. package/lib/private/wasm/API.d.ts +0 -7
  367. package/lib/private/wasm/API.js +0 -2
  368. package/lib/private/wasm/BufferViewSource.d.ts +0 -4
  369. package/lib/private/wasm/BufferViewSource.js +0 -2
  370. package/lib/private/wasm/Exports.d.ts +0 -23
  371. package/lib/private/wasm/Exports.js +0 -2
  372. package/lib/private/wasm/I32.d.ts +0 -5
  373. package/lib/private/wasm/I32.js +0 -2
  374. package/lib/private/wasm/I32_SIZE.d.ts +0 -3
  375. package/lib/private/wasm/I32_SIZE.js +0 -2
  376. package/lib/private/wasm/Instantiation.d.ts +0 -12
  377. package/lib/private/wasm/Instantiation.js +0 -2
  378. package/lib/private/wasm/Tagged.d.ts +0 -7
  379. package/lib/private/wasm/Tagged.js +0 -2
  380. package/lib/private/wasm/buffersize.d.ts +0 -2
  381. package/lib/private/wasm/buffersize.js +0 -5
  382. package/lib/private/wasm/decode-bytes.d.ts +0 -3
  383. package/lib/private/wasm/decode-bytes.js +0 -5
  384. package/lib/private/wasm/decode-json.d.ts +0 -7
  385. package/lib/private/wasm/decode-json.js +0 -11
  386. package/lib/private/wasm/decode-option.d.ts +0 -5
  387. package/lib/private/wasm/decode-option.js +0 -10
  388. package/lib/private/wasm/decode-response.d.ts +0 -19
  389. package/lib/private/wasm/decode-response.js +0 -90
  390. package/lib/private/wasm/decode-string.d.ts +0 -3
  391. package/lib/private/wasm/decode-string.js +0 -5
  392. package/lib/private/wasm/decode-websocket-close.d.ts +0 -5
  393. package/lib/private/wasm/decode-websocket-close.js +0 -6
  394. package/lib/private/wasm/decode-websocket-send.d.ts +0 -6
  395. package/lib/private/wasm/decode-websocket-send.js +0 -19
  396. package/lib/private/wasm/encode-buffer.d.ts +0 -3
  397. package/lib/private/wasm/encode-buffer.js +0 -6
  398. package/lib/private/wasm/encode-request.d.ts +0 -9
  399. package/lib/private/wasm/encode-request.js +0 -195
  400. package/lib/private/wasm/encode-session.d.ts +0 -3
  401. package/lib/private/wasm/encode-session.js +0 -25
  402. package/lib/private/wasm/encode-string-map.d.ts +0 -5
  403. package/lib/private/wasm/encode-string-map.js +0 -14
  404. package/lib/private/wasm/encode-string.d.ts +0 -13
  405. package/lib/private/wasm/encode-string.js +0 -17
  406. package/lib/private/wasm/encode-url.d.ts +0 -11
  407. package/lib/private/wasm/encode-url.js +0 -14
  408. package/lib/private/wasm/encode-websocket-close.d.ts +0 -2
  409. package/lib/private/wasm/encode-websocket-close.js +0 -7
  410. package/lib/private/wasm/encode-websocket-message.d.ts +0 -4
  411. package/lib/private/wasm/encode-websocket-message.js +0 -30
  412. package/lib/private/wasm/encode-websocket-open.d.ts +0 -2
  413. package/lib/private/wasm/encode-websocket-open.js +0 -7
  414. package/lib/private/wasm/filesize.d.ts +0 -2
  415. package/lib/private/wasm/filesize.js +0 -8
  416. package/lib/private/wasm/instantiate.d.ts +0 -37
  417. package/lib/private/wasm/instantiate.js +0 -408
  418. package/lib/private/wasm/open-websocket.d.ts +0 -4
  419. package/lib/private/wasm/open-websocket.js +0 -26
  420. package/lib/private/wasm/stringsize.d.ts +0 -3
  421. package/lib/private/wasm/stringsize.js +0 -5
  422. package/lib/private/wasm/urlsize.d.ts +0 -2
  423. package/lib/private/wasm/urlsize.js +0 -5
  424. package/lib/public/App.d.ts +0 -2
  425. package/lib/public/App.js +0 -2
  426. package/lib/public/AppError.d.ts +0 -2
  427. package/lib/public/AppError.js +0 -2
  428. package/lib/public/BuildApp.d.ts +0 -2
  429. package/lib/public/BuildApp.js +0 -2
  430. package/lib/public/BuildHook.d.ts +0 -2
  431. package/lib/public/BuildHook.js +0 -2
  432. package/lib/public/Database.d.ts +0 -2
  433. package/lib/public/Database.js +0 -2
  434. package/lib/public/Mode.d.ts +0 -2
  435. package/lib/public/Mode.js +0 -2
  436. package/lib/public/Module.d.ts +0 -2
  437. package/lib/public/Module.js +0 -2
  438. package/lib/public/Next.d.ts +0 -2
  439. package/lib/public/Next.js +0 -2
  440. package/lib/public/NextBuild.d.ts +0 -2
  441. package/lib/public/NextBuild.js +0 -2
  442. package/lib/public/NextHandle.d.ts +0 -2
  443. package/lib/public/NextHandle.js +0 -2
  444. package/lib/public/NextRoute.d.ts +0 -3
  445. package/lib/public/NextRoute.js +0 -2
  446. package/lib/public/NextServe.d.ts +0 -2
  447. package/lib/public/NextServe.js +0 -2
  448. package/lib/public/ServeApp.d.ts +0 -2
  449. package/lib/public/ServeApp.js +0 -2
  450. package/lib/public/Target.d.ts +0 -2
  451. package/lib/public/Target.js +0 -2
  452. package/lib/public/backend/Module.d.ts +0 -2
  453. package/lib/public/backend/Module.js +0 -2
  454. package/lib/public/backend/TAG.d.ts +0 -2
  455. package/lib/public/backend/TAG.js +0 -2
  456. package/lib/public/client/Data.d.ts +0 -2
  457. package/lib/public/client/Data.js +0 -2
  458. package/lib/public/client/ValidateInit.d.ts +0 -2
  459. package/lib/public/client/ValidateInit.js +0 -2
  460. package/lib/public/client/ValidateUpdater.d.ts +0 -2
  461. package/lib/public/client/ValidateUpdater.js +0 -2
  462. package/lib/public/client/ValidationError.d.ts +0 -2
  463. package/lib/public/client/ValidationError.js +0 -2
  464. package/lib/public/client/spa.d.ts +0 -2
  465. package/lib/public/client/spa.js +0 -2
  466. package/lib/public/client/toValidated.d.ts +0 -2
  467. package/lib/public/client/toValidated.js +0 -2
  468. package/lib/public/client/validate.d.ts +0 -2
  469. package/lib/public/client/validate.js +0 -2
  470. package/lib/public/database/As.d.ts +0 -2
  471. package/lib/public/database/As.js +0 -2
  472. package/lib/public/database/DataDict.d.ts +0 -2
  473. package/lib/public/database/DataDict.js +0 -2
  474. package/lib/public/database/InMemoryDatabase.d.ts +0 -2
  475. package/lib/public/database/InMemoryDatabase.js +0 -2
  476. package/lib/public/database/Sort.d.ts +0 -2
  477. package/lib/public/database/Sort.js +0 -2
  478. package/lib/public/database/Store.d.ts +0 -2
  479. package/lib/public/database/Store.js +0 -2
  480. package/lib/public/database/TypeMap.d.ts +0 -2
  481. package/lib/public/database/TypeMap.js +0 -2
  482. package/lib/public/database/Types.d.ts +0 -2
  483. package/lib/public/database/Types.js +0 -2
  484. package/lib/public/database/test.d.ts +0 -2
  485. package/lib/public/database/test.js +0 -2
  486. package/lib/public/database/wrap.d.ts +0 -2
  487. package/lib/public/database/wrap.js +0 -2
  488. package/lib/public/fail.d.ts +0 -2
  489. package/lib/public/fail.js +0 -2
  490. package/lib/public/frontend/Module.d.ts +0 -2
  491. package/lib/public/frontend/Module.js +0 -2
  492. package/lib/public/frontend/Publish.d.ts +0 -2
  493. package/lib/public/frontend/Publish.js +0 -2
  494. package/lib/public/frontend/Render.d.ts +0 -2
  495. package/lib/public/frontend/Render.js +0 -2
  496. package/lib/public/frontend/ViewResponse.d.ts +0 -2
  497. package/lib/public/frontend/ViewResponse.js +0 -2
  498. package/lib/public/request/RequestBody.d.ts +0 -2
  499. package/lib/public/request/RequestBody.js +0 -2
  500. package/lib/public/request/RequestFacade.d.ts +0 -2
  501. package/lib/public/request/RequestFacade.js +0 -2
  502. package/lib/public/request/Verb.d.ts +0 -2
  503. package/lib/public/request/Verb.js +0 -2
  504. package/lib/public/response/ResponseFunction.d.ts +0 -2
  505. package/lib/public/response/ResponseFunction.js +0 -2
  506. package/lib/public/response/ResponseLike.d.ts +0 -2
  507. package/lib/public/response/ResponseLike.js +0 -2
  508. package/lib/public/response/binary.d.ts +0 -2
  509. package/lib/public/response/binary.js +0 -2
  510. package/lib/public/response/error.d.ts +0 -2
  511. package/lib/public/response/error.js +0 -2
  512. package/lib/public/response/json.d.ts +0 -2
  513. package/lib/public/response/json.js +0 -2
  514. package/lib/public/response/redirect.d.ts +0 -2
  515. package/lib/public/response/redirect.js +0 -2
  516. package/lib/public/response/sse.d.ts +0 -2
  517. package/lib/public/response/sse.js +0 -2
  518. package/lib/public/response/text.d.ts +0 -2
  519. package/lib/public/response/text.js +0 -2
  520. package/lib/public/response/view.d.ts +0 -2
  521. package/lib/public/response/view.js +0 -2
  522. package/lib/public/response/ws.d.ts +0 -2
  523. package/lib/public/response/ws.js +0 -2
  524. package/lib/public/wasm/decode-json.d.ts +0 -5
  525. package/lib/public/wasm/decode-json.js +0 -3
  526. package/lib/public/wasm/decode-response.d.ts +0 -3
  527. package/lib/public/wasm/decode-response.js +0 -3
  528. package/lib/public/wasm/encode-request.d.ts +0 -3
  529. package/lib/public/wasm/encode-request.js +0 -3
  530. package/lib/public/wasm/encode-session.d.ts +0 -3
  531. package/lib/public/wasm/encode-session.js +0 -3
  532. package/lib/public/wasm/instantiate.d.ts +0 -4
  533. package/lib/public/wasm/instantiate.js +0 -3
  534. /package/lib/private/{frontend → client}/Publish.d.ts +0 -0
  535. /package/lib/private/{frontend → client}/Publish.js +0 -0
  536. /package/lib/private/{frontend → client}/Render.js +0 -0
  537. /package/lib/private/{frontend → client}/ServerData.js +0 -0
  538. /package/lib/private/{frontend → client}/ServerView.js +0 -0
  539. /package/lib/private/{frontend → client}/View.js +0 -0
  540. /package/lib/private/{frontend → client}/ViewOptions.js +0 -0
  541. /package/lib/private/{frontend → client}/ViewResponse.js +0 -0
  542. /package/lib/private/client/{spa/storage.d.ts → storage.d.ts} +0 -0
  543. /package/lib/private/client/{spa/storage.js → storage.js} +0 -0
  544. /package/lib/private/{database → db}/As.js +0 -0
  545. /package/lib/private/{database → db}/DataDict.js +0 -0
  546. /package/lib/private/{database → db}/DataKey.js +0 -0
  547. /package/lib/private/{database → db}/DataValue.js +0 -0
  548. /package/lib/private/{database → db}/Query.js +0 -0
  549. /package/lib/private/{database → db}/QueryBuilder.js +0 -0
  550. /package/lib/private/{database → db}/Schema.js +0 -0
  551. /package/lib/private/{database → db}/Sort.js +0 -0
  552. /package/lib/private/{database → db}/TypeMap.js +0 -0
  553. /package/lib/private/{database → db}/Types.js +0 -0
  554. /package/lib/private/{database → db}/primary.d.ts +0 -0
  555. /package/lib/private/{database → db}/primary.js +0 -0
  556. /package/lib/private/{database → db}/symbol.d.ts +0 -0
@@ -1,236 +0,0 @@
1
- import DEFAULT_PERSIST_MODE from "#i18n/constant/DEFAULT_PERSIST_MODE";
2
- import PERSIST_HEADER from "#i18n/constant/PERSIST_HEADER";
3
- import PERSIST_METHOD from "#i18n/constant/PERSIST_METHOD";
4
- import PERSIST_STORAGE_KEY from "#i18n/constant/PERSIST_STORAGE_KEY";
5
- import Formatter from "#i18n/Formatter";
6
- import sInternal from "#i18n/symbol/internal";
7
- import sConfig from "#symbol/config";
8
- export default function i18n(config) {
9
- const catalogs = config.locales;
10
- let activeLocale = config.defaultLocale;
11
- const currency = config.currency ?? "USD";
12
- const formatter = new Formatter(activeLocale);
13
- const defaultCatalog = catalogs[config.defaultLocale];
14
- // reactive core
15
- let version = 0;
16
- const subscribers = new Set();
17
- const touch = () => {
18
- for (const subscriber of subscribers) {
19
- try {
20
- subscriber();
21
- }
22
- catch {
23
- // ignore
24
- }
25
- }
26
- };
27
- let persistFn;
28
- let loading = null;
29
- const listeners = new Set();
30
- const notify = (locale) => {
31
- for (const fn of listeners)
32
- fn(locale);
33
- };
34
- function apply(locale, options = {}) {
35
- const { emit = false, persist = false } = options;
36
- if (locale === activeLocale)
37
- return;
38
- activeLocale = locale;
39
- formatter.locale = locale;
40
- version++;
41
- if (emit)
42
- notify(locale);
43
- if (persist && persistFn) {
44
- const run = async (l) => { await persistFn(l); };
45
- loading = run(locale)
46
- .catch(e => { console.warn("[i18n]: persist failed", e); })
47
- .finally(() => {
48
- loading = null;
49
- version++;
50
- notify(activeLocale);
51
- });
52
- }
53
- }
54
- const set = (locale) => apply(locale, {
55
- emit: true, persist: true,
56
- });
57
- const init = (locale) => apply(locale);
58
- if (typeof window !== "undefined") {
59
- const mode = config.persist ?? DEFAULT_PERSIST_MODE;
60
- if (mode === "cookie") {
61
- persistFn = async (locale) => {
62
- const res = await fetch("/", {
63
- method: PERSIST_METHOD, headers: { [PERSIST_HEADER]: locale },
64
- });
65
- if (!res.ok)
66
- throw new Error(`[i18n] persist failed: ${res.status}`);
67
- };
68
- }
69
- else if (mode === "localStorage") {
70
- persistFn = (locale) => {
71
- try {
72
- localStorage.setItem(PERSIST_STORAGE_KEY, locale);
73
- }
74
- catch { } // ignore
75
- };
76
- }
77
- else if (mode === "sessionStorage") {
78
- persistFn = (locale) => {
79
- try {
80
- sessionStorage.setItem(PERSIST_STORAGE_KEY, locale);
81
- }
82
- catch { } // ignore
83
- };
84
- } // no persistence
85
- }
86
- function storageRestore() {
87
- if (typeof window === "undefined")
88
- return;
89
- const mode = config.persist ?? DEFAULT_PERSIST_MODE;
90
- if (mode === "localStorage" || mode === "sessionStorage") {
91
- try {
92
- const store = mode === "localStorage" ? localStorage : sessionStorage;
93
- const saved = store.getItem(PERSIST_STORAGE_KEY);
94
- if (saved && saved in catalogs) {
95
- set(saved);
96
- }
97
- }
98
- catch { } //
99
- }
100
- }
101
- function t(...args) {
102
- touch(); // reactive read
103
- const [key, maybeParams] = args;
104
- const active = catalogs[activeLocale];
105
- let template = (active && active[key]) ??
106
- (defaultCatalog && defaultCatalog[key]) ??
107
- String(key);
108
- const params = (maybeParams ?? {});
109
- // save escaped braces
110
- template = template.replace(/\{\{/g, "\uE000");
111
- template = template.replace(/\}\}/g, "\uE001");
112
- // Process normal parameters with nested brace support
113
- const template_re = /\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g;
114
- template = template.replace(template_re, (_, body) => {
115
- // name[:spec]
116
- let name = body;
117
- let spec;
118
- const colon = body.indexOf(":");
119
- if (colon >= 0) {
120
- name = body.slice(0, colon);
121
- spec = body.slice(colon + 1);
122
- }
123
- const value = params[name];
124
- if (!spec)
125
- return value == null ? "" : String(value);
126
- // number selection: "n|one|other" or "n|zero|one|other"
127
- const bar = spec.indexOf("|");
128
- const head = (bar === -1 ? spec : spec.slice(0, bar)).toLowerCase();
129
- const tail = bar === -1 ? "" : spec.slice(bar + 1);
130
- // units u(...)/unit(...)
131
- const m = /^(?:u|unit)\(([^)]+)\)$/.exec(head);
132
- if (m)
133
- return formatter.unit(Number(value ?? 0), m[1]);
134
- switch (head) {
135
- case "n":
136
- case "number": {
137
- if (tail) {
138
- const options = tail.split("|");
139
- const n = Number(value ?? 0);
140
- const formatted = formatter.number(n);
141
- const plural = () => {
142
- const category = Number.isFinite(n)
143
- ? formatter.pluralRules().select(n)
144
- : "other";
145
- if (options.length === 2) {
146
- const [one, other] = options;
147
- return category === "one" ? one : other;
148
- }
149
- if (options.length === 3) {
150
- const [zero, one, other] = options;
151
- return n === 0 ? zero : (category === "one" ? one : other);
152
- }
153
- if (options.length === 5) {
154
- const [zero, one, few, many, other] = options;
155
- if (n === 0)
156
- return zero;
157
- switch (category) {
158
- case "one": return one;
159
- case "few": return few;
160
- case "many": return many;
161
- default: return other;
162
- }
163
- }
164
- return formatted;
165
- };
166
- return plural().replace(new RegExp(`\\{${name}\\}`, "g"), formatted);
167
- }
168
- return formatter.number(Number(value ?? 0));
169
- }
170
- case "d":
171
- case "date": {
172
- const d = typeof value === "number"
173
- ? new Date(value)
174
- : value instanceof Date ? value : new Date(NaN);
175
- return formatter.date(d);
176
- }
177
- case "c":
178
- case "currency":
179
- return formatter.currency(currency, Number(value ?? 0));
180
- case "o":
181
- case "ordinal":
182
- return formatter.ordinal(Number(value ?? 0));
183
- case "a":
184
- case "ago":
185
- return formatter.relative(Number(value ?? 0));
186
- case "l":
187
- case "list":
188
- return formatter.list(Array.isArray(value) ? value : []);
189
- default:
190
- return value == null ? "" : String(value);
191
- }
192
- });
193
- // restore escaped braces
194
- template = template.replace(/\uE000/g, "{");
195
- template = template.replace(/\uE001/g, "}");
196
- return template;
197
- }
198
- const api = t;
199
- api.onChange = (fn) => {
200
- listeners.add(fn);
201
- try {
202
- fn(activeLocale);
203
- }
204
- catch { } // ignore
205
- return () => { listeners.delete(fn); };
206
- };
207
- api.locale = {
208
- get: () => { touch(); return activeLocale; },
209
- set,
210
- };
211
- Object.defineProperty(api, "loading", {
212
- get: () => { touch(); return loading !== null; },
213
- });
214
- Object.defineProperty(api, sConfig, {
215
- get: () => config,
216
- });
217
- Object.defineProperty(api, sInternal, {
218
- value: {
219
- init,
220
- wait: () => loading ?? Promise.resolve(),
221
- depend(fn) {
222
- subscribers.add(fn);
223
- return () => subscribers.delete(fn);
224
- },
225
- get version() { return version; },
226
- touch,
227
- restore: storageRestore,
228
- },
229
- });
230
- // svelte-style store interface
231
- api.subscribe = (run) => {
232
- return api.onChange(() => run(api));
233
- };
234
- return api;
235
- }
236
- //# sourceMappingURL=index.js.map
@@ -1,5 +0,0 @@
1
- import type BuildApp from "#build/App";
2
- import type Hook from "#module/Hook";
3
- type BuildHook = Hook<BuildApp>;
4
- export type { BuildHook as default };
5
- //# sourceMappingURL=BuildHook.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=BuildHook.js.map
@@ -1,5 +0,0 @@
1
- import type BuildApp from "#build/App";
2
- import type Next from "#module/Next";
3
- type NextBuild = Next<BuildApp>;
4
- export type { NextBuild as default };
5
- //# sourceMappingURL=NextBuild.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=NextBuild.js.map
@@ -1,5 +0,0 @@
1
- import type Next from "#module/Next";
2
- import type ServeApp from "#serve/App";
3
- type NextServe = Next<ServeApp>;
4
- export type { NextServe as default };
5
- //# sourceMappingURL=NextServe.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=NextServe.js.map
@@ -1,24 +0,0 @@
1
- import type App from "#App";
2
- import type BuildApp from "#build/App";
3
- import type Module from "#Module";
4
- import type RequestFacade from "#request/RequestFacade";
5
- import type ResponseLike from "#response/ResponseLike";
6
- import type ServeApp from "#serve/App";
7
- type HookInput = {
8
- build: BuildApp;
9
- handle: RequestFacade;
10
- init: App;
11
- route: RequestFacade;
12
- serve: ServeApp;
13
- };
14
- type HookOutput = {
15
- build: BuildApp;
16
- handle: ResponseLike;
17
- init: App;
18
- route: ResponseLike;
19
- serve: ServeApp;
20
- };
21
- type Hook = keyof HookInput;
22
- export default function reducer<H extends Hook>(modules: Module[], dragon: HookInput[H], hook: H): Promise<HookOutput[H]>;
23
- export {};
24
- //# sourceMappingURL=reducer.d.ts.map
@@ -1,10 +0,0 @@
1
- export default async function reducer(modules, dragon, hook) {
2
- if (modules.length === 0) {
3
- return dragon;
4
- }
5
- const [head, ...tail] = modules;
6
- const method = head[hook].bind(head);
7
- return await method(dragon, next => tail.length === 0 ? Promise.resolve(next) : reducer(tail, next, hook));
8
- }
9
- ;
10
- //# sourceMappingURL=reducer.js.map
@@ -1,4 +0,0 @@
1
- import type RequestHook from "#module/RequestHook";
2
- import type RouteHandler from "#route/Handler";
3
- export default function (guards: RouteHandler[]): RequestHook;
4
- //# sourceMappingURL=guard.d.ts.map
@@ -1,22 +0,0 @@
1
- const sError = Symbol("guard_error");
2
- export default function (guards) {
3
- return async (request, next) => {
4
- try {
5
- for (const guard of guards) {
6
- const response = await guard(request);
7
- if (response !== null)
8
- throw { response, type: sError };
9
- }
10
- return next(request);
11
- }
12
- catch (error) {
13
- const guard_error = error;
14
- if (guard_error.type === sError) {
15
- return { request, response: guard_error.response };
16
- }
17
- // rethrow if not guard error
18
- throw error;
19
- }
20
- };
21
- }
22
- //# sourceMappingURL=guard.js.map
@@ -1,11 +0,0 @@
1
- import Module from "#Module";
2
- import type NextHandle from "#module/NextHandle";
3
- import type RequestFacade from "#request/RequestFacade";
4
- import type ServeApp from "#serve/App";
5
- export default class DevModule extends Module {
6
- #private;
7
- name: string;
8
- constructor(app: ServeApp);
9
- handle(request: RequestFacade, next: NextHandle): import("@rcompat/type/MaybePromise").default<Response>;
10
- }
11
- //# sourceMappingURL=Dev.d.ts.map
@@ -1,28 +0,0 @@
1
- import reload from "#build/client/reload";
2
- import Module from "#Module";
3
- function pass(address, request) {
4
- return fetch(address, {
5
- body: request.body,
6
- duplex: "half",
7
- headers: request.headers,
8
- method: request.method,
9
- });
10
- }
11
- export default class DevModule extends Module {
12
- name = "builtin/dev";
13
- #paths;
14
- #reload_url;
15
- constructor(app) {
16
- super();
17
- const assets = app.assets.map(asset => asset.src);
18
- this.#paths = ([reload.path]).concat(assets);
19
- this.#reload_url = `http://${reload.host}:${reload.port}`;
20
- }
21
- handle(request, next) {
22
- const { pathname } = new URL(request.url);
23
- return this.#paths.includes(pathname)
24
- ? pass(`${this.#reload_url}${pathname}`, request.original)
25
- : next(request);
26
- }
27
- }
28
- //# sourceMappingURL=Dev.js.map
@@ -1,10 +0,0 @@
1
- import Module from "#Module";
2
- import type RequestFacade from "#request/RequestFacade";
3
- import type ServeApp from "#serve/App";
4
- export default class HandleModule extends Module {
5
- #private;
6
- name: string;
7
- constructor(app: ServeApp);
8
- handle(request: RequestFacade): Promise<Response>;
9
- }
10
- //# sourceMappingURL=Handle.d.ts.map
@@ -1,15 +0,0 @@
1
- import route from "#request/route";
2
- import Module from "#Module";
3
- export default class HandleModule extends Module {
4
- name = "builtin/handle";
5
- #app;
6
- constructor(app) {
7
- super();
8
- this.#app = app;
9
- }
10
- async handle(request) {
11
- return await this.#app.serveAsset(request.url.pathname)
12
- ?? route(this.#app, request);
13
- }
14
- }
15
- //# sourceMappingURL=Handle.js.map
@@ -1,14 +0,0 @@
1
- import Module from "#Module";
2
- import type NextHandle from "#module/NextHandle";
3
- import type NextServe from "#module/NextServe";
4
- import type RequestFacade from "#request/RequestFacade";
5
- import type ServeApp from "#serve/App";
6
- import type Config from "#session/Config";
7
- export default class SessionModule extends Module {
8
- #private;
9
- name: string;
10
- constructor(secure: boolean, config: Config);
11
- serve(app: ServeApp, next: NextServe): Promise<ServeApp>;
12
- handle(request: RequestFacade, next: NextHandle): Promise<Response>;
13
- }
14
- //# sourceMappingURL=SessionModule.d.ts.map
@@ -1,122 +0,0 @@
1
- import fail from "#fail";
2
- import Module from "#Module";
3
- import kSerialize from "#session/k-serialize";
4
- import SessionHandle from "#session/SessionHandle";
5
- import storage from "#session/storage";
6
- import p from "pema";
7
- const cookie = (name, value, options) => {
8
- const parts = [`${name}=${value}`];
9
- parts.push(`Path=${options.path}`);
10
- parts.push(`SameSite=${options.sameSite}`);
11
- if (options.maxAge !== undefined)
12
- parts.push(`Max-Age=${options.maxAge}`);
13
- if (options.httpOnly)
14
- parts.push("HttpOnly");
15
- if (options.secure)
16
- parts.push("Secure");
17
- return parts.join("; ");
18
- };
19
- export default class SessionModule extends Module {
20
- name = "builtin/session";
21
- #store;
22
- #secure;
23
- #config;
24
- constructor(secure, config) {
25
- super();
26
- this.#secure = secure;
27
- this.#config = config;
28
- this.#store = config.store;
29
- const props = this.#store.type.properties;
30
- if (!("session_id" in props)) {
31
- throw fail("Session store must have a session_id field");
32
- }
33
- try {
34
- props.session_id.parse(crypto.randomUUID());
35
- }
36
- catch {
37
- throw fail("Session store session_id must be a string type");
38
- }
39
- }
40
- async serve(app, next) {
41
- await this.#store.collection.create();
42
- return next(app);
43
- }
44
- async handle(request, next) {
45
- const { name, ...config } = this.#config.cookie;
46
- const sid = request.cookies.try(name);
47
- // Look up session by session_id
48
- const existing = sid !== undefined
49
- ? await this.#store.find({ session_id: sid }, { limit: 1 })
50
- : [];
51
- const exists = existing.length > 0;
52
- let data = undefined;
53
- let dbId = undefined;
54
- if (exists) {
55
- const record = existing[0];
56
- const { id: _id, session_id: _sid, ...rest } = record;
57
- data = rest;
58
- dbId = _id;
59
- }
60
- const session_type = p.omit(this.#store.type, "id", "session_id");
61
- const session = new SessionHandle(sid, data, session_type);
62
- const response = await new Promise((resolve, reject) => {
63
- storage().run(session, async () => {
64
- try {
65
- resolve(await next(request));
66
- }
67
- catch (e) {
68
- reject(e);
69
- }
70
- });
71
- });
72
- const snap = session[kSerialize]();
73
- // no cookie coming in, no session created
74
- if (sid === undefined && !snap.exists)
75
- return response;
76
- const options = {
77
- httpOnly: !!config.httpOnly,
78
- path: config.path,
79
- sameSite: config.sameSite,
80
- secure: this.#secure,
81
- };
82
- // no session existed -> either create or noop
83
- if (!exists) {
84
- if (!snap.exists) {
85
- // stale cookie -> clear
86
- if (sid !== undefined) {
87
- response.headers.append("set-cookie", cookie(name, "", {
88
- ...options, maxAge: 0,
89
- }));
90
- }
91
- return response;
92
- }
93
- // create new session
94
- await this.#store.insert({ session_id: snap.id, ...snap.data });
95
- response.headers.append("set-cookie", cookie(name, snap.id, options));
96
- return response;
97
- }
98
- // from here: session existed (dbId is defined)
99
- // fast-path: session exists, same id and not dirty -> noop
100
- if (snap.exists && snap.id === sid && !snap.dirty)
101
- return response;
102
- // current absent -> destroy + clear cookie
103
- if (!snap.exists) {
104
- await this.#store.delete(dbId);
105
- response.headers.append("set-cookie", cookie(name, "", {
106
- ...options, maxAge: 0,
107
- }));
108
- return response;
109
- }
110
- // session recreated in route -> destroy old, create new, set cookie
111
- if (snap.id !== sid) {
112
- await this.#store.delete(dbId);
113
- await this.#store.insert({ session_id: snap.id, ...snap.data });
114
- response.headers.append("set-cookie", cookie(name, snap.id, options));
115
- return response;
116
- }
117
- // dirty -> replace session contents
118
- await this.#store.update(dbId, snap.data);
119
- return response;
120
- }
121
- }
122
- //# sourceMappingURL=SessionModule.js.map
@@ -1,7 +0,0 @@
1
- import type Verb from "#request/Verb";
2
- import type RouteHandler from "#route/Handler";
3
- type API = {
4
- [key in Verb]?: RouteHandler;
5
- };
6
- export type { API as default };
7
- //# sourceMappingURL=API.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=API.js.map
@@ -1,4 +0,0 @@
1
- import type BufferView from "@rcompat/bufferview";
2
- type BufferViewSource = ConstructorParameters<typeof BufferView>;
3
- export type { BufferViewSource as default };
4
- //# sourceMappingURL=BufferViewSource.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=BufferViewSource.js.map
@@ -1,23 +0,0 @@
1
- import type Verb from "#request/Verb";
2
- import type I32 from "#wasm/I32";
3
- import type Tagged from "#wasm/Tagged";
4
- /** The HTTP Methods that are potentially exported by the WASM module if they
5
- * are following the Primate WASM ABI convention. */
6
- type ExportedMethods<TRequest = I32, TResponse = I32> = {
7
- [Method in Verb]?: (request: Tagged<"Request", TRequest>) => Tagged<"Response", TResponse>;
8
- };
9
- /** These functions should be exported by a WASM module to be compatible with
10
- * Primate. This follows the Primate WASM ABI convention. */
11
- type Exports<TRequest = I32, TResponse = I32> = {
12
- finalizeRequest(value: Tagged<"Request", TRequest>): void;
13
- finalizeResponse(value: Tagged<"Response", TResponse>): void;
14
- getStoreValueDone(): void;
15
- memory: WebAssembly.Memory;
16
- newRequest(): Tagged<"Request", TRequest>;
17
- sendResponse(response: Tagged<"Response", TResponse>): void;
18
- websocketClose(): void;
19
- websocketMessage(): void;
20
- websocketOpen(): void;
21
- } & ExportedMethods<TRequest, TResponse>;
22
- export type { Exports as default };
23
- //# sourceMappingURL=Exports.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Exports.js.map
@@ -1,5 +0,0 @@
1
- /** The default request and response types, which are likely pointers into a
2
- * WASM linear memory space. */
3
- type I32 = number;
4
- export type { I32 as default };
5
- //# sourceMappingURL=I32.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=I32.js.map
@@ -1,3 +0,0 @@
1
- declare const _default: number;
2
- export default _default;
3
- //# sourceMappingURL=I32_SIZE.d.ts.map
@@ -1,2 +0,0 @@
1
- export default Int32Array.BYTES_PER_ELEMENT;
2
- //# sourceMappingURL=I32_SIZE.js.map
@@ -1,12 +0,0 @@
1
- import type API from "#wasm/API";
2
- import type Exports from "#wasm/Exports";
3
- import type I32 from "#wasm/I32";
4
- type Instantiation<TRequest = I32, TResponse = I32> = {
5
- api: API;
6
- exports: Exports<TRequest, TResponse>;
7
- memory: WebAssembly.Memory;
8
- setPayload(value: Uint8Array): void;
9
- sockets: Map<bigint, any>;
10
- };
11
- export type { Instantiation as default };
12
- //# sourceMappingURL=Instantiation.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Instantiation.js.map
@@ -1,7 +0,0 @@
1
- /** A helper function to encourage type safety when working with wasm pointers,
2
- * tagging them as a specific type. */
3
- type Tagged<Name, T> = {
4
- _tag: Name;
5
- } & T;
6
- export type { Tagged as default };
7
- //# sourceMappingURL=Tagged.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Tagged.js.map
@@ -1,2 +0,0 @@
1
- export default function buffersize(buffer: Uint8Array): number;
2
- //# sourceMappingURL=buffersize.d.ts.map
@@ -1,5 +0,0 @@
1
- import I32_SIZE from "#wasm/I32_SIZE";
2
- export default function buffersize(buffer) {
3
- return buffer.byteLength + I32_SIZE;
4
- }
5
- //# sourceMappingURL=buffersize.js.map
@@ -1,3 +0,0 @@
1
- import type BufferView from "@rcompat/bufferview";
2
- export default function decodeBytes(source: BufferView): Uint8Array<ArrayBufferLike>;
3
- //# sourceMappingURL=decode-bytes.d.ts.map