@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,56 @@
1
+ import AppError from "#AppError";
2
+ import fail from "#fail";
3
+ import FileRouter from "@rcompat/fs/FileRouter";
4
+ const error_entries = Object.entries({
5
+ DoubleRoute: "double route {0}, disambiguate routes",
6
+ OptionalRoute: "optional route {0} may not be a directory",
7
+ RestRoute: "rest route {0} may not be a directory",
8
+ });
9
+ const allowed = {
10
+ re: /^[a-zA-Z0-9\-_+[\].]+$/,
11
+ replacements: ["a-Z", "0-9", "-", "_", "+", "[", "]", "."],
12
+ text: "letters ({1}), digits ({2}), {3}, {4}, {5}, {6}, {7}",
13
+ };
14
+ const specials = ["guard", "error", "layout"];
15
+ const _ = allowed.re.source.slice(1, -1);
16
+ const p = /^(?:[^[\]]+|\[(?:\.{3})?[a-zA-Z0-9_]+\]|\[\[(?:\.{3})?[a-zA-Z0-9_]+\]\])$/;
17
+ export default async (directory, extensions) => {
18
+ try {
19
+ const router = await FileRouter.load({
20
+ directory: directory.toString(),
21
+ extensions,
22
+ specials: {
23
+ error: { recursive: false },
24
+ guard: { recursive: true },
25
+ layout: { recursive: true },
26
+ },
27
+ });
28
+ router.all().map(route => {
29
+ const { path, segment } = route;
30
+ if (!allowed.re.test(segment)) {
31
+ const message = `route {0} may only contain ${allowed.text}`;
32
+ throw fail(message, path, ...allowed.replacements);
33
+ }
34
+ if (segment.startsWith("+") && !specials.includes(segment.slice(1))) {
35
+ throw fail("route {0} is not a valid special file", path);
36
+ }
37
+ if (!p.test(segment)) {
38
+ throw fail("route {0} has an invalid parameter", path);
39
+ }
40
+ });
41
+ return router;
42
+ }
43
+ catch (error) {
44
+ if (error instanceof AppError) {
45
+ throw error;
46
+ }
47
+ error_entries.forEach(([key, value]) => {
48
+ if (key in FileRouter.Error) {
49
+ throw new AppError(value, error.route);
50
+ }
51
+ });
52
+ // rethrow original error
53
+ throw error;
54
+ }
55
+ };
56
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: readonly ["get", "post", "put", "delete", "head", "connect", "options", "trace", "patch"];
2
+ export default _default;
3
+ //# sourceMappingURL=verbs.d.ts.map
@@ -0,0 +1,12 @@
1
+ export default [
2
+ "get",
3
+ "post",
4
+ "put",
5
+ "delete",
6
+ "head",
7
+ "connect",
8
+ "options",
9
+ "trace",
10
+ "patch",
11
+ ];
12
+ //# sourceMappingURL=verbs.js.map
@@ -0,0 +1,8 @@
1
+ import type Component from "#frontend/Component";
2
+ import type RequestFacade from "#request/RequestFacade";
3
+ import type ServeApp from "#ServeApp";
4
+ import type Dict from "@rcompat/type/Dict";
5
+ import type MaybePromise from "@rcompat/type/MaybePromise";
6
+ type ResponseFunction = (app: ServeApp, transfer: Dict, request: RequestFacade) => MaybePromise<Component | null | Response | undefined>;
7
+ export { ResponseFunction as default };
8
+ //# sourceMappingURL=ResponseFunction.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ResponseFunction.js.map
@@ -0,0 +1,6 @@
1
+ import type ResponseFunction from "#response/ResponseFunction";
2
+ import type Streamable from "@rcompat/fs/Streamable";
3
+ import type Dict from "@rcompat/type/Dict";
4
+ type ResponseLike = string | Dict | Dict[] | URL | Blob | ReadableStream | Streamable | Response | ResponseFunction | null;
5
+ export { ResponseLike as default };
6
+ //# sourceMappingURL=ResponseLike.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ResponseLike.js.map
@@ -0,0 +1,10 @@
1
+ import type ServeApp from "#ServeApp";
2
+ import type StreamSource from "@rcompat/fs/StreamSource";
3
+ /**
4
+ * Stream a binary response.
5
+ * @param source streamable source
6
+ * @param options response options
7
+ * @return Response rendering function
8
+ */
9
+ export default function binary(source: StreamSource, init?: ResponseInit): (app: ServeApp) => Response;
10
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1,47 @@
1
+ import Streamable from "@rcompat/fs/Streamable";
2
+ import mime from "@rcompat/http/mime/application/octet-stream";
3
+ const encodeRFC5987 = (s) => encodeURIComponent(s).replace(/['()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
4
+ /**
5
+ * @security
6
+ * risk: header injection (CWE-113)
7
+ * assumptions:
8
+ * - filename may contain CR/LF and non-ASCII
9
+ * mitigations:
10
+ * - strip CR/LF; escape quotes; add RFC5987 filename*
11
+ * references: RFC 6266, RFC 5987
12
+ */
13
+ function toContentDisposition(filename) {
14
+ // prevent header injection (remove CR/LF) and limit length for safety
15
+ const clean = filename.replace(/[\r\n]/g, "").slice(0, 255);
16
+ // create an ASCII-safe version of the filename by replacing non-printable
17
+ // ASCII chars and quotes/backslashes (RFC 6266)
18
+ const ascii = clean.replace(/[^\x20-\x7E]/g, "_").replace(/["\\]/g, "_");
19
+ // encode the clean filename in UTF-8 using percent-encoding.
20
+ // this prepares it for the 'filename*' extended parameter (RFC 5987)
21
+ const utf8 = encodeRFC5987(clean);
22
+ return `attachment; filename="${ascii}"; filename*=UTF-8''${utf8}`;
23
+ }
24
+ ;
25
+ /**
26
+ * Stream a binary response.
27
+ * @param source streamable source
28
+ * @param options response options
29
+ * @return Response rendering function
30
+ */
31
+ export default function binary(source, init) {
32
+ return (app) => {
33
+ const { headers, ...rest } = app.media(mime, init);
34
+ const name = Streamable.named(source) ? source.name : "default.bin";
35
+ const out = new Headers(headers);
36
+ out.set("Content-Disposition", toContentDisposition(name));
37
+ if (source instanceof Blob) {
38
+ source.type && out.set("Content-Type", source.type);
39
+ out.set("Content-Length", String(source.size));
40
+ }
41
+ return app.respond(Streamable.stream(source), {
42
+ ...rest, headers: Object.fromEntries(out.entries()),
43
+ });
44
+ };
45
+ }
46
+ ;
47
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1,18 @@
1
+ import type ResponseFunction from "#response/ResponseFunction";
2
+ import type ValidStatus from "@rcompat/http/ValidStatus";
3
+ type Options = {
4
+ body?: string;
5
+ page?: string;
6
+ status?: ValidStatus;
7
+ };
8
+ /**
9
+ * Render an error page.
10
+ *
11
+ * @param options.body HTML `%body%` replacement (default: `"Not Found"`).
12
+ * @param options.status Request status (default: `404 Not Found`).
13
+ * @param options.page HTML page to use (default: `error.html`).
14
+ * @return Response function.
15
+ */
16
+ export default function error(options?: Options): ResponseFunction;
17
+ export {};
18
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1,18 @@
1
+ import location from "#location";
2
+ import Status from "@rcompat/http/Status";
3
+ /**
4
+ * Render an error page.
5
+ *
6
+ * @param options.body HTML `%body%` replacement (default: `"Not Found"`).
7
+ * @param options.status Request status (default: `404 Not Found`).
8
+ * @param options.page HTML page to use (default: `error.html`).
9
+ * @return Response function.
10
+ */
11
+ export default function error(options) {
12
+ return app => app.view({
13
+ body: options?.body ?? "Not Found",
14
+ page: options?.page ?? location.error_html,
15
+ status: options?.status ?? Status.NOT_FOUND,
16
+ });
17
+ }
18
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Issue a JSON response
3
+ * @param body body object
4
+ * @param options response options
5
+ * @return Response rendering function
6
+ */
7
+ declare const _default: (body: unknown, init?: ResponseInit) => (app: import("../ServeApp.js").default) => import("@rcompat/type/MaybePromise").default<Response>;
8
+ export default _default;
9
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1,10 @@
1
+ import response from "#response";
2
+ import mime from "@rcompat/http/mime/application/json";
3
+ /**
4
+ * Issue a JSON response
5
+ * @param body body object
6
+ * @param options response options
7
+ * @return Response rendering function
8
+ */
9
+ export default response(mime, JSON.stringify);
10
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1,11 @@
1
+ import type ResponseFunction from "#response/ResponseFunction";
2
+ type Redirection = 300 | 301 | 302 | 303 | 304 | 307 | 308;
3
+ /**
4
+ * Redirect request
5
+ * @param location location to redirect to
6
+ * @param status redirection 3xx code
7
+ * @return Response rendering function
8
+ */
9
+ declare const _default: (location: string, status?: Redirection) => ResponseFunction;
10
+ export default _default;
11
+ //# sourceMappingURL=redirect.d.ts.map
@@ -0,0 +1,62 @@
1
+ import Status from "@rcompat/http/Status";
2
+ function hasCRLF(s) {
3
+ return /[\r\n]/.test(s);
4
+ }
5
+ function isAbsoluteUrl(s) {
6
+ try {
7
+ new URL(s);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ function encodePathname(s) {
15
+ // expect strict origin-form path ("/..."), disallow protocol-relative and
16
+ // backslashes
17
+ if (!s.startsWith("/") || s.startsWith("//") || s.includes("\\")) {
18
+ throw new Error("invalid pathname");
19
+ }
20
+ // encode per segment to avoid double-encoding present percent-escapes
21
+ return s.split("/")
22
+ .map((each, i) => i === 0 ? "" : encodeURIComponent(each)).join("/");
23
+ }
24
+ function toSearch(query) {
25
+ if (!query) {
26
+ return "";
27
+ }
28
+ const search = Object.entries(query)
29
+ .filter(([, v]) => v !== null && v !== undefined)
30
+ .reduce((params, [k, v]) => {
31
+ params.append(k, String(v));
32
+ return params;
33
+ }, new URLSearchParams())
34
+ .toString();
35
+ return search ? "?" + search : "";
36
+ }
37
+ function toNormalized(relative, base) {
38
+ // base -> URL resolution
39
+ if (base) {
40
+ const url = new URL(relative, new URL(String(base)));
41
+ return url.pathname + url.search;
42
+ }
43
+ // no base -> enforce strict single-slash path and strip fragment
44
+ if (!relative.startsWith("/") || relative.startsWith("//")) {
45
+ throw new Error("bad relative");
46
+ }
47
+ const i = relative.indexOf("#");
48
+ return i === -1 ? relative : relative.slice(0, i);
49
+ }
50
+ /**
51
+ * Redirect request
52
+ * @param location location to redirect to
53
+ * @param status redirection 3xx code
54
+ * @return Response rendering function
55
+ */
56
+ export default (location, status) =>
57
+ // no body
58
+ app => app.respond(null, {
59
+ headers: { Location: location },
60
+ status: status ?? Status.FOUND,
61
+ });
62
+ //# sourceMappingURL=redirect.js.map
@@ -0,0 +1,5 @@
1
+ import type ResponseFunction from "#response/ResponseFunction";
2
+ import type ResponseLike from "#response/ResponseLike";
3
+ declare const _default: (result: ResponseLike) => ResponseFunction;
4
+ export default _default;
5
+ //# sourceMappingURL=respond.d.ts.map
@@ -0,0 +1,31 @@
1
+ import fail from "#fail";
2
+ import binary from "#response/binary";
3
+ import json from "#response/json";
4
+ import redirect from "#response/redirect";
5
+ import text from "#response/text";
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;
16
+ function match(m) {
17
+ return m;
18
+ }
19
+ // [if, then]
20
+ const guesses = match([
21
+ [is_null, () => () => new Response(null, { status: Status.NO_CONTENT })],
22
+ [is_url, value => redirect(value.toString())],
23
+ [Streamable.is, value => binary(value)],
24
+ [(value) => is_response(value), value => _ => value],
25
+ [proper, json],
26
+ [(value) => typeof value === "string", text],
27
+ ]);
28
+ const guess = (value) => guesses.find(([_if]) => _if(value))?.[1](value)
29
+ ?? invalid_body(`${value}`);
30
+ export default (result) => typeof result === "function" ? result : guess(result);
31
+ //# sourceMappingURL=respond.js.map
@@ -0,0 +1,15 @@
1
+ type Body = {
2
+ close?(): undefined;
3
+ open(events: {
4
+ send(name: string, data: unknown): undefined;
5
+ }): undefined;
6
+ };
7
+ /**
8
+ * Open a server-sent event stream
9
+ * @param body implementation body
10
+ * @param options response options
11
+ * @return Response rendering function
12
+ */
13
+ declare const _default: (body: Body, init?: ResponseInit) => (app: import("../ServeApp.js").default) => import("@rcompat/type/MaybePromise").default<Response>;
14
+ export default _default;
15
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1,25 @@
1
+ import response from "#response";
2
+ import mime from "@rcompat/http/mime/text/event-stream";
3
+ const encode = (input) => new TextEncoder().encode(input);
4
+ const handle = (body) => new ReadableStream({
5
+ cancel() {
6
+ body.close?.();
7
+ },
8
+ start(controller) {
9
+ body.open({
10
+ send(name, data) {
11
+ const event = data === undefined ? "" : `event: ${name}\n`;
12
+ const _data = JSON.stringify(data === undefined ? name : data);
13
+ controller.enqueue(encode(`${event}data:${_data}\n\n`));
14
+ },
15
+ });
16
+ },
17
+ });
18
+ /**
19
+ * Open a server-sent event stream
20
+ * @param body implementation body
21
+ * @param options response options
22
+ * @return Response rendering function
23
+ */
24
+ export default response(mime, handle);
25
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Return a plaintext response
3
+ * @param body plaintext body
4
+ * @param options response options
5
+ * @return Response rendering function
6
+ */
7
+ declare const _default: (body: string, init?: ResponseInit) => (app: import("../ServeApp.js").default) => import("@rcompat/type/MaybePromise").default<Response>;
8
+ export default _default;
9
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1,11 @@
1
+ import response from "#response";
2
+ import identity from "@rcompat/function/identity";
3
+ import mime from "@rcompat/http/mime/text/plain";
4
+ /**
5
+ * Return a plaintext response
6
+ * @param body plaintext body
7
+ * @param options response options
8
+ * @return Response rendering function
9
+ */
10
+ export default response(mime, identity);
11
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1,11 @@
1
+ import type ViewResponse from "#frontend/ViewResponse";
2
+ /**
3
+ * Render a component using a frontend for the given filename extension
4
+ * @param component path to component
5
+ * @param props props for component
6
+ * @param options rendering options
7
+ * @return Response rendering function
8
+ */
9
+ declare const view: ViewResponse;
10
+ export default view;
11
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1,41 @@
1
+ import fail from "#fail";
2
+ import FileRef from "@rcompat/fs/FileRef";
3
+ const extensions = ["extension", "fullExtension"];
4
+ const backmap = {
5
+ "component.ts": "angular",
6
+ eta: "eta",
7
+ hbs: "handlebars",
8
+ html: "html",
9
+ htmx: "htmx",
10
+ marko: "marko",
11
+ md: "markdown",
12
+ poly: "poly",
13
+ solid: "solid",
14
+ svelte: "svelte",
15
+ voby: "voby",
16
+ vue: "vue",
17
+ webc: "webc",
18
+ };
19
+ function no_frontend(component) {
20
+ const extension = new FileRef(component).fullExtension.slice(1);
21
+ const hasPkg = extension in backmap;
22
+ const error = "No frontend for {0}";
23
+ const fix = hasPkg ? "" : ", did you configure {1}?";
24
+ const pkgname = hasPkg ? "" : `@primate/${backmap[extension]}`;
25
+ throw fail(`${error}${fix}`, component, pkgname);
26
+ }
27
+ /**
28
+ * Render a component using a frontend for the given filename extension
29
+ * @param component path to component
30
+ * @param props props for component
31
+ * @param options rendering options
32
+ * @return Response rendering function
33
+ */
34
+ const view = (function viewResponse(component, props, options) {
35
+ return (app, transfer, request) => extensions
36
+ .map(extension => app.frontends[new FileRef(component)[extension]])
37
+ .find(extension => extension !== undefined)?.(component, props, options)(app, transfer, request)
38
+ ?? no_frontend(component);
39
+ });
40
+ export default view;
41
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1,5 @@
1
+ import type ResponseFunction from "#response/ResponseFunction";
2
+ import type Actions from "@rcompat/http/Actions";
3
+ declare const _default: (actions: Actions) => ResponseFunction;
4
+ export default _default;
5
+ //# sourceMappingURL=ws.d.ts.map
@@ -0,0 +1,2 @@
1
+ export default (actions) => (app, _, request) => app.upgrade(request.original, actions);
2
+ //# sourceMappingURL=ws.js.map
@@ -0,0 +1,5 @@
1
+ import type ServeApp from "#ServeApp";
2
+ import type MaybePromise from "@rcompat/type/MaybePromise";
3
+ declare const _default: <T>(mime: string, mapper: (input: T) => BodyInit) => (body: T, init?: ResponseInit) => (app: ServeApp) => MaybePromise<Response>;
4
+ export default _default;
5
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1,2 @@
1
+ export default (mime, mapper) => (body, init) => (app => app.respond(mapper(body), app.media(mime, init)));
2
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1,6 @@
1
+ import type RequestFacade from "#request/RequestFacade";
2
+ import type ResponseLike from "#response/ResponseLike";
3
+ import type MaybePromise from "@rcompat/type/MaybePromise";
4
+ type RouteHandler = (request: RequestFacade) => MaybePromise<ResponseLike>;
5
+ export { RouteHandler as default };
6
+ //# sourceMappingURL=Handler.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Handler.js.map
@@ -0,0 +1,5 @@
1
+ type RouteOptions = {
2
+ parseBody?: boolean;
3
+ };
4
+ export type { RouteOptions as default };
5
+ //# sourceMappingURL=Options.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Options.js.map
@@ -0,0 +1,11 @@
1
+ import type Verb from "#request/Verb";
2
+ import type RouteHandler from "#route/Handler";
3
+ import type RouteOptions from "#route/Options";
4
+ type RoutePath = {
5
+ [key in Verb]?: {
6
+ handler: RouteHandler;
7
+ options: RouteOptions;
8
+ };
9
+ };
10
+ export type { RoutePath as default };
11
+ //# sourceMappingURL=Path.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Path.js.map
@@ -0,0 +1,4 @@
1
+ import type RequestHook from "#module/RequestHook";
2
+ import type RouteHandler from "#route/Handler";
3
+ export default function (guards: RouteHandler[]): RequestHook;
4
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +1,22 @@
1
+ const sError = Symbol("guard_error");
2
+ export default function (guards) {
3
+ return async (request, next) => {
4
+ try {
5
+ for (const guard of guards) {
6
+ const response = await guard(request);
7
+ if (response !== null)
8
+ throw { response, type: sError };
9
+ }
10
+ return next(request);
11
+ }
12
+ catch (error) {
13
+ const guard_error = error;
14
+ if (guard_error.type === sError) {
15
+ return { request, response: guard_error.response };
16
+ }
17
+ // rethrow if not guard error
18
+ throw error;
19
+ }
20
+ };
21
+ }
22
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1,51 @@
1
+ import type Verb from "#request/Verb";
2
+ import type RouteHandler from "#route/Handler";
3
+ import type RouteOptions from "#route/Options";
4
+ declare class Router {
5
+ #private;
6
+ push(route: string): void;
7
+ pop(): void;
8
+ get active(): string | undefined;
9
+ add(verb: Verb, handler: RouteHandler, options?: RouteOptions): void;
10
+ get(path: string): {
11
+ options?: {
12
+ handler: RouteHandler;
13
+ options: RouteOptions;
14
+ } | undefined;
15
+ head?: {
16
+ handler: RouteHandler;
17
+ options: RouteOptions;
18
+ } | undefined;
19
+ get?: {
20
+ handler: RouteHandler;
21
+ options: RouteOptions;
22
+ } | undefined;
23
+ post?: {
24
+ handler: RouteHandler;
25
+ options: RouteOptions;
26
+ } | undefined;
27
+ put?: {
28
+ handler: RouteHandler;
29
+ options: RouteOptions;
30
+ } | undefined;
31
+ delete?: {
32
+ handler: RouteHandler;
33
+ options: RouteOptions;
34
+ } | undefined;
35
+ connect?: {
36
+ handler: RouteHandler;
37
+ options: RouteOptions;
38
+ } | undefined;
39
+ trace?: {
40
+ handler: RouteHandler;
41
+ options: RouteOptions;
42
+ } | undefined;
43
+ patch?: {
44
+ handler: RouteHandler;
45
+ options: RouteOptions;
46
+ } | undefined;
47
+ };
48
+ }
49
+ declare const _default: Router;
50
+ export default _default;
51
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1,32 @@
1
+ import assert from "@rcompat/assert";
2
+ import is from "@rcompat/assert/is";
3
+ import maybe from "@rcompat/assert/maybe";
4
+ class Router {
5
+ #routes = {};
6
+ #stack = [];
7
+ push(route) {
8
+ this.#stack.push(route);
9
+ }
10
+ pop() {
11
+ this.#stack.pop();
12
+ }
13
+ get active() {
14
+ return this.#stack.at(-1);
15
+ }
16
+ add(verb, handler, options = {}) {
17
+ assert(this.active !== undefined);
18
+ is(handler).function();
19
+ maybe(options).object();
20
+ const active = this.active;
21
+ const routes = this.#routes;
22
+ if (!(active in routes)) {
23
+ routes[active] = {};
24
+ }
25
+ routes[active][verb] = { handler, options };
26
+ }
27
+ get(path) {
28
+ return { ...this.#routes[path] };
29
+ }
30
+ }
31
+ export default new Router();
32
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1,6 @@
1
+ import type FileRef from "@rcompat/fs/FileRef";
2
+ export default function wrap(code: string, file: FileRef, build: {
3
+ id: string;
4
+ stage: FileRef;
5
+ }): string;
6
+ //# sourceMappingURL=wrap.d.ts.map