@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,14 @@
1
+ import encodeString from "#wasm/encode-string";
2
+ const encodeStringMap = (map, view) => {
3
+ // only "set" entries are allowed
4
+ const entries = Object.entries(map)
5
+ .filter(([, value]) => value && value.length > 0);
6
+ const count = entries.length;
7
+ view.writeU32(count);
8
+ for (const [key, value] of entries) {
9
+ encodeString(key, view);
10
+ encodeString(value, view);
11
+ }
12
+ };
13
+ export default encodeStringMap;
14
+ //# sourceMappingURL=encode-string-map.js.map
@@ -0,0 +1,13 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ /**
3
+ * Encoding a string has the following format:
4
+ * - I32: length
5
+ * - U8[length]: bytes
6
+ *
7
+ * @param string - The string to encode
8
+ * @param offset - The offset to encode the string at.
9
+ * @param view - The buffer view to encode the string into.
10
+ * @returns The next offset.
11
+ */
12
+ export default function encodeString(string: string, view: BufferView): void;
13
+ //# sourceMappingURL=encode-string.d.ts.map
@@ -0,0 +1,17 @@
1
+ import utf8size from "@rcompat/string/utf8size";
2
+ /**
3
+ * Encoding a string has the following format:
4
+ * - I32: length
5
+ * - U8[length]: bytes
6
+ *
7
+ * @param string - The string to encode
8
+ * @param offset - The offset to encode the string at.
9
+ * @param view - The buffer view to encode the string into.
10
+ * @returns The next offset.
11
+ */
12
+ export default function encodeString(string, view) {
13
+ view.writeU32(utf8size(string))
14
+ .write(string);
15
+ }
16
+ ;
17
+ //# sourceMappingURL=encode-string.js.map
@@ -0,0 +1,11 @@
1
+ import type BufferView from "@rcompat/bufferview";
2
+ /**
3
+ * Encode a url as a string into a bufferView.
4
+ *
5
+ * @param url - The url to encode.
6
+ * @param offset - The offset to encode the url at.
7
+ * @param view - The buffer view to encode the url into.
8
+ * @returns The next offset.
9
+ */
10
+ export default function encodeURL(url: URL, view: BufferView): void;
11
+ //# sourceMappingURL=encode-url.d.ts.map
@@ -0,0 +1,14 @@
1
+ import encodeString from "#wasm/encode-string";
2
+ /**
3
+ * Encode a url as a string into a bufferView.
4
+ *
5
+ * @param url - The url to encode.
6
+ * @param offset - The offset to encode the url at.
7
+ * @param view - The buffer view to encode the url into.
8
+ * @returns The next offset.
9
+ */
10
+ export default function encodeURL(url, view) {
11
+ return encodeString(url.toString(), view);
12
+ }
13
+ ;
14
+ //# sourceMappingURL=encode-url.js.map
@@ -0,0 +1,2 @@
1
+ export default function encodeWebsocketClose(id: bigint): Uint8Array<ArrayBuffer>;
2
+ //# sourceMappingURL=encode-websocket-close.d.ts.map
@@ -0,0 +1,7 @@
1
+ export default function encodeWebsocketClose(id) {
2
+ const buffer = new BigUint64Array(1);
3
+ buffer[0] = id;
4
+ return new Uint8Array(buffer.buffer);
5
+ }
6
+ ;
7
+ //# sourceMappingURL=encode-websocket-close.js.map
@@ -0,0 +1,4 @@
1
+ type Message = string | Uint8Array;
2
+ export default function encodeWebsocketMessage(id: bigint, message: Message): Uint8Array<ArrayBuffer>;
3
+ export {};
4
+ //# sourceMappingURL=encode-websocket-message.d.ts.map
@@ -0,0 +1,30 @@
1
+ import buffersize from "#wasm/buffersize";
2
+ import encodeBuffer from "#wasm/encode-buffer";
3
+ import encodeString from "#wasm/encode-string";
4
+ import I32_SIZE from "#wasm/I32_SIZE";
5
+ import stringSize from "#wasm/stringsize";
6
+ import BufferView from "@rcompat/bufferview";
7
+ const SIZE_I64 = BigInt64Array.BYTES_PER_ELEMENT;
8
+ const WEBSOCKET_MESSAGE_KIND_STRING = 0;
9
+ const WEBSOCKET_MESSAGE_KIND_BYTES = 1;
10
+ export default function encodeWebsocketMessage(id, message) {
11
+ const size = SIZE_I64 // WebsocketID
12
+ + I32_SIZE // Kind
13
+ + (typeof message === "string"
14
+ ? stringSize(message)
15
+ : buffersize(message));
16
+ const output = new Uint8Array(size);
17
+ const bufferView = new BufferView(output);
18
+ bufferView.writeU64(id);
19
+ if (typeof message === "string") {
20
+ bufferView.writeU32(WEBSOCKET_MESSAGE_KIND_STRING);
21
+ encodeString(message, bufferView);
22
+ }
23
+ else {
24
+ bufferView.writeU32(WEBSOCKET_MESSAGE_KIND_BYTES);
25
+ encodeBuffer(message, bufferView);
26
+ }
27
+ return output;
28
+ }
29
+ ;
30
+ //# sourceMappingURL=encode-websocket-message.js.map
@@ -0,0 +1,2 @@
1
+ export default function encodeWebsocketOpen(id: bigint): Uint8Array<ArrayBuffer>;
2
+ //# sourceMappingURL=encode-websocket-open.d.ts.map
@@ -0,0 +1,7 @@
1
+ export default function encodeWebsocketOpen(id) {
2
+ const buffer = new BigUint64Array(1);
3
+ buffer[0] = id;
4
+ return new Uint8Array(buffer.buffer);
5
+ }
6
+ ;
7
+ //# sourceMappingURL=encode-websocket-open.js.map
@@ -0,0 +1,2 @@
1
+ export default function filesize(file: File): number;
2
+ //# sourceMappingURL=filesize.d.ts.map
@@ -0,0 +1,8 @@
1
+ import I32_SIZE from "#wasm/I32_SIZE";
2
+ import stringSize from "./stringsize.js";
3
+ export default function filesize(file) {
4
+ return stringSize(file.name)
5
+ + stringSize(file.type)
6
+ + I32_SIZE + file.size;
7
+ }
8
+ //# sourceMappingURL=filesize.js.map
@@ -0,0 +1,37 @@
1
+ import type DatabaseStore from "#database/Store";
2
+ import type API from "#wasm/API";
3
+ import type Instantiation from "#wasm/Instantiation";
4
+ import type Tagged from "#wasm/Tagged";
5
+ import MaybePromise from "@rcompat/type/MaybePromise";
6
+ import StoreSchema from "pema/StoreSchema";
7
+ type Init = {
8
+ filename: string;
9
+ imports?: WebAssembly.Imports;
10
+ stores: Record<string, DatabaseStore<StoreSchema>>;
11
+ };
12
+ export type { API };
13
+ export type AnyWasmValue = number | bigint | Tagged<"Request", number>;
14
+ export type AnyWasmReturnValue = MaybePromise<AnyWasmValue | undefined | void>;
15
+ export type AnyWasmFunction<Args extends readonly AnyWasmValue[], R extends AnyWasmReturnValue> = (...args: Args) => R;
16
+ export declare const wrapPromising: <Args extends readonly AnyWasmValue[], R extends AnyWasmReturnValue>(fn: AnyWasmFunction<Args, R>) => AnyWasmFunction<Args, R>;
17
+ export declare const wrapSuspending: <Args extends readonly AnyWasmValue[], R extends AnyWasmReturnValue>(fn: AnyWasmFunction<Args, R>, alt: AnyWasmFunction<Args, R>) => WebAssembly.ImportValue;
18
+ declare global {
19
+ namespace WebAssembly {
20
+ const promising: undefined | (<Args extends readonly AnyWasmValue[], R extends AnyWasmReturnValue>(fn: AnyWasmFunction<Args, R>) => AnyWasmFunction<Args, R>);
21
+ class Suspending<T> {
22
+ constructor(fn: T);
23
+ }
24
+ }
25
+ }
26
+ /**
27
+ * Instantiate a WASM module from a file reference and the given web assembly
28
+ * imports.
29
+ *
30
+ * @param ref The file reference to the WASM module.
31
+ * @param imports The imports to pass to the WASM module when instantiating it.
32
+ * @returns The instantiated WASM module, its exports, and the API that Primate
33
+ * exposes to the WASM module.
34
+ */
35
+ declare const instantiate: (args: Init) => Promise<Instantiation<number, number>>;
36
+ export default instantiate;
37
+ //# sourceMappingURL=instantiate.d.ts.map
@@ -0,0 +1,408 @@
1
+ import verbs from "#request/verbs";
2
+ import text from "#response/text";
3
+ import session from "#session/index";
4
+ import decodeJson from "#wasm/decode-json";
5
+ import decodeResponse from "#wasm/decode-response";
6
+ import decodeWebsocketClose from "#wasm/decode-websocket-close";
7
+ import decodeWebsocketSendMessage from "#wasm/decode-websocket-send";
8
+ import encodeRequest from "#wasm/encode-request";
9
+ import encodeSession from "#wasm/encode-session";
10
+ import assert from "@rcompat/assert";
11
+ import BufferView from "@rcompat/bufferview";
12
+ import FileRef from "@rcompat/fs/FileRef";
13
+ import { WASI } from "node:wasi";
14
+ import encodeString from "./encode-string.js";
15
+ import utf8size from "@rcompat/string/utf8size";
16
+ import decodeString from "./decode-string.js";
17
+ export const wrapPromising = (fn) => typeof WebAssembly.promising === "function"
18
+ ? WebAssembly.promising(fn)
19
+ : fn;
20
+ export const wrapSuspending = (fn, alt) => typeof WebAssembly.Suspending === "function"
21
+ ? new WebAssembly.Suspending(fn)
22
+ : alt;
23
+ const STORE_OPERATION_SUCCESS = 0;
24
+ const STORE_NOT_FOUND_ERROR = 1;
25
+ const STORE_RECORD_NOT_FOUND_ERROR = 2;
26
+ const STORE_UNKNOWN_ERROR_OCCURRED = 3;
27
+ const STORE_SCHEMA_INVALID_RECORD_ERROR = 4;
28
+ const STORE_OPERATION_NOT_SUPPORTED = 5;
29
+ /**
30
+ * Instantiate a WASM module from a file reference and the given web assembly
31
+ * imports.
32
+ *
33
+ * @param ref The file reference to the WASM module.
34
+ * @param imports The imports to pass to the WASM module when instantiating it.
35
+ * @returns The instantiated WASM module, its exports, and the API that Primate
36
+ * exposes to the WASM module.
37
+ */
38
+ const instantiate = async (args) => {
39
+ const wasmFileRef = new FileRef(args.filename);
40
+ const wasmImports = args.imports ?? {};
41
+ const storesByName = args.stores;
42
+ const storeIdsByName = new Map(Object.keys(storesByName).map((e, i) => [e, i]));
43
+ const stores = new Map(Array.from(storeIdsByName.entries())
44
+ .map(([name, id]) => [id, storesByName[name]]));
45
+ // default payload is set to an empty buffer via setPayloadBuffer
46
+ let payload = new Uint8Array(0);
47
+ let received = new Uint8Array(0);
48
+ const setPayload = (value) => {
49
+ payload = value;
50
+ };
51
+ const sockets = new Map();
52
+ /**
53
+ * Get the current session and set it as the payload. This method should
54
+ * only be called after a JSON payload has been received via the `send`
55
+ * function.
56
+ */
57
+ const sessionGet = () => {
58
+ payload = encodeSession(session());
59
+ };
60
+ /**
61
+ * Create a new session and set it as the current session. This method
62
+ * should only be called after a JSON payload has been received via the
63
+ * `send` function.
64
+ *
65
+ * Once the session has been created, the `payload` should be set to the
66
+ * encoded session, and then `payloadByteLength` and `receive` should be
67
+ * called to send the payload to the WASM module.
68
+ */
69
+ const sessionNew = () => {
70
+ const data = decodeJson.from(received);
71
+ session().create(data);
72
+ payload = encodeSession(session());
73
+ };
74
+ /**
75
+ * Check to see if a session exists.
76
+ *
77
+ * @returns {1 | 0}
78
+ */
79
+ const sessionExists = () => {
80
+ return session().exists ? 1 : 0;
81
+ };
82
+ /**
83
+ * Set the current session.
84
+ */
85
+ const sessionSet = () => {
86
+ const data = decodeJson.from(received);
87
+ session().set(data);
88
+ };
89
+ /**
90
+ * Get the length of the current active payload.
91
+ *
92
+ * @returns The length of the payload.
93
+ */
94
+ const payloadByteLength = () => {
95
+ return payload.byteLength;
96
+ };
97
+ /**
98
+ * Send the current active payload to the WASM module.
99
+ *
100
+ * @param ptr The pointer to where the payload should be written into the
101
+ * WASM linear memory space.
102
+ * @param length The length of the payload. This must match the actual
103
+ * payload length, otherwise an exception will be thrown.
104
+ */
105
+ const receive = (ptr, length) => {
106
+ assert(payload.length === length, "Payload length mismatch");
107
+ const wasmBuffer = new Uint8Array(memory.buffer, ptr, length);
108
+ wasmBuffer.set(payload);
109
+ };
110
+ /**
111
+ * Send a payload from the WASM module to Primate.
112
+ *
113
+ * @param ptr The pointer to the payload in the WASM linear memory space.
114
+ * @param length The length of the payload.
115
+ */
116
+ const send = (ptr, length) => {
117
+ const wasmBuffer = new Uint8Array(memory.buffer, ptr, length);
118
+ const output = new Uint8Array(length);
119
+ output.set(wasmBuffer);
120
+ received = output;
121
+ };
122
+ /**
123
+ * Close a WebSocket.
124
+ */
125
+ const websocketClose = () => {
126
+ const { id } = decodeWebsocketClose(payload);
127
+ assert(sockets.has(id), "Invalid socket id. Was the socket already closed?");
128
+ const socket = sockets.get(id);
129
+ socket.close();
130
+ sockets.delete(id);
131
+ };
132
+ /**
133
+ * Send a WebSocket message to a given socket by it's id.
134
+ */
135
+ const websocketSend = () => {
136
+ const { id, message } = decodeWebsocketSendMessage(payload);
137
+ assert(sockets.has(id), `Invalid socket id ${id}. Was the socket already closed?`);
138
+ const socket = sockets.get(id);
139
+ socket.send(message);
140
+ };
141
+ /** Default Store operation for when Suspending isn't supported. */
142
+ const storeOperationNotSupported = (_id) => STORE_OPERATION_NOT_SUPPORTED;
143
+ /**
144
+ * Count the number of records that match the query.
145
+ *
146
+ * @param {StoreID} id - The ID of the store.
147
+ * @returns {STORE_OPERATION_RESULT}
148
+ */
149
+ const storeCount = wrapSuspending(async (id) => {
150
+ if (!stores.has(id))
151
+ return STORE_NOT_FOUND_ERROR;
152
+ const store = stores.get(id);
153
+ const criteria = decodeJson(new BufferView(received));
154
+ const count = await store.count(criteria);
155
+ payload = new Uint8Array(4);
156
+ new DataView(payload.buffer).setUint32(0, count, true);
157
+ return STORE_OPERATION_SUCCESS;
158
+ }, storeOperationNotSupported);
159
+ /**
160
+ * Delete a record by it's id.
161
+ *
162
+ * @param {StoreID} id - The ID of the store.
163
+ * @returns {STORE_OPERATION_RESULT}
164
+ */
165
+ const storeDelete = wrapSuspending(async (id) => {
166
+ if (!stores.has(id))
167
+ return STORE_NOT_FOUND_ERROR;
168
+ const store = stores.get(id);
169
+ try {
170
+ const id = decodeJson(new BufferView(received));
171
+ await store.delete(id);
172
+ return STORE_OPERATION_SUCCESS;
173
+ }
174
+ catch (ex) {
175
+ return STORE_RECORD_NOT_FOUND_ERROR;
176
+ }
177
+ }, storeOperationNotSupported);
178
+ /**
179
+ * Get a store by it's "import", and return it to wasm.
180
+ *
181
+ * @returns {STORE_OPERATION_RESULT}
182
+ */
183
+ const storeImport = () => {
184
+ const storeName = decodeString(new BufferView(received));
185
+ if (storeIdsByName.has(storeName)) {
186
+ payload = new Uint8Array(4);
187
+ new DataView(payload.buffer).setUint32(0, storeIdsByName.get(storeName), true);
188
+ return STORE_OPERATION_SUCCESS;
189
+ }
190
+ return STORE_NOT_FOUND_ERROR;
191
+ };
192
+ /**
193
+ * Find records in a store.
194
+ *
195
+ * @param {StoreID} id - The id of the store.
196
+ * @returns {STORE_OPERATION_RESULT}
197
+ */
198
+ const storeFind = wrapSuspending(async (id) => {
199
+ if (!stores.has(id))
200
+ return STORE_NOT_FOUND_ERROR;
201
+ const store = stores.get(id);
202
+ const query = decodeJson(new BufferView(received));
203
+ try {
204
+ const records = await store.find(query);
205
+ const recordsPayload = JSON.stringify(records);
206
+ payload = new Uint8Array(utf8size(recordsPayload) + 4);
207
+ encodeString(recordsPayload, new BufferView(payload));
208
+ return STORE_OPERATION_SUCCESS;
209
+ }
210
+ catch (ex) {
211
+ return STORE_UNKNOWN_ERROR_OCCURRED;
212
+ }
213
+ }, storeOperationNotSupported);
214
+ /**
215
+ * Get a record by it's id.
216
+ *
217
+ * @param {StoreID} id - The id of the store.
218
+ * @returns {STORE_OPERATION_RESULT}
219
+ */
220
+ const storeGet = wrapSuspending(async (id) => {
221
+ if (!stores.has(id))
222
+ return STORE_NOT_FOUND_ERROR;
223
+ const store = stores.get(id);
224
+ const recordId = decodeString(new BufferView(received));
225
+ const record = await store.try(recordId);
226
+ if (record) {
227
+ const recordPayload = JSON.stringify(record);
228
+ payload = new Uint8Array(utf8size(recordPayload) + 4);
229
+ encodeString(recordPayload, new BufferView(payload));
230
+ return STORE_OPERATION_SUCCESS;
231
+ }
232
+ else {
233
+ return STORE_RECORD_NOT_FOUND_ERROR;
234
+ }
235
+ }, storeOperationNotSupported);
236
+ /**
237
+ * Check if a record exists based on a record id.
238
+ *
239
+ * @param {StoreID} id - The id of the store.
240
+ * @returns {STORE_OPERATION_RESULT}
241
+ */
242
+ const storeHas = wrapSuspending(async (id) => {
243
+ if (!stores.has(id))
244
+ return STORE_NOT_FOUND_ERROR;
245
+ const store = stores.get(id);
246
+ const recordId = decodeString(new BufferView(received));
247
+ if (await store.has(recordId)) {
248
+ payload = new Uint8Array(4);
249
+ payload[0] = 1;
250
+ }
251
+ else {
252
+ payload = new Uint8Array(4);
253
+ }
254
+ return STORE_OPERATION_SUCCESS;
255
+ }, storeOperationNotSupported);
256
+ /**
257
+ * Insert a record into a store.
258
+ *
259
+ * @param {StoreID} id - The id of the store.
260
+ * @returns {STORE_OPERATION_RESULT}
261
+ */
262
+ const storeInsert = wrapSuspending(async (id) => {
263
+ if (!stores.has(id))
264
+ return STORE_NOT_FOUND_ERROR;
265
+ const store = stores.get(id);
266
+ try {
267
+ const record = decodeJson(new BufferView(received));
268
+ const result = JSON.stringify(await store.insert(record));
269
+ payload = new Uint8Array(utf8size(result) + 4);
270
+ encodeString(result, new BufferView(payload));
271
+ return STORE_OPERATION_SUCCESS;
272
+ }
273
+ catch (ex) {
274
+ return STORE_SCHEMA_INVALID_RECORD_ERROR;
275
+ }
276
+ }, storeOperationNotSupported);
277
+ /**
278
+ * Update a record in a store by it's id.
279
+ *
280
+ * @param {StoreID} id - The id of the store.
281
+ * @returns {STORE_OPERATION_RESULT}
282
+ */
283
+ const storeUpdate = wrapSuspending(async (id) => {
284
+ if (!stores.has(id))
285
+ return STORE_NOT_FOUND_ERROR;
286
+ const store = stores.get(id);
287
+ try {
288
+ const view = new BufferView(received);
289
+ const id = decodeString(view);
290
+ const changes = decodeJson(view);
291
+ await store.update(id, changes);
292
+ return STORE_OPERATION_SUCCESS;
293
+ }
294
+ catch (ex) {
295
+ return STORE_SCHEMA_INVALID_RECORD_ERROR;
296
+ }
297
+ }, storeOperationNotSupported);
298
+ const storeClear = wrapSuspending(async (id) => {
299
+ if (!stores.has(id))
300
+ return STORE_NOT_FOUND_ERROR;
301
+ const store = stores.get(id);
302
+ await store.schema.delete();
303
+ await store.schema.create();
304
+ return STORE_OPERATION_SUCCESS;
305
+ }, storeOperationNotSupported);
306
+ /**
307
+ * The imports that Primate provides to the WASM module. This follows the
308
+ * Primate WASM ABI convention.
309
+ */
310
+ const primateImports = {
311
+ payloadByteLength,
312
+ receive,
313
+ send,
314
+ sessionExists,
315
+ sessionGet,
316
+ sessionNew,
317
+ sessionSet,
318
+ storeClear,
319
+ storeCount,
320
+ storeDelete,
321
+ storeFind,
322
+ storeGet,
323
+ storeHas,
324
+ storeImport,
325
+ storeInsert,
326
+ storeUpdate,
327
+ websocketClose,
328
+ websocketSend,
329
+ };
330
+ const bytes = await wasmFileRef.arrayBuffer();
331
+ const memory = new WebAssembly.Memory({ initial: 64 });
332
+ const instantiateDeno = async () => {
333
+ // @ts-expect-error: for deno, need to implement the std lib implementation
334
+ const Context = await import("https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts");
335
+ const context = new Context({
336
+ args: Deno.args,
337
+ env: Deno.env.toObject(),
338
+ preopens: { "./": "./" },
339
+ });
340
+ const instance = await WebAssembly.instantiate(bytes, {
341
+ ...wasmImports,
342
+ "env": { memory },
343
+ "primate": primateImports,
344
+ "wasi_snapshot_preview1": context.exports,
345
+ });
346
+ return instance;
347
+ };
348
+ const defaultInstantiate = async () => {
349
+ const wasiSnapshotPreview1 = new WASI({ version: "preview1" });
350
+ const wasm = await WebAssembly.instantiate(bytes, {
351
+ ...wasmImports,
352
+ "env": { memory },
353
+ "primate": primateImports,
354
+ "wasi_snapshot_preview1": wasiSnapshotPreview1.wasiImport,
355
+ });
356
+ // start the wasi instance
357
+ wasiSnapshotPreview1.start(wasm.instance);
358
+ return wasm;
359
+ };
360
+ const wasm = typeof Deno !== "undefined"
361
+ ? await instantiateDeno()
362
+ : await defaultInstantiate();
363
+ const exports = wasm.instance.exports;
364
+ const api = {};
365
+ const instance = {
366
+ api,
367
+ exports,
368
+ memory,
369
+ setPayload,
370
+ sockets,
371
+ };
372
+ for (const method of verbs) {
373
+ if (method in exports && typeof exports[method] === "function") {
374
+ const methodFunc = wrapPromising(exports[method]);
375
+ api[method] = async (request) => {
376
+ // payload is now set
377
+ payload = await encodeRequest(request);
378
+ // immediately tell the wasm module to obtain the payload and create a
379
+ // request
380
+ const wasmRequest = exports.newRequest();
381
+ // call the http method and obtain the response, finalizing the request
382
+ const wasmResponse = await methodFunc(wasmRequest);
383
+ exports.finalizeRequest(wasmRequest);
384
+ // send the response to the wasm module and decode the response,
385
+ // finalizing the response
386
+ exports.sendResponse(wasmResponse);
387
+ const bufferView = new BufferView(received);
388
+ const response = decodeResponse(bufferView);
389
+ exports.finalizeResponse(wasmResponse);
390
+ if (response.type === "web_socket_upgrade") {
391
+ // the callback encloses over the response websocket id provided by
392
+ // the module.
393
+ return response.callback(instance);
394
+ }
395
+ if (response.type === "text") {
396
+ return text(response.text, {
397
+ headers: response.headers,
398
+ status: response.status,
399
+ });
400
+ }
401
+ return response.value;
402
+ };
403
+ }
404
+ }
405
+ return instance;
406
+ };
407
+ export default instantiate;
408
+ //# sourceMappingURL=instantiate.js.map
@@ -0,0 +1,4 @@
1
+ import type Instantiation from "#wasm/Instantiation";
2
+ declare const _default: (websocketId: bigint) => (api: Instantiation) => import("../response/ResponseFunction.js").default;
3
+ export default _default;
4
+ //# sourceMappingURL=open-websocket.d.ts.map
@@ -0,0 +1,26 @@
1
+ import websocket from "#response/ws";
2
+ import encodeWebsocketClose from "#wasm/encode-websocket-close";
3
+ import encodeWebsocketMessage from "#wasm/encode-websocket-message";
4
+ import encodeWebsocketOpen from "#wasm/encode-websocket-open";
5
+ export default (websocketId) => (api) => {
6
+ return websocket({
7
+ close(_socket) {
8
+ const socketClosePayload = encodeWebsocketClose(websocketId);
9
+ api.sockets.delete(websocketId);
10
+ api.setPayload(socketClosePayload);
11
+ api.exports.websocketClose();
12
+ },
13
+ message(_socket, message) {
14
+ const socketMessagePayload = encodeWebsocketMessage(websocketId, message);
15
+ api.setPayload(socketMessagePayload);
16
+ api.exports.websocketMessage();
17
+ },
18
+ open(socket) {
19
+ const socketOpenPayload = encodeWebsocketOpen(websocketId);
20
+ api.sockets.set(websocketId, socket);
21
+ api.setPayload(socketOpenPayload);
22
+ api.exports.websocketOpen();
23
+ },
24
+ });
25
+ };
26
+ //# sourceMappingURL=open-websocket.js.map
@@ -0,0 +1,3 @@
1
+ declare const stringSize: (string: string) => number;
2
+ export default stringSize;
3
+ //# sourceMappingURL=stringsize.d.ts.map
@@ -0,0 +1,5 @@
1
+ import I32_SIZE from "#wasm/I32_SIZE";
2
+ import utf8size from "@rcompat/string/utf8size";
3
+ const stringSize = (string) => utf8size(string) + I32_SIZE;
4
+ export default stringSize;
5
+ //# sourceMappingURL=stringsize.js.map
@@ -0,0 +1,2 @@
1
+ export default function urlsize(url: URL): number;
2
+ //# sourceMappingURL=urlsize.d.ts.map
@@ -0,0 +1,5 @@
1
+ import stringSize from "#wasm/stringsize";
2
+ export default function urlsize(url) {
3
+ return stringSize(url.toString());
4
+ }
5
+ //# sourceMappingURL=urlsize.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#App";
2
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#App";
2
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#AppError";
2
+ //# sourceMappingURL=AppError.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#AppError";
2
+ //# sourceMappingURL=AppError.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#BuildApp";
2
+ //# sourceMappingURL=BuildApp.d.ts.map