@primate/core 0.1.9 → 0.2.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 (572) hide show
  1. package/lib/private/App.d.ts +54 -0
  2. package/lib/private/App.js +128 -0
  3. package/lib/private/AppError.d.ts +4 -0
  4. package/lib/private/AppError.js +8 -0
  5. package/lib/private/Binder.d.ts +13 -0
  6. package/lib/private/Binder.js +2 -0
  7. package/lib/private/BindingContext.d.ts +3 -0
  8. package/lib/private/BindingContext.js +2 -0
  9. package/lib/private/BuildApp.d.ts +23 -0
  10. package/lib/private/BuildApp.js +121 -0
  11. package/lib/private/CSP.d.ts +6 -0
  12. package/lib/private/CSP.js +2 -0
  13. package/lib/private/Loader.d.ts +17 -0
  14. package/lib/private/Loader.js +46 -0
  15. package/lib/private/Mode.d.ts +3 -0
  16. package/lib/private/Mode.js +2 -0
  17. package/lib/private/Module.d.ts +18 -0
  18. package/lib/private/Module.js +18 -0
  19. package/lib/private/ServeApp.d.ts +89 -0
  20. package/lib/private/ServeApp.js +305 -0
  21. package/lib/private/ServeInit.d.ts +29 -0
  22. package/lib/private/ServeInit.js +2 -0
  23. package/lib/private/asset/Asset.d.ts +11 -0
  24. package/lib/private/asset/Asset.js +2 -0
  25. package/lib/private/asset/Font.d.ts +8 -0
  26. package/lib/private/asset/Font.js +2 -0
  27. package/lib/private/asset/Script.d.ts +9 -0
  28. package/lib/private/asset/Script.js +2 -0
  29. package/lib/private/asset/Style.d.ts +6 -0
  30. package/lib/private/asset/Style.js +2 -0
  31. package/lib/private/backend/Module.d.ts +18 -0
  32. package/lib/private/backend/Module.js +22 -0
  33. package/lib/private/build.d.ts +4 -0
  34. package/lib/private/build.js +45 -0
  35. package/lib/private/builtin/DevModule.d.ts +11 -0
  36. package/lib/private/builtin/DevModule.js +32 -0
  37. package/lib/private/builtin/HandleModule.d.ts +10 -0
  38. package/lib/private/builtin/HandleModule.js +15 -0
  39. package/lib/private/bye.d.ts +3 -0
  40. package/{src → lib}/private/bye.js +2 -2
  41. package/lib/private/client/App.d.ts +4 -0
  42. package/lib/private/client/App.js +12 -0
  43. package/lib/private/client/Data.d.ts +9 -0
  44. package/lib/private/client/Data.js +2 -0
  45. package/lib/private/client/ValidateInit.d.ts +13 -0
  46. package/lib/private/client/ValidateInit.js +2 -0
  47. package/lib/private/client/ValidateUpdater.d.ts +3 -0
  48. package/lib/private/client/ValidateUpdater.js +2 -0
  49. package/lib/private/client/ValidationError.d.ts +6 -0
  50. package/lib/private/client/ValidationError.js +2 -0
  51. package/lib/private/client/spa/index.d.ts +6 -0
  52. package/lib/private/client/spa/index.js +192 -0
  53. package/lib/private/client/spa/storage.d.ts +12 -0
  54. package/lib/private/client/spa/storage.js +54 -0
  55. package/lib/private/client/toValidated.d.ts +17 -0
  56. package/lib/private/client/toValidated.js +21 -0
  57. package/lib/private/client/validate.d.ts +3 -0
  58. package/lib/private/client/validate.js +54 -0
  59. package/lib/private/config/Config.d.ts +4 -0
  60. package/lib/private/config/Config.js +2 -0
  61. package/lib/private/config/config/app.d.ts +3 -0
  62. package/lib/private/config/config/app.js +3 -0
  63. package/lib/private/config/config/database/index.d.ts +3 -0
  64. package/lib/private/config/config/database/index.js +3 -0
  65. package/lib/private/config/config/session.d.ts +3 -0
  66. package/lib/private/config/config/session.js +3 -0
  67. package/lib/private/config/index.d.ts +25 -0
  68. package/lib/private/config/index.js +3 -0
  69. package/lib/private/config/schema.d.ts +26 -0
  70. package/lib/private/config/schema.js +34 -0
  71. package/lib/private/cookie.d.ts +11 -0
  72. package/lib/private/cookie.js +30 -0
  73. package/lib/private/database/As.d.ts +7 -0
  74. package/lib/private/database/As.js +2 -0
  75. package/lib/private/database/Binds.d.ts +4 -0
  76. package/lib/private/database/Binds.js +2 -0
  77. package/lib/private/database/Changes.d.ts +11 -0
  78. package/lib/private/database/Changes.js +2 -0
  79. package/lib/private/database/ColumnTypes.d.ts +11 -0
  80. package/lib/private/database/ColumnTypes.js +2 -0
  81. package/lib/private/database/DataDict.d.ts +5 -0
  82. package/lib/private/database/DataDict.js +2 -0
  83. package/lib/private/database/DataKey.d.ts +4 -0
  84. package/lib/private/database/DataKey.js +2 -0
  85. package/lib/private/database/DataRecord.d.ts +8 -0
  86. package/lib/private/database/DataRecord.js +3 -0
  87. package/lib/private/database/DataValue.d.ts +5 -0
  88. package/lib/private/database/DataValue.js +2 -0
  89. package/lib/private/database/Database.d.ts +56 -0
  90. package/lib/private/database/Database.js +153 -0
  91. package/lib/private/database/InMemoryDatabase.d.ts +37 -0
  92. package/lib/private/database/InMemoryDatabase.js +181 -0
  93. package/lib/private/database/Query.d.ts +14 -0
  94. package/lib/private/database/Query.js +15 -0
  95. package/lib/private/database/QueryBuilder.d.ts +14 -0
  96. package/lib/private/database/QueryBuilder.js +3 -0
  97. package/lib/private/database/Sort.d.ts +4 -0
  98. package/lib/private/database/Sort.js +2 -0
  99. package/lib/private/database/Store.d.ts +169 -0
  100. package/lib/private/database/Store.js +255 -0
  101. package/lib/private/database/TypeMap.d.ts +14 -0
  102. package/lib/private/database/TypeMap.js +2 -0
  103. package/lib/private/database/Types.d.ts +6 -0
  104. package/lib/private/database/Types.js +2 -0
  105. package/lib/private/database/primary.d.ts +3 -0
  106. package/lib/private/database/primary.js +2 -0
  107. package/lib/private/database/storage.d.ts +4 -0
  108. package/lib/private/database/storage.js +3 -0
  109. package/lib/private/database/symbol/wrap.d.ts +3 -0
  110. package/lib/private/database/symbol/wrap.js +2 -0
  111. package/lib/private/database/symbol.d.ts +3 -0
  112. package/lib/private/database/symbol.js +2 -0
  113. package/lib/private/database/test.d.ts +4 -0
  114. package/lib/private/database/test.js +678 -0
  115. package/lib/private/database/wrap.d.ts +5 -0
  116. package/lib/private/database/wrap.js +5 -0
  117. package/lib/private/fail.d.ts +3 -0
  118. package/lib/private/fail.js +5 -0
  119. package/lib/private/frontend/Component.d.ts +8 -0
  120. package/lib/private/frontend/Component.js +2 -0
  121. package/lib/private/frontend/Module.d.ts +60 -0
  122. package/lib/private/frontend/Module.js +241 -0
  123. package/lib/private/frontend/Publish.d.ts +5 -0
  124. package/lib/private/frontend/Publish.js +2 -0
  125. package/lib/private/frontend/Render.d.ts +9 -0
  126. package/lib/private/frontend/Render.js +2 -0
  127. package/lib/private/frontend/ServerComponent.d.ts +5 -0
  128. package/lib/private/frontend/ServerComponent.js +2 -0
  129. package/lib/private/frontend/ServerData.d.ts +7 -0
  130. package/lib/private/frontend/ServerData.js +2 -0
  131. package/lib/private/frontend/ViewOptions.d.ts +12 -0
  132. package/lib/private/frontend/ViewOptions.js +3 -0
  133. package/lib/private/frontend/ViewResponse.d.ts +6 -0
  134. package/lib/private/frontend/ViewResponse.js +2 -0
  135. package/lib/private/frontend/bundle-server.d.ts +11 -0
  136. package/lib/private/frontend/bundle-server.js +48 -0
  137. package/lib/private/hash.d.ts +3 -0
  138. package/lib/private/hash.js +10 -0
  139. package/lib/private/hook/build.d.ts +4 -0
  140. package/lib/private/hook/build.js +245 -0
  141. package/lib/private/hook/serve.d.ts +4 -0
  142. package/lib/private/hook/serve.js +13 -0
  143. package/lib/private/i18n/API.d.ts +21 -0
  144. package/lib/private/i18n/API.js +2 -0
  145. package/lib/private/i18n/Catalog.d.ts +4 -0
  146. package/lib/private/i18n/Catalog.js +2 -0
  147. package/lib/private/i18n/Catalogs.d.ts +4 -0
  148. package/lib/private/i18n/Catalogs.js +2 -0
  149. package/lib/private/i18n/Config.d.ts +10 -0
  150. package/lib/private/i18n/Config.js +2 -0
  151. package/lib/private/i18n/ContextData.d.ts +6 -0
  152. package/lib/private/i18n/ContextData.js +2 -0
  153. package/lib/private/i18n/Formatter.d.ts +18 -0
  154. package/lib/private/i18n/Formatter.js +108 -0
  155. package/lib/private/i18n/Module.d.ts +16 -0
  156. package/lib/private/i18n/Module.js +109 -0
  157. package/lib/private/i18n/PersistMode.d.ts +3 -0
  158. package/lib/private/i18n/PersistMode.js +2 -0
  159. package/lib/private/i18n/TypeOf.d.ts +4 -0
  160. package/lib/private/i18n/TypeOf.js +2 -0
  161. package/lib/private/i18n/constant/COOKIE_NAME.d.ts +3 -0
  162. package/lib/private/i18n/constant/COOKIE_NAME.js +2 -0
  163. package/lib/private/i18n/constant/DEFAULT_LOCALE.d.ts +3 -0
  164. package/lib/private/i18n/constant/DEFAULT_LOCALE.js +2 -0
  165. package/lib/private/i18n/constant/DEFAULT_PERSIST_MODE.d.ts +3 -0
  166. package/lib/private/i18n/constant/DEFAULT_PERSIST_MODE.js +2 -0
  167. package/lib/private/i18n/constant/PERSIST_HEADER.d.ts +3 -0
  168. package/lib/private/i18n/constant/PERSIST_HEADER.js +2 -0
  169. package/lib/private/i18n/constant/PERSIST_METHOD.d.ts +3 -0
  170. package/lib/private/i18n/constant/PERSIST_METHOD.js +2 -0
  171. package/lib/private/i18n/constant/PERSIST_STORAGE_KEY.d.ts +3 -0
  172. package/lib/private/i18n/constant/PERSIST_STORAGE_KEY.js +2 -0
  173. package/lib/private/i18n/index.d.ts +28 -0
  174. package/lib/private/i18n/index.js +236 -0
  175. package/lib/private/i18n/locale.d.ts +5 -0
  176. package/lib/private/i18n/locale.js +4 -0
  177. package/lib/private/i18n/ordinals.d.ts +4 -0
  178. package/lib/private/i18n/ordinals.js +52 -0
  179. package/lib/private/i18n/schema.d.ts +8 -0
  180. package/lib/private/i18n/schema.js +13 -0
  181. package/lib/private/i18n/symbol/internal.d.ts +3 -0
  182. package/lib/private/i18n/symbol/internal.js +3 -0
  183. package/lib/private/i18n/toIntlUnit.d.ts +3 -0
  184. package/lib/private/i18n/toIntlUnit.js +125 -0
  185. package/lib/private/inline.d.ts +7 -0
  186. package/lib/private/inline.js +12 -0
  187. package/lib/private/location.d.ts +17 -0
  188. package/lib/private/location.js +29 -0
  189. package/lib/private/log.d.ts +19 -0
  190. package/lib/private/log.js +46 -0
  191. package/lib/private/module/BuildHook.d.ts +5 -0
  192. package/lib/private/module/BuildHook.js +2 -0
  193. package/lib/private/module/Hook.d.ts +5 -0
  194. package/lib/private/module/Hook.js +2 -0
  195. package/lib/private/module/Next.d.ts +4 -0
  196. package/lib/private/module/Next.js +2 -0
  197. package/lib/private/module/NextBuild.d.ts +5 -0
  198. package/lib/private/module/NextBuild.js +2 -0
  199. package/lib/private/module/NextHandle.d.ts +5 -0
  200. package/lib/private/module/NextHandle.js +2 -0
  201. package/lib/private/module/NextRoute.d.ts +6 -0
  202. package/lib/private/module/NextRoute.js +2 -0
  203. package/lib/private/module/NextServe.d.ts +5 -0
  204. package/lib/private/module/NextServe.js +2 -0
  205. package/lib/private/module/RequestHook.d.ts +6 -0
  206. package/lib/private/module/RequestHook.js +2 -0
  207. package/lib/private/reducer.d.ts +24 -0
  208. package/lib/private/reducer.js +10 -0
  209. package/lib/private/request/RequestBag.d.ts +80 -0
  210. package/lib/private/request/RequestBag.js +119 -0
  211. package/lib/private/request/RequestBody.d.ts +39 -0
  212. package/lib/private/request/RequestBody.js +91 -0
  213. package/lib/private/request/RequestFacade.d.ts +20 -0
  214. package/lib/private/request/RequestFacade.js +2 -0
  215. package/lib/private/request/Verb.d.ts +4 -0
  216. package/lib/private/request/Verb.js +2 -0
  217. package/lib/private/request/parse.d.ts +4 -0
  218. package/lib/private/request/parse.js +69 -0
  219. package/lib/private/request/route.d.ts +4 -0
  220. package/lib/private/request/route.js +61 -0
  221. package/lib/private/request/router.d.ts +5 -0
  222. package/lib/private/request/router.js +56 -0
  223. package/lib/private/request/verbs.d.ts +3 -0
  224. package/lib/private/request/verbs.js +12 -0
  225. package/lib/private/response/ResponseFunction.d.ts +8 -0
  226. package/lib/private/response/ResponseFunction.js +2 -0
  227. package/lib/private/response/ResponseLike.d.ts +6 -0
  228. package/lib/private/response/ResponseLike.js +2 -0
  229. package/lib/private/response/binary.d.ts +10 -0
  230. package/lib/private/response/binary.js +47 -0
  231. package/lib/private/response/error.d.ts +18 -0
  232. package/lib/private/response/error.js +18 -0
  233. package/lib/private/response/json.d.ts +9 -0
  234. package/lib/private/response/json.js +10 -0
  235. package/lib/private/response/redirect.d.ts +11 -0
  236. package/lib/private/response/redirect.js +62 -0
  237. package/lib/private/response/respond.d.ts +5 -0
  238. package/lib/private/response/respond.js +31 -0
  239. package/lib/private/response/sse.d.ts +15 -0
  240. package/lib/private/response/sse.js +25 -0
  241. package/lib/private/response/text.d.ts +9 -0
  242. package/lib/private/response/text.js +11 -0
  243. package/lib/private/response/view.d.ts +11 -0
  244. package/lib/private/response/view.js +41 -0
  245. package/lib/private/response/ws.d.ts +5 -0
  246. package/lib/private/response/ws.js +2 -0
  247. package/lib/private/response.d.ts +5 -0
  248. package/lib/private/response.js +2 -0
  249. package/lib/private/route/Handler.d.ts +6 -0
  250. package/lib/private/route/Handler.js +2 -0
  251. package/lib/private/route/Options.d.ts +5 -0
  252. package/lib/private/route/Options.js +2 -0
  253. package/lib/private/route/Path.d.ts +11 -0
  254. package/lib/private/route/Path.js +2 -0
  255. package/lib/private/route/guard.d.ts +4 -0
  256. package/lib/private/route/guard.js +22 -0
  257. package/lib/private/route/router.d.ts +51 -0
  258. package/lib/private/route/router.js +32 -0
  259. package/lib/private/route/wrap.d.ts +6 -0
  260. package/lib/private/route/wrap.js +17 -0
  261. package/lib/private/route.d.ts +9 -0
  262. package/lib/private/route.js +6 -0
  263. package/lib/private/serve.d.ts +5 -0
  264. package/lib/private/serve.js +8 -0
  265. package/lib/private/session/Config.d.ts +4 -0
  266. package/lib/private/session/Config.js +2 -0
  267. package/lib/private/session/Data.d.ts +5 -0
  268. package/lib/private/session/Data.js +2 -0
  269. package/lib/private/session/InMemoryManager.d.ts +9 -0
  270. package/lib/private/session/InMemoryManager.js +23 -0
  271. package/lib/private/session/Manager.d.ts +9 -0
  272. package/lib/private/session/Manager.js +4 -0
  273. package/lib/private/session/SessionFacade.d.ts +56 -0
  274. package/lib/private/session/SessionFacade.js +2 -0
  275. package/lib/private/session/SessionHandle.d.ts +20 -0
  276. package/lib/private/session/SessionHandle.js +67 -0
  277. package/lib/private/session/SessionModule.d.ts +13 -0
  278. package/lib/private/session/SessionModule.js +99 -0
  279. package/lib/private/session/index.d.ts +13 -0
  280. package/lib/private/session/index.js +41 -0
  281. package/lib/private/session/k-serialize.d.ts +3 -0
  282. package/lib/private/session/k-serialize.js +2 -0
  283. package/lib/private/session/schema.d.ts +14 -0
  284. package/lib/private/session/schema.js +20 -0
  285. package/lib/private/session/storage.d.ts +5 -0
  286. package/lib/private/session/storage.js +5 -0
  287. package/lib/private/symbol/config.d.ts +3 -0
  288. package/lib/private/symbol/config.js +2 -0
  289. package/lib/private/symbol/layout-depth.d.ts +3 -0
  290. package/lib/private/symbol/layout-depth.js +2 -0
  291. package/lib/private/tags.d.ts +10 -0
  292. package/lib/private/tags.js +29 -0
  293. package/lib/private/target/Manager.d.ts +14 -0
  294. package/lib/private/target/Manager.js +44 -0
  295. package/lib/private/target/Target.d.ts +8 -0
  296. package/lib/private/target/Target.js +3 -0
  297. package/lib/private/target/web.d.ts +4 -0
  298. package/lib/private/target/web.js +68 -0
  299. package/lib/private/wasm/API.d.ts +7 -0
  300. package/lib/private/wasm/API.js +2 -0
  301. package/lib/private/wasm/BufferViewSource.d.ts +4 -0
  302. package/lib/private/wasm/BufferViewSource.js +2 -0
  303. package/lib/private/wasm/Exports.d.ts +23 -0
  304. package/lib/private/wasm/Exports.js +2 -0
  305. package/lib/private/wasm/I32.d.ts +5 -0
  306. package/lib/private/wasm/I32.js +2 -0
  307. package/lib/private/wasm/I32_SIZE.d.ts +3 -0
  308. package/lib/private/wasm/I32_SIZE.js +2 -0
  309. package/lib/private/wasm/Instantiation.d.ts +12 -0
  310. package/lib/private/wasm/Instantiation.js +2 -0
  311. package/lib/private/wasm/Tagged.d.ts +7 -0
  312. package/lib/private/wasm/Tagged.js +2 -0
  313. package/lib/private/wasm/buffersize.d.ts +2 -0
  314. package/lib/private/wasm/buffersize.js +5 -0
  315. package/lib/private/wasm/decode-bytes.d.ts +3 -0
  316. package/lib/private/wasm/decode-bytes.js +5 -0
  317. package/lib/private/wasm/decode-json.d.ts +7 -0
  318. package/lib/private/wasm/decode-json.js +11 -0
  319. package/lib/private/wasm/decode-option.d.ts +5 -0
  320. package/lib/private/wasm/decode-option.js +10 -0
  321. package/lib/private/wasm/decode-response.d.ts +19 -0
  322. package/lib/private/wasm/decode-response.js +90 -0
  323. package/lib/private/wasm/decode-string.d.ts +3 -0
  324. package/lib/private/wasm/decode-string.js +5 -0
  325. package/lib/private/wasm/decode-websocket-close.d.ts +5 -0
  326. package/lib/private/wasm/decode-websocket-close.js +6 -0
  327. package/lib/private/wasm/decode-websocket-send.d.ts +6 -0
  328. package/lib/private/wasm/decode-websocket-send.js +19 -0
  329. package/lib/private/wasm/encode-buffer.d.ts +3 -0
  330. package/lib/private/wasm/encode-buffer.js +6 -0
  331. package/lib/private/wasm/encode-request.d.ts +9 -0
  332. package/lib/private/wasm/encode-request.js +198 -0
  333. package/lib/private/wasm/encode-session.d.ts +3 -0
  334. package/lib/private/wasm/encode-session.js +25 -0
  335. package/lib/private/wasm/encode-string-map.d.ts +5 -0
  336. package/lib/private/wasm/encode-string-map.js +14 -0
  337. package/lib/private/wasm/encode-string.d.ts +13 -0
  338. package/lib/private/wasm/encode-string.js +17 -0
  339. package/lib/private/wasm/encode-url.d.ts +11 -0
  340. package/lib/private/wasm/encode-url.js +14 -0
  341. package/lib/private/wasm/encode-websocket-close.d.ts +2 -0
  342. package/lib/private/wasm/encode-websocket-close.js +7 -0
  343. package/lib/private/wasm/encode-websocket-message.d.ts +4 -0
  344. package/lib/private/wasm/encode-websocket-message.js +30 -0
  345. package/lib/private/wasm/encode-websocket-open.d.ts +2 -0
  346. package/lib/private/wasm/encode-websocket-open.js +7 -0
  347. package/lib/private/wasm/filesize.d.ts +2 -0
  348. package/lib/private/wasm/filesize.js +8 -0
  349. package/lib/private/wasm/instantiate.d.ts +37 -0
  350. package/lib/private/wasm/instantiate.js +408 -0
  351. package/lib/private/wasm/open-websocket.d.ts +4 -0
  352. package/lib/private/wasm/open-websocket.js +26 -0
  353. package/lib/private/wasm/stringsize.d.ts +3 -0
  354. package/lib/private/wasm/stringsize.js +5 -0
  355. package/lib/private/wasm/urlsize.d.ts +2 -0
  356. package/lib/private/wasm/urlsize.js +5 -0
  357. package/lib/public/App.d.ts +2 -0
  358. package/lib/public/App.js +2 -0
  359. package/lib/public/AppError.d.ts +2 -0
  360. package/lib/public/AppError.js +2 -0
  361. package/lib/public/BuildApp.d.ts +2 -0
  362. package/lib/public/BuildApp.js +2 -0
  363. package/lib/public/BuildHook.d.ts +2 -0
  364. package/lib/public/BuildHook.js +2 -0
  365. package/lib/public/Database.d.ts +2 -0
  366. package/lib/public/Database.js +2 -0
  367. package/lib/public/Loader.d.ts +2 -0
  368. package/lib/public/Loader.js +2 -0
  369. package/lib/public/Mode.d.ts +2 -0
  370. package/lib/public/Mode.js +2 -0
  371. package/lib/public/Module.d.ts +2 -0
  372. package/lib/public/Module.js +2 -0
  373. package/lib/public/Next.d.ts +2 -0
  374. package/lib/public/Next.js +2 -0
  375. package/lib/public/NextBuild.d.ts +2 -0
  376. package/lib/public/NextBuild.js +2 -0
  377. package/lib/public/NextHandle.d.ts +2 -0
  378. package/lib/public/NextHandle.js +2 -0
  379. package/lib/public/NextRoute.d.ts +3 -0
  380. package/lib/public/NextRoute.js +2 -0
  381. package/lib/public/NextServe.d.ts +2 -0
  382. package/lib/public/NextServe.js +2 -0
  383. package/lib/public/ServeApp.d.ts +2 -0
  384. package/lib/public/ServeApp.js +2 -0
  385. package/lib/public/Target.d.ts +2 -0
  386. package/lib/public/Target.js +2 -0
  387. package/lib/public/backend/Module.d.ts +2 -0
  388. package/lib/public/backend/Module.js +2 -0
  389. package/lib/public/build.d.ts +2 -0
  390. package/lib/public/build.js +2 -0
  391. package/lib/public/client/App.d.ts +2 -0
  392. package/lib/public/client/App.js +2 -0
  393. package/lib/public/client/Data.d.ts +2 -0
  394. package/lib/public/client/Data.js +2 -0
  395. package/lib/public/client/ValidateInit.d.ts +2 -0
  396. package/lib/public/client/ValidateInit.js +2 -0
  397. package/lib/public/client/ValidateUpdater.d.ts +2 -0
  398. package/lib/public/client/ValidateUpdater.js +2 -0
  399. package/lib/public/client/ValidationError.d.ts +2 -0
  400. package/lib/public/client/ValidationError.js +2 -0
  401. package/lib/public/client/spa.d.ts +2 -0
  402. package/lib/public/client/spa.js +2 -0
  403. package/lib/public/client/toValidated.d.ts +2 -0
  404. package/lib/public/client/toValidated.js +2 -0
  405. package/lib/public/client/validate.d.ts +2 -0
  406. package/lib/public/client/validate.js +2 -0
  407. package/lib/public/config.d.ts +2 -0
  408. package/lib/public/config.js +2 -0
  409. package/lib/public/database/As.d.ts +2 -0
  410. package/lib/public/database/As.js +2 -0
  411. package/lib/public/database/DataDict.d.ts +2 -0
  412. package/lib/public/database/DataDict.js +2 -0
  413. package/lib/public/database/InMemoryDatabase.d.ts +2 -0
  414. package/lib/public/database/InMemoryDatabase.js +2 -0
  415. package/lib/public/database/Sort.d.ts +2 -0
  416. package/lib/public/database/Sort.js +2 -0
  417. package/lib/public/database/Store.d.ts +2 -0
  418. package/lib/public/database/Store.js +2 -0
  419. package/lib/public/database/TypeMap.d.ts +2 -0
  420. package/lib/public/database/TypeMap.js +2 -0
  421. package/lib/public/database/Types.d.ts +2 -0
  422. package/lib/public/database/Types.js +2 -0
  423. package/lib/public/database/test.d.ts +2 -0
  424. package/lib/public/database/test.js +2 -0
  425. package/lib/public/database/wrap.d.ts +2 -0
  426. package/lib/public/database/wrap.js +2 -0
  427. package/lib/public/frontend/Module.d.ts +2 -0
  428. package/lib/public/frontend/Module.js +2 -0
  429. package/lib/public/frontend/Publish.d.ts +2 -0
  430. package/lib/public/frontend/Publish.js +2 -0
  431. package/lib/public/frontend/Render.d.ts +2 -0
  432. package/lib/public/frontend/Render.js +2 -0
  433. package/lib/public/frontend/ViewResponse.d.ts +2 -0
  434. package/lib/public/frontend/ViewResponse.js +2 -0
  435. package/lib/public/i18n/API.d.ts +2 -0
  436. package/lib/public/i18n/API.js +2 -0
  437. package/lib/public/i18n/Catalogs.d.ts +2 -0
  438. package/lib/public/i18n/Catalogs.js +2 -0
  439. package/lib/public/i18n/ContextData.d.ts +2 -0
  440. package/lib/public/i18n/ContextData.js +2 -0
  441. package/lib/public/i18n/config.d.ts +2 -0
  442. package/lib/public/i18n/config.js +2 -0
  443. package/lib/public/i18n/locale.d.ts +2 -0
  444. package/lib/public/i18n/locale.js +2 -0
  445. package/lib/public/i18n/sInternal.d.ts +2 -0
  446. package/lib/public/i18n/sInternal.js +2 -0
  447. package/lib/public/inline.d.ts +2 -0
  448. package/lib/public/inline.js +2 -0
  449. package/lib/public/location.d.ts +2 -0
  450. package/lib/public/location.js +2 -0
  451. package/lib/public/log.d.ts +2 -0
  452. package/{src/log/index.js → lib/public/log.js} +1 -0
  453. package/lib/public/request/RequestBody.d.ts +2 -0
  454. package/lib/public/request/RequestBody.js +2 -0
  455. package/lib/public/request/RequestFacade.d.ts +2 -0
  456. package/lib/public/request/RequestFacade.js +2 -0
  457. package/lib/public/request/Verb.d.ts +2 -0
  458. package/lib/public/request/Verb.js +2 -0
  459. package/lib/public/request/verbs.d.ts +2 -0
  460. package/lib/public/request/verbs.js +2 -0
  461. package/lib/public/response/ResponseFunction.d.ts +2 -0
  462. package/lib/public/response/ResponseFunction.js +2 -0
  463. package/lib/public/response/ResponseLike.d.ts +2 -0
  464. package/lib/public/response/ResponseLike.js +2 -0
  465. package/lib/public/response/binary.d.ts +2 -0
  466. package/lib/public/response/binary.js +2 -0
  467. package/lib/public/response/error.d.ts +2 -0
  468. package/lib/public/response/error.js +2 -0
  469. package/lib/public/response/json.d.ts +2 -0
  470. package/lib/public/response/json.js +2 -0
  471. package/lib/public/response/redirect.d.ts +2 -0
  472. package/lib/public/response/redirect.js +2 -0
  473. package/lib/public/response/sse.d.ts +2 -0
  474. package/lib/public/response/sse.js +2 -0
  475. package/lib/public/response/text.d.ts +2 -0
  476. package/lib/public/response/text.js +2 -0
  477. package/lib/public/response/view.d.ts +2 -0
  478. package/lib/public/response/view.js +2 -0
  479. package/lib/public/response/ws.d.ts +2 -0
  480. package/lib/public/response/ws.js +2 -0
  481. package/lib/public/route/router.d.ts +2 -0
  482. package/lib/public/route/router.js +2 -0
  483. package/lib/public/route/wrap.d.ts +2 -0
  484. package/lib/public/route/wrap.js +2 -0
  485. package/lib/public/route.d.ts +2 -0
  486. package/lib/public/route.js +2 -0
  487. package/lib/public/serve.d.ts +2 -0
  488. package/lib/public/serve.js +2 -0
  489. package/lib/public/session/Manager.d.ts +2 -0
  490. package/lib/public/session/Manager.js +2 -0
  491. package/lib/public/session/config.d.ts +2 -0
  492. package/lib/public/session/config.js +2 -0
  493. package/lib/public/symbol/config.d.ts +2 -0
  494. package/lib/public/symbol/config.js +2 -0
  495. package/lib/public/wasm/decode-json.d.ts +5 -0
  496. package/lib/public/wasm/decode-json.js +3 -0
  497. package/lib/public/wasm/decode-response.d.ts +3 -0
  498. package/lib/public/wasm/decode-response.js +3 -0
  499. package/lib/public/wasm/encode-request.d.ts +3 -0
  500. package/lib/public/wasm/encode-request.js +3 -0
  501. package/lib/public/wasm/encode-session.d.ts +3 -0
  502. package/lib/public/wasm/encode-session.js +3 -0
  503. package/lib/public/wasm/instantiate.d.ts +4 -0
  504. package/lib/public/wasm/instantiate.js +3 -0
  505. package/package.json +41 -35
  506. package/src/build/app.js +0 -99
  507. package/src/build/hook/build.js +0 -188
  508. package/src/build/hook/copy_includes.js +0 -20
  509. package/src/build/hook/exports.js +0 -2
  510. package/src/build/hook/init.js +0 -3
  511. package/src/build/hook/router.js +0 -33
  512. package/src/build/index.js +0 -49
  513. package/src/build/module_loader.js +0 -30
  514. package/src/build/targets/exports.js +0 -1
  515. package/src/build/targets/web.js +0 -70
  516. package/src/dispatch/index.js +0 -1
  517. package/src/http/verbs.js +0 -11
  518. package/src/private/config-filename.js +0 -1
  519. package/src/private/config.js +0 -48
  520. package/src/private/depend.js +0 -20
  521. package/src/private/dispatch.js +0 -18
  522. package/src/private/error/bad-body.js +0 -6
  523. package/src/private/error/bad-default-export.js +0 -6
  524. package/src/private/error/bad-path.js +0 -6
  525. package/src/private/error/bad-type-export.js +0 -6
  526. package/src/private/error/bad-type-name.js +0 -6
  527. package/src/private/error/double-extension.js +0 -6
  528. package/src/private/error/double-module.js +0 -6
  529. package/src/private/error/double-path-parameter.js +0 -6
  530. package/src/private/error/double-route.js +0 -6
  531. package/src/private/error/empty-config-file.js +0 -6
  532. package/src/private/error/empty-directory.js +0 -6
  533. package/src/private/error/empty-path-parameter.js +0 -6
  534. package/src/private/error/empty-route-file.js +0 -6
  535. package/src/private/error/error-in-config-file.js +0 -6
  536. package/src/private/error/mismatched-body.js +0 -6
  537. package/src/private/error/mismatched-path.js +0 -6
  538. package/src/private/error/mismatched-type.js +0 -6
  539. package/src/private/error/module-no-name.js +0 -6
  540. package/src/private/error/modules-array.js +0 -6
  541. package/src/private/error/no-handler.js +0 -6
  542. package/src/private/error/no-route-to-path.js +0 -6
  543. package/src/private/error/optional-route.js +0 -6
  544. package/src/private/error/reserved-type-name.js +0 -6
  545. package/src/private/error/rest-route.js +0 -6
  546. package/src/private/error.js +0 -15
  547. package/src/private/log.js +0 -69
  548. package/src/private/loglevel.js +0 -9
  549. package/src/private/mark.js +0 -5
  550. package/src/private/validate.js +0 -11
  551. package/src/serve/app.js +0 -206
  552. package/src/serve/handler/error.js +0 -10
  553. package/src/serve/handler/json.js +0 -10
  554. package/src/serve/handler/redirect.js +0 -11
  555. package/src/serve/handler/shared/base.js +0 -4
  556. package/src/serve/handler/sse.js +0 -24
  557. package/src/serve/handler/stream.js +0 -4
  558. package/src/serve/handler/text.js +0 -10
  559. package/src/serve/handler/view.js +0 -15
  560. package/src/serve/handler/ws.js +0 -2
  561. package/src/serve/hook/exports.js +0 -5
  562. package/src/serve/hook/handle.js +0 -106
  563. package/src/serve/hook/init.js +0 -3
  564. package/src/serve/hook/parse.js +0 -17
  565. package/src/serve/hook/respond.js +0 -28
  566. package/src/serve/hook/route.js +0 -50
  567. package/src/serve/hook/serve.js +0 -53
  568. package/src/serve/index.js +0 -9
  569. package/src/serve/module_loader.js +0 -16
  570. package/src/serve/to_sorted.js +0 -1
  571. /package/{src/build → lib/private}/defaults/app.html +0 -0
  572. /package/{src/build → lib/private}/defaults/error.html +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Hook.js.map
@@ -0,0 +1,4 @@
1
+ import type MaybePromise from "@rcompat/type/MaybePromise";
2
+ type Next<I, O = I> = (i: I) => MaybePromise<O>;
3
+ export type { Next as default };
4
+ //# sourceMappingURL=Next.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Next.js.map
@@ -0,0 +1,5 @@
1
+ import type BuildApp from "#BuildApp";
2
+ import type Next from "#module/Next";
3
+ type NextBuild = Next<BuildApp>;
4
+ export type { NextBuild as default };
5
+ //# sourceMappingURL=NextBuild.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NextBuild.js.map
@@ -0,0 +1,5 @@
1
+ import type Next from "#module/Next";
2
+ import type RequestFacade from "#request/RequestFacade";
3
+ type NextHandle = Next<RequestFacade, Response>;
4
+ export type { NextHandle as default };
5
+ //# sourceMappingURL=NextHandle.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NextHandle.js.map
@@ -0,0 +1,6 @@
1
+ import type Next from "#module/Next";
2
+ import type RequestFacade from "#request/RequestFacade";
3
+ import type ResponseLike from "#response/ResponseLike";
4
+ type NextRoute = Next<RequestFacade, ResponseLike>;
5
+ export type { NextRoute as default };
6
+ //# sourceMappingURL=NextRoute.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NextRoute.js.map
@@ -0,0 +1,5 @@
1
+ import type Next from "#module/Next";
2
+ import type ServeApp from "#ServeApp";
3
+ type NextServe = Next<ServeApp>;
4
+ export type { NextServe as default };
5
+ //# sourceMappingURL=NextServe.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NextServe.js.map
@@ -0,0 +1,6 @@
1
+ import type Hook from "#module/Hook";
2
+ import type RequestFacade from "#request/RequestFacade";
3
+ import type ResponseLike from "#response/ResponseLike";
4
+ type RequestHook = Hook<RequestFacade, ResponseLike>;
5
+ export type { RequestHook as default };
6
+ //# sourceMappingURL=RequestHook.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RequestHook.js.map
@@ -0,0 +1,24 @@
1
+ import type App from "#App";
2
+ import type BuildApp from "#BuildApp";
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 "#ServeApp";
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
@@ -0,0 +1,10 @@
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
@@ -0,0 +1,80 @@
1
+ import type PartialDict from "@rcompat/type/PartialDict";
2
+ type Contents = PartialDict<string>;
3
+ type Normalize = (key: string) => string;
4
+ interface Schema<T> {
5
+ parse(input: unknown): T;
6
+ }
7
+ type Options = {
8
+ normalize?: Normalize;
9
+ raw?: string;
10
+ };
11
+ export default class RequestBag {
12
+ #private;
13
+ /**
14
+ * Create a new RequestBag.
15
+ *
16
+ * @param input - Initial key-value entries.
17
+ * @param name - Human-readable bag name used in error messages.
18
+ * @param options - Optional `normalize` function and `raw` string.
19
+ */
20
+ constructor(input: Contents, name: string, options?: Options);
21
+ /**
22
+ * The untouched, original source string for this bag. For example,
23
+ * - `"?a=1&b=2"` for a query bag,
24
+ * - the Cookie header for cookies,
25
+ * - the pathname for request path.
26
+ */
27
+ get raw(): string;
28
+ /**
29
+ * @returns the number of elements in the bag.
30
+ */
31
+ get size(): number;
32
+ /**
33
+ * Iterate over `[key, value]` entries in the bag.
34
+ * Keys are post-normalization; entries with `undefined` values are skipped.
35
+ */
36
+ [Symbol.iterator](): IterableIterator<readonly [string, string]>;
37
+ /**
38
+ * Get a value by key.
39
+ *
40
+ * @param key - Key to look up (pre-normalization).
41
+ * @returns The defined value.
42
+ * @throws If the key is absent or its value is `undefined`.
43
+ */
44
+ get(key: string): string;
45
+ /**
46
+ * Try to get a value by key.
47
+ *
48
+ * @param key - Key to look up (pre-normalization).
49
+ * @returns The value, or `undefined` if absent/undefined.
50
+ */
51
+ try(key: string): string | undefined;
52
+ /**
53
+ * Whether the bag contains a defined value for the key.
54
+ *
55
+ * @param key - Key to test (pre-normalization).
56
+ * @returns `true` if present with a defined value; otherwise `false`.
57
+ */
58
+ has(key: string): boolean;
59
+ /**
60
+ * Parse the entire bag with a schema.
61
+ *
62
+ * The schema receives the bag's normalized contents.
63
+ *
64
+ * @typeParam T - Parsed/validated result type.
65
+ * @param schema - Object exposing `parse(input)`.
66
+ * @returns The parsed value.
67
+ * @throws Whatever the schema throws.
68
+ */
69
+ parse<T>(schema: Schema<T>): T;
70
+ /** Returns {@link raw}. Useful in template strings. */
71
+ toString(): string;
72
+ /**
73
+ * JSON view of the normalized bag.
74
+ *
75
+ * @returns A shallow null-prototype clone of the bag's contents.
76
+ */
77
+ toJSON(): any;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=RequestBag.d.ts.map
@@ -0,0 +1,119 @@
1
+ import fail from "#fail";
2
+ import is from "@rcompat/assert/is";
3
+ export default class RequestBag {
4
+ #contents;
5
+ #name;
6
+ #normalize;
7
+ #raw;
8
+ /**
9
+ * Create a new RequestBag.
10
+ *
11
+ * @param input - Initial key-value entries.
12
+ * @param name - Human-readable bag name used in error messages.
13
+ * @param options - Optional `normalize` function and `raw` string.
14
+ */
15
+ constructor(input, name, options = {}) {
16
+ is(input).object();
17
+ this.#name = name;
18
+ this.#normalize = options.normalize ?? (k => k);
19
+ this.#raw = options.raw ?? "";
20
+ const contents = Object.create(null);
21
+ for (const key of Object.keys(input)) {
22
+ const normalized = this.#normalize(key);
23
+ // last-wins semantics if only case differs
24
+ contents[normalized] = input[key];
25
+ }
26
+ this.#contents = contents;
27
+ }
28
+ #hasOwn(k) {
29
+ return Object.hasOwn(this.#contents, k);
30
+ }
31
+ /**
32
+ * The untouched, original source string for this bag. For example,
33
+ * - `"?a=1&b=2"` for a query bag,
34
+ * - the Cookie header for cookies,
35
+ * - the pathname for request path.
36
+ */
37
+ get raw() {
38
+ return this.#raw;
39
+ }
40
+ /**
41
+ * @returns the number of elements in the bag.
42
+ */
43
+ get size() {
44
+ return Object.keys(this.#contents).length;
45
+ }
46
+ /**
47
+ * Iterate over `[key, value]` entries in the bag.
48
+ * Keys are post-normalization; entries with `undefined` values are skipped.
49
+ */
50
+ *[Symbol.iterator]() {
51
+ for (const k of Object.keys(this.#contents)) {
52
+ const v = this.#contents[k];
53
+ if (v !== undefined)
54
+ yield [k, v];
55
+ }
56
+ }
57
+ /**
58
+ * Get a value by key.
59
+ *
60
+ * @param key - Key to look up (pre-normalization).
61
+ * @returns The defined value.
62
+ * @throws If the key is absent or its value is `undefined`.
63
+ */
64
+ get(key) {
65
+ const k = this.#normalize(key);
66
+ if (this.#hasOwn(k)) {
67
+ const v = this.#contents[k];
68
+ if (v !== undefined)
69
+ return v;
70
+ }
71
+ throw fail("{0} has no key {1}", this.#name, key);
72
+ }
73
+ /**
74
+ * Try to get a value by key.
75
+ *
76
+ * @param key - Key to look up (pre-normalization).
77
+ * @returns The value, or `undefined` if absent/undefined.
78
+ */
79
+ try(key) {
80
+ const k = this.#normalize(key);
81
+ return this.#hasOwn(k) ? this.#contents[k] : undefined;
82
+ }
83
+ /**
84
+ * Whether the bag contains a defined value for the key.
85
+ *
86
+ * @param key - Key to test (pre-normalization).
87
+ * @returns `true` if present with a defined value; otherwise `false`.
88
+ */
89
+ has(key) {
90
+ const k = this.#normalize(key);
91
+ return this.#hasOwn(k) && this.#contents[k] !== undefined;
92
+ }
93
+ /**
94
+ * Parse the entire bag with a schema.
95
+ *
96
+ * The schema receives the bag's normalized contents.
97
+ *
98
+ * @typeParam T - Parsed/validated result type.
99
+ * @param schema - Object exposing `parse(input)`.
100
+ * @returns The parsed value.
101
+ * @throws Whatever the schema throws.
102
+ */
103
+ parse(schema) {
104
+ return schema.parse(this.#contents);
105
+ }
106
+ /** Returns {@link raw}. Useful in template strings. */
107
+ toString() {
108
+ return this.raw;
109
+ }
110
+ /**
111
+ * JSON view of the normalized bag.
112
+ *
113
+ * @returns A shallow null-prototype clone of the bag's contents.
114
+ */
115
+ toJSON() {
116
+ return Object.assign(Object.create(null), this.#contents);
117
+ }
118
+ }
119
+ //# sourceMappingURL=RequestBag.js.map
@@ -0,0 +1,39 @@
1
+ import type Dict from "@rcompat/type/Dict";
2
+ import type JSONValue from "@rcompat/type/JSONValue";
3
+ import type Schema from "@rcompat/type/Schema";
4
+ type Fields = Dict<FormDataEntryValue>;
5
+ type Parsed = {
6
+ type: "binary";
7
+ value: Blob;
8
+ } | {
9
+ type: "fields";
10
+ value: Fields;
11
+ } | {
12
+ type: "json";
13
+ value: JSONValue;
14
+ } | {
15
+ type: "none";
16
+ value: null;
17
+ } | {
18
+ type: "text";
19
+ value: string;
20
+ };
21
+ type ParseReturn<S> = S extends {
22
+ parse: (v: unknown) => infer R;
23
+ } ? R : never;
24
+ export default class RequestBody {
25
+ #private;
26
+ static parse(request: Request, url: URL): Promise<RequestBody>;
27
+ static none(): RequestBody;
28
+ constructor(p: Parsed);
29
+ get type(): "binary" | "fields" | "json" | "none" | "text";
30
+ json(): JSONValue;
31
+ json<S extends Schema<unknown>>(schema: S): ParseReturn<S>;
32
+ fields(): Fields;
33
+ fields<S extends Schema<unknown>>(schema: S): ParseReturn<S>;
34
+ text(): string;
35
+ binary(): Blob;
36
+ none(): null;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=RequestBody.d.ts.map
@@ -0,0 +1,91 @@
1
+ import fail from "#fail";
2
+ import json from "@rcompat/http/mime/application/json";
3
+ import binary from "@rcompat/http/mime/application/octet-stream";
4
+ import form from "@rcompat/http/mime/application/x-www-form-urlencoded";
5
+ import formData from "@rcompat/http/mime/multipart/form-data";
6
+ import text from "@rcompat/http/mime/text/plain";
7
+ async function fromForm(request) {
8
+ const fields = Object.create(null);
9
+ for (const [key, value] of (await request.formData()).entries()) {
10
+ fields[key] = value;
11
+ }
12
+ return fields;
13
+ }
14
+ ;
15
+ export default class RequestBody {
16
+ #parsed;
17
+ static async parse(request, url) {
18
+ const raw = request.headers.get("content-type") ?? "none";
19
+ const type = raw.split(";")[0].trim().toLowerCase();
20
+ const path = url.pathname;
21
+ try {
22
+ switch (type) {
23
+ case binary:
24
+ return new RequestBody({ type: "binary", value: await request.blob() });
25
+ case form:
26
+ case formData:
27
+ return new RequestBody({ type: "fields", value: await fromForm(request) });
28
+ case json:
29
+ return new RequestBody({ type: "json", value: await request.json() });
30
+ case text:
31
+ return new RequestBody({ type: "text", value: await request.text() });
32
+ case "none":
33
+ return RequestBody.none();
34
+ default:
35
+ throw fail("{0}: unsupported content type {1}", path, type);
36
+ }
37
+ }
38
+ catch (cause) {
39
+ const message = "{0}: unparseable content type {1} - cause:\n[2]";
40
+ throw fail(message, path, type, cause);
41
+ }
42
+ }
43
+ static none() {
44
+ return new RequestBody({ type: "none", value: null });
45
+ }
46
+ constructor(p) {
47
+ this.#parsed = p;
48
+ }
49
+ get type() {
50
+ return this.#parsed.type;
51
+ }
52
+ #value() {
53
+ return this.#parsed.value;
54
+ }
55
+ #throw(expected) {
56
+ throw fail("request body: expected {0}, got {1}", expected, this.type);
57
+ }
58
+ json(schema) {
59
+ if (this.type !== "json") {
60
+ this.#throw("JSON");
61
+ }
62
+ const value = this.#value();
63
+ return schema ? schema.parse(value) : value;
64
+ }
65
+ fields(schema) {
66
+ if (this.type !== "fields") {
67
+ this.#throw("form fields");
68
+ }
69
+ const value = this.#value();
70
+ return schema ? schema.parse(value) : value;
71
+ }
72
+ text() {
73
+ if (this.type !== "text") {
74
+ this.#throw("plaintext");
75
+ }
76
+ return this.#value();
77
+ }
78
+ binary() {
79
+ if (this.type !== "binary") {
80
+ this.#throw("binary");
81
+ }
82
+ return this.#value();
83
+ }
84
+ none() {
85
+ if (this.type !== "none") {
86
+ this.#throw("none");
87
+ }
88
+ return null;
89
+ }
90
+ }
91
+ //# sourceMappingURL=RequestBody.js.map
@@ -0,0 +1,20 @@
1
+ import type RequestBag from "#request/RequestBag";
2
+ import type RequestBody from "#request/RequestBody";
3
+ import type Dict from "@rcompat/type/Dict";
4
+ type RequestFacade = {
5
+ body: RequestBody;
6
+ context: Dict;
7
+ cookies: RequestBag;
8
+ forward(to: string, headers?: Dict<string>): Promise<Response>;
9
+ headers: RequestBag;
10
+ original: Request;
11
+ path: RequestBag;
12
+ query: RequestBag;
13
+ /**
14
+ * The request's pathname + querystring.
15
+ */
16
+ target: string;
17
+ url: URL;
18
+ } & Dict<Dict | unknown>;
19
+ export { RequestFacade as default };
20
+ //# sourceMappingURL=RequestFacade.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RequestFacade.js.map
@@ -0,0 +1,4 @@
1
+ import type verbs from "#request/verbs";
2
+ type Verb = typeof verbs[number];
3
+ export type { Verb as default };
4
+ //# sourceMappingURL=Verb.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Verb.js.map
@@ -0,0 +1,4 @@
1
+ import type RequestFacade from "#request/RequestFacade";
2
+ declare const _default: (request: Request) => RequestFacade;
3
+ export default _default;
4
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1,69 @@
1
+ import RequestBag from "#request/RequestBag";
2
+ import RequestBody from "#request/RequestBody";
3
+ function decode(s) {
4
+ try {
5
+ return decodeURIComponent(s);
6
+ }
7
+ catch {
8
+ return s;
9
+ }
10
+ }
11
+ ;
12
+ const normalize = (k) => k.toLowerCase();
13
+ function bagHeaders(request) {
14
+ const headers = Object.fromEntries([...request.headers].map(([k, v]) => [k.toLowerCase(), v]));
15
+ return new RequestBag(headers, "headers", {
16
+ normalize,
17
+ });
18
+ }
19
+ function bagCookies(request) {
20
+ const header = request.headers.get("cookie");
21
+ const entries = Object.fromEntries(header
22
+ ? header.split(";").map(s => s.trim()).filter(Boolean).map(s => {
23
+ const i = s.indexOf("=");
24
+ const key = i === -1 ? s : s.slice(0, i);
25
+ const value = i === -1 ? "" : s.slice(i + 1);
26
+ return [decode(key), decode(value)];
27
+ })
28
+ : []);
29
+ return new RequestBag(entries, "cookies", {
30
+ raw: header ?? "",
31
+ });
32
+ }
33
+ function bagQuery(url) {
34
+ return new RequestBag(Object.fromEntries(url.searchParams), "query", {
35
+ normalize,
36
+ raw: url.search,
37
+ });
38
+ }
39
+ function bagPath(url) {
40
+ return new RequestBag(Object.create(null), "path", {
41
+ raw: url.pathname,
42
+ });
43
+ }
44
+ export default (request) => {
45
+ const url = new URL(request.url);
46
+ return {
47
+ body: RequestBody.none(),
48
+ context: {},
49
+ cookies: bagCookies(request),
50
+ forward(to, headers) {
51
+ return fetch(to, {
52
+ body: request.body,
53
+ duplex: "half",
54
+ headers: {
55
+ ...headers,
56
+ "Content-Type": request.headers.get("Content-Type"),
57
+ },
58
+ method: request.method,
59
+ });
60
+ },
61
+ headers: bagHeaders(request),
62
+ original: request,
63
+ path: bagPath(url),
64
+ query: bagQuery(url),
65
+ target: url.pathname + url.search,
66
+ url,
67
+ };
68
+ };
69
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1,4 @@
1
+ import type RequestFacade from "#request/RequestFacade";
2
+ import type ServeApp from "#ServeApp";
3
+ export default function (app: ServeApp, partial_request: RequestFacade): Promise<Response>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1,61 @@
1
+ import log from "#log";
2
+ import errorResponse from "#response/error";
3
+ import jsonResponse from "#response/json";
4
+ import respond from "#response/respond";
5
+ import guard from "#route/guard";
6
+ import Status from "@rcompat/http/Status";
7
+ import ParseError from "pema/ParseError";
8
+ async function reducer(hooks, request) {
9
+ const [first, ...rest] = hooks;
10
+ if (rest.length === 0) {
11
+ return await first(request, _ => new Response());
12
+ }
13
+ ;
14
+ return await first(request, _ => reducer(rest, _));
15
+ }
16
+ ;
17
+ // last, preserve final request form
18
+ function last(handler) {
19
+ return async (request) => {
20
+ const response = await handler(request);
21
+ return {
22
+ request,
23
+ response: response,
24
+ };
25
+ };
26
+ }
27
+ ;
28
+ export default async function (app, partial_request) {
29
+ let errorRoute;
30
+ try {
31
+ const route = await app.route(partial_request);
32
+ if (route === undefined) {
33
+ return errorResponse()(app, {}, partial_request);
34
+ }
35
+ const { errors, guards, handler, layouts } = route;
36
+ errorRoute = errors[0];
37
+ const route_hooks = app.modules.map(module => module.route.bind(module));
38
+ const hooks = [...route_hooks, guard(guards), last(handler)];
39
+ // handle request
40
+ const { request, response } = await reducer(hooks, route.request);
41
+ return await respond(response)(app, {
42
+ layouts: await Promise.all(layouts.map(layout => layout(request))),
43
+ }, request);
44
+ }
45
+ catch (error) {
46
+ const request = partial_request;
47
+ if (error instanceof ParseError) {
48
+ return jsonResponse(error.toJSON(), { status: Status.BAD_REQUEST })(app);
49
+ }
50
+ log.error(error);
51
+ // the +error.js page itself could fail
52
+ try {
53
+ return respond(await errorRoute(request))(app, {}, request);
54
+ }
55
+ catch {
56
+ return errorResponse()(app, {}, request);
57
+ }
58
+ }
59
+ }
60
+ ;
61
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1,5 @@
1
+ import type FileRef from "@rcompat/fs/FileRef";
2
+ import FileRouter from "@rcompat/fs/FileRouter";
3
+ declare const _default: (directory: FileRef, extensions: string[]) => Promise<FileRouter>;
4
+ export default _default;
5
+ //# sourceMappingURL=router.d.ts.map