@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,5 +1,5 @@
1
1
  import location from "#location";
2
- import Status from "@rcompat/http/Status";
2
+ import { Status } from "@rcompat/http";
3
3
  /**
4
4
  * Render an error page.
5
5
  *
@@ -4,6 +4,6 @@
4
4
  * @param options response options
5
5
  * @return Response rendering function
6
6
  */
7
- declare const _default: (body: unknown, init?: ResponseInit) => (app: import("../serve/App.js").default) => import("@rcompat/type/MaybePromise").default<Response>;
7
+ declare const _default: (body: unknown, init?: ResponseInit) => (app: import("../index.js").ServeApp) => import("@rcompat/type").MaybePromise<Response>;
8
8
  export default _default;
9
9
  //# sourceMappingURL=json.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import response from "#response";
2
- import mime from "@rcompat/http/mime/application/json";
2
+ import { MIME } from "@rcompat/http";
3
3
  /**
4
4
  * Issue a JSON response
5
5
  * @param body body object
6
6
  * @param options response options
7
7
  * @return Response rendering function
8
8
  */
9
- export default response(mime, JSON.stringify);
9
+ export default response(MIME.APPLICATION_JSON, JSON.stringify);
10
10
  //# sourceMappingURL=json.js.map
@@ -1,11 +1,11 @@
1
1
  import type ResponseFunction from "#response/ResponseFunction";
2
2
  type Redirection = 300 | 301 | 302 | 303 | 304 | 307 | 308;
3
3
  /**
4
- * Redirect request
5
- * @param location location to redirect to
6
- * @param status redirection 3xx code
7
- * @return Response rendering function
8
- */
4
+ * Redirect request
5
+ * @param location location to redirect to
6
+ * @param status redirection 3xx code
7
+ * @return Response rendering function
8
+ */
9
9
  declare const _default: (location: string, status?: Redirection) => ResponseFunction;
10
10
  export default _default;
11
11
  //# sourceMappingURL=redirect.d.ts.map
@@ -1,4 +1,4 @@
1
- import Status from "@rcompat/http/Status";
1
+ import { Status } from "@rcompat/http";
2
2
  function hasCRLF(s) {
3
3
  return /[\r\n]/.test(s);
4
4
  }
@@ -22,9 +22,8 @@ function encodePathname(s) {
22
22
  .map((each, i) => i === 0 ? "" : encodeURIComponent(each)).join("/");
23
23
  }
24
24
  function toSearch(query) {
25
- if (!query) {
25
+ if (!query)
26
26
  return "";
27
- }
28
27
  const search = Object.entries(query)
29
28
  .filter(([, v]) => v !== null && v !== undefined)
30
29
  .reduce((params, [k, v]) => {
@@ -36,7 +35,7 @@ function toSearch(query) {
36
35
  }
37
36
  function toNormalized(relative, base) {
38
37
  // base -> URL resolution
39
- if (base) {
38
+ if (base !== undefined) {
40
39
  const url = new URL(relative, new URL(String(base)));
41
40
  return url.pathname + url.search;
42
41
  }
@@ -48,18 +47,18 @@ function toNormalized(relative, base) {
48
47
  return i === -1 ? relative : relative.slice(0, i);
49
48
  }
50
49
  /**
51
- * Redirect request
52
- * @param location location to redirect to
53
- * @param status redirection 3xx code
54
- * @return Response rendering function
55
- */
50
+ * Redirect request
51
+ * @param location location to redirect to
52
+ * @param status redirection 3xx code
53
+ * @return Response rendering function
54
+ */
56
55
  export default (location, status) =>
57
56
  // no body
58
57
  app => app.respond(null, {
59
58
  headers: {
60
59
  "Content-Length": String(0),
61
60
  Location: location,
62
- "Cache-Control": 'no-cache',
61
+ "Cache-Control": "no-cache",
63
62
  },
64
63
  status: status ?? Status.FOUND,
65
64
  });
@@ -1,31 +1,30 @@
1
- import fail from "#fail";
1
+ import E from "#errors";
2
2
  import binary from "#response/binary";
3
3
  import json from "#response/json";
4
4
  import redirect from "#response/redirect";
5
5
  import text from "#response/text";
6
6
  import Streamable from "@rcompat/fs/Streamable";
7
- import Status from "@rcompat/http/Status";
8
- import proper from "@rcompat/record/proper";
9
- function invalid_body(body) {
10
- throw fail("invalid body {0} returned from route", body);
11
- }
12
- const is_instance = (of) => ((value) => value instanceof of);
13
- const is_response = is_instance(Response);
14
- const is_url = is_instance(URL);
15
- const is_null = (value) => value === null;
7
+ import { Status } from "@rcompat/http";
8
+ import is from "@rcompat/is";
16
9
  function match(m) {
17
10
  return m;
18
11
  }
19
12
  // [if, then]
20
13
  const guesses = match([
21
- [is_null, () => () => new Response(null, { status: Status.NO_CONTENT })],
22
- [is_url, value => redirect(value.toString())],
14
+ [is.null, () => () => new Response(null, { status: Status.NO_CONTENT })],
15
+ [is.url, value => redirect(value.toString())],
23
16
  [Streamable.is, value => binary(value)],
24
- [(value) => is_response(value), value => _ => value],
25
- [proper, json],
26
- [(value) => typeof value === "string", text],
17
+ [is.response, value => _ => value],
18
+ [is.dict, json],
19
+ [is.array, json],
20
+ [is.string, text],
27
21
  ]);
28
- const guess = (value) => guesses.find(([_if]) => _if(value))?.[1](value)
29
- ?? invalid_body(`${value}`);
22
+ function guess(value) {
23
+ const found = guesses.find(([_if]) => _if(value))?.[1](value);
24
+ if (found === undefined)
25
+ throw E.response_invalid_body(`${value}`);
26
+ return found;
27
+ }
28
+ ;
30
29
  export default (result) => typeof result === "function" ? result : guess(result);
31
30
  //# sourceMappingURL=respond.js.map
@@ -10,6 +10,6 @@ type Body = {
10
10
  * @param options response options
11
11
  * @return Response rendering function
12
12
  */
13
- declare const _default: (body: Body, init?: ResponseInit) => (app: import("../serve/App.js").default) => import("@rcompat/type/MaybePromise").default<Response>;
13
+ declare const _default: (body: Body, init?: ResponseInit) => (app: import("../index.js").ServeApp) => import("@rcompat/type").MaybePromise<Response>;
14
14
  export default _default;
15
15
  //# sourceMappingURL=sse.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import response from "#response";
2
- import mime from "@rcompat/http/mime/text/event-stream";
2
+ import { MIME } from "@rcompat/http";
3
3
  const encode = (input) => new TextEncoder().encode(input);
4
4
  const handle = (body) => new ReadableStream({
5
5
  cancel() {
@@ -21,5 +21,5 @@ const handle = (body) => new ReadableStream({
21
21
  * @param options response options
22
22
  * @return Response rendering function
23
23
  */
24
- export default response(mime, handle);
24
+ export default response(MIME.TEXT_EVENT_STREAM, handle);
25
25
  //# sourceMappingURL=sse.js.map
@@ -4,6 +4,6 @@
4
4
  * @param options response options
5
5
  * @return Response rendering function
6
6
  */
7
- declare const _default: (body: string, init?: ResponseInit) => (app: import("../serve/App.js").default) => import("@rcompat/type/MaybePromise").default<Response>;
7
+ declare const _default: (body: string, init?: ResponseInit) => (app: import("../index.js").ServeApp) => import("@rcompat/type").MaybePromise<Response>;
8
8
  export default _default;
9
9
  //# sourceMappingURL=text.d.ts.map
@@ -1,11 +1,11 @@
1
1
  import response from "#response";
2
- import identity from "@rcompat/function/identity";
3
- import mime from "@rcompat/http/mime/text/plain";
2
+ import fn from "@rcompat/fn";
3
+ import { MIME } from "@rcompat/http";
4
4
  /**
5
5
  * Return a plaintext response
6
6
  * @param body plaintext body
7
7
  * @param options response options
8
8
  * @return Response rendering function
9
9
  */
10
- export default response(mime, identity);
10
+ export default response(MIME.TEXT_PLAIN, fn.identity);
11
11
  //# sourceMappingURL=text.js.map
@@ -1,6 +1,6 @@
1
- import type ViewOptions from "#frontend/ViewOptions";
2
- import type Dict from "@rcompat/type/Dict";
3
- import type ResponseFunction from "./ResponseFunction.js";
1
+ import type ViewOptions from "#client/ViewOptions";
2
+ import type ResponseFunction from "#response/ResponseFunction";
3
+ import type { Dict } from "@rcompat/type";
4
4
  declare function view<Props>(component: (props: Props) => any, props: Props, options?: ViewOptions): ResponseFunction;
5
5
  declare function view(component: () => any, props?: Dict, options?: ViewOptions): ResponseFunction;
6
6
  declare function view(name: string, props?: Dict, options?: ViewOptions): ResponseFunction;
@@ -1,5 +1,5 @@
1
- import fail from "#fail";
2
- import FileRef from "@rcompat/fs/FileRef";
1
+ import E from "#errors";
2
+ import fs from "@rcompat/fs";
3
3
  const extensions = ["extension", "fullExtension"];
4
4
  const backmap = {
5
5
  "component.ts": "angular",
@@ -17,14 +17,6 @@ const backmap = {
17
17
  tsx: "react",
18
18
  jsx: "react",
19
19
  };
20
- function no_frontend(view) {
21
- const extension = new FileRef(view).fullExtension.slice(1);
22
- const hasPkg = extension in backmap;
23
- const error = "No frontend for {0}";
24
- const fix = hasPkg ? ", did you configure {1}?" : "";
25
- const pkgname = hasPkg ? `@primate/${backmap[extension]}` : "";
26
- return fail(`${error}${fix}`, view, pkgname);
27
- }
28
20
  /**
29
21
  * Render a view component using a frontend for the given filename extension
30
22
  * @param view path to view
@@ -33,14 +25,15 @@ function no_frontend(view) {
33
25
  * @return Response rendering function
34
26
  */
35
27
  function view(name, props, options) {
36
- const _name = name;
28
+ const view_name = name;
37
29
  return async (app, transfer, request) => {
38
30
  const found_view = extensions
39
- .map(extension => app.frontends[new FileRef(_name)[extension]])
40
- .find(extension => extension !== undefined)?.(_name, props, options)(app, transfer, request);
31
+ .map(extension => app.frontends[fs.ref(view_name)[extension]])
32
+ .find(extension => extension !== undefined)?.(view_name, props, options)(app, transfer, request);
41
33
  if (found_view !== undefined)
42
34
  return found_view;
43
- throw no_frontend(_name);
35
+ const extension = fs.ref(view_name).fullExtension.slice(1);
36
+ throw E.frontend_missing(view_name, backmap[extension]);
44
37
  };
45
38
  }
46
39
  export default view;
@@ -1,5 +1,5 @@
1
1
  import type ResponseFunction from "#response/ResponseFunction";
2
- import type Actions from "@rcompat/http/Actions";
2
+ import type { Actions } from "@rcompat/http";
3
3
  declare const _default: (actions: Actions) => ResponseFunction;
4
4
  export default _default;
5
5
  //# sourceMappingURL=ws.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import type ServeApp from "#serve/App";
2
- import type MaybePromise from "@rcompat/type/MaybePromise";
2
+ import type { MaybePromise } from "@rcompat/type";
3
3
  declare const _default: <T>(mime: string, mapper: (input: T) => BodyInit) => (body: T, init?: ResponseInit) => (app: ServeApp) => MaybePromise<Response>;
4
4
  export default _default;
5
5
  //# sourceMappingURL=response.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import type RequestFacade from "#request/RequestFacade";
2
2
  import type ResponseLike from "#response/ResponseLike";
3
- import type MaybePromise from "@rcompat/type/MaybePromise";
3
+ import type { MaybePromise } from "@rcompat/type";
4
4
  type RouteHandler = (request: RequestFacade) => MaybePromise<ResponseLike>;
5
5
  export { RouteHandler as default };
6
6
  //# sourceMappingURL=Handler.d.ts.map
@@ -0,0 +1,6 @@
1
+ import type NextRoute from "#module/NextRoute";
2
+ import type RequestFacade from "#request/RequestFacade";
3
+ import type ResponseLike from "#response/ResponseLike";
4
+ import type { MaybePromise } from "@rcompat/type";
5
+ export default function hook(fn: (request: RequestFacade, next: NextRoute) => MaybePromise<ResponseLike>): void;
6
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1,5 @@
1
+ import router from "#route/router";
2
+ export default function hook(fn) {
3
+ router.addHook(fn);
4
+ }
5
+ //# sourceMappingURL=hook.js.map
@@ -1,3 +1,4 @@
1
+ import type RequestHook from "#module/RequestHook";
1
2
  import type Verb from "#request/Verb";
2
3
  import type RouteHandler from "#route/Handler";
3
4
  import type RouteOptions from "#route/Options";
@@ -8,12 +9,15 @@ declare class Router {
8
9
  pop(): void;
9
10
  get active(): string | undefined;
10
11
  add(verb: Verb, handler: RouteHandler, options?: RouteOptions): void;
12
+ addHook(fn: RequestHook): void;
13
+ getHooks(path: string): RequestHook[];
14
+ verifyHook(path: string): void;
11
15
  get(path: string): {
12
- head?: {
16
+ options?: {
13
17
  handler: RouteHandler;
14
18
  options: RouteOptions;
15
19
  } | undefined;
16
- options?: {
20
+ head?: {
17
21
  handler: RouteHandler;
18
22
  options: RouteOptions;
19
23
  } | undefined;
@@ -1,29 +1,43 @@
1
+ import E from "#errors";
1
2
  import assert from "@rcompat/assert";
2
- import is from "@rcompat/assert/is";
3
- import maybe from "@rcompat/assert/maybe";
4
3
  const stack = [];
5
4
  export const routes = stack;
5
+ function is_hook_file(p) {
6
+ const basename = p.split("/").at(-1) ?? p;
7
+ return basename === "+hook" || basename.startsWith("+hook.");
8
+ }
6
9
  class Router {
7
10
  #routes = {};
8
- push(route) {
9
- stack.push(route);
11
+ #hooks = {};
12
+ push(route) { stack.push(route); }
13
+ pop() { stack.pop(); }
14
+ get active() { return stack.at(-1); }
15
+ add(verb, handler, options) {
16
+ assert.string(verb);
17
+ assert.function(handler);
18
+ assert.maybe.dict(options);
19
+ assert.maybe.boolean(options?.parseBody);
20
+ const active = assert.defined(this.active);
21
+ if (is_hook_file(active))
22
+ throw E.hook_route_functions_not_allowed(active);
23
+ const _routes = this.#routes;
24
+ if (!(active in _routes))
25
+ _routes[active] = {};
26
+ _routes[active][verb] = { handler, options: options ?? {} };
10
27
  }
11
- pop() {
12
- stack.pop();
28
+ addHook(fn) {
29
+ assert.function(fn);
30
+ const active = assert.defined(this.active);
31
+ if (!is_hook_file(active))
32
+ throw E.hook_not_allowed(active);
33
+ (this.#hooks[active] ??= []).push(fn);
13
34
  }
14
- get active() {
15
- return stack.at(-1);
35
+ getHooks(path) {
36
+ return [...(this.#hooks[path] ?? [])];
16
37
  }
17
- add(verb, handler, options = {}) {
18
- assert(this.active !== undefined);
19
- is(handler).function();
20
- maybe(options).object();
21
- const active = this.active;
22
- const routes = this.#routes;
23
- if (!(active in routes)) {
24
- routes[active] = {};
25
- }
26
- routes[active][verb] = { handler, options };
38
+ verifyHook(path) {
39
+ if ((this.#hooks[path] ?? []).length === 0)
40
+ throw E.hook_unused(path);
27
41
  }
28
42
  get(path) {
29
43
  return { ...this.#routes[path] };
@@ -1,7 +1,7 @@
1
- import dedent from "@rcompat/string/dedent";
1
+ import string from "@rcompat/string";
2
2
  export default function wrap(code, path, build_id) {
3
3
  const router = `ROUTER_${build_id}`;
4
- const prelude = dedent `
4
+ const prelude = string.dedent `
5
5
  import ${router} from "primate/router";
6
6
  ${router}.push("${path}");
7
7
  `;
@@ -1,17 +1,15 @@
1
1
  import App from "#App";
2
2
  import type Asset from "#asset/Asset";
3
- import type ServerView from "#frontend/ServerView";
4
- import type ViewOptions from "#frontend/ViewOptions";
5
- import type ViewResponse from "#frontend/ViewResponse";
3
+ import type ServerView from "#client/ServerView";
4
+ import type ViewOptions from "#client/ViewOptions";
5
+ import type ViewResponse from "#client/ViewResponse";
6
6
  import type I18NConfig from "#i18n/Config";
7
- import RequestBag from "#request/RequestBag";
8
- import RequestBody from "#request/RequestBody";
9
7
  import type RequestFacade from "#request/RequestFacade";
10
8
  import type RouteHandler from "#route/Handler";
11
9
  import type ServeInit from "#serve/Init";
12
10
  import FileRouter from "@rcompat/fs/FileRouter";
13
- import type Actions from "@rcompat/http/Actions";
14
- import type Dict from "@rcompat/type/Dict";
11
+ import type { Actions } from "@rcompat/http";
12
+ import type { Dict } from "@rcompat/type";
15
13
  interface FullViewOptions extends ViewOptions {
16
14
  body: string;
17
15
  }
@@ -26,11 +24,10 @@ export default class ServeApp extends App {
26
24
  constructor(rootfile: string, init: ServeInit);
27
25
  get secure(): boolean;
28
26
  get assets(): Asset[];
29
- get modules(): import("../Module.js").default[];
30
27
  get url(): string;
31
28
  get router(): FileRouter;
32
29
  get frontends(): {
33
- [x: string]: ViewResponse | undefined;
30
+ [k: string]: ViewResponse;
34
31
  };
35
32
  get stores(): Dict;
36
33
  get i18n(): I18NConfig | undefined;
@@ -45,29 +42,18 @@ export default class ServeApp extends App {
45
42
  media(content_type: string, response?: ResponseInit): ResponseInit;
46
43
  publish({ code, inline, src, type }: PublishOptions): Promise<void>;
47
44
  create_csp(): void;
48
- register(extension: string, viewFunction: ViewResponse): void;
45
+ frontend(extension: string, view_response: ViewResponse): void;
49
46
  page(name?: string): string;
50
- serveAsset(pathname: string): Promise<Response | undefined>;
47
+ serve_assets(pathname: string): Promise<Response | undefined>;
51
48
  start(): Promise<void>;
52
49
  stop(): void;
53
50
  upgrade(request: Request, actions: Actions): null;
54
51
  route(request: RequestFacade): Promise<{
55
52
  errors: RouteHandler[];
56
- guards: RouteHandler[];
57
- handler: RouteHandler;
53
+ hooks: import("../module/RequestHook.js").default[];
58
54
  layouts: RouteHandler[];
59
- request: {
60
- body: RequestBody;
61
- path: RequestBag;
62
- context: Dict;
63
- cookies: RequestBag;
64
- forward(to: string, headers?: Dict<string>): Promise<Response>;
65
- headers: RequestBag;
66
- original: Request;
67
- query: RequestBag;
68
- target: string;
69
- url: URL;
70
- };
55
+ handler: RouteHandler;
56
+ request: any;
71
57
  } | undefined>;
72
58
  }
73
59
  export {};