@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,305 @@
1
+ import App from "#App";
2
+ import DevModule from "#builtin/DevModule";
3
+ import HandleModule from "#builtin/HandleModule";
4
+ import fail from "#fail";
5
+ import hash from "#hash";
6
+ import I18NModule from "#i18n/Module";
7
+ import location from "#location";
8
+ import log from "#log";
9
+ import reducer from "#reducer";
10
+ import parse from "#request/parse";
11
+ import RequestBag from "#request/RequestBag";
12
+ import RequestBody from "#request/RequestBody";
13
+ import router from "#route/router";
14
+ import SessionModule from "#session/SessionModule";
15
+ import tags from "#tags";
16
+ import is from "@rcompat/assert/is";
17
+ import FileRef from "@rcompat/fs/FileRef";
18
+ import FileRouter from "@rcompat/fs/FileRouter";
19
+ import TEXT_HTML from "@rcompat/http/mime/text/html";
20
+ import serve from "@rcompat/http/serve";
21
+ import Status from "@rcompat/http/Status";
22
+ import entries from "@rcompat/record/entries";
23
+ import pema from "pema";
24
+ import record from "pema/record";
25
+ import string from "pema/string";
26
+ import uint from "pema/uint";
27
+ const deroot = (pathname) => pathname.endsWith("/") && pathname !== "/"
28
+ ? pathname.slice(0, -1)
29
+ : pathname;
30
+ // remove excess slashes
31
+ const deslash = (url) => url.replaceAll(/\/{2,}/gu, _ => "/");
32
+ const normalize = (pathname) => deroot(deslash(pathname));
33
+ const to_csp = (config_csp, assets, override) => config_csp
34
+ // only csp entries in the config will be enriched
35
+ .map(([key, directives]) =>
36
+ // enrich with application assets
37
+ [key, assets[key] ? directives.concat(...assets[key]) : directives])
38
+ .map(([key, directives]) =>
39
+ // enrich with explicit csp
40
+ [key, override[key] ? directives.concat(...override[key]) : directives])
41
+ .map(([key, directives]) => `${key} ${directives.join(" ")}`)
42
+ .join(";");
43
+ const render_head = (assets, head) => {
44
+ const fonts = assets.filter(asset => asset.src?.endsWith(".woff2"));
45
+ const rest = assets.filter(asset => !asset.src?.endsWith(".woff2")
46
+ && asset.type !== "js");
47
+ return rest.toSorted(({ type }) => -1 * Number(type === "importmap"))
48
+ .map(({ code, inline, integrity, src, type }) => type === "style"
49
+ ? tags.style({ code, href: src, inline })
50
+ : tags.script({ code, inline, integrity, src, type })).join("\n").concat("\n", head ?? "").concat("\n", fonts.map(font => tags.font({ href: font.src, type: "font/woff2" })).join("\n"));
51
+ };
52
+ const s_http = Symbol("s_http");
53
+ ;
54
+ export default class ServeApp extends App {
55
+ #init;
56
+ #server;
57
+ #components;
58
+ #csp = {};
59
+ #assets = [];
60
+ #stores;
61
+ #frontends = {};
62
+ #router;
63
+ #builtins;
64
+ #i18n_config;
65
+ constructor(rootfile, init) {
66
+ super(new FileRef(rootfile).directory, init.config, init.mode);
67
+ this.#init = init;
68
+ this.#components = Object.fromEntries(init.components ?? []);
69
+ this.#stores = Object.fromEntries((init.stores?.map(([k, s]) => [k, s.default])) ?? []);
70
+ const http = this.#init.config.http;
71
+ this.#i18n_config = init.i18n_config;
72
+ this.set(s_http, {
73
+ host: http.host,
74
+ port: http.port,
75
+ ssl: this.secure ? {
76
+ cert: this.root.join(http.ssl.cert),
77
+ key: this.root.join(http.ssl.key),
78
+ } : {},
79
+ });
80
+ this.#router = FileRouter.init({
81
+ extensions: [".js"],
82
+ specials: {
83
+ error: { recursive: false },
84
+ guard: { recursive: true },
85
+ layout: { recursive: true },
86
+ },
87
+ }, init.files.routes.map(s => s[0]));
88
+ this.#builtins = {
89
+ dev: init.mode === "development" ? new DevModule(this) : undefined,
90
+ handle: new HandleModule(this),
91
+ session: new SessionModule(this),
92
+ i18n: init.i18n_config ? new I18NModule(init.i18n_config) : undefined,
93
+ };
94
+ }
95
+ ;
96
+ get secure() {
97
+ const ssl = this.config("http.ssl");
98
+ return ssl.key !== undefined && ssl.cert !== undefined;
99
+ }
100
+ loader() {
101
+ return this.#init.loader;
102
+ }
103
+ serve(pathname) {
104
+ return this.loader().serve(pathname);
105
+ }
106
+ get assets() {
107
+ return this.#assets;
108
+ }
109
+ get modules() {
110
+ const { session, i18n } = this.#builtins;
111
+ return [session, i18n, ...super.modules].filter(m => m !== undefined);
112
+ }
113
+ get url() {
114
+ const { host, port } = this.config("http");
115
+ return `http${this.secure ? "s" : ""}://${host}:${port}`;
116
+ }
117
+ ;
118
+ get router() {
119
+ return this.#router;
120
+ }
121
+ get frontends() {
122
+ return { ...this.#frontends };
123
+ }
124
+ get files() {
125
+ return this.#init.files;
126
+ }
127
+ get stores() {
128
+ return this.#stores;
129
+ }
130
+ get i18n() {
131
+ return this.#i18n_config;
132
+ }
133
+ component(name) {
134
+ const base = name.slice(0, name.lastIndexOf((".")));
135
+ const component = this.#components[base];
136
+ if (component === undefined) {
137
+ throw fail("missing component {0}", `${location.components}/${name}`);
138
+ }
139
+ return (component.default ?? component);
140
+ }
141
+ ;
142
+ headers(csp = {}) {
143
+ const http_csp = Object.entries(this.config("http.csp") ?? {});
144
+ return {
145
+ ...this.config("http.headers") ?? {},
146
+ ...http_csp.length === 0 ? {} : {
147
+ "Content-Security-Policy": to_csp(http_csp, this.#csp, csp),
148
+ },
149
+ };
150
+ }
151
+ ;
152
+ render(content) {
153
+ const { body, head, page, partial, placeholders = {} } = content;
154
+ ["body", "head"].forEach(key => is(placeholders[key]).undefined());
155
+ return partial ? body : Object.entries(placeholders)
156
+ // replace given placeholders, defaulting to ""
157
+ .reduce((rendered, [key, value]) => rendered
158
+ .replaceAll(`%${key}%`, value?.toString() ?? ""), this.page(page))
159
+ // replace non-given placeholders, aside from %body% / %head%
160
+ .replaceAll(/(?<keep>%(?:head|body)%)|%.*?%/gus, "$1")
161
+ // replace body and head
162
+ .replace("%body%", body)
163
+ .replace("%head%", render_head(this.#assets, head));
164
+ }
165
+ page(page) {
166
+ return this.loader().page(page);
167
+ }
168
+ respond(body, init) {
169
+ const { headers, status } = pema({
170
+ headers: record(string, string),
171
+ status: uint.values(Status).default(Status.OK),
172
+ }).parse(init);
173
+ return new Response(body, {
174
+ headers: {
175
+ "Content-Type": TEXT_HTML, ...this.headers(), ...headers,
176
+ }, status: status,
177
+ });
178
+ }
179
+ ;
180
+ view(options) {
181
+ // split render and respond options
182
+ const { headers = {}, status = Status.OK, statusText, ...rest } = options;
183
+ return this.respond(this.render(rest), { headers, status });
184
+ }
185
+ ;
186
+ media(content_type, response = {}) {
187
+ return {
188
+ headers: { ...response.headers, "Content-Type": content_type },
189
+ status: response.status ?? Status.OK,
190
+ };
191
+ }
192
+ ;
193
+ async publish({ code, inline = false, src, type = "" }) {
194
+ if (inline || type === "style") {
195
+ this.#assets.push({
196
+ code: inline ? code : "",
197
+ inline,
198
+ integrity: await hash(code),
199
+ src: FileRef.join(this.#init.config.http.static.root, src ?? "").path,
200
+ type,
201
+ });
202
+ }
203
+ // rehash assets_csp
204
+ this.create_csp();
205
+ }
206
+ ;
207
+ create_csp() {
208
+ this.#csp = this.#assets.map(({ integrity, type: directive }) => [`${directive === "style" ? "style" : "script"}-src`, integrity])
209
+ .reduce((csp, [directive, hash]) => ({ ...csp, [directive]: csp[directive].concat(`'${hash}'`) }), { "script-src": [], "style-src": [] });
210
+ }
211
+ ;
212
+ register(extension, viewFunction) {
213
+ if (this.#frontends[extension] !== undefined) {
214
+ throw fail("double file extension {0}", extension);
215
+ }
216
+ this.#frontends[extension] = viewFunction;
217
+ }
218
+ ;
219
+ async start() {
220
+ this.#assets = await Promise.all(this.#init.assets.map(async (asset) => {
221
+ const code = asset.type === "importmap"
222
+ ? JSON.stringify(asset.code, null, 2)
223
+ : asset.code;
224
+ return {
225
+ ...asset,
226
+ code,
227
+ integrity: await hash(code),
228
+ };
229
+ }));
230
+ const modules = [
231
+ this.#builtins.dev,
232
+ ...this.modules,
233
+ this.#builtins.handle,
234
+ ].filter(m => m !== undefined);
235
+ const handle = (request) => reducer(modules, request, "handle");
236
+ this.#server = await serve(async (request) => {
237
+ try {
238
+ return await handle(parse(request));
239
+ }
240
+ catch (error) {
241
+ log.error(error);
242
+ return new Response(null, { status: Status.INTERNAL_SERVER_ERROR });
243
+ }
244
+ }, this.get(s_http));
245
+ log.system("started {0}", this.url);
246
+ }
247
+ ;
248
+ stop() {
249
+ this.#server.stop();
250
+ log.system("stopped {0}", this.url);
251
+ }
252
+ ;
253
+ upgrade(request, actions) {
254
+ return this.#server.upgrade(request, actions);
255
+ }
256
+ async route(request) {
257
+ const { original, url } = request;
258
+ const pathname = normalize(url.pathname);
259
+ const route = this.router.match(original);
260
+ if (route === undefined) {
261
+ log.info("no {0} route to {1}", original.method, pathname);
262
+ return;
263
+ }
264
+ const verb = original.method.toLowerCase();
265
+ const { errors = [], guards = [], layouts = [] } = entries(route.specials)
266
+ .map(([key, value]) => [`${key}s`, value ?? []])
267
+ .map(([key, value]) => [key, value.map(v => {
268
+ const verbs = router.get(v);
269
+ const routeHandler = verbs[verb];
270
+ if (routeHandler === undefined) {
271
+ throw fail("route {0} has no {1} verb", route.path, verb);
272
+ }
273
+ return routeHandler.handler;
274
+ })])
275
+ .get();
276
+ const verbs = router.get(route.path);
277
+ const routePath = verbs[verb];
278
+ if (routePath === undefined) {
279
+ throw fail("route {0} has no {1} verb", route.path, verb);
280
+ }
281
+ const parseBody = routePath.options.parseBody;
282
+ const body = parseBody ?? this.config("request.body.parse")
283
+ ? await RequestBody.parse(original, url)
284
+ : RequestBody.none();
285
+ return {
286
+ errors,
287
+ guards,
288
+ handler: routePath.handler,
289
+ layouts,
290
+ request: {
291
+ ...request,
292
+ body,
293
+ path: new RequestBag(route.params, "path", {
294
+ normalize: k => k.toLowerCase(),
295
+ raw: url.pathname,
296
+ }),
297
+ },
298
+ };
299
+ }
300
+ get session() {
301
+ return this.#init.session_config;
302
+ }
303
+ ;
304
+ }
305
+ //# sourceMappingURL=ServeApp.js.map
@@ -0,0 +1,29 @@
1
+ import type Asset from "#asset/Asset";
2
+ import type Config from "#config/Config";
3
+ import type I18NConfig from "#i18n/Config";
4
+ import type Loader from "#Loader";
5
+ import type Mode from "#Mode";
6
+ import type SessionConfig from "#session/Config";
7
+ import type Dict from "@rcompat/type/Dict";
8
+ type Import = {
9
+ default: unknown;
10
+ } & Dict;
11
+ type BuildFiles = {
12
+ routes: [string, {
13
+ default: any;
14
+ }][];
15
+ };
16
+ type ServeInit = {
17
+ assets: Asset[];
18
+ components?: [string, Import][];
19
+ stores?: [string, Import][];
20
+ config: Config;
21
+ files: BuildFiles;
22
+ loader: Loader;
23
+ mode: Mode;
24
+ target: string;
25
+ session_config: SessionConfig;
26
+ i18n_config?: I18NConfig;
27
+ };
28
+ export type { ServeInit as default };
29
+ //# sourceMappingURL=ServeInit.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ServeInit.js.map
@@ -0,0 +1,11 @@
1
+ import type Dict from "@rcompat/type/Dict";
2
+ export default interface Asset {
3
+ code: {
4
+ imports: Dict;
5
+ } | string;
6
+ inline: boolean;
7
+ integrity: string;
8
+ src?: string;
9
+ type: string;
10
+ }
11
+ //# sourceMappingURL=Asset.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Asset.js.map
@@ -0,0 +1,8 @@
1
+ export default interface Font {
2
+ as: string;
3
+ crossorigin: string;
4
+ href: string;
5
+ rel: "preload";
6
+ type: string;
7
+ }
8
+ //# sourceMappingURL=Font.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Font.js.map
@@ -0,0 +1,9 @@
1
+ export default interface Script {
2
+ code: string;
3
+ id?: string;
4
+ inline: boolean;
5
+ integrity: string;
6
+ src?: string;
7
+ type: string;
8
+ }
9
+ //# sourceMappingURL=Script.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Script.js.map
@@ -0,0 +1,6 @@
1
+ export default interface Style {
2
+ code: string;
3
+ href?: string;
4
+ inline: boolean;
5
+ }
6
+ //# sourceMappingURL=Style.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Style.js.map
@@ -0,0 +1,18 @@
1
+ import Module from "#Module";
2
+ export default abstract class BackendModule extends Module {
3
+ #private;
4
+ abstract defaultExtension: string;
5
+ static schema: import("pema").ObjectType<{
6
+ fileExtension: import("pema").OptionalType<import("pema/string").StringType>;
7
+ }>;
8
+ static options: {
9
+ fileExtension: string | undefined;
10
+ };
11
+ static input: {
12
+ fileExtension?: string | undefined;
13
+ } | undefined;
14
+ constructor(options?: typeof BackendModule.schema.input);
15
+ get fileExtension(): string;
16
+ get package(): string;
17
+ }
18
+ //# sourceMappingURL=Module.d.ts.map
@@ -0,0 +1,22 @@
1
+ import Module from "#Module";
2
+ import pema from "pema";
3
+ import string from "pema/string";
4
+ export default class BackendModule extends Module {
5
+ #options;
6
+ static schema = pema({
7
+ fileExtension: string.optional(),
8
+ });
9
+ static options = BackendModule.schema.infer;
10
+ static input = BackendModule.schema.input;
11
+ constructor(options) {
12
+ super();
13
+ this.#options = BackendModule.schema.parse(options);
14
+ }
15
+ get fileExtension() {
16
+ return this.#options.fileExtension ?? this.defaultExtension;
17
+ }
18
+ get package() {
19
+ return `@primate/${this.name}`;
20
+ }
21
+ }
22
+ //# sourceMappingURL=Module.js.map
@@ -0,0 +1,4 @@
1
+ import type Mode from "#Mode";
2
+ declare const _default: (mode: Mode, target: string) => Promise<true | undefined>;
3
+ export default _default;
4
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1,45 @@
1
+ import BuildApp from "#BuildApp";
2
+ import bye from "#bye";
3
+ import default_config from "#config/index";
4
+ import fail from "#fail";
5
+ import log from "#log";
6
+ import root from "@rcompat/package/root";
7
+ import empty from "@rcompat/record/empty";
8
+ const no_config = (config) => config === undefined || empty(config);
9
+ const find_config = async (project_root) => {
10
+ const ts_config = project_root.join("config/app.ts");
11
+ if (await ts_config.exists())
12
+ return ts_config;
13
+ const js_config = project_root.join("config/app.js");
14
+ if (await js_config.exists())
15
+ return js_config;
16
+ };
17
+ const get_config = async (project_root) => {
18
+ const config = await find_config(project_root);
19
+ if (config !== undefined) {
20
+ try {
21
+ const imported = await config.import("default");
22
+ if (no_config(imported))
23
+ throw fail("empty config file at {0}", config);
24
+ return imported;
25
+ }
26
+ catch (error) {
27
+ throw fail("error in config file {0}", error);
28
+ }
29
+ }
30
+ return default_config();
31
+ };
32
+ export default async (mode, target) => {
33
+ try {
34
+ const package_root = await root();
35
+ const config = await get_config(package_root);
36
+ const app = await new BuildApp(package_root, config, mode).init(target);
37
+ await app.buildInit();
38
+ return true;
39
+ }
40
+ catch (error) {
41
+ log.error(error);
42
+ bye();
43
+ }
44
+ };
45
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1,11 @@
1
+ import Module from "#Module";
2
+ import type NextHandle from "#module/NextHandle";
3
+ import type RequestFacade from "#request/RequestFacade";
4
+ import type ServeApp from "#ServeApp";
5
+ export default class DevModule extends Module {
6
+ #private;
7
+ name: string;
8
+ constructor(app: ServeApp);
9
+ handle(request: RequestFacade, next: NextHandle): import("@rcompat/type/MaybePromise").default<Response>;
10
+ }
11
+ //# sourceMappingURL=DevModule.d.ts.map
@@ -0,0 +1,32 @@
1
+ import Module from "#Module";
2
+ import reload_defaults from "@rcompat/build/reload/defaults";
3
+ import reload_path from "@rcompat/build/reload/path";
4
+ function pass(address, request) {
5
+ return fetch(address, {
6
+ body: request.body,
7
+ duplex: "half",
8
+ headers: request.headers,
9
+ method: request.method,
10
+ });
11
+ }
12
+ export default class DevModule extends Module {
13
+ name = "builtin/dev";
14
+ #paths;
15
+ #reload_url;
16
+ constructor(app) {
17
+ super();
18
+ const assets = app.assets
19
+ .filter(asset => asset.type !== "importmap")
20
+ .map(asset => asset.src);
21
+ const http = app.config("http");
22
+ this.#paths = ([reload_path]).concat(assets);
23
+ this.#reload_url = `http://${http.host}:${reload_defaults.port}`;
24
+ }
25
+ handle(request, next) {
26
+ const { pathname } = new URL(request.url);
27
+ return this.#paths.includes(pathname)
28
+ ? pass(`${this.#reload_url}${pathname}`, request.original)
29
+ : next(request);
30
+ }
31
+ }
32
+ //# sourceMappingURL=DevModule.js.map
@@ -0,0 +1,10 @@
1
+ import Module from "#Module";
2
+ import type RequestFacade from "#request/RequestFacade";
3
+ import type ServeApp from "#ServeApp";
4
+ export default class HandleModule extends Module {
5
+ #private;
6
+ name: string;
7
+ constructor(app: ServeApp);
8
+ handle(request: RequestFacade): Promise<Response>;
9
+ }
10
+ //# sourceMappingURL=HandleModule.d.ts.map
@@ -0,0 +1,15 @@
1
+ import route from "#request/route";
2
+ import Module from "#Module";
3
+ export default class HandleModule extends Module {
4
+ name = "builtin/handle";
5
+ #app;
6
+ constructor(app) {
7
+ super();
8
+ this.#app = app;
9
+ }
10
+ async handle(request) {
11
+ return await this.#app.serve(request.url.pathname)
12
+ ?? route(this.#app, request);
13
+ }
14
+ }
15
+ //# sourceMappingURL=HandleModule.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: () => boolean;
2
+ export default _default;
3
+ //# sourceMappingURL=bye.d.ts.map
@@ -1,5 +1,5 @@
1
- import print from "@rcompat/cli/print";
2
1
  import dim from "@rcompat/cli/color/dim";
3
2
  import yellow from "@rcompat/cli/color/yellow";
4
-
3
+ import print from "@rcompat/cli/print";
5
4
  export default () => print(dim(yellow("~~ bye\n")));
5
+ //# sourceMappingURL=bye.js.map
@@ -0,0 +1,4 @@
1
+ export default class ClientApp {
2
+ start(): void;
3
+ }
4
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1,12 @@
1
+ // @ts-expect-error esbuild vfs
2
+ import * as frontends from "#frontends";
3
+ export default class ClientApp {
4
+ start() {
5
+ const hydration = document.getElementById("hydration")?.textContent;
6
+ if (hydration !== undefined) {
7
+ const { component, frontend, ...data } = JSON.parse(hydration);
8
+ frontends[frontend]?.mount(component, data);
9
+ }
10
+ }
11
+ }
12
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1,9 @@
1
+ import type Dict from "@rcompat/type/Dict";
2
+ type ClientData<T extends Dict = Dict> = {
3
+ component: string;
4
+ request: Dict;
5
+ spa: boolean;
6
+ ssr: boolean;
7
+ } & T;
8
+ export type { ClientData as default };
9
+ //# sourceMappingURL=Data.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Data.js.map
@@ -0,0 +1,13 @@
1
+ import type Dict from "@rcompat/type/Dict";
2
+ import type JSONPointer from "@rcompat/type/JSONPointer";
3
+ import type JSONValue from "@rcompat/type/JSONValue";
4
+ type ValidateInit<T> = {
5
+ headers?: Dict<string>;
6
+ initial: T;
7
+ map?: (value: T) => JSONValue;
8
+ method: "DELETE" | "PATCH" | "POST" | "PUT";
9
+ path?: JSONPointer;
10
+ url: string;
11
+ };
12
+ export type { ValidateInit as default };
13
+ //# sourceMappingURL=ValidateInit.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ValidateInit.js.map
@@ -0,0 +1,3 @@
1
+ type ValidateUpdater<T> = (previous: T) => T;
2
+ export type { ValidateUpdater as default };
3
+ //# sourceMappingURL=ValidateUpdater.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ValidateUpdater.js.map
@@ -0,0 +1,6 @@
1
+ import type Issue from "pema/Issue";
2
+ type ValidationError = {
3
+ issues?: ReadonlyArray<Issue>;
4
+ } & Error;
5
+ export type { ValidationError as default };
6
+ //# sourceMappingURL=ValidationError.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ValidationError.js.map
@@ -0,0 +1,6 @@
1
+ import type ClientData from "#client/Data";
2
+ import type Dict from "@rcompat/type/Dict";
3
+ type Updater<T extends Dict> = (json: ClientData<T>, after?: () => void) => void;
4
+ declare const _default: <T extends Dict>(updater: Updater<T>) => void;
5
+ export default _default;
6
+ //# sourceMappingURL=index.d.ts.map