@primate/core 0.1.10 → 0.2.1

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 +246 -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 -36
  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,68 @@
1
+ import location from "#location";
2
+ import FileRef from "@rcompat/fs/FileRef";
3
+ const html = /^.*.html$/ui;
4
+ const web = {
5
+ name: "web",
6
+ runner: async (app) => {
7
+ const client = app.runpath(location.client);
8
+ const client_imports = (await client.collect())
9
+ .map((file, i) => {
10
+ const type = file.extension === ".css" ? "style" : "js";
11
+ const src = `/${file.debase(client).name}`;
12
+ const path = `./${file.debase(`${app.path.build}/`)}`;
13
+ return {
14
+ code: `await load_text(asset${i})`,
15
+ path,
16
+ src,
17
+ type,
18
+ };
19
+ });
20
+ const d = app.runpath(location.server, location.pages);
21
+ const pages = await Promise.all((await FileRef.collect(d, file => html.test(file.path)))
22
+ .map(async (file) => `${file.debase(d)}`.slice(1)));
23
+ const pages_str = pages.map(page => `"${page}": await load_text(import.meta.url,
24
+ "${FileRef.webpath(`../${location.server}/${location.pages}/${page}`)}"),`)
25
+ .join("\n");
26
+ const assets_scripts = `
27
+ import Loader from "primate/Loader";
28
+ import load_text from "primate/load-text";
29
+
30
+ ${client_imports.map(({ path }, i) => `const asset${i} = await load_text(import.meta.url, "../${path}");`)
31
+ .join("\n ")}
32
+ const assets = [${client_imports.map(($import, i) => `{
33
+ src: "${$import.src}",
34
+ code: asset${i},
35
+ type: "${$import.type}",
36
+ inline: false,
37
+ }`).join(",\n ")}];
38
+
39
+ const imports = {
40
+ app: "${client_imports.find(({ src }) => src.includes("app") && src.endsWith(".js")).src}"
41
+ };
42
+ // importmap
43
+ assets.push({
44
+ inline: true,
45
+ code: { imports },
46
+ type: "importmap",
47
+ });
48
+
49
+ const pages = {
50
+ ${pages_str}
51
+ };
52
+
53
+ export default {
54
+ assets,
55
+ loader: new Loader({
56
+ pages,
57
+ rootfile: import.meta.url,
58
+ static_root: "${app.config("http.static.root")}",
59
+ }),
60
+ target: "web",
61
+ };
62
+ `;
63
+ await app.path.build.join("target.js").write(assets_scripts);
64
+ },
65
+ target: "web",
66
+ };
67
+ export default web;
68
+ //# sourceMappingURL=web.js.map
@@ -0,0 +1,7 @@
1
+ import type Verb from "#request/Verb";
2
+ import type RouteHandler from "#route/Handler";
3
+ type API = {
4
+ [key in Verb]?: RouteHandler;
5
+ };
6
+ export type { API as default };
7
+ //# sourceMappingURL=API.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=API.js.map
@@ -0,0 +1,4 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ type BufferViewSource = ConstructorParameters<typeof BufferView>;
3
+ export type { BufferViewSource as default };
4
+ //# sourceMappingURL=BufferViewSource.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BufferViewSource.js.map
@@ -0,0 +1,23 @@
1
+ import type Verb from "#request/Verb";
2
+ import type I32 from "#wasm/I32";
3
+ import type Tagged from "#wasm/Tagged";
4
+ /** The HTTP Methods that are potentially exported by the WASM module if they
5
+ * are following the Primate WASM ABI convention. */
6
+ type ExportedMethods<TRequest = I32, TResponse = I32> = {
7
+ [Method in Verb]?: (request: Tagged<"Request", TRequest>) => Tagged<"Response", TResponse>;
8
+ };
9
+ /** These functions should be exported by a WASM module to be compatible with
10
+ * Primate. This follows the Primate WASM ABI convention. */
11
+ type Exports<TRequest = I32, TResponse = I32> = {
12
+ finalizeRequest(value: Tagged<"Request", TRequest>): void;
13
+ finalizeResponse(value: Tagged<"Response", TResponse>): void;
14
+ getStoreValueDone(): void;
15
+ memory: WebAssembly.Memory;
16
+ newRequest(): Tagged<"Request", TRequest>;
17
+ sendResponse(response: Tagged<"Response", TResponse>): void;
18
+ websocketClose(): void;
19
+ websocketMessage(): void;
20
+ websocketOpen(): void;
21
+ } & ExportedMethods<TRequest, TResponse>;
22
+ export type { Exports as default };
23
+ //# sourceMappingURL=Exports.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Exports.js.map
@@ -0,0 +1,5 @@
1
+ /** The default request and response types, which are likely pointers into a
2
+ * WASM linear memory space. */
3
+ type I32 = number;
4
+ export type { I32 as default };
5
+ //# sourceMappingURL=I32.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=I32.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: number;
2
+ export default _default;
3
+ //# sourceMappingURL=I32_SIZE.d.ts.map
@@ -0,0 +1,2 @@
1
+ export default Int32Array.BYTES_PER_ELEMENT;
2
+ //# sourceMappingURL=I32_SIZE.js.map
@@ -0,0 +1,12 @@
1
+ import type API from "#wasm/API";
2
+ import type Exports from "#wasm/Exports";
3
+ import type I32 from "#wasm/I32";
4
+ type Instantiation<TRequest = I32, TResponse = I32> = {
5
+ api: API;
6
+ exports: Exports<TRequest, TResponse>;
7
+ memory: WebAssembly.Memory;
8
+ setPayload(value: Uint8Array): void;
9
+ sockets: Map<bigint, any>;
10
+ };
11
+ export type { Instantiation as default };
12
+ //# sourceMappingURL=Instantiation.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Instantiation.js.map
@@ -0,0 +1,7 @@
1
+ /** A helper function to encourage type safety when working with wasm pointers,
2
+ * tagging them as a specific type. */
3
+ type Tagged<Name, T> = {
4
+ _tag: Name;
5
+ } & T;
6
+ export type { Tagged as default };
7
+ //# sourceMappingURL=Tagged.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Tagged.js.map
@@ -0,0 +1,2 @@
1
+ export default function buffersize(buffer: Uint8Array): number;
2
+ //# sourceMappingURL=buffersize.d.ts.map
@@ -0,0 +1,5 @@
1
+ import I32_SIZE from "#wasm/I32_SIZE";
2
+ export default function buffersize(buffer) {
3
+ return buffer.byteLength + I32_SIZE;
4
+ }
5
+ //# sourceMappingURL=buffersize.js.map
@@ -0,0 +1,3 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ export default function decodeBytes(source: BufferView): Uint8Array<ArrayBufferLike>;
3
+ //# sourceMappingURL=decode-bytes.d.ts.map
@@ -0,0 +1,5 @@
1
+ export default function decodeBytes(source) {
2
+ return source.readBytes(source.readU32());
3
+ }
4
+ ;
5
+ //# sourceMappingURL=decode-bytes.js.map
@@ -0,0 +1,7 @@
1
+ import BufferView from "@rcompat/bufferview";
2
+ declare function decodeJson(view: BufferView): any;
3
+ declare namespace decodeJson {
4
+ var from: (buffer: ArrayBufferLike | ArrayBufferView<ArrayBufferLike>, offset?: number | undefined, byteLength?: number | undefined) => any;
5
+ }
6
+ export default decodeJson;
7
+ //# sourceMappingURL=decode-json.d.ts.map
@@ -0,0 +1,11 @@
1
+ import decodeString from "#wasm/decode-string";
2
+ import BufferView from "@rcompat/bufferview";
3
+ function decodeJson(view) {
4
+ return JSON.parse(decodeString(view));
5
+ }
6
+ ;
7
+ decodeJson.from = (...source) => {
8
+ return decodeJson(new BufferView(...source));
9
+ };
10
+ export default decodeJson;
11
+ //# sourceMappingURL=decode-json.js.map
@@ -0,0 +1,5 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ type Decoder<T> = (source: BufferView) => T;
3
+ declare const decodeOption: <T>(kind: Decoder<T>, source: BufferView) => T | undefined;
4
+ export default decodeOption;
5
+ //# sourceMappingURL=decode-option.d.ts.map
@@ -0,0 +1,10 @@
1
+ import assert from "@rcompat/assert";
2
+ const NONE = 0;
3
+ const SOME = 1;
4
+ const decodeOption = (kind, source) => {
5
+ const option = source.readU32();
6
+ assert(option === NONE || option === SOME, "Error decoding option, invalid option value.");
7
+ return option === SOME ? kind(source) : void 0;
8
+ };
9
+ export default decodeOption;
10
+ //# sourceMappingURL=decode-option.js.map
@@ -0,0 +1,19 @@
1
+ import type ResponseFunction from "#response/ResponseFunction";
2
+ import type Instantiation from "#wasm/Instantiation";
3
+ import type BufferView from "@rcompat/bufferview";
4
+ import type Dict from "@rcompat/type/Dict";
5
+ type DecodedResponse = {
6
+ callback: (api: Instantiation) => ResponseFunction;
7
+ type: "web_socket_upgrade";
8
+ } | {
9
+ headers: Dict<string>;
10
+ status?: number | undefined;
11
+ text: string;
12
+ type: "text";
13
+ } | {
14
+ type: "blob" | "error" | "json" | "redirect" | "uri" | "view";
15
+ value: any;
16
+ };
17
+ declare const decodeResponse: (source: BufferView) => DecodedResponse | undefined;
18
+ export default decodeResponse;
19
+ //# sourceMappingURL=decode-response.d.ts.map
@@ -0,0 +1,90 @@
1
+ import error from "#response/error";
2
+ import redirect from "#response/redirect";
3
+ import view from "#response/view";
4
+ import decodeBytes from "#wasm/decode-bytes";
5
+ import decodeJson from "#wasm/decode-json";
6
+ import decodeOption from "#wasm/decode-option";
7
+ import decodeString from "#wasm/decode-string";
8
+ import openWebsocket from "#wasm/open-websocket";
9
+ import assert from "@rcompat/assert";
10
+ const RESPONSE_TEXT = 0;
11
+ const RESPONSE_JSON = 1;
12
+ const RESPONSE_BLOB = 2;
13
+ const RESPONSE_VIEW = 3;
14
+ const RESPONSE_ERROR = 4;
15
+ const RESPONSE_REDIRECT = 5;
16
+ const RESPONSE_URI = 6;
17
+ const RESPONSE_WEB_SOCKET_UPGRADE = 7;
18
+ const decodeResponse = (source) => {
19
+ const responseKind = source.readU32();
20
+ assert(responseKind === RESPONSE_BLOB
21
+ || responseKind === RESPONSE_ERROR
22
+ || responseKind === RESPONSE_JSON
23
+ || responseKind === RESPONSE_REDIRECT
24
+ || responseKind === RESPONSE_TEXT
25
+ || responseKind === RESPONSE_URI
26
+ || responseKind === RESPONSE_VIEW
27
+ || responseKind === RESPONSE_WEB_SOCKET_UPGRADE, "Invalid response kind.");
28
+ switch (responseKind) {
29
+ case RESPONSE_TEXT: {
30
+ const text = decodeString(source);
31
+ const status = source.readU32();
32
+ const headers = decodeJson(source);
33
+ return { headers, status, text, type: "text" };
34
+ }
35
+ case RESPONSE_JSON:
36
+ return { type: "json", value: decodeJson(source) };
37
+ case RESPONSE_BLOB: {
38
+ const buffer = decodeBytes(source);
39
+ const contentType = decodeOption(decodeString, source);
40
+ return {
41
+ type: "blob",
42
+ value: contentType
43
+ ? new Blob([buffer], { type: contentType })
44
+ : new Blob([buffer]),
45
+ };
46
+ }
47
+ case RESPONSE_VIEW: {
48
+ const name = decodeString(source);
49
+ const props = decodeJson(source) || void 0;
50
+ const options = decodeJson(source) || void 0;
51
+ return {
52
+ type: "view",
53
+ value: view(name, props, options),
54
+ };
55
+ }
56
+ case RESPONSE_ERROR: {
57
+ const body = decodeOption(decodeString, source);
58
+ const status = source.readU32();
59
+ const page = decodeOption(decodeString, source);
60
+ return {
61
+ type: "error",
62
+ value: error({ body, page, status }),
63
+ };
64
+ }
65
+ case RESPONSE_REDIRECT: {
66
+ const to = decodeString(source);
67
+ const status = decodeOption(source => source.readU32(), source);
68
+ return {
69
+ type: "redirect",
70
+ value: redirect(to, status),
71
+ };
72
+ }
73
+ case RESPONSE_URI: {
74
+ const str = decodeString(source);
75
+ return {
76
+ type: "uri",
77
+ value: new URL(str),
78
+ };
79
+ }
80
+ case RESPONSE_WEB_SOCKET_UPGRADE: {
81
+ const id = source.readU64();
82
+ return {
83
+ callback: openWebsocket(id),
84
+ type: "web_socket_upgrade",
85
+ };
86
+ }
87
+ }
88
+ };
89
+ export default decodeResponse;
90
+ //# sourceMappingURL=decode-response.js.map
@@ -0,0 +1,3 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ export default function decodeString(source: BufferView): string;
3
+ //# sourceMappingURL=decode-string.d.ts.map
@@ -0,0 +1,5 @@
1
+ export default function decodeString(source) {
2
+ return source.read(source.readU32());
3
+ }
4
+ ;
5
+ //# sourceMappingURL=decode-string.js.map
@@ -0,0 +1,5 @@
1
+ import type BufferViewSource from "#wasm/BufferViewSource";
2
+ export default function decodeWebsocketClose(...source: BufferViewSource): {
3
+ id: bigint;
4
+ };
5
+ //# sourceMappingURL=decode-websocket-close.d.ts.map
@@ -0,0 +1,6 @@
1
+ import BufferView from "@rcompat/bufferview";
2
+ export default function decodeWebsocketClose(...source) {
3
+ return { id: new BufferView(...source).readU64() };
4
+ }
5
+ ;
6
+ //# sourceMappingURL=decode-websocket-close.js.map
@@ -0,0 +1,6 @@
1
+ import type BufferViewSource from "#wasm/BufferViewSource";
2
+ export default function decodeWebsocketSend(...source: BufferViewSource): {
3
+ id: bigint;
4
+ message: string | Uint8Array<ArrayBufferLike>;
5
+ };
6
+ //# sourceMappingURL=decode-websocket-send.d.ts.map
@@ -0,0 +1,19 @@
1
+ import decodeBytes from "#wasm/decode-bytes";
2
+ import decodeString from "#wasm/decode-string";
3
+ import assert from "@rcompat/assert";
4
+ import BufferView from "@rcompat/bufferview";
5
+ const WEBSOCKET_MESSAGE_KIND_STRING = 0;
6
+ const WEBSOCKET_MESSAGE_KIND_BYTES = 1;
7
+ export default function decodeWebsocketSend(...source) {
8
+ const bufferView = new BufferView(...source);
9
+ const id = bufferView.readU64();
10
+ const kind = bufferView.readU32();
11
+ assert(kind === WEBSOCKET_MESSAGE_KIND_STRING
12
+ || kind === WEBSOCKET_MESSAGE_KIND_BYTES, "Invalid websocket message kind.");
13
+ const message = kind === WEBSOCKET_MESSAGE_KIND_STRING
14
+ ? decodeString(bufferView)
15
+ : decodeBytes(bufferView);
16
+ return { id, message };
17
+ }
18
+ ;
19
+ //# sourceMappingURL=decode-websocket-send.js.map
@@ -0,0 +1,3 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ export default function encodeBuffer(buffer: Uint8Array, view: BufferView): void;
3
+ //# sourceMappingURL=encode-buffer.d.ts.map
@@ -0,0 +1,6 @@
1
+ export default function encodeBuffer(buffer, view) {
2
+ const byteLength = buffer.byteLength;
3
+ view.writeU32(byteLength).writeBytes(buffer);
4
+ }
5
+ ;
6
+ //# sourceMappingURL=encode-buffer.js.map
@@ -0,0 +1,9 @@
1
+ import type RequestFacade from "#request/RequestFacade";
2
+ import BufferView from "@rcompat/bufferview";
3
+ declare const encodeRequest: {
4
+ (request: RequestFacade): Promise<Uint8Array<ArrayBuffer>>;
5
+ sizeOf: (request: RequestFacade) => number;
6
+ into: (request: RequestFacade, view: BufferView) => Promise<void>;
7
+ };
8
+ export default encodeRequest;
9
+ //# sourceMappingURL=encode-request.d.ts.map
@@ -0,0 +1,198 @@
1
+ import encodeString from "#wasm/encode-string";
2
+ import encodeStringMap from "#wasm/encode-string-map";
3
+ import encodeURL from "#wasm/encode-url";
4
+ import filesize from "#wasm/filesize";
5
+ import I32_SIZE from "#wasm/I32_SIZE";
6
+ import stringSize from "#wasm/stringsize";
7
+ import urlSize from "#wasm/urlsize";
8
+ import BufferView from "@rcompat/bufferview";
9
+ import encodeBuffer from "./encode-buffer.js";
10
+ const SECTION_HEADER_SIZE = I32_SIZE;
11
+ const URL_SECTION = 0;
12
+ const BODY_SECTION = 1;
13
+ const PATH_SECTION = 2;
14
+ const QUERY_SECTION = 3;
15
+ const HEADERS_SECTION = 4;
16
+ const COOKIES_SECTION = 5;
17
+ const BODY_KIND_NULL = 0;
18
+ const BODY_KIND_TEXT = 1;
19
+ const BODY_KIND_FIELDS = 2;
20
+ const BODY_KIND_BINARY = 3;
21
+ const BODY_KIND_JSON = 4;
22
+ const BODY_KIND_MAP_VALUE_STRING = 0;
23
+ const BODY_KIND_MAP_VALUE_BLOB = 1;
24
+ const sizeOfUrlSection = (url) => SECTION_HEADER_SIZE + urlSize(url);
25
+ const sizeOfBodySection = (body) => {
26
+ let size = SECTION_HEADER_SIZE + I32_SIZE;
27
+ if (body.type === "none")
28
+ return size; // 0 kind null
29
+ if (body.type === "text")
30
+ return size + stringSize(body.text());
31
+ if (body.type === "fields") {
32
+ size += I32_SIZE; // entry count
33
+ const fields = body.fields();
34
+ for (const [key, value] of Object.entries(fields)) {
35
+ size += stringSize(key);
36
+ size += I32_SIZE // value kind
37
+ + (typeof value === "string"
38
+ ? stringSize(value)
39
+ : filesize(value));
40
+ }
41
+ return size;
42
+ }
43
+ if (body.type === "binary") {
44
+ const bin = body.binary();
45
+ size += stringSize(bin.type);
46
+ size += I32_SIZE + bin.size;
47
+ return size;
48
+ }
49
+ if (body.type === "json") {
50
+ const json = body.json();
51
+ size += stringSize(JSON.stringify(json));
52
+ return size;
53
+ }
54
+ throw new Error("Invalid RequestLike body");
55
+ };
56
+ const sizeOfMapSection = (map) => {
57
+ let size = SECTION_HEADER_SIZE + I32_SIZE;
58
+ for (const [key, value] of Object.entries(map)) {
59
+ if (value) {
60
+ size += stringSize(key) + stringSize(value);
61
+ }
62
+ }
63
+ return size;
64
+ };
65
+ /**
66
+ * Encode a map of Key Value pairs into a section.
67
+ *
68
+ * - [I32: header]
69
+ * - [I32: count]
70
+ * - Entries[count]:
71
+ * - [String: key]
72
+ * - [String: value]
73
+ *
74
+ * @param header - The header for this section.
75
+ * @param map - The map itself to be encoded.
76
+ * @param offset - The offset to encode the map at.
77
+ * @param view - The buffer view to encode the map into.
78
+ */
79
+ const encodeMapSection = (header, map, view) => {
80
+ view.writeU32(header);
81
+ return encodeStringMap(map, view);
82
+ };
83
+ const encodeBlob = async (file, view) => {
84
+ const type = file.type;
85
+ const bytes = await file.bytes();
86
+ encodeString(type, view);
87
+ encodeBuffer(bytes, view);
88
+ };
89
+ const encodeFile = async (file, view) => {
90
+ const name = file.name;
91
+ const type = file.type;
92
+ const bytes = await file.bytes();
93
+ encodeString(name, view);
94
+ encodeString(type, view);
95
+ view.writeU32(bytes.byteLength);
96
+ view.writeBytes(bytes);
97
+ };
98
+ /**
99
+ * 1. Section 1: URI
100
+ * - [Section Header: 0] 4 bytes
101
+ * - [I32: length] 4 bytes
102
+ * - [...payload] length bytes
103
+ */
104
+ const encodeSectionUrl = (url, view) => {
105
+ view.writeU32(URL_SECTION);
106
+ encodeURL(url, view);
107
+ };
108
+ /**
109
+ * 2. Section 2: Body
110
+ * - [Section Header: 1] 4 bytes
111
+ * - [kind: I32] 4 bytes
112
+ * - 0: Null
113
+ * - [I32: kind = 0] 4 bytes
114
+ * - 1: String
115
+ * - [I32: kind = 1] 4 bytes
116
+ * - [I32: length] 4 bytes
117
+ * - [...payload] length bytes
118
+ * - 2: Map<string, string | file>
119
+ * - [I32: kind = 2] 4 bytes
120
+ * - [I32: count] 4 bytes
121
+ * - [String, String | FileDescriptor]
122
+ * - [I32: key length]
123
+ * - [...key payload]
124
+ * - [I32: value kind] 4 bytes
125
+ * - 0: String
126
+ * - [I32: value kind = 0] 4 bytes
127
+ * - [I32: value length] 4 bytes
128
+ * - [...value payload] value length bytes
129
+ * - 1: File
130
+ * - [I32: value kind = 1] 4 bytes
131
+ * - [I32: file_descriptor] 4 bytes
132
+ */
133
+ const encodeSectionBody = async (body, view) => {
134
+ view.writeU32(BODY_SECTION);
135
+ if (body.type === "text") {
136
+ const text = body.text();
137
+ view.writeU32(BODY_KIND_TEXT);
138
+ encodeString(text, view);
139
+ }
140
+ else if (body.type === "fields") {
141
+ const fields = body.fields();
142
+ const entries = Object.entries(body.fields());
143
+ const entryCount = entries.length;
144
+ view.writeU32(BODY_KIND_FIELDS);
145
+ view.writeU32(entryCount);
146
+ for (const [key, value] of Object.entries(fields)) {
147
+ encodeString(key, view);
148
+ if (typeof value === "string") {
149
+ view.writeU32(BODY_KIND_MAP_VALUE_STRING);
150
+ encodeString(value, view);
151
+ }
152
+ else {
153
+ view.writeU32(BODY_KIND_MAP_VALUE_BLOB);
154
+ await encodeFile(value, view);
155
+ }
156
+ }
157
+ }
158
+ else if (body.type === "binary") {
159
+ view.writeU32(BODY_KIND_BINARY);
160
+ await encodeBlob(body.binary(), view);
161
+ }
162
+ else if (body.type === "json") {
163
+ view.writeU32(BODY_KIND_JSON);
164
+ const jsonText = JSON.stringify(body.json());
165
+ encodeString(jsonText, view);
166
+ }
167
+ else if (body.type === "none") {
168
+ view.writeU32(BODY_KIND_NULL);
169
+ }
170
+ else {
171
+ throw new Error(`Unsupported body type: ${body?.type ?? typeof body}`);
172
+ }
173
+ };
174
+ const sizeOfRequest = (request) => sizeOfUrlSection(request.url)
175
+ + sizeOfBodySection(request.body)
176
+ + sizeOfMapSection(request.path.toJSON())
177
+ + sizeOfMapSection(request.query.toJSON())
178
+ + sizeOfMapSection(request.headers.toJSON())
179
+ + sizeOfMapSection(request.cookies.toJSON());
180
+ const encodeRequestInto = async (request, view) => {
181
+ encodeSectionUrl(request.url, view);
182
+ await encodeSectionBody(request.body, view);
183
+ encodeMapSection(PATH_SECTION, request.path.toJSON(), view);
184
+ encodeMapSection(QUERY_SECTION, request.query.toJSON(), view);
185
+ encodeMapSection(HEADERS_SECTION, request.headers.toJSON(), view);
186
+ encodeMapSection(COOKIES_SECTION, request.cookies.toJSON(), view);
187
+ };
188
+ const encodeRequest = async (request) => {
189
+ const size = sizeOfRequest(request);
190
+ const output = new Uint8Array(size);
191
+ const bufferView = new BufferView(output);
192
+ await encodeRequestInto(request, bufferView);
193
+ return output;
194
+ };
195
+ encodeRequest.sizeOf = sizeOfRequest;
196
+ encodeRequest.into = encodeRequestInto;
197
+ export default encodeRequest;
198
+ //# sourceMappingURL=encode-request.js.map
@@ -0,0 +1,3 @@
1
+ import type SessionFacade from "#session/SessionFacade";
2
+ export default function encodeSession(session: SessionFacade<unknown>): Uint8Array<ArrayBuffer>;
3
+ //# sourceMappingURL=encode-session.d.ts.map
@@ -0,0 +1,25 @@
1
+ import encodeString from "#wasm/encode-string";
2
+ import I32_SIZE from "#wasm/I32_SIZE";
3
+ import stringSize from "#wasm/stringsize";
4
+ import BufferView from "@rcompat/bufferview";
5
+ export default function encodeSession(session) {
6
+ if (session.exists) {
7
+ const data = JSON.stringify(session.get());
8
+ const dataSize = stringSize(data);
9
+ const idSize = stringSize(session.id ?? "");
10
+ const size = dataSize // data payload
11
+ + I32_SIZE // new flat
12
+ + idSize; // id payload
13
+ const output = new Uint8Array(size);
14
+ const bufferView = new BufferView(output);
15
+ bufferView.writeU32(1);
16
+ encodeString(session.id ?? "", bufferView);
17
+ encodeString(data, bufferView);
18
+ return output;
19
+ }
20
+ // does not exist (only 0s)
21
+ const buffer = new Uint8Array(4);
22
+ return buffer;
23
+ }
24
+ ;
25
+ //# sourceMappingURL=encode-session.js.map
@@ -0,0 +1,5 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ import type PartialDict from "@rcompat/type/PartialDict";
3
+ declare const encodeStringMap: (map: PartialDict<string>, view: BufferView) => void;
4
+ export default encodeStringMap;
5
+ //# sourceMappingURL=encode-string-map.d.ts.map