@primate/core 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/lib/private/App.d.ts +54 -0
  2. package/lib/private/App.js +128 -0
  3. package/lib/private/AppError.d.ts +4 -0
  4. package/lib/private/AppError.js +8 -0
  5. package/lib/private/Binder.d.ts +13 -0
  6. package/lib/private/Binder.js +2 -0
  7. package/lib/private/BindingContext.d.ts +3 -0
  8. package/lib/private/BindingContext.js +2 -0
  9. package/lib/private/BuildApp.d.ts +23 -0
  10. package/lib/private/BuildApp.js +121 -0
  11. package/lib/private/CSP.d.ts +6 -0
  12. package/lib/private/CSP.js +2 -0
  13. package/lib/private/Loader.d.ts +17 -0
  14. package/lib/private/Loader.js +46 -0
  15. package/lib/private/Mode.d.ts +3 -0
  16. package/lib/private/Mode.js +2 -0
  17. package/lib/private/Module.d.ts +18 -0
  18. package/lib/private/Module.js +18 -0
  19. package/lib/private/ServeApp.d.ts +89 -0
  20. package/lib/private/ServeApp.js +305 -0
  21. package/lib/private/ServeInit.d.ts +29 -0
  22. package/lib/private/ServeInit.js +2 -0
  23. package/lib/private/asset/Asset.d.ts +11 -0
  24. package/lib/private/asset/Asset.js +2 -0
  25. package/lib/private/asset/Font.d.ts +8 -0
  26. package/lib/private/asset/Font.js +2 -0
  27. package/lib/private/asset/Script.d.ts +9 -0
  28. package/lib/private/asset/Script.js +2 -0
  29. package/lib/private/asset/Style.d.ts +6 -0
  30. package/lib/private/asset/Style.js +2 -0
  31. package/lib/private/backend/Module.d.ts +18 -0
  32. package/lib/private/backend/Module.js +22 -0
  33. package/lib/private/build.d.ts +4 -0
  34. package/lib/private/build.js +45 -0
  35. package/lib/private/builtin/DevModule.d.ts +11 -0
  36. package/lib/private/builtin/DevModule.js +32 -0
  37. package/lib/private/builtin/HandleModule.d.ts +10 -0
  38. package/lib/private/builtin/HandleModule.js +15 -0
  39. package/lib/private/bye.d.ts +3 -0
  40. package/{src → lib}/private/bye.js +2 -2
  41. package/lib/private/client/App.d.ts +4 -0
  42. package/lib/private/client/App.js +12 -0
  43. package/lib/private/client/Data.d.ts +9 -0
  44. package/lib/private/client/Data.js +2 -0
  45. package/lib/private/client/ValidateInit.d.ts +13 -0
  46. package/lib/private/client/ValidateInit.js +2 -0
  47. package/lib/private/client/ValidateUpdater.d.ts +3 -0
  48. package/lib/private/client/ValidateUpdater.js +2 -0
  49. package/lib/private/client/ValidationError.d.ts +6 -0
  50. package/lib/private/client/ValidationError.js +2 -0
  51. package/lib/private/client/spa/index.d.ts +6 -0
  52. package/lib/private/client/spa/index.js +192 -0
  53. package/lib/private/client/spa/storage.d.ts +12 -0
  54. package/lib/private/client/spa/storage.js +54 -0
  55. package/lib/private/client/toValidated.d.ts +17 -0
  56. package/lib/private/client/toValidated.js +21 -0
  57. package/lib/private/client/validate.d.ts +3 -0
  58. package/lib/private/client/validate.js +54 -0
  59. package/lib/private/config/Config.d.ts +4 -0
  60. package/lib/private/config/Config.js +2 -0
  61. package/lib/private/config/config/app.d.ts +3 -0
  62. package/lib/private/config/config/app.js +3 -0
  63. package/lib/private/config/config/database/index.d.ts +3 -0
  64. package/lib/private/config/config/database/index.js +3 -0
  65. package/lib/private/config/config/session.d.ts +3 -0
  66. package/lib/private/config/config/session.js +3 -0
  67. package/lib/private/config/index.d.ts +25 -0
  68. package/lib/private/config/index.js +3 -0
  69. package/lib/private/config/schema.d.ts +26 -0
  70. package/lib/private/config/schema.js +34 -0
  71. package/lib/private/cookie.d.ts +11 -0
  72. package/lib/private/cookie.js +30 -0
  73. package/lib/private/database/As.d.ts +7 -0
  74. package/lib/private/database/As.js +2 -0
  75. package/lib/private/database/Binds.d.ts +4 -0
  76. package/lib/private/database/Binds.js +2 -0
  77. package/lib/private/database/Changes.d.ts +11 -0
  78. package/lib/private/database/Changes.js +2 -0
  79. package/lib/private/database/ColumnTypes.d.ts +11 -0
  80. package/lib/private/database/ColumnTypes.js +2 -0
  81. package/lib/private/database/DataDict.d.ts +5 -0
  82. package/lib/private/database/DataDict.js +2 -0
  83. package/lib/private/database/DataKey.d.ts +4 -0
  84. package/lib/private/database/DataKey.js +2 -0
  85. package/lib/private/database/DataRecord.d.ts +8 -0
  86. package/lib/private/database/DataRecord.js +3 -0
  87. package/lib/private/database/DataValue.d.ts +5 -0
  88. package/lib/private/database/DataValue.js +2 -0
  89. package/lib/private/database/Database.d.ts +56 -0
  90. package/lib/private/database/Database.js +153 -0
  91. package/lib/private/database/InMemoryDatabase.d.ts +37 -0
  92. package/lib/private/database/InMemoryDatabase.js +181 -0
  93. package/lib/private/database/Query.d.ts +14 -0
  94. package/lib/private/database/Query.js +15 -0
  95. package/lib/private/database/QueryBuilder.d.ts +14 -0
  96. package/lib/private/database/QueryBuilder.js +3 -0
  97. package/lib/private/database/Sort.d.ts +4 -0
  98. package/lib/private/database/Sort.js +2 -0
  99. package/lib/private/database/Store.d.ts +169 -0
  100. package/lib/private/database/Store.js +255 -0
  101. package/lib/private/database/TypeMap.d.ts +14 -0
  102. package/lib/private/database/TypeMap.js +2 -0
  103. package/lib/private/database/Types.d.ts +6 -0
  104. package/lib/private/database/Types.js +2 -0
  105. package/lib/private/database/primary.d.ts +3 -0
  106. package/lib/private/database/primary.js +2 -0
  107. package/lib/private/database/storage.d.ts +4 -0
  108. package/lib/private/database/storage.js +3 -0
  109. package/lib/private/database/symbol/wrap.d.ts +3 -0
  110. package/lib/private/database/symbol/wrap.js +2 -0
  111. package/lib/private/database/symbol.d.ts +3 -0
  112. package/lib/private/database/symbol.js +2 -0
  113. package/lib/private/database/test.d.ts +4 -0
  114. package/lib/private/database/test.js +678 -0
  115. package/lib/private/database/wrap.d.ts +5 -0
  116. package/lib/private/database/wrap.js +5 -0
  117. package/lib/private/fail.d.ts +3 -0
  118. package/lib/private/fail.js +5 -0
  119. package/lib/private/frontend/Component.d.ts +8 -0
  120. package/lib/private/frontend/Component.js +2 -0
  121. package/lib/private/frontend/Module.d.ts +60 -0
  122. package/lib/private/frontend/Module.js +241 -0
  123. package/lib/private/frontend/Publish.d.ts +5 -0
  124. package/lib/private/frontend/Publish.js +2 -0
  125. package/lib/private/frontend/Render.d.ts +9 -0
  126. package/lib/private/frontend/Render.js +2 -0
  127. package/lib/private/frontend/ServerComponent.d.ts +5 -0
  128. package/lib/private/frontend/ServerComponent.js +2 -0
  129. package/lib/private/frontend/ServerData.d.ts +7 -0
  130. package/lib/private/frontend/ServerData.js +2 -0
  131. package/lib/private/frontend/ViewOptions.d.ts +12 -0
  132. package/lib/private/frontend/ViewOptions.js +3 -0
  133. package/lib/private/frontend/ViewResponse.d.ts +6 -0
  134. package/lib/private/frontend/ViewResponse.js +2 -0
  135. package/lib/private/frontend/bundle-server.d.ts +11 -0
  136. package/lib/private/frontend/bundle-server.js +48 -0
  137. package/lib/private/hash.d.ts +3 -0
  138. package/lib/private/hash.js +10 -0
  139. package/lib/private/hook/build.d.ts +4 -0
  140. package/lib/private/hook/build.js +245 -0
  141. package/lib/private/hook/serve.d.ts +4 -0
  142. package/lib/private/hook/serve.js +13 -0
  143. package/lib/private/i18n/API.d.ts +21 -0
  144. package/lib/private/i18n/API.js +2 -0
  145. package/lib/private/i18n/Catalog.d.ts +4 -0
  146. package/lib/private/i18n/Catalog.js +2 -0
  147. package/lib/private/i18n/Catalogs.d.ts +4 -0
  148. package/lib/private/i18n/Catalogs.js +2 -0
  149. package/lib/private/i18n/Config.d.ts +10 -0
  150. package/lib/private/i18n/Config.js +2 -0
  151. package/lib/private/i18n/ContextData.d.ts +6 -0
  152. package/lib/private/i18n/ContextData.js +2 -0
  153. package/lib/private/i18n/Formatter.d.ts +18 -0
  154. package/lib/private/i18n/Formatter.js +108 -0
  155. package/lib/private/i18n/Module.d.ts +16 -0
  156. package/lib/private/i18n/Module.js +109 -0
  157. package/lib/private/i18n/PersistMode.d.ts +3 -0
  158. package/lib/private/i18n/PersistMode.js +2 -0
  159. package/lib/private/i18n/TypeOf.d.ts +4 -0
  160. package/lib/private/i18n/TypeOf.js +2 -0
  161. package/lib/private/i18n/constant/COOKIE_NAME.d.ts +3 -0
  162. package/lib/private/i18n/constant/COOKIE_NAME.js +2 -0
  163. package/lib/private/i18n/constant/DEFAULT_LOCALE.d.ts +3 -0
  164. package/lib/private/i18n/constant/DEFAULT_LOCALE.js +2 -0
  165. package/lib/private/i18n/constant/DEFAULT_PERSIST_MODE.d.ts +3 -0
  166. package/lib/private/i18n/constant/DEFAULT_PERSIST_MODE.js +2 -0
  167. package/lib/private/i18n/constant/PERSIST_HEADER.d.ts +3 -0
  168. package/lib/private/i18n/constant/PERSIST_HEADER.js +2 -0
  169. package/lib/private/i18n/constant/PERSIST_METHOD.d.ts +3 -0
  170. package/lib/private/i18n/constant/PERSIST_METHOD.js +2 -0
  171. package/lib/private/i18n/constant/PERSIST_STORAGE_KEY.d.ts +3 -0
  172. package/lib/private/i18n/constant/PERSIST_STORAGE_KEY.js +2 -0
  173. package/lib/private/i18n/index.d.ts +28 -0
  174. package/lib/private/i18n/index.js +236 -0
  175. package/lib/private/i18n/locale.d.ts +5 -0
  176. package/lib/private/i18n/locale.js +4 -0
  177. package/lib/private/i18n/ordinals.d.ts +4 -0
  178. package/lib/private/i18n/ordinals.js +52 -0
  179. package/lib/private/i18n/schema.d.ts +8 -0
  180. package/lib/private/i18n/schema.js +13 -0
  181. package/lib/private/i18n/symbol/internal.d.ts +3 -0
  182. package/lib/private/i18n/symbol/internal.js +3 -0
  183. package/lib/private/i18n/toIntlUnit.d.ts +3 -0
  184. package/lib/private/i18n/toIntlUnit.js +125 -0
  185. package/lib/private/inline.d.ts +7 -0
  186. package/lib/private/inline.js +12 -0
  187. package/lib/private/location.d.ts +17 -0
  188. package/lib/private/location.js +29 -0
  189. package/lib/private/log.d.ts +19 -0
  190. package/lib/private/log.js +46 -0
  191. package/lib/private/module/BuildHook.d.ts +5 -0
  192. package/lib/private/module/BuildHook.js +2 -0
  193. package/lib/private/module/Hook.d.ts +5 -0
  194. package/lib/private/module/Hook.js +2 -0
  195. package/lib/private/module/Next.d.ts +4 -0
  196. package/lib/private/module/Next.js +2 -0
  197. package/lib/private/module/NextBuild.d.ts +5 -0
  198. package/lib/private/module/NextBuild.js +2 -0
  199. package/lib/private/module/NextHandle.d.ts +5 -0
  200. package/lib/private/module/NextHandle.js +2 -0
  201. package/lib/private/module/NextRoute.d.ts +6 -0
  202. package/lib/private/module/NextRoute.js +2 -0
  203. package/lib/private/module/NextServe.d.ts +5 -0
  204. package/lib/private/module/NextServe.js +2 -0
  205. package/lib/private/module/RequestHook.d.ts +6 -0
  206. package/lib/private/module/RequestHook.js +2 -0
  207. package/lib/private/reducer.d.ts +24 -0
  208. package/lib/private/reducer.js +10 -0
  209. package/lib/private/request/RequestBag.d.ts +80 -0
  210. package/lib/private/request/RequestBag.js +119 -0
  211. package/lib/private/request/RequestBody.d.ts +39 -0
  212. package/lib/private/request/RequestBody.js +91 -0
  213. package/lib/private/request/RequestFacade.d.ts +20 -0
  214. package/lib/private/request/RequestFacade.js +2 -0
  215. package/lib/private/request/Verb.d.ts +4 -0
  216. package/lib/private/request/Verb.js +2 -0
  217. package/lib/private/request/parse.d.ts +4 -0
  218. package/lib/private/request/parse.js +69 -0
  219. package/lib/private/request/route.d.ts +4 -0
  220. package/lib/private/request/route.js +61 -0
  221. package/lib/private/request/router.d.ts +5 -0
  222. package/lib/private/request/router.js +56 -0
  223. package/lib/private/request/verbs.d.ts +3 -0
  224. package/lib/private/request/verbs.js +12 -0
  225. package/lib/private/response/ResponseFunction.d.ts +8 -0
  226. package/lib/private/response/ResponseFunction.js +2 -0
  227. package/lib/private/response/ResponseLike.d.ts +6 -0
  228. package/lib/private/response/ResponseLike.js +2 -0
  229. package/lib/private/response/binary.d.ts +10 -0
  230. package/lib/private/response/binary.js +47 -0
  231. package/lib/private/response/error.d.ts +18 -0
  232. package/lib/private/response/error.js +18 -0
  233. package/lib/private/response/json.d.ts +9 -0
  234. package/lib/private/response/json.js +10 -0
  235. package/lib/private/response/redirect.d.ts +11 -0
  236. package/lib/private/response/redirect.js +62 -0
  237. package/lib/private/response/respond.d.ts +5 -0
  238. package/lib/private/response/respond.js +31 -0
  239. package/lib/private/response/sse.d.ts +15 -0
  240. package/lib/private/response/sse.js +25 -0
  241. package/lib/private/response/text.d.ts +9 -0
  242. package/lib/private/response/text.js +11 -0
  243. package/lib/private/response/view.d.ts +11 -0
  244. package/lib/private/response/view.js +41 -0
  245. package/lib/private/response/ws.d.ts +5 -0
  246. package/lib/private/response/ws.js +2 -0
  247. package/lib/private/response.d.ts +5 -0
  248. package/lib/private/response.js +2 -0
  249. package/lib/private/route/Handler.d.ts +6 -0
  250. package/lib/private/route/Handler.js +2 -0
  251. package/lib/private/route/Options.d.ts +5 -0
  252. package/lib/private/route/Options.js +2 -0
  253. package/lib/private/route/Path.d.ts +11 -0
  254. package/lib/private/route/Path.js +2 -0
  255. package/lib/private/route/guard.d.ts +4 -0
  256. package/lib/private/route/guard.js +22 -0
  257. package/lib/private/route/router.d.ts +51 -0
  258. package/lib/private/route/router.js +32 -0
  259. package/lib/private/route/wrap.d.ts +6 -0
  260. package/lib/private/route/wrap.js +17 -0
  261. package/lib/private/route.d.ts +9 -0
  262. package/lib/private/route.js +6 -0
  263. package/lib/private/serve.d.ts +5 -0
  264. package/lib/private/serve.js +8 -0
  265. package/lib/private/session/Config.d.ts +4 -0
  266. package/lib/private/session/Config.js +2 -0
  267. package/lib/private/session/Data.d.ts +5 -0
  268. package/lib/private/session/Data.js +2 -0
  269. package/lib/private/session/InMemoryManager.d.ts +9 -0
  270. package/lib/private/session/InMemoryManager.js +23 -0
  271. package/lib/private/session/Manager.d.ts +9 -0
  272. package/lib/private/session/Manager.js +4 -0
  273. package/lib/private/session/SessionFacade.d.ts +56 -0
  274. package/lib/private/session/SessionFacade.js +2 -0
  275. package/lib/private/session/SessionHandle.d.ts +20 -0
  276. package/lib/private/session/SessionHandle.js +67 -0
  277. package/lib/private/session/SessionModule.d.ts +13 -0
  278. package/lib/private/session/SessionModule.js +99 -0
  279. package/lib/private/session/index.d.ts +13 -0
  280. package/lib/private/session/index.js +41 -0
  281. package/lib/private/session/k-serialize.d.ts +3 -0
  282. package/lib/private/session/k-serialize.js +2 -0
  283. package/lib/private/session/schema.d.ts +14 -0
  284. package/lib/private/session/schema.js +20 -0
  285. package/lib/private/session/storage.d.ts +5 -0
  286. package/lib/private/session/storage.js +5 -0
  287. package/lib/private/symbol/config.d.ts +3 -0
  288. package/lib/private/symbol/config.js +2 -0
  289. package/lib/private/symbol/layout-depth.d.ts +3 -0
  290. package/lib/private/symbol/layout-depth.js +2 -0
  291. package/lib/private/tags.d.ts +10 -0
  292. package/lib/private/tags.js +29 -0
  293. package/lib/private/target/Manager.d.ts +14 -0
  294. package/lib/private/target/Manager.js +44 -0
  295. package/lib/private/target/Target.d.ts +8 -0
  296. package/lib/private/target/Target.js +3 -0
  297. package/lib/private/target/web.d.ts +4 -0
  298. package/lib/private/target/web.js +68 -0
  299. package/lib/private/wasm/API.d.ts +7 -0
  300. package/lib/private/wasm/API.js +2 -0
  301. package/lib/private/wasm/BufferViewSource.d.ts +4 -0
  302. package/lib/private/wasm/BufferViewSource.js +2 -0
  303. package/lib/private/wasm/Exports.d.ts +23 -0
  304. package/lib/private/wasm/Exports.js +2 -0
  305. package/lib/private/wasm/I32.d.ts +5 -0
  306. package/lib/private/wasm/I32.js +2 -0
  307. package/lib/private/wasm/I32_SIZE.d.ts +3 -0
  308. package/lib/private/wasm/I32_SIZE.js +2 -0
  309. package/lib/private/wasm/Instantiation.d.ts +12 -0
  310. package/lib/private/wasm/Instantiation.js +2 -0
  311. package/lib/private/wasm/Tagged.d.ts +7 -0
  312. package/lib/private/wasm/Tagged.js +2 -0
  313. package/lib/private/wasm/buffersize.d.ts +2 -0
  314. package/lib/private/wasm/buffersize.js +5 -0
  315. package/lib/private/wasm/decode-bytes.d.ts +3 -0
  316. package/lib/private/wasm/decode-bytes.js +5 -0
  317. package/lib/private/wasm/decode-json.d.ts +7 -0
  318. package/lib/private/wasm/decode-json.js +11 -0
  319. package/lib/private/wasm/decode-option.d.ts +5 -0
  320. package/lib/private/wasm/decode-option.js +10 -0
  321. package/lib/private/wasm/decode-response.d.ts +19 -0
  322. package/lib/private/wasm/decode-response.js +90 -0
  323. package/lib/private/wasm/decode-string.d.ts +3 -0
  324. package/lib/private/wasm/decode-string.js +5 -0
  325. package/lib/private/wasm/decode-websocket-close.d.ts +5 -0
  326. package/lib/private/wasm/decode-websocket-close.js +6 -0
  327. package/lib/private/wasm/decode-websocket-send.d.ts +6 -0
  328. package/lib/private/wasm/decode-websocket-send.js +19 -0
  329. package/lib/private/wasm/encode-buffer.d.ts +3 -0
  330. package/lib/private/wasm/encode-buffer.js +6 -0
  331. package/lib/private/wasm/encode-request.d.ts +9 -0
  332. package/lib/private/wasm/encode-request.js +198 -0
  333. package/lib/private/wasm/encode-session.d.ts +3 -0
  334. package/lib/private/wasm/encode-session.js +25 -0
  335. package/lib/private/wasm/encode-string-map.d.ts +5 -0
  336. package/lib/private/wasm/encode-string-map.js +14 -0
  337. package/lib/private/wasm/encode-string.d.ts +13 -0
  338. package/lib/private/wasm/encode-string.js +17 -0
  339. package/lib/private/wasm/encode-url.d.ts +11 -0
  340. package/lib/private/wasm/encode-url.js +14 -0
  341. package/lib/private/wasm/encode-websocket-close.d.ts +2 -0
  342. package/lib/private/wasm/encode-websocket-close.js +7 -0
  343. package/lib/private/wasm/encode-websocket-message.d.ts +4 -0
  344. package/lib/private/wasm/encode-websocket-message.js +30 -0
  345. package/lib/private/wasm/encode-websocket-open.d.ts +2 -0
  346. package/lib/private/wasm/encode-websocket-open.js +7 -0
  347. package/lib/private/wasm/filesize.d.ts +2 -0
  348. package/lib/private/wasm/filesize.js +8 -0
  349. package/lib/private/wasm/instantiate.d.ts +37 -0
  350. package/lib/private/wasm/instantiate.js +408 -0
  351. package/lib/private/wasm/open-websocket.d.ts +4 -0
  352. package/lib/private/wasm/open-websocket.js +26 -0
  353. package/lib/private/wasm/stringsize.d.ts +3 -0
  354. package/lib/private/wasm/stringsize.js +5 -0
  355. package/lib/private/wasm/urlsize.d.ts +2 -0
  356. package/lib/private/wasm/urlsize.js +5 -0
  357. package/lib/public/App.d.ts +2 -0
  358. package/lib/public/App.js +2 -0
  359. package/lib/public/AppError.d.ts +2 -0
  360. package/lib/public/AppError.js +2 -0
  361. package/lib/public/BuildApp.d.ts +2 -0
  362. package/lib/public/BuildApp.js +2 -0
  363. package/lib/public/BuildHook.d.ts +2 -0
  364. package/lib/public/BuildHook.js +2 -0
  365. package/lib/public/Database.d.ts +2 -0
  366. package/lib/public/Database.js +2 -0
  367. package/lib/public/Loader.d.ts +2 -0
  368. package/lib/public/Loader.js +2 -0
  369. package/lib/public/Mode.d.ts +2 -0
  370. package/lib/public/Mode.js +2 -0
  371. package/lib/public/Module.d.ts +2 -0
  372. package/lib/public/Module.js +2 -0
  373. package/lib/public/Next.d.ts +2 -0
  374. package/lib/public/Next.js +2 -0
  375. package/lib/public/NextBuild.d.ts +2 -0
  376. package/lib/public/NextBuild.js +2 -0
  377. package/lib/public/NextHandle.d.ts +2 -0
  378. package/lib/public/NextHandle.js +2 -0
  379. package/lib/public/NextRoute.d.ts +3 -0
  380. package/lib/public/NextRoute.js +2 -0
  381. package/lib/public/NextServe.d.ts +2 -0
  382. package/lib/public/NextServe.js +2 -0
  383. package/lib/public/ServeApp.d.ts +2 -0
  384. package/lib/public/ServeApp.js +2 -0
  385. package/lib/public/Target.d.ts +2 -0
  386. package/lib/public/Target.js +2 -0
  387. package/lib/public/backend/Module.d.ts +2 -0
  388. package/lib/public/backend/Module.js +2 -0
  389. package/lib/public/build.d.ts +2 -0
  390. package/lib/public/build.js +2 -0
  391. package/lib/public/client/App.d.ts +2 -0
  392. package/lib/public/client/App.js +2 -0
  393. package/lib/public/client/Data.d.ts +2 -0
  394. package/lib/public/client/Data.js +2 -0
  395. package/lib/public/client/ValidateInit.d.ts +2 -0
  396. package/lib/public/client/ValidateInit.js +2 -0
  397. package/lib/public/client/ValidateUpdater.d.ts +2 -0
  398. package/lib/public/client/ValidateUpdater.js +2 -0
  399. package/lib/public/client/ValidationError.d.ts +2 -0
  400. package/lib/public/client/ValidationError.js +2 -0
  401. package/lib/public/client/spa.d.ts +2 -0
  402. package/lib/public/client/spa.js +2 -0
  403. package/lib/public/client/toValidated.d.ts +2 -0
  404. package/lib/public/client/toValidated.js +2 -0
  405. package/lib/public/client/validate.d.ts +2 -0
  406. package/lib/public/client/validate.js +2 -0
  407. package/lib/public/config.d.ts +2 -0
  408. package/lib/public/config.js +2 -0
  409. package/lib/public/database/As.d.ts +2 -0
  410. package/lib/public/database/As.js +2 -0
  411. package/lib/public/database/DataDict.d.ts +2 -0
  412. package/lib/public/database/DataDict.js +2 -0
  413. package/lib/public/database/InMemoryDatabase.d.ts +2 -0
  414. package/lib/public/database/InMemoryDatabase.js +2 -0
  415. package/lib/public/database/Sort.d.ts +2 -0
  416. package/lib/public/database/Sort.js +2 -0
  417. package/lib/public/database/Store.d.ts +2 -0
  418. package/lib/public/database/Store.js +2 -0
  419. package/lib/public/database/TypeMap.d.ts +2 -0
  420. package/lib/public/database/TypeMap.js +2 -0
  421. package/lib/public/database/Types.d.ts +2 -0
  422. package/lib/public/database/Types.js +2 -0
  423. package/lib/public/database/test.d.ts +2 -0
  424. package/lib/public/database/test.js +2 -0
  425. package/lib/public/database/wrap.d.ts +2 -0
  426. package/lib/public/database/wrap.js +2 -0
  427. package/lib/public/frontend/Module.d.ts +2 -0
  428. package/lib/public/frontend/Module.js +2 -0
  429. package/lib/public/frontend/Publish.d.ts +2 -0
  430. package/lib/public/frontend/Publish.js +2 -0
  431. package/lib/public/frontend/Render.d.ts +2 -0
  432. package/lib/public/frontend/Render.js +2 -0
  433. package/lib/public/frontend/ViewResponse.d.ts +2 -0
  434. package/lib/public/frontend/ViewResponse.js +2 -0
  435. package/lib/public/i18n/API.d.ts +2 -0
  436. package/lib/public/i18n/API.js +2 -0
  437. package/lib/public/i18n/Catalogs.d.ts +2 -0
  438. package/lib/public/i18n/Catalogs.js +2 -0
  439. package/lib/public/i18n/ContextData.d.ts +2 -0
  440. package/lib/public/i18n/ContextData.js +2 -0
  441. package/lib/public/i18n/config.d.ts +2 -0
  442. package/lib/public/i18n/config.js +2 -0
  443. package/lib/public/i18n/locale.d.ts +2 -0
  444. package/lib/public/i18n/locale.js +2 -0
  445. package/lib/public/i18n/sInternal.d.ts +2 -0
  446. package/lib/public/i18n/sInternal.js +2 -0
  447. package/lib/public/inline.d.ts +2 -0
  448. package/lib/public/inline.js +2 -0
  449. package/lib/public/location.d.ts +2 -0
  450. package/lib/public/location.js +2 -0
  451. package/lib/public/log.d.ts +2 -0
  452. package/{src/log/index.js → lib/public/log.js} +1 -0
  453. package/lib/public/request/RequestBody.d.ts +2 -0
  454. package/lib/public/request/RequestBody.js +2 -0
  455. package/lib/public/request/RequestFacade.d.ts +2 -0
  456. package/lib/public/request/RequestFacade.js +2 -0
  457. package/lib/public/request/Verb.d.ts +2 -0
  458. package/lib/public/request/Verb.js +2 -0
  459. package/lib/public/request/verbs.d.ts +2 -0
  460. package/lib/public/request/verbs.js +2 -0
  461. package/lib/public/response/ResponseFunction.d.ts +2 -0
  462. package/lib/public/response/ResponseFunction.js +2 -0
  463. package/lib/public/response/ResponseLike.d.ts +2 -0
  464. package/lib/public/response/ResponseLike.js +2 -0
  465. package/lib/public/response/binary.d.ts +2 -0
  466. package/lib/public/response/binary.js +2 -0
  467. package/lib/public/response/error.d.ts +2 -0
  468. package/lib/public/response/error.js +2 -0
  469. package/lib/public/response/json.d.ts +2 -0
  470. package/lib/public/response/json.js +2 -0
  471. package/lib/public/response/redirect.d.ts +2 -0
  472. package/lib/public/response/redirect.js +2 -0
  473. package/lib/public/response/sse.d.ts +2 -0
  474. package/lib/public/response/sse.js +2 -0
  475. package/lib/public/response/text.d.ts +2 -0
  476. package/lib/public/response/text.js +2 -0
  477. package/lib/public/response/view.d.ts +2 -0
  478. package/lib/public/response/view.js +2 -0
  479. package/lib/public/response/ws.d.ts +2 -0
  480. package/lib/public/response/ws.js +2 -0
  481. package/lib/public/route/router.d.ts +2 -0
  482. package/lib/public/route/router.js +2 -0
  483. package/lib/public/route/wrap.d.ts +2 -0
  484. package/lib/public/route/wrap.js +2 -0
  485. package/lib/public/route.d.ts +2 -0
  486. package/lib/public/route.js +2 -0
  487. package/lib/public/serve.d.ts +2 -0
  488. package/lib/public/serve.js +2 -0
  489. package/lib/public/session/Manager.d.ts +2 -0
  490. package/lib/public/session/Manager.js +2 -0
  491. package/lib/public/session/config.d.ts +2 -0
  492. package/lib/public/session/config.js +2 -0
  493. package/lib/public/symbol/config.d.ts +2 -0
  494. package/lib/public/symbol/config.js +2 -0
  495. package/lib/public/wasm/decode-json.d.ts +5 -0
  496. package/lib/public/wasm/decode-json.js +3 -0
  497. package/lib/public/wasm/decode-response.d.ts +3 -0
  498. package/lib/public/wasm/decode-response.js +3 -0
  499. package/lib/public/wasm/encode-request.d.ts +3 -0
  500. package/lib/public/wasm/encode-request.js +3 -0
  501. package/lib/public/wasm/encode-session.d.ts +3 -0
  502. package/lib/public/wasm/encode-session.js +3 -0
  503. package/lib/public/wasm/instantiate.d.ts +4 -0
  504. package/lib/public/wasm/instantiate.js +3 -0
  505. package/package.json +41 -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,17 @@
1
+ import location from "#location";
2
+ import dedent from "@rcompat/string/dedent";
3
+ export default function wrap(code, file, build) {
4
+ const router = `ROUTER_${build.id}`;
5
+ const debased = file.debase(build.stage.join(location.routes)).path
6
+ .slice(1, -file.extension.length);
7
+ const prelude = dedent `
8
+ import ${router} from "primate/router";
9
+ ${router}.push("${debased}");
10
+ `;
11
+ const postlude = `
12
+ ${router}.pop();
13
+ `;
14
+ return `${prelude}${code}${postlude}`;
15
+ }
16
+ ;
17
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1,9 @@
1
+ import type Verb from "#request/Verb";
2
+ import type RouteHandler from "#route/Handler";
3
+ import type RouteOptions from "#route/Options";
4
+ type Route = {
5
+ [key in Verb]: (handler: RouteHandler, options?: RouteOptions) => void;
6
+ };
7
+ declare const _default: Route;
8
+ export default _default;
9
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1,6 @@
1
+ import verbs from "#request/verbs";
2
+ import router from "#route/router";
3
+ export default Object.fromEntries(verbs.map(verb => [verb, (handler, options) => {
4
+ router.add(verb, handler, options);
5
+ }]));
6
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1,5 @@
1
+ import ServeApp from "#ServeApp";
2
+ import type ServeInit from "#ServeInit";
3
+ declare const _default: (root: string, options: ServeInit) => Promise<ServeApp>;
4
+ export default _default;
5
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1,8 @@
1
+ import serve from "#hook/serve";
2
+ import ServeApp from "#ServeApp";
3
+ export default async (root, options) => {
4
+ const app = await new ServeApp(root, options)
5
+ .init(options.target);
6
+ return serve(app);
7
+ };
8
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1,4 @@
1
+ import type schema from "#session/schema";
2
+ type Config = typeof schema.infer;
3
+ export type { Config as default };
4
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1,5 @@
1
+ import type Dict from "@rcompat/type/Dict";
2
+ import type JSONValue from "@rcompat/type/JSONValue";
3
+ type Data = Dict<JSONValue>;
4
+ export { Data as default };
5
+ //# sourceMappingURL=Data.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Data.js.map
@@ -0,0 +1,9 @@
1
+ import SessionManager from "#session/Manager";
2
+ export default class InMemorySessionManager<Data> extends SessionManager<Data> {
3
+ #private;
4
+ load(id: string): Data | undefined;
5
+ create(id: string, data: Data): void;
6
+ save(id: string, data: Data): void;
7
+ destroy(id: string): void;
8
+ }
9
+ //# sourceMappingURL=InMemoryManager.d.ts.map
@@ -0,0 +1,23 @@
1
+ import SessionManager from "#session/Manager";
2
+ import assert from "@rcompat/assert";
3
+ export default class InMemorySessionManager extends SessionManager {
4
+ // id -> JSON
5
+ #sessions = new Map();
6
+ load(id) {
7
+ const raw = this.#sessions.get(id);
8
+ return raw === undefined ? undefined : JSON.parse(raw);
9
+ }
10
+ create(id, data) {
11
+ assert(!this.#sessions.has(id), `session already exists: ${id}`);
12
+ this.#sessions.set(id, JSON.stringify(data));
13
+ }
14
+ save(id, data) {
15
+ assert(this.#sessions.has(id), `session not found: ${id}`);
16
+ this.#sessions.set(id, JSON.stringify(data));
17
+ }
18
+ // idempotent
19
+ destroy(id) {
20
+ this.#sessions.delete(id);
21
+ }
22
+ }
23
+ //# sourceMappingURL=InMemoryManager.js.map
@@ -0,0 +1,9 @@
1
+ import type MaybePromise from "@rcompat/type/MaybePromise";
2
+ export default abstract class SessionManager<Data> {
3
+ init?(): MaybePromise<void>;
4
+ abstract load(id: string): MaybePromise<Data | undefined>;
5
+ abstract create(id: string, data: Data): MaybePromise<void>;
6
+ abstract save(id: string, data: Data): MaybePromise<void>;
7
+ abstract destroy(id: string): MaybePromise<void>;
8
+ }
9
+ //# sourceMappingURL=Manager.d.ts.map
@@ -0,0 +1,4 @@
1
+ export default class SessionManager {
2
+ init() { }
3
+ }
4
+ //# sourceMappingURL=Manager.js.map
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Public session API available inside routes with
3
+ * import session from "#session";
4
+ *
5
+ * `T` is inferred automatically from the app's `config/session.ts` schema.
6
+ */
7
+ export default interface SessionFacade<T> {
8
+ /**
9
+ * The unique session identifier for the current user, or `undefined` if no
10
+ * session has been created yet or if it has been destroyed.
11
+ *
12
+ * This value is typically sent back to the client in a cookie.
13
+ */
14
+ readonly id: string | undefined;
15
+ /**
16
+ * Whether a session currently exists.
17
+ *
18
+ * Equivalent to checking `id !== undefined`.
19
+ */
20
+ readonly exists: boolean;
21
+ /**
22
+ * Create a new session. Optionally accepts initial data.
23
+ *
24
+ * - If a session already exists, this is a no-op.
25
+ * - Data is validated through the schema if one was provided.
26
+ */
27
+ create(initial?: T): void;
28
+ /**
29
+ * Get the current session data.
30
+ *
31
+ * @throws if the session does not exist.
32
+ */
33
+ get(): Readonly<T>;
34
+ /**
35
+ * Get the current session data if it exists, otherwise return `undefined`.
36
+ */
37
+ try(): Readonly<T> | undefined;
38
+ /**
39
+ * Replace the current session data.
40
+ *
41
+ * - Accepts either a new object or a callback that maps the previous data to
42
+ * the next.
43
+ * - Data is validated through the schema if one was provided.
44
+ *
45
+ * @throws if the session does not exist.
46
+ */
47
+ set(next: ((previous: Readonly<T>) => T) | T): void;
48
+ /**
49
+ * Destroy the current session.
50
+ *
51
+ * - If no session exists, this is a no-op.
52
+ * - After destruction, `id` becomes `undefined` and `exists` returns `false`.
53
+ */
54
+ destroy(): void;
55
+ }
56
+ //# sourceMappingURL=SessionFacade.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SessionFacade.js.map
@@ -0,0 +1,20 @@
1
+ import kSerialize from "#session/k-serialize";
2
+ import type Schema from "@rcompat/type/Schema";
3
+ export default class SessionHandle<Data> {
4
+ #private;
5
+ [kSerialize]: () => {
6
+ data: Data | undefined;
7
+ dirty: boolean;
8
+ exists: boolean;
9
+ id: string | undefined;
10
+ };
11
+ constructor(id?: string, data?: Data, schema?: Schema<Data>);
12
+ get exists(): boolean;
13
+ get id(): string | undefined;
14
+ get(): Readonly<Data>;
15
+ try(): Readonly<Data> | undefined;
16
+ create(initial?: Data): void;
17
+ set(next: ((previous: Readonly<Data>) => Data) | Data): void;
18
+ destroy(): void;
19
+ }
20
+ //# sourceMappingURL=SessionHandle.d.ts.map
@@ -0,0 +1,67 @@
1
+ import kSerialize from "#session/k-serialize";
2
+ import assert from "@rcompat/assert";
3
+ import maybe from "@rcompat/assert/maybe";
4
+ export default class SessionHandle {
5
+ #id;
6
+ #data;
7
+ #schema;
8
+ #dirty = false;
9
+ constructor(id, data, schema) {
10
+ maybe(id).uuid();
11
+ maybe(data).record();
12
+ maybe(schema).object();
13
+ maybe(schema?.parse).function();
14
+ assert((id === undefined) === (data === undefined), "both `id` and `data` must be defined or undefined");
15
+ this.#id = id;
16
+ this.#data = data;
17
+ this.#schema = schema ?? { parse: (x) => x };
18
+ }
19
+ get exists() {
20
+ return this.#id !== undefined;
21
+ }
22
+ get id() {
23
+ return this.#id;
24
+ }
25
+ get() {
26
+ if (!this.exists)
27
+ throw new Error("session does not exist");
28
+ return this.#data;
29
+ }
30
+ try() {
31
+ return this.exists ? this.#data : undefined;
32
+ }
33
+ create(initial) {
34
+ // idempotent noop
35
+ if (this.exists)
36
+ return;
37
+ const parsed = this.#schema.parse(initial ?? {});
38
+ this.#id = crypto.randomUUID();
39
+ this.#data = parsed;
40
+ this.#dirty = true;
41
+ }
42
+ set(next) {
43
+ if (!this.exists)
44
+ throw new Error("cannot set() on non-existent session");
45
+ const previous = this.#data;
46
+ // @ts-expect-error TEST
47
+ const candidate = typeof next === "function" ? next(previous) : next;
48
+ this.#data = this.#schema.parse(candidate);
49
+ this.#dirty = true;
50
+ }
51
+ destroy() {
52
+ if (!this.exists)
53
+ return;
54
+ this.#id = undefined;
55
+ this.#data = undefined;
56
+ this.#dirty = true;
57
+ }
58
+ [kSerialize]() {
59
+ return {
60
+ data: this.#data,
61
+ dirty: this.#dirty,
62
+ exists: this.exists,
63
+ id: this.#id,
64
+ };
65
+ }
66
+ }
67
+ //# sourceMappingURL=SessionHandle.js.map
@@ -0,0 +1,13 @@
1
+ import Module from "#Module";
2
+ import type NextHandle from "#module/NextHandle";
3
+ import type NextServe from "#module/NextServe";
4
+ import type RequestFacade from "#request/RequestFacade";
5
+ import type ServeApp from "#ServeApp";
6
+ export default class SessionModule extends Module {
7
+ #private;
8
+ name: string;
9
+ constructor(app: ServeApp);
10
+ serve(app: ServeApp, next: NextServe): Promise<ServeApp>;
11
+ handle(request: RequestFacade, next: NextHandle): Promise<Response>;
12
+ }
13
+ //# sourceMappingURL=SessionModule.d.ts.map
@@ -0,0 +1,99 @@
1
+ import Module from "#Module";
2
+ import kSerialize from "#session/k-serialize";
3
+ import SessionHandle from "#session/SessionHandle";
4
+ import storage from "#session/storage";
5
+ const cookie = (name, value, options) => {
6
+ const parts = [`${name}=${value}`];
7
+ parts.push(`Path=${options.path}`);
8
+ parts.push(`SameSite=${options.sameSite}`);
9
+ if (options.maxAge !== undefined)
10
+ parts.push(`Max-Age=${options.maxAge}`);
11
+ if (options.httpOnly)
12
+ parts.push("HttpOnly");
13
+ if (options.secure)
14
+ parts.push("Secure");
15
+ return parts.join("; ");
16
+ };
17
+ export default class SessionModule extends Module {
18
+ name = "builtin/session";
19
+ #app;
20
+ #manager;
21
+ #secure;
22
+ constructor(app) {
23
+ super();
24
+ this.#app = app;
25
+ this.#secure = app.secure;
26
+ this.#manager = app.session.manager;
27
+ }
28
+ async serve(app, next) {
29
+ // initialize the session manager
30
+ await this.#manager.init?.();
31
+ return next(app);
32
+ }
33
+ async handle(request, next) {
34
+ const { name, ...config } = this.#app.session.cookie;
35
+ const sid = request.cookies.try(name);
36
+ const data = sid !== undefined ? await this.#manager.load(sid) : undefined;
37
+ const id = data !== undefined ? sid : undefined;
38
+ const session = new SessionHandle(id, data, this.#app.session.schema);
39
+ const response = await new Promise((resolve, reject) => {
40
+ storage().run(session, async () => {
41
+ try {
42
+ resolve(await next(request));
43
+ }
44
+ catch (e) {
45
+ reject(e);
46
+ }
47
+ });
48
+ });
49
+ const snap = session[kSerialize]();
50
+ // no cookie coming in, no session created
51
+ if (sid === undefined && !snap.exists)
52
+ return response;
53
+ const options = {
54
+ httpOnly: !!config.httpOnly,
55
+ path: config.path,
56
+ sameSite: config.sameSite,
57
+ secure: this.#secure,
58
+ };
59
+ // no session existed -> either create or noop (noop already returned)
60
+ if (id === undefined) {
61
+ if (!snap.exists) {
62
+ // stale cookie -> clear; no cookie, noop
63
+ if (sid !== undefined) {
64
+ response.headers.append("set-cookie", cookie(name, "", {
65
+ ...options, maxAge: 0,
66
+ }));
67
+ }
68
+ return response;
69
+ }
70
+ // safe due to fast-path
71
+ await this.#manager.create(snap.id, snap.data);
72
+ response.headers.append("set-cookie", cookie(name, snap.id, options));
73
+ return response;
74
+ }
75
+ // from here: session existed (id is defined)
76
+ // fast-path: session exists, same id and not dirty -> noop
77
+ if (snap.exists && snap.id === id && !snap.dirty)
78
+ return response;
79
+ // current absent -> destroy + clear cookie
80
+ if (!snap.exists) {
81
+ await this.#manager.destroy(id);
82
+ response.headers.append("set-cookie", cookie(name, "", {
83
+ ...options, maxAge: 0,
84
+ }));
85
+ return response;
86
+ }
87
+ // session recreated in route -> destroy old, create new, set cookie
88
+ if (snap.id !== id) {
89
+ await this.#manager.destroy(id);
90
+ await this.#manager.create(snap.id, snap.data);
91
+ response.headers.append("set-cookie", cookie(name, snap.id, options));
92
+ return response;
93
+ }
94
+ // dirty -> replace session contents
95
+ await this.#manager.save(id, snap.data);
96
+ return response;
97
+ }
98
+ }
99
+ //# sourceMappingURL=SessionModule.js.map
@@ -0,0 +1,13 @@
1
+ import configSchema from "#session/schema";
2
+ import type SessionFacade from "#session/SessionFacade";
3
+ import type Schema from "@rcompat/type/Schema";
4
+ type ConfigInput = typeof configSchema.input;
5
+ type InferSchema<S> = S extends {
6
+ parse(input: unknown): infer T;
7
+ } ? T : unknown;
8
+ export default function session<S extends Schema<any>>(config: {
9
+ schema: S;
10
+ } & Partial<ConfigInput>): SessionFacade<InferSchema<S>>;
11
+ export default function session(config?: Omit<Partial<ConfigInput>, "schema">): SessionFacade<unknown>;
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,41 @@
1
+ import configSchema from "#session/schema";
2
+ import local_storage from "#session/storage";
3
+ import s_config from "#symbol/config";
4
+ export default function session(config) {
5
+ const parsed = configSchema.parse(config ?? {});
6
+ const schema = config?.schema;
7
+ // bind the ALS store to this T (unknown at runtime; fine)
8
+ const storage = local_storage();
9
+ const current = () => {
10
+ const s = storage.getStore();
11
+ if (!s)
12
+ throw new Error("Session handle not available in this context");
13
+ return s;
14
+ };
15
+ const facade = {
16
+ get id() {
17
+ return current().id;
18
+ },
19
+ get exists() {
20
+ return current().exists;
21
+ },
22
+ create(initial) {
23
+ current().create(initial);
24
+ },
25
+ get() {
26
+ return current().get();
27
+ },
28
+ try() {
29
+ return current().try();
30
+ },
31
+ set(next) {
32
+ current().set(next);
33
+ },
34
+ destroy() {
35
+ current().destroy();
36
+ },
37
+ get [s_config]() { return { ...parsed, schema }; },
38
+ };
39
+ return facade;
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: symbol;
2
+ export default _default;
3
+ //# sourceMappingURL=k-serialize.d.ts.map
@@ -0,0 +1,2 @@
1
+ export default Symbol("primate.session.introspect");
2
+ //# sourceMappingURL=k-serialize.js.map
@@ -0,0 +1,14 @@
1
+ import SessionManager from "#session/Manager";
2
+ import type Schema from "@rcompat/type/Schema";
3
+ declare const _default: import("pema").ObjectType<{
4
+ cookie: import("pema").ObjectType<{
5
+ httpOnly: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
6
+ name: import("pema").DefaultType<import("pema/string").StringType, "session_id">;
7
+ path: import("pema").DefaultType<import("pema/string").StringType, "/">;
8
+ sameSite: import("pema").DefaultType<import("pema/union").UnionType<[import("pema").LiteralType<"Strict">, import("pema").LiteralType<"Lax">, import("pema").LiteralType<"None">]>, "Lax" | "None" | "Strict">;
9
+ }>;
10
+ manager: import("pema").DefaultType<import("pema/constructor").ConstructorType<typeof SessionManager>, SessionManager<unknown>>;
11
+ schema: import("pema").OptionalType<import("pema").PureType<Schema<unknown>, "PureType">>;
12
+ }>;
13
+ export default _default;
14
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1,20 @@
1
+ import InMemorySessionManager from "#session/InMemoryManager";
2
+ import SessionManager from "#session/Manager";
3
+ import pema from "pema";
4
+ import boolean from "pema/boolean";
5
+ import constructor from "pema/constructor";
6
+ import pure from "pema/pure";
7
+ import string from "pema/string";
8
+ import union from "pema/union";
9
+ export default pema({
10
+ cookie: {
11
+ httpOnly: boolean.default(true),
12
+ name: string.default("session_id"),
13
+ path: string.startsWith("/").default("/"),
14
+ sameSite: union("Strict", "Lax", "None").default("Lax"),
15
+ },
16
+ manager: constructor(SessionManager)
17
+ .default(() => new InMemorySessionManager()),
18
+ schema: pure().optional(),
19
+ });
20
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1,5 @@
1
+ import type SessionHandle from "#session/SessionHandle";
2
+ import AsyncLocalStorage from "@rcompat/async/context";
3
+ declare const _default: <Data>() => AsyncLocalStorage<SessionHandle<Data>>;
4
+ export default _default;
5
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1,5 @@
1
+ import AsyncLocalStorage from "@rcompat/async/context";
2
+ import cache from "@rcompat/kv/cache";
3
+ const s = Symbol("primate.session");
4
+ export default () => cache.get(s, () => new AsyncLocalStorage);
5
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: symbol;
2
+ export default _default;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1,2 @@
1
+ export default Symbol("@primate/core/symbol/config");
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: symbol;
2
+ export default _default;
3
+ //# sourceMappingURL=layout-depth.d.ts.map
@@ -0,0 +1,2 @@
1
+ export default Symbol("@primate/core/symbol/layout-depth");
2
+ //# sourceMappingURL=layout-depth.js.map
@@ -0,0 +1,10 @@
1
+ import type Font from "#asset/Font";
2
+ import type Script from "#asset/Script";
3
+ import type Style from "#asset/Style";
4
+ declare const _default: {
5
+ font({ as, crossorigin, href, rel, type }: Font): string;
6
+ script({ code, id, inline, integrity, src, type }: Script): string;
7
+ style({ code, href, inline }: Style): string;
8
+ };
9
+ export default _default;
10
+ //# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1,29 @@
1
+ import empty from "@rcompat/record/empty";
2
+ const attribute = (attributes) => empty(attributes)
3
+ ? ""
4
+ : " ".concat(Object.entries(attributes)
5
+ .map(([key, value]) => `${key}="${value}"`).join(" "));
6
+ const tag = (name, { attributes = {}, close = true, code = "" }) => `<${name}${attribute(attributes)}${close ? `>${code}</${name}>` : "/>"}`;
7
+ const nctag = (name, properties) => tag(name, { ...properties, close: false });
8
+ export default {
9
+ font({ as = "font", crossorigin = "true", href, rel = "preload", type }) {
10
+ return nctag("link", { attributes: { as, crossorigin, href, rel, type } });
11
+ },
12
+ // inline: <script type integrity>...</script>
13
+ // outline: <script type integrity src></script>
14
+ script({ code, id, inline, integrity, src, type }) {
15
+ return inline
16
+ ? id === undefined
17
+ ? tag("script", { attributes: { integrity, type }, code })
18
+ : tag("script", { attributes: { id, integrity, type }, code })
19
+ : tag("script", { attributes: { integrity, src, type } });
20
+ },
21
+ // inline: <style>...</style>
22
+ // outline: <link rel="stylesheet" href />
23
+ style({ code, href, inline }) {
24
+ return inline
25
+ ? tag("style", { code })
26
+ : nctag("link", { attributes: { href, rel: "stylesheet" } });
27
+ },
28
+ };
29
+ //# sourceMappingURL=tags.js.map
@@ -0,0 +1,14 @@
1
+ import type App from "#App";
2
+ import type Target from "#target/Target";
3
+ export default class TargetManager {
4
+ #private;
5
+ constructor(app: App);
6
+ get name(): string;
7
+ get target(): string;
8
+ has(name: string): boolean;
9
+ get(): Target;
10
+ set(name: string): void;
11
+ add(target: Target): void;
12
+ run(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=Manager.d.ts.map
@@ -0,0 +1,44 @@
1
+ import fail from "#fail";
2
+ import web from "#target/web";
3
+ export default class TargetManager {
4
+ #name = "web";
5
+ #targets = [web];
6
+ #app;
7
+ constructor(app) {
8
+ this.#app = app;
9
+ }
10
+ get name() {
11
+ return this.#name;
12
+ }
13
+ get target() {
14
+ return this.get().target;
15
+ }
16
+ has(name) {
17
+ return this.#targets
18
+ .find(target => target.name === name) !== undefined;
19
+ }
20
+ get() {
21
+ return this.#targets.find(target => target.name === this.#name);
22
+ }
23
+ set(name) {
24
+ if (!this.has(name)) {
25
+ let message = "no target {0}, available targets {1}";
26
+ if (this.#targets.length === 1) {
27
+ message += "\n - add {2} for more targets";
28
+ }
29
+ const targets = this.#targets.map(p => p.name).join(", ");
30
+ throw fail(message, name, targets, "@primate/native");
31
+ }
32
+ this.#name = name;
33
+ }
34
+ add(target) {
35
+ if (this.has(target.name)) {
36
+ throw fail("Cannot add target {0} twice", target.name);
37
+ }
38
+ this.#targets.push(target);
39
+ }
40
+ async run() {
41
+ await this.get().runner(this.#app);
42
+ }
43
+ }
44
+ //# sourceMappingURL=Manager.js.map
@@ -0,0 +1,8 @@
1
+ import type App from "#App";
2
+ import type MaybePromise from "@rcompat/type/MaybePromise";
3
+ export default interface Target {
4
+ name: string;
5
+ runner: (app: App) => MaybePromise<void>;
6
+ target: string;
7
+ }
8
+ //# sourceMappingURL=Target.d.ts.map
@@ -0,0 +1,3 @@
1
+ ;
2
+ export {};
3
+ //# sourceMappingURL=Target.js.map
@@ -0,0 +1,4 @@
1
+ import type Target from "#target/Target";
2
+ declare const web: Target;
3
+ export default web;
4
+ //# sourceMappingURL=web.d.ts.map