@primate/core 0.4.6 → 0.6.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 (556) hide show
  1. package/lib/private/App.d.ts +771 -6
  2. package/lib/private/App.js +49 -16
  3. package/lib/private/Binder.d.ts +2 -2
  4. package/lib/private/Flags.d.ts +8 -4
  5. package/lib/private/Module.d.ts +4 -16
  6. package/lib/private/Module.js +1 -17
  7. package/lib/private/app/EnvSchema.d.ts +5 -0
  8. package/lib/private/app/EnvSchema.js +2 -0
  9. package/lib/private/app/Facade.browser.d.ts +11 -0
  10. package/lib/private/app/Facade.browser.js +19 -0
  11. package/lib/private/app/Facade.d.ts +811 -0
  12. package/lib/private/app/Facade.js +56 -0
  13. package/lib/private/asset/Asset.d.ts +1 -1
  14. package/lib/private/build/App.d.ts +2 -2
  15. package/lib/private/build/App.js +0 -2
  16. package/lib/private/build/client/index.js +19 -10
  17. package/lib/private/build/client/plugin/app-request.d.ts +4 -0
  18. package/lib/private/build/client/plugin/app-request.js +19 -0
  19. package/lib/private/build/client/plugin/view.d.ts +4 -0
  20. package/lib/private/build/client/plugin/view.js +13 -0
  21. package/lib/private/build/hook.d.ts +1 -2
  22. package/lib/private/build/hook.js +25 -19
  23. package/lib/private/build/index.d.ts +2 -1
  24. package/lib/private/build/index.js +27 -27
  25. package/lib/private/build/presets.d.ts +10 -0
  26. package/lib/private/build/presets.js +39 -0
  27. package/lib/private/build/server/index.js +10 -14
  28. package/lib/private/build/server/plugin/app-request.d.ts +4 -0
  29. package/lib/private/build/server/plugin/app-request.js +19 -0
  30. package/lib/private/build/server/plugin/assets.js +9 -7
  31. package/lib/private/build/server/plugin/config.js +11 -4
  32. package/lib/private/build/server/plugin/frontend.js +4 -2
  33. package/lib/private/build/server/plugin/live-reload.d.ts +4 -0
  34. package/lib/private/build/server/plugin/{hot-reload.js → live-reload.js} +12 -12
  35. package/lib/private/build/server/plugin/native-addons.js +10 -11
  36. package/lib/private/build/server/plugin/node-imports.js +2 -2
  37. package/lib/private/build/server/plugin/route.js +4 -4
  38. package/lib/private/build/server/plugin/store.js +11 -33
  39. package/lib/private/build/server/plugin/stores.js +12 -9
  40. package/lib/private/build/server/plugin/view.js +5 -5
  41. package/lib/private/build/server/plugin/views.js +4 -4
  42. package/lib/private/build/server/plugin/virtual-pages.js +8 -8
  43. package/lib/private/build/server/plugin/virtual-routes.js +8 -13
  44. package/lib/private/build/server/plugin/wasm.js +2 -3
  45. package/lib/private/build/shared/plugin/app-request.d.ts +4 -0
  46. package/lib/private/build/shared/plugin/app-request.js +19 -0
  47. package/lib/private/bye.js +2 -3
  48. package/lib/private/client/Data.d.ts +3 -2
  49. package/lib/private/client/Render.d.ts +8 -0
  50. package/lib/private/{frontend → client}/ServerData.d.ts +1 -1
  51. package/lib/private/client/ServerView.d.ts +4 -0
  52. package/lib/private/client/ValidateInit.d.ts +1 -3
  53. package/lib/private/client/ValidationError.d.ts +1 -1
  54. package/lib/private/{frontend → client}/View.d.ts +1 -1
  55. package/lib/private/{frontend → client}/ViewOptions.d.ts +1 -1
  56. package/lib/private/{frontend → client}/ViewResponse.d.ts +2 -2
  57. package/lib/private/client/app.js +3 -3
  58. package/lib/private/client/boot.d.ts +5 -0
  59. package/lib/private/client/boot.js +64 -0
  60. package/lib/private/client/create-form.d.ts +32 -0
  61. package/lib/private/client/create-form.js +123 -0
  62. package/lib/private/client/extract-issues.d.ts +4 -0
  63. package/lib/private/client/extract-issues.js +21 -0
  64. package/lib/private/client/http.d.ts +13 -0
  65. package/lib/private/client/http.js +57 -0
  66. package/lib/private/client/index.d.ts +23 -0
  67. package/lib/private/client/index.js +16 -0
  68. package/lib/private/client/navigate.d.ts +13 -0
  69. package/lib/private/client/navigate.js +67 -0
  70. package/lib/private/client/root.d.ts +9 -0
  71. package/lib/private/client/root.js +11 -0
  72. package/lib/private/client/submit.d.ts +2 -0
  73. package/lib/private/client/submit.js +41 -0
  74. package/lib/private/client/{toValidated.d.ts → to-validated.d.ts} +2 -4
  75. package/lib/private/client/{toValidated.js → to-validated.js} +1 -1
  76. package/lib/private/client/validate-field.d.ts +3 -0
  77. package/lib/private/client/validate-field.js +41 -0
  78. package/lib/private/config/index.d.ts +7 -21
  79. package/lib/private/config/index.js +4 -1
  80. package/lib/private/config/schema.d.ts +82 -22
  81. package/lib/private/config/schema.js +25 -7
  82. package/lib/private/cookie.d.ts +12 -6
  83. package/lib/private/cookie.js +10 -14
  84. package/lib/private/db/As.d.ts +10 -0
  85. package/lib/private/db/DB.d.ts +49 -0
  86. package/lib/private/db/DB.js +3 -0
  87. package/lib/private/db/DataDict.d.ts +5 -0
  88. package/lib/private/db/DataKey.d.ts +4 -0
  89. package/lib/private/db/DataValue.d.ts +17 -0
  90. package/lib/private/db/MemoryDB.d.ts +33 -0
  91. package/lib/private/db/MemoryDB.js +335 -0
  92. package/lib/private/db/PK.d.ts +3 -0
  93. package/lib/private/db/PK.js +2 -0
  94. package/lib/private/{database → db}/Query.d.ts +2 -2
  95. package/lib/private/{database → db}/QueryBuilder.d.ts +2 -3
  96. package/lib/private/db/ReadArgs.d.ts +9 -0
  97. package/lib/private/db/ReadArgs.js +2 -0
  98. package/lib/private/db/ReadRelationsArgs.d.ts +6 -0
  99. package/lib/private/db/ReadRelationsArgs.js +2 -0
  100. package/lib/private/{database → db}/Schema.d.ts +1 -2
  101. package/lib/private/db/Sort.d.ts +4 -0
  102. package/lib/private/{database → db}/TypeMap.d.ts +2 -3
  103. package/lib/private/{database → db}/Types.d.ts +1 -1
  104. package/lib/private/db/With.d.ts +16 -0
  105. package/lib/private/db/With.js +2 -0
  106. package/lib/private/db/common.d.ts +25 -0
  107. package/lib/private/db/common.js +67 -0
  108. package/lib/private/db/errors.d.ts +104 -0
  109. package/lib/private/db/errors.js +237 -0
  110. package/lib/private/db/migrate/apply.d.ts +2 -0
  111. package/lib/private/db/migrate/apply.js +32 -0
  112. package/lib/private/db/migrate/bundle.d.ts +3 -0
  113. package/lib/private/db/migrate/bundle.js +22 -0
  114. package/lib/private/db/migrate/create.d.ts +2 -0
  115. package/lib/private/db/migrate/create.js +154 -0
  116. package/lib/private/db/migrate/index.d.ts +10 -0
  117. package/lib/private/db/migrate/index.js +6 -0
  118. package/lib/private/db/migrate/status.d.ts +2 -0
  119. package/lib/private/db/migrate/status.js +38 -0
  120. package/lib/private/db/migrate/store.d.ts +5 -0
  121. package/lib/private/db/migrate/store.js +33 -0
  122. package/lib/private/db/sql.d.ts +28 -0
  123. package/lib/private/db/sql.js +177 -0
  124. package/lib/private/db/storage.d.ts +3 -0
  125. package/lib/private/db/storage.js +3 -0
  126. package/lib/private/db/symbol.js +2 -0
  127. package/lib/private/db/test.d.ts +4 -0
  128. package/lib/private/db/test.js +1750 -0
  129. package/lib/private/errors.d.ts +88 -0
  130. package/lib/private/errors.js +211 -0
  131. package/lib/private/frontend.d.ts +72 -0
  132. package/lib/private/frontend.js +245 -0
  133. package/lib/private/hash.js +0 -1
  134. package/lib/private/i18n/Catalog.d.ts +5 -2
  135. package/lib/private/i18n/Formatter.js +21 -9
  136. package/lib/private/i18n/errors.d.ts +16 -0
  137. package/lib/private/i18n/errors.js +27 -0
  138. package/lib/private/i18n/format.d.ts +4 -0
  139. package/lib/private/i18n/format.js +95 -0
  140. package/lib/private/i18n/index/client.d.ts +9 -0
  141. package/lib/private/i18n/index/client.js +152 -0
  142. package/lib/private/i18n/index/server.d.ts +9 -0
  143. package/lib/private/i18n/index/server.js +57 -0
  144. package/lib/private/i18n/index/types.d.ts +33 -0
  145. package/lib/private/i18n/index/types.js +2 -0
  146. package/lib/private/i18n/locale.d.ts +9 -3
  147. package/lib/private/i18n/module.d.ts +3 -0
  148. package/lib/private/i18n/module.js +115 -0
  149. package/lib/private/i18n/ordinals.d.ts +1 -1
  150. package/lib/private/i18n/resolve.d.ts +7 -0
  151. package/lib/private/i18n/resolve.js +30 -0
  152. package/lib/private/i18n/schema.d.ts +10 -5
  153. package/lib/private/i18n/schema.js +6 -10
  154. package/lib/private/i18n/storage.d.ts +3 -0
  155. package/lib/private/i18n/storage.js +5 -0
  156. package/lib/private/i18n/validate.d.ts +2 -0
  157. package/lib/private/i18n/validate.js +19 -0
  158. package/lib/private/index.d.ts +14 -0
  159. package/lib/private/index.js +2 -0
  160. package/lib/private/log.d.ts +1 -0
  161. package/lib/private/log.js +15 -14
  162. package/lib/private/module/Hook.d.ts +1 -1
  163. package/lib/private/module/Next.d.ts +1 -1
  164. package/lib/private/module/Setup.d.ts +21 -0
  165. package/lib/private/module/Setup.js +2 -0
  166. package/lib/private/module/create.d.ts +16 -0
  167. package/lib/private/module/create.js +28 -0
  168. package/lib/private/orm/ExtractSchema.d.ts +9 -0
  169. package/lib/private/orm/ExtractSchema.js +2 -0
  170. package/lib/private/orm/ForeignKey.d.ts +14 -0
  171. package/lib/private/orm/ForeignKey.js +25 -0
  172. package/lib/private/orm/PrimaryKey.d.ts +17 -0
  173. package/lib/private/orm/PrimaryKey.js +38 -0
  174. package/lib/private/orm/StoreInput.d.ts +10 -0
  175. package/lib/private/orm/StoreInput.js +2 -0
  176. package/lib/private/orm/key.d.ts +8 -0
  177. package/lib/private/orm/key.js +8 -0
  178. package/lib/private/orm/parse.d.ts +13 -0
  179. package/lib/private/orm/parse.js +29 -0
  180. package/lib/private/orm/relation.d.ts +43 -0
  181. package/lib/private/orm/relation.js +26 -0
  182. package/lib/private/orm/store.d.ts +187 -0
  183. package/lib/private/orm/store.js +542 -0
  184. package/lib/private/paths.d.ts +2 -2
  185. package/lib/private/paths.js +3 -3
  186. package/lib/private/request/RequestBag.d.ts +5 -1
  187. package/lib/private/request/RequestBag.js +16 -9
  188. package/lib/private/request/RequestBody.d.ts +6 -11
  189. package/lib/private/request/RequestBody.js +51 -59
  190. package/lib/private/request/RequestContext.d.ts +12 -0
  191. package/lib/private/request/RequestContext.js +31 -0
  192. package/lib/private/request/RequestFacade.d.ts +11 -6
  193. package/lib/private/request/RequestPublic.d.ts +9 -0
  194. package/lib/private/request/RequestPublic.js +2 -0
  195. package/lib/private/request/RequestView.d.ts +11 -0
  196. package/lib/private/request/RequestView.js +3 -0
  197. package/lib/private/request/handle.d.ts +4 -0
  198. package/lib/private/request/handle.js +18 -0
  199. package/lib/private/request/parse.d.ts +2 -2
  200. package/lib/private/request/parse.js +55 -16
  201. package/lib/private/request/route.js +37 -22
  202. package/lib/private/request/router.d.ts +1 -1
  203. package/lib/private/request/router.js +22 -50
  204. package/lib/private/{database/symbol/wrap.d.ts → request/sContext.d.ts} +1 -1
  205. package/lib/private/request/sContext.js +2 -0
  206. package/lib/private/request/storage.d.ts +4 -0
  207. package/lib/private/request/storage.js +5 -0
  208. package/lib/private/response/ResponseFunction.d.ts +2 -3
  209. package/lib/private/response/ResponseLike.d.ts +1 -1
  210. package/lib/private/response/binary.d.ts +1 -1
  211. package/lib/private/response/binary.js +4 -3
  212. package/lib/private/response/error.d.ts +1 -1
  213. package/lib/private/response/error.js +1 -1
  214. package/lib/private/response/json.d.ts +1 -1
  215. package/lib/private/response/json.js +2 -2
  216. package/lib/private/response/redirect.d.ts +5 -5
  217. package/lib/private/response/redirect.js +9 -10
  218. package/lib/private/response/respond.js +16 -17
  219. package/lib/private/response/sse.d.ts +1 -1
  220. package/lib/private/response/sse.js +2 -2
  221. package/lib/private/response/text.d.ts +1 -1
  222. package/lib/private/response/text.js +3 -3
  223. package/lib/private/response/view.d.ts +3 -3
  224. package/lib/private/response/view.js +7 -14
  225. package/lib/private/response/ws.d.ts +1 -1
  226. package/lib/private/response.d.ts +1 -1
  227. package/lib/private/route/Handler.d.ts +1 -1
  228. package/lib/private/route/hook.d.ts +6 -0
  229. package/lib/private/route/hook.js +5 -0
  230. package/lib/private/route/router.d.ts +6 -2
  231. package/lib/private/route/router.js +32 -18
  232. package/lib/private/route/wrap.js +2 -2
  233. package/lib/private/serve/App.d.ts +11 -25
  234. package/lib/private/serve/App.js +138 -120
  235. package/lib/private/serve/Init.d.ts +5 -5
  236. package/lib/private/serve/dev-module.d.ts +2 -0
  237. package/lib/private/serve/dev-module.js +34 -0
  238. package/lib/private/serve/hook.d.ts +1 -2
  239. package/lib/private/serve/hook.js +2 -9
  240. package/lib/private/serve/index.d.ts +1 -1
  241. package/lib/private/serve/index.js +36 -2
  242. package/lib/private/server/TAG.d.ts +3 -0
  243. package/lib/private/server/TAG.js +2 -0
  244. package/lib/private/server/index.d.ts +5 -0
  245. package/lib/private/server/index.js +6 -0
  246. package/lib/private/session/Data.d.ts +1 -2
  247. package/lib/private/session/SessionHandle.d.ts +1 -1
  248. package/lib/private/session/SessionHandle.js +11 -9
  249. package/lib/private/session/index.d.ts +3 -4
  250. package/lib/private/session/module.d.ts +3 -0
  251. package/lib/private/session/module.js +114 -0
  252. package/lib/private/session/schema.d.ts +17 -9
  253. package/lib/private/session/schema.js +11 -6
  254. package/lib/private/session/storage.d.ts +1 -2
  255. package/lib/private/session/storage.js +2 -2
  256. package/lib/private/tags.js +2 -2
  257. package/lib/private/target/Manager.js +6 -12
  258. package/lib/private/target/Target.d.ts +1 -1
  259. package/lib/public/AppFacade.d.ts +2 -0
  260. package/lib/public/AppFacade.js +2 -0
  261. package/lib/public/build/presets.d.ts +2 -0
  262. package/lib/public/build/presets.js +2 -0
  263. package/lib/public/build/transform.d.ts +2 -0
  264. package/lib/public/build/transform.js +2 -0
  265. package/lib/public/client.d.ts +3 -0
  266. package/lib/public/client.js +2 -0
  267. package/lib/public/db/MemoryDB.d.ts +2 -0
  268. package/lib/public/db/MemoryDB.js +2 -0
  269. package/lib/public/db/errors.d.ts +2 -0
  270. package/lib/public/db/errors.js +2 -0
  271. package/lib/public/db/migrate.d.ts +2 -0
  272. package/lib/public/db/migrate.js +2 -0
  273. package/lib/public/db/sql.d.ts +2 -0
  274. package/lib/public/db/sql.js +2 -0
  275. package/lib/public/db/test.d.ts +2 -0
  276. package/lib/public/db/test.js +2 -0
  277. package/lib/public/db.d.ts +12 -0
  278. package/lib/public/db.js +2 -0
  279. package/lib/public/frontend.d.ts +3 -0
  280. package/lib/public/frontend.js +2 -0
  281. package/lib/public/index.d.ts +2 -0
  282. package/lib/public/index.js +2 -0
  283. package/lib/public/orm/key.d.ts +2 -0
  284. package/lib/public/orm/key.js +2 -0
  285. package/lib/public/orm/relation.d.ts +2 -0
  286. package/lib/public/orm/relation.js +2 -0
  287. package/lib/public/orm/store.d.ts +2 -0
  288. package/lib/public/orm/store.js +2 -0
  289. package/lib/public/request/server.d.ts +5 -0
  290. package/lib/public/request/server.js +7 -0
  291. package/lib/public/response.d.ts +22 -0
  292. package/lib/public/response.js +19 -0
  293. package/lib/public/route/hook.d.ts +2 -0
  294. package/lib/public/route/hook.js +2 -0
  295. package/lib/public/server.d.ts +3 -0
  296. package/lib/public/server.js +2 -0
  297. package/package.json +40 -30
  298. package/lib/private/AppError.d.ts +0 -4
  299. package/lib/private/AppError.js +0 -8
  300. package/lib/private/backend/Module.d.ts +0 -18
  301. package/lib/private/backend/Module.js +0 -22
  302. package/lib/private/backend/TAG.d.ts +0 -3
  303. package/lib/private/backend/TAG.js +0 -2
  304. package/lib/private/build/client/reload.d.ts +0 -7
  305. package/lib/private/build/client/reload.js +0 -6
  306. package/lib/private/build/server/plugin/database-default.d.ts +0 -4
  307. package/lib/private/build/server/plugin/database-default.js +0 -48
  308. package/lib/private/build/server/plugin/hot-reload.d.ts +0 -4
  309. package/lib/private/build/server/plugin/store-wrap.d.ts +0 -4
  310. package/lib/private/build/server/plugin/store-wrap.js +0 -33
  311. package/lib/private/client/spa/index.d.ts +0 -6
  312. package/lib/private/client/spa/index.js +0 -201
  313. package/lib/private/client/validate.d.ts +0 -3
  314. package/lib/private/client/validate.js +0 -54
  315. package/lib/private/database/As.d.ts +0 -7
  316. package/lib/private/database/Binds.d.ts +0 -4
  317. package/lib/private/database/Binds.js +0 -2
  318. package/lib/private/database/Changes.d.ts +0 -11
  319. package/lib/private/database/Changes.js +0 -2
  320. package/lib/private/database/ColumnTypes.d.ts +0 -11
  321. package/lib/private/database/ColumnTypes.js +0 -2
  322. package/lib/private/database/DataDict.d.ts +0 -5
  323. package/lib/private/database/DataKey.d.ts +0 -4
  324. package/lib/private/database/DataValue.d.ts +0 -5
  325. package/lib/private/database/Database.d.ts +0 -56
  326. package/lib/private/database/Database.js +0 -153
  327. package/lib/private/database/InMemoryDatabase.d.ts +0 -37
  328. package/lib/private/database/InMemoryDatabase.js +0 -181
  329. package/lib/private/database/Sort.d.ts +0 -4
  330. package/lib/private/database/Store.d.ts +0 -172
  331. package/lib/private/database/Store.js +0 -261
  332. package/lib/private/database/storage.d.ts +0 -4
  333. package/lib/private/database/storage.js +0 -3
  334. package/lib/private/database/symbol/wrap.js +0 -2
  335. package/lib/private/database/symbol.js +0 -2
  336. package/lib/private/database/test.d.ts +0 -4
  337. package/lib/private/database/test.js +0 -678
  338. package/lib/private/database/wrap.d.ts +0 -5
  339. package/lib/private/database/wrap.js +0 -5
  340. package/lib/private/fail.d.ts +0 -3
  341. package/lib/private/fail.js +0 -5
  342. package/lib/private/frontend/Module.d.ts +0 -62
  343. package/lib/private/frontend/Module.js +0 -250
  344. package/lib/private/frontend/Render.d.ts +0 -9
  345. package/lib/private/frontend/ServerView.d.ts +0 -5
  346. package/lib/private/i18n/Module.d.ts +0 -16
  347. package/lib/private/i18n/Module.js +0 -122
  348. package/lib/private/i18n/index.d.ts +0 -28
  349. package/lib/private/i18n/index.js +0 -236
  350. package/lib/private/module/BuildHook.d.ts +0 -5
  351. package/lib/private/module/BuildHook.js +0 -2
  352. package/lib/private/module/NextBuild.d.ts +0 -5
  353. package/lib/private/module/NextBuild.js +0 -2
  354. package/lib/private/module/NextServe.d.ts +0 -5
  355. package/lib/private/module/NextServe.js +0 -2
  356. package/lib/private/reducer.d.ts +0 -24
  357. package/lib/private/reducer.js +0 -10
  358. package/lib/private/route/guard.d.ts +0 -4
  359. package/lib/private/route/guard.js +0 -22
  360. package/lib/private/serve/module/Dev.d.ts +0 -11
  361. package/lib/private/serve/module/Dev.js +0 -28
  362. package/lib/private/serve/module/Handle.d.ts +0 -10
  363. package/lib/private/serve/module/Handle.js +0 -15
  364. package/lib/private/session/SessionModule.d.ts +0 -14
  365. package/lib/private/session/SessionModule.js +0 -122
  366. package/lib/private/wasm/API.d.ts +0 -7
  367. package/lib/private/wasm/API.js +0 -2
  368. package/lib/private/wasm/BufferViewSource.d.ts +0 -4
  369. package/lib/private/wasm/BufferViewSource.js +0 -2
  370. package/lib/private/wasm/Exports.d.ts +0 -23
  371. package/lib/private/wasm/Exports.js +0 -2
  372. package/lib/private/wasm/I32.d.ts +0 -5
  373. package/lib/private/wasm/I32.js +0 -2
  374. package/lib/private/wasm/I32_SIZE.d.ts +0 -3
  375. package/lib/private/wasm/I32_SIZE.js +0 -2
  376. package/lib/private/wasm/Instantiation.d.ts +0 -12
  377. package/lib/private/wasm/Instantiation.js +0 -2
  378. package/lib/private/wasm/Tagged.d.ts +0 -7
  379. package/lib/private/wasm/Tagged.js +0 -2
  380. package/lib/private/wasm/buffersize.d.ts +0 -2
  381. package/lib/private/wasm/buffersize.js +0 -5
  382. package/lib/private/wasm/decode-bytes.d.ts +0 -3
  383. package/lib/private/wasm/decode-bytes.js +0 -5
  384. package/lib/private/wasm/decode-json.d.ts +0 -7
  385. package/lib/private/wasm/decode-json.js +0 -11
  386. package/lib/private/wasm/decode-option.d.ts +0 -5
  387. package/lib/private/wasm/decode-option.js +0 -10
  388. package/lib/private/wasm/decode-response.d.ts +0 -19
  389. package/lib/private/wasm/decode-response.js +0 -90
  390. package/lib/private/wasm/decode-string.d.ts +0 -3
  391. package/lib/private/wasm/decode-string.js +0 -5
  392. package/lib/private/wasm/decode-websocket-close.d.ts +0 -5
  393. package/lib/private/wasm/decode-websocket-close.js +0 -6
  394. package/lib/private/wasm/decode-websocket-send.d.ts +0 -6
  395. package/lib/private/wasm/decode-websocket-send.js +0 -19
  396. package/lib/private/wasm/encode-buffer.d.ts +0 -3
  397. package/lib/private/wasm/encode-buffer.js +0 -6
  398. package/lib/private/wasm/encode-request.d.ts +0 -9
  399. package/lib/private/wasm/encode-request.js +0 -195
  400. package/lib/private/wasm/encode-session.d.ts +0 -3
  401. package/lib/private/wasm/encode-session.js +0 -25
  402. package/lib/private/wasm/encode-string-map.d.ts +0 -5
  403. package/lib/private/wasm/encode-string-map.js +0 -14
  404. package/lib/private/wasm/encode-string.d.ts +0 -13
  405. package/lib/private/wasm/encode-string.js +0 -17
  406. package/lib/private/wasm/encode-url.d.ts +0 -11
  407. package/lib/private/wasm/encode-url.js +0 -14
  408. package/lib/private/wasm/encode-websocket-close.d.ts +0 -2
  409. package/lib/private/wasm/encode-websocket-close.js +0 -7
  410. package/lib/private/wasm/encode-websocket-message.d.ts +0 -4
  411. package/lib/private/wasm/encode-websocket-message.js +0 -30
  412. package/lib/private/wasm/encode-websocket-open.d.ts +0 -2
  413. package/lib/private/wasm/encode-websocket-open.js +0 -7
  414. package/lib/private/wasm/filesize.d.ts +0 -2
  415. package/lib/private/wasm/filesize.js +0 -8
  416. package/lib/private/wasm/instantiate.d.ts +0 -37
  417. package/lib/private/wasm/instantiate.js +0 -408
  418. package/lib/private/wasm/open-websocket.d.ts +0 -4
  419. package/lib/private/wasm/open-websocket.js +0 -26
  420. package/lib/private/wasm/stringsize.d.ts +0 -3
  421. package/lib/private/wasm/stringsize.js +0 -5
  422. package/lib/private/wasm/urlsize.d.ts +0 -2
  423. package/lib/private/wasm/urlsize.js +0 -5
  424. package/lib/public/App.d.ts +0 -2
  425. package/lib/public/App.js +0 -2
  426. package/lib/public/AppError.d.ts +0 -2
  427. package/lib/public/AppError.js +0 -2
  428. package/lib/public/BuildApp.d.ts +0 -2
  429. package/lib/public/BuildApp.js +0 -2
  430. package/lib/public/BuildHook.d.ts +0 -2
  431. package/lib/public/BuildHook.js +0 -2
  432. package/lib/public/Database.d.ts +0 -2
  433. package/lib/public/Database.js +0 -2
  434. package/lib/public/Mode.d.ts +0 -2
  435. package/lib/public/Mode.js +0 -2
  436. package/lib/public/Module.d.ts +0 -2
  437. package/lib/public/Module.js +0 -2
  438. package/lib/public/Next.d.ts +0 -2
  439. package/lib/public/Next.js +0 -2
  440. package/lib/public/NextBuild.d.ts +0 -2
  441. package/lib/public/NextBuild.js +0 -2
  442. package/lib/public/NextHandle.d.ts +0 -2
  443. package/lib/public/NextHandle.js +0 -2
  444. package/lib/public/NextRoute.d.ts +0 -3
  445. package/lib/public/NextRoute.js +0 -2
  446. package/lib/public/NextServe.d.ts +0 -2
  447. package/lib/public/NextServe.js +0 -2
  448. package/lib/public/ServeApp.d.ts +0 -2
  449. package/lib/public/ServeApp.js +0 -2
  450. package/lib/public/Target.d.ts +0 -2
  451. package/lib/public/Target.js +0 -2
  452. package/lib/public/backend/Module.d.ts +0 -2
  453. package/lib/public/backend/Module.js +0 -2
  454. package/lib/public/backend/TAG.d.ts +0 -2
  455. package/lib/public/backend/TAG.js +0 -2
  456. package/lib/public/client/Data.d.ts +0 -2
  457. package/lib/public/client/Data.js +0 -2
  458. package/lib/public/client/ValidateInit.d.ts +0 -2
  459. package/lib/public/client/ValidateInit.js +0 -2
  460. package/lib/public/client/ValidateUpdater.d.ts +0 -2
  461. package/lib/public/client/ValidateUpdater.js +0 -2
  462. package/lib/public/client/ValidationError.d.ts +0 -2
  463. package/lib/public/client/ValidationError.js +0 -2
  464. package/lib/public/client/spa.d.ts +0 -2
  465. package/lib/public/client/spa.js +0 -2
  466. package/lib/public/client/toValidated.d.ts +0 -2
  467. package/lib/public/client/toValidated.js +0 -2
  468. package/lib/public/client/validate.d.ts +0 -2
  469. package/lib/public/client/validate.js +0 -2
  470. package/lib/public/database/As.d.ts +0 -2
  471. package/lib/public/database/As.js +0 -2
  472. package/lib/public/database/DataDict.d.ts +0 -2
  473. package/lib/public/database/DataDict.js +0 -2
  474. package/lib/public/database/InMemoryDatabase.d.ts +0 -2
  475. package/lib/public/database/InMemoryDatabase.js +0 -2
  476. package/lib/public/database/Sort.d.ts +0 -2
  477. package/lib/public/database/Sort.js +0 -2
  478. package/lib/public/database/Store.d.ts +0 -2
  479. package/lib/public/database/Store.js +0 -2
  480. package/lib/public/database/TypeMap.d.ts +0 -2
  481. package/lib/public/database/TypeMap.js +0 -2
  482. package/lib/public/database/Types.d.ts +0 -2
  483. package/lib/public/database/Types.js +0 -2
  484. package/lib/public/database/test.d.ts +0 -2
  485. package/lib/public/database/test.js +0 -2
  486. package/lib/public/database/wrap.d.ts +0 -2
  487. package/lib/public/database/wrap.js +0 -2
  488. package/lib/public/fail.d.ts +0 -2
  489. package/lib/public/fail.js +0 -2
  490. package/lib/public/frontend/Module.d.ts +0 -2
  491. package/lib/public/frontend/Module.js +0 -2
  492. package/lib/public/frontend/Publish.d.ts +0 -2
  493. package/lib/public/frontend/Publish.js +0 -2
  494. package/lib/public/frontend/Render.d.ts +0 -2
  495. package/lib/public/frontend/Render.js +0 -2
  496. package/lib/public/frontend/ViewResponse.d.ts +0 -2
  497. package/lib/public/frontend/ViewResponse.js +0 -2
  498. package/lib/public/request/RequestBody.d.ts +0 -2
  499. package/lib/public/request/RequestBody.js +0 -2
  500. package/lib/public/request/RequestFacade.d.ts +0 -2
  501. package/lib/public/request/RequestFacade.js +0 -2
  502. package/lib/public/request/Verb.d.ts +0 -2
  503. package/lib/public/request/Verb.js +0 -2
  504. package/lib/public/response/ResponseFunction.d.ts +0 -2
  505. package/lib/public/response/ResponseFunction.js +0 -2
  506. package/lib/public/response/ResponseLike.d.ts +0 -2
  507. package/lib/public/response/ResponseLike.js +0 -2
  508. package/lib/public/response/binary.d.ts +0 -2
  509. package/lib/public/response/binary.js +0 -2
  510. package/lib/public/response/error.d.ts +0 -2
  511. package/lib/public/response/error.js +0 -2
  512. package/lib/public/response/json.d.ts +0 -2
  513. package/lib/public/response/json.js +0 -2
  514. package/lib/public/response/redirect.d.ts +0 -2
  515. package/lib/public/response/redirect.js +0 -2
  516. package/lib/public/response/sse.d.ts +0 -2
  517. package/lib/public/response/sse.js +0 -2
  518. package/lib/public/response/text.d.ts +0 -2
  519. package/lib/public/response/text.js +0 -2
  520. package/lib/public/response/view.d.ts +0 -2
  521. package/lib/public/response/view.js +0 -2
  522. package/lib/public/response/ws.d.ts +0 -2
  523. package/lib/public/response/ws.js +0 -2
  524. package/lib/public/wasm/decode-json.d.ts +0 -5
  525. package/lib/public/wasm/decode-json.js +0 -3
  526. package/lib/public/wasm/decode-response.d.ts +0 -3
  527. package/lib/public/wasm/decode-response.js +0 -3
  528. package/lib/public/wasm/encode-request.d.ts +0 -3
  529. package/lib/public/wasm/encode-request.js +0 -3
  530. package/lib/public/wasm/encode-session.d.ts +0 -3
  531. package/lib/public/wasm/encode-session.js +0 -3
  532. package/lib/public/wasm/instantiate.d.ts +0 -4
  533. package/lib/public/wasm/instantiate.js +0 -3
  534. /package/lib/private/{frontend → client}/Publish.d.ts +0 -0
  535. /package/lib/private/{frontend → client}/Publish.js +0 -0
  536. /package/lib/private/{frontend → client}/Render.js +0 -0
  537. /package/lib/private/{frontend → client}/ServerData.js +0 -0
  538. /package/lib/private/{frontend → client}/ServerView.js +0 -0
  539. /package/lib/private/{frontend → client}/View.js +0 -0
  540. /package/lib/private/{frontend → client}/ViewOptions.js +0 -0
  541. /package/lib/private/{frontend → client}/ViewResponse.js +0 -0
  542. /package/lib/private/client/{spa/storage.d.ts → storage.d.ts} +0 -0
  543. /package/lib/private/client/{spa/storage.js → storage.js} +0 -0
  544. /package/lib/private/{database → db}/As.js +0 -0
  545. /package/lib/private/{database → db}/DataDict.js +0 -0
  546. /package/lib/private/{database → db}/DataKey.js +0 -0
  547. /package/lib/private/{database → db}/DataValue.js +0 -0
  548. /package/lib/private/{database → db}/Query.js +0 -0
  549. /package/lib/private/{database → db}/QueryBuilder.js +0 -0
  550. /package/lib/private/{database → db}/Schema.js +0 -0
  551. /package/lib/private/{database → db}/Sort.js +0 -0
  552. /package/lib/private/{database → db}/TypeMap.js +0 -0
  553. /package/lib/private/{database → db}/Types.js +0 -0
  554. /package/lib/private/{database → db}/primary.d.ts +0 -0
  555. /package/lib/private/{database → db}/primary.js +0 -0
  556. /package/lib/private/{database → db}/symbol.d.ts +0 -0
@@ -0,0 +1,57 @@
1
+ import DEFAULT_PERSIST_MODE from "#i18n/constant/DEFAULT_PERSIST_MODE";
2
+ import format from "#i18n/format";
3
+ import Formatter from "#i18n/Formatter";
4
+ import resolve from "#i18n/resolve";
5
+ import server_storage from "#i18n/storage";
6
+ import sInternal from "#i18n/symbol/internal";
7
+ import validate from "#i18n/validate";
8
+ import sConfig from "#symbol/config";
9
+ import is from "@rcompat/is";
10
+ export default function i18n(config) {
11
+ const catalogs = config.locales;
12
+ for (const [locale, catalog] of Object.entries(catalogs)) {
13
+ validate(catalog, locale);
14
+ }
15
+ const default_catalog = catalogs[config.defaultLocale];
16
+ const currency = config.currency ?? "USD";
17
+ const persist = config.persist ?? DEFAULT_PERSIST_MODE;
18
+ const get_locale = () => {
19
+ const storage = server_storage();
20
+ const store = storage.getStore();
21
+ return store?.locale ?? config.defaultLocale;
22
+ };
23
+ function t(...args) {
24
+ const active_locale = get_locale();
25
+ const formatter = new Formatter(active_locale);
26
+ const [key, params] = args;
27
+ const translated = resolve(catalogs[active_locale], key) ??
28
+ resolve(default_catalog, key) ??
29
+ String(key);
30
+ if (is.string(translated)) {
31
+ return format(translated, params ?? {}, currency, formatter);
32
+ }
33
+ return translated;
34
+ }
35
+ const api = t;
36
+ api.locale = {
37
+ get: get_locale,
38
+ set: (_locale) => {
39
+ throw new Error("[i18n] locale.set is not supported on server.");
40
+ },
41
+ };
42
+ Object.defineProperty(api, sInternal, {
43
+ value: {
44
+ restore: () => { },
45
+ init: () => { },
46
+ },
47
+ });
48
+ Object.defineProperty(api, sConfig, {
49
+ get: () => ({ ...config, persist }),
50
+ });
51
+ api.subscribe = (run) => {
52
+ run(api);
53
+ return () => { };
54
+ };
55
+ return api;
56
+ }
57
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1,33 @@
1
+ import type TypeOf from "#i18n/TypeOf";
2
+ import type { Dict } from "@rcompat/type";
3
+ type EntryOf<Body extends string> = Body extends `${infer Name}:${infer Spec}` ? {
4
+ __name: Name & string;
5
+ __type: TypeOf<Spec>;
6
+ } : {
7
+ __name: Body & string;
8
+ __type: string;
9
+ };
10
+ export type EntriesOf<S extends string> = string extends S ? never : S extends `${infer _}{${infer Body}}${infer Rest}` ? EntryOf<Body> | EntriesOf<Rest> : never;
11
+ export type ParamsFromEntries<E> = [
12
+ E
13
+ ] extends [never] ? Dict : {
14
+ [K in E as K extends {
15
+ __name: infer N extends string;
16
+ } ? N : never]: K extends {
17
+ __type: infer T;
18
+ } ? T : never;
19
+ };
20
+ type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8];
21
+ type Primitive = string | number | boolean | null | undefined;
22
+ type NoDot<K extends string> = K extends `${string}.${string}` ? never : K;
23
+ type ObjKeys<T> = NoDot<Extract<keyof T, string>>;
24
+ export type DotPaths<T, D extends number = 6> = [
25
+ D
26
+ ] extends [never] ? never : T extends Primitive ? never : T extends readonly (infer E)[] ? `${number}` | `${number}.${DotPaths<E, Prev[D]> & string}` : T extends object ? string extends keyof T ? string : {
27
+ [K in ObjKeys<T>]: K | (DotPaths<T[K], Prev[D]> extends infer R ? R extends string ? `${K}.${R}` : never : never);
28
+ }[ObjKeys<T>] : never;
29
+ export type PathValue<T, P extends string, D extends number = 6> = string extends P ? unknown : [
30
+ D
31
+ ] extends [never] ? unknown : P extends `${infer Head}.${infer Tail}` ? Head extends `${number}` ? T extends readonly (infer E)[] ? PathValue<E, Tail, Prev[D]> : unknown : T extends object ? Head extends keyof T ? PathValue<T[Head], Tail, Prev[D]> : unknown : unknown : P extends `${number}` ? T extends readonly (infer E)[] ? E : unknown : T extends object ? (P extends keyof T ? T[P] : unknown) : unknown;
32
+ export {};
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -1,5 +1,11 @@
1
- import type Dict from "@rcompat/type/Dict";
2
- type MessageMap = Dict<string>;
3
- export default function locale<const M extends MessageMap>(messages: M): M;
1
+ import type Catalog from "#i18n/Catalog";
2
+ type Prev = [never, 0, 1, 2, 3, 4, 5, 6];
3
+ type DotKeyMessage<K extends string> = `i18n: dots not allowed in catalog key '${K}', use nested objects instead`;
4
+ type EnforceNoDots<T, D extends number = 6> = [
5
+ D
6
+ ] extends [never] ? T : T extends string ? T : T extends readonly (infer E)[] ? readonly EnforceNoDots<E, Prev[D]>[] : T extends object ? {
7
+ [K in keyof T]: K extends string ? K extends `${string}.${string}` ? DotKeyMessage<K> : EnforceNoDots<T[K], Prev[D]> : EnforceNoDots<T[K], Prev[D]>;
8
+ } : T;
9
+ export default function locale<const M extends Catalog>(messages: EnforceNoDots<M>): M;
4
10
  export {};
5
11
  //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1,3 @@
1
+ import type Config from "#i18n/Config";
2
+ export default function i18n_module(config: Config): import("#module/create").Created;
3
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1,115 @@
1
+ import cookie from "#cookie";
2
+ import COOKIE_NAME from "#i18n/constant/COOKIE_NAME";
3
+ import PERSIST_HEADER from "#i18n/constant/PERSIST_HEADER";
4
+ import E from "#i18n/errors";
5
+ import storage from "#i18n/storage";
6
+ import create from "#module/create";
7
+ import { Status } from "@rcompat/http";
8
+ function toLowerCase(string) {
9
+ return string.toLowerCase();
10
+ }
11
+ function pick(client, server) {
12
+ const lower = server.map(toLowerCase);
13
+ for (const raw of client.map(toLowerCase)) {
14
+ const locale = raw.trim();
15
+ if (!locale)
16
+ continue;
17
+ const exact = lower.indexOf(locale);
18
+ if (exact !== -1)
19
+ return server[exact];
20
+ const base = locale.split("-")[0];
21
+ const index = lower.findIndex(s => s === base || s.startsWith(`${base}-`));
22
+ if (index !== -1)
23
+ return server[index];
24
+ }
25
+ return undefined;
26
+ }
27
+ export default function i18n_module(config) {
28
+ const default_locale = config.defaultLocale;
29
+ const locales = Object.keys(config.locales);
30
+ const persist = config.persist ?? "cookie";
31
+ const currency = config.currency ?? "USD";
32
+ let secure = false;
33
+ if (locales.length < 1)
34
+ throw E.at_least_one_locale();
35
+ if (default_locale === undefined)
36
+ throw E.missing_default_locale(locales);
37
+ if (!locales.includes(default_locale)) {
38
+ throw E.unused_default_locale(default_locale, locales);
39
+ }
40
+ return create({
41
+ name: "builtin/i18n",
42
+ setup({ onServe, onHandle, onRoute }) {
43
+ onServe(app => {
44
+ secure = app.secure;
45
+ });
46
+ onHandle(async (request, next) => {
47
+ const requested = request.headers.try(PERSIST_HEADER);
48
+ if (requested === undefined) {
49
+ const locale = request.cookies.try(COOKIE_NAME);
50
+ if (locale === undefined)
51
+ return next(request);
52
+ // if has cookie, run route with i18n
53
+ return await new Promise((resolve, reject) => {
54
+ storage().run({ locale }, async () => {
55
+ try {
56
+ resolve(await next(request));
57
+ }
58
+ catch (e) {
59
+ reject(e);
60
+ }
61
+ });
62
+ });
63
+ }
64
+ // only cookie-persistance is server-supported
65
+ if (persist !== "cookie")
66
+ return new Response(null, {
67
+ headers: {
68
+ "Content-Length": String(0),
69
+ },
70
+ status: Status.NO_CONTENT,
71
+ });
72
+ // only accept existing locales
73
+ if (!locales.includes(requested))
74
+ return new Response(null, {
75
+ headers: {
76
+ "Content-Length": String(0),
77
+ },
78
+ status: Status.NO_CONTENT,
79
+ });
80
+ const header = cookie(COOKIE_NAME, requested, {
81
+ secure,
82
+ path: "/",
83
+ sameSite: "Strict",
84
+ });
85
+ return new Response(null, {
86
+ headers: {
87
+ "Set-Cookie": header,
88
+ "Content-Length": String(0),
89
+ },
90
+ status: Status.NO_CONTENT,
91
+ });
92
+ });
93
+ onRoute((request, next) => {
94
+ const accept_language = request.headers.try("Accept-Language") ?? "";
95
+ const client_locales = accept_language
96
+ .split(",")
97
+ .map(s => s.split(";")[0].trim())
98
+ .filter(Boolean);
99
+ const cookie_locale = persist === "cookie"
100
+ ? request.cookies.try(COOKIE_NAME)
101
+ : undefined;
102
+ const locale = cookie_locale ??
103
+ pick(client_locales, locales) ??
104
+ default_locale;
105
+ return next(request.set("i18n", {
106
+ currency,
107
+ mode: persist,
108
+ locale,
109
+ locales,
110
+ }));
111
+ });
112
+ },
113
+ });
114
+ }
115
+ //# sourceMappingURL=module.js.map
@@ -1,4 +1,4 @@
1
- import type Dict from "@rcompat/type/Dict";
1
+ import type { Dict } from "@rcompat/type";
2
2
  declare const ordinals: Dict<Dict<string>>;
3
3
  export default ordinals;
4
4
  //# sourceMappingURL=ordinals.d.ts.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolve a translation key from a catalog:
3
+ * - try exact flat-key match (including keys containing dots)
4
+ * - otherwise traverse dot-path segments
5
+ */
6
+ export default function resolve(root: unknown, key: string): unknown;
7
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Resolve a translation key from a catalog:
3
+ * - try exact flat-key match (including keys containing dots)
4
+ * - otherwise traverse dot-path segments
5
+ */
6
+ export default function resolve(root, key) {
7
+ if (root == null)
8
+ return undefined;
9
+ const parts = key.split(".");
10
+ let current = root;
11
+ for (const part of parts) {
12
+ if (part === "")
13
+ continue;
14
+ if (current == null)
15
+ return undefined;
16
+ if (Array.isArray(current)) {
17
+ if (!/^(0|[1-9]\d*)$/.test(part))
18
+ return undefined;
19
+ current = current[Number(part)];
20
+ continue;
21
+ }
22
+ if (typeof current === "object") {
23
+ current = current[part];
24
+ continue;
25
+ }
26
+ return undefined;
27
+ }
28
+ return current;
29
+ }
30
+ //# sourceMappingURL=resolve.js.map
@@ -1,8 +1,13 @@
1
- declare const _default: import("pema").ObjectType<{
2
- defaultLocale: import("pema/string").StringType;
3
- locales: import("pema/record").RecordType<import("pema/string").StringType, import("pema/unknown").UnknownType>;
4
- currency: import("pema").DefaultType<import("pema/string").StringType, "USD">;
5
- persist: import("pema").DefaultType<import("pema/union").UnionType<[import("pema").LiteralType<"cookie">, import("pema").LiteralType<"localStorage">, import("pema").LiteralType<"sessionStorage">, import("pema").LiteralType<false>]>, false | "cookie" | "localStorage" | "sessionStorage">;
1
+ declare const _default: import("pema").ObjectType<import("pema").NormalizeSchemaObject<{
2
+ readonly defaultLocale: import("pema").StringType;
3
+ readonly locales: import("pema").RecordType<import("pema").StringType, import("pema").UnknownType>;
4
+ readonly currency: import("pema").DefaultType<import("pema").StringType, "USD">;
5
+ readonly persist: import("pema").DefaultType<import("pema").UnionType<[import("pema").LiteralType<"cookie">, import("pema").LiteralType<"localStorage">, import("pema").LiteralType<"sessionStorage">, import("pema").LiteralType<false>]>, false | "cookie" | "localStorage" | "sessionStorage">;
6
+ }>, {
7
+ defaultLocale: string;
8
+ locales: Record<string, unknown>;
9
+ currency: string;
10
+ persist: false | "cookie" | "localStorage" | "sessionStorage";
6
11
  }>;
7
12
  export default _default;
8
13
  //# sourceMappingURL=schema.d.ts.map
@@ -1,13 +1,9 @@
1
- import pema from "pema";
2
- import record from "pema/record";
3
- import string from "pema/string";
4
- import union from "pema/union";
5
- import unknown from "pema/unknown";
6
- export default pema({
7
- defaultLocale: string,
8
- locales: record(string, unknown),
9
- currency: string.default("USD"),
10
- persist: union("cookie", "localStorage", "sessionStorage", false)
1
+ import p from "pema";
2
+ export default p({
3
+ defaultLocale: p.string,
4
+ locales: p.dict(p.unknown),
5
+ currency: p.string.default("USD"),
6
+ persist: p.union("cookie", "localStorage", "sessionStorage", false)
11
7
  .default("cookie"),
12
8
  });
13
9
  //# sourceMappingURL=schema.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: () => import("node:async_hooks").AsyncLocalStorage<any>;
2
+ export default _default;
3
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1,5 @@
1
+ import io from "@rcompat/io";
2
+ import cache from "@rcompat/kv/cache";
3
+ const s = Symbol("primate/i18n");
4
+ export default () => cache.get(s, () => new io.async.Context());
5
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1,2 @@
1
+ export default function validate(key: unknown, locale: string, path?: string): void;
2
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1,19 @@
1
+ import E from "#i18n/errors";
2
+ import is from "@rcompat/is";
3
+ export default function validate(key, locale, path = "") {
4
+ if (Array.isArray(key)) {
5
+ for (let i = 0; i < key.length; i++) {
6
+ validate(key[i], locale, `${path}.${i}`);
7
+ }
8
+ return;
9
+ }
10
+ if (!is.dict(key))
11
+ return;
12
+ for (const [k, v] of Object.entries(key)) {
13
+ const at = path ? `${path}.${k}` : k;
14
+ if (k.includes("."))
15
+ throw E.no_dots_catalog_keys(k, at, locale);
16
+ validate(v, locale, at);
17
+ }
18
+ }
19
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1,14 @@
1
+ export type { default as App } from "#App";
2
+ export type { default as BuildApp } from "#build/App";
3
+ export type { default as Mode } from "#Mode";
4
+ export type { default as Module } from "#Module";
5
+ export type { BuildHook, HandleHook, InitHook, RouteHook, ServeHook, default as Setup } from "#module/Setup";
6
+ export type { default as RequestBag } from "#request/RequestBag";
7
+ export type { default as RequestBody } from "#request/RequestBody";
8
+ export type { default as RequestFacade } from "#request/RequestFacade";
9
+ export type { default as RequestPublic } from "#request/RequestPublic";
10
+ export type { default as RequestView } from "#request/RequestView";
11
+ export type { default as RequestVerb } from "#request/Verb";
12
+ export type { default as ServeApp } from "#serve/App";
13
+ export type { default as Target } from "#target/Target";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -9,6 +9,7 @@ type N = Levels[Level];
9
9
  declare class Log {
10
10
  #private;
11
11
  constructor(level: N);
12
+ print(message: string, ...params: unknown[]): void;
12
13
  system(message: string, ...params: unknown[]): void;
13
14
  info(message: string, ...params: unknown[]): void;
14
15
  warn(message: string, ...params: unknown[]): void;
@@ -1,41 +1,42 @@
1
- import AppError from "#AppError";
2
- import args from "@rcompat/args";
3
- import blue from "@rcompat/cli/color/blue";
4
- import green from "@rcompat/cli/color/green";
5
- import red from "@rcompat/cli/color/red";
6
- import yellow from "@rcompat/cli/color/yellow";
1
+ import color from "@rcompat/cli/color";
7
2
  import mark from "@rcompat/cli/mark";
8
3
  import print from "@rcompat/cli/print";
9
- import union from "pema/union";
4
+ import { CodeError } from "@rcompat/error";
5
+ import runtime from "@rcompat/runtime";
6
+ import p from "pema";
10
7
  const levels = {
11
8
  error: 0,
12
9
  info: 2,
13
10
  warn: 1,
14
11
  };
15
12
  const flag = "--log=";
16
- const n = args.find(arg => arg.startsWith(flag))?.slice(flag.length);
17
- const vn = union(...Object.keys(levels)).optional().parse(n);
13
+ const n = runtime.args.find(arg => arg.startsWith(flag))?.slice(flag.length);
14
+ const vn = p.union(...Object.keys(levels)).optional().parse(n);
18
15
  class Log {
19
16
  #level;
20
17
  constructor(level) {
21
18
  this.#level = level;
22
19
  }
20
+ print(message, ...params) {
21
+ print(mark(message, ...params));
22
+ }
23
23
  system(message, ...params) {
24
- print(`${blue("++")} ${mark(message, ...params)}\n`);
24
+ print(` ${mark(message, ...params)}\n`);
25
25
  }
26
26
  info(message, ...params) {
27
27
  if (this.#level === levels.info) {
28
- print(green("--"), mark(message, ...params), "\n");
28
+ print(color.green("[INFO]"), mark(message, ...params), "\n");
29
29
  }
30
30
  }
31
31
  warn(message, ...params) {
32
32
  if (this.#level >= levels.warn) {
33
- print(yellow("??"), mark(message, ...params), "\n");
33
+ print(color.yellow("[WARN]"), mark(message, ...params), "\n");
34
34
  }
35
35
  }
36
36
  error(error) {
37
- if (error instanceof AppError) {
38
- print(red("!!"), error.message, "\n");
37
+ if (CodeError.is(error)) {
38
+ const message = error.strings.reduce((acc, str, i) => acc + (i > 0 ? color.bold(String(error.params[i - 1])) : "") + str, "");
39
+ print(color.red("[ERROR]"), message, "\n");
39
40
  }
40
41
  else {
41
42
  console.error(error);
@@ -1,5 +1,5 @@
1
- import type MaybePromise from "@rcompat/type/MaybePromise";
2
1
  import type Next from "#module/Next";
2
+ import type { MaybePromise } from "@rcompat/type";
3
3
  type Hook<I, O = I> = (t: I, next: Next<I, O>) => MaybePromise<O>;
4
4
  export type { Hook as default };
5
5
  //# sourceMappingURL=Hook.d.ts.map
@@ -1,4 +1,4 @@
1
- import type MaybePromise from "@rcompat/type/MaybePromise";
1
+ import type { MaybePromise } from "@rcompat/type";
2
2
  type Next<I, O = I> = (i: I) => MaybePromise<O>;
3
3
  export type { Next as default };
4
4
  //# sourceMappingURL=Next.d.ts.map
@@ -0,0 +1,21 @@
1
+ import type App from "#App";
2
+ import type BuildApp from "#build/App";
3
+ import type NextHandle from "#module/NextHandle";
4
+ import type NextRoute from "#module/NextRoute";
5
+ import type RequestFacade from "#request/RequestFacade";
6
+ import type ResponseLike from "#response/ResponseLike";
7
+ import type ServeApp from "#serve/App";
8
+ import type { MaybePromise } from "@rcompat/type";
9
+ export type InitHook = (app: App) => MaybePromise<void>;
10
+ export type BuildHook = (app: BuildApp) => MaybePromise<void>;
11
+ export type ServeHook = (app: ServeApp) => MaybePromise<void>;
12
+ export type HandleHook = (request: RequestFacade, next: NextHandle) => MaybePromise<Response>;
13
+ export type RouteHook = (request: RequestFacade, next: NextRoute) => MaybePromise<ResponseLike>;
14
+ export default interface Setup {
15
+ onInit(hook: InitHook): void;
16
+ onBuild(hook: BuildHook): void;
17
+ onServe(hook: ServeHook): void;
18
+ onHandle(hook: HandleHook): void;
19
+ onRoute(hook: RouteHook): void;
20
+ }
21
+ //# sourceMappingURL=Setup.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Setup.js.map
@@ -0,0 +1,16 @@
1
+ import type Module from "#Module";
2
+ import type { BuildHook, HandleHook, InitHook, RouteHook, ServeHook } from "#module/Setup";
3
+ type Hooks = {
4
+ init: InitHook[];
5
+ build: BuildHook[];
6
+ serve: ServeHook[];
7
+ handle: HandleHook[];
8
+ route: RouteHook[];
9
+ };
10
+ type Created = {
11
+ name: string;
12
+ hooks: Hooks;
13
+ };
14
+ export type { Created, Hooks };
15
+ export default function create({ name, setup }: Module): Created;
16
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1,28 @@
1
+ export default function create({ name, setup }) {
2
+ const hooks = {
3
+ init: [],
4
+ build: [],
5
+ serve: [],
6
+ handle: [],
7
+ route: [],
8
+ };
9
+ setup({
10
+ onInit(hook) {
11
+ hooks.init.push(hook);
12
+ },
13
+ onBuild(hook) {
14
+ hooks.build.push(hook);
15
+ },
16
+ onServe(hook) {
17
+ hooks.serve.push(hook);
18
+ },
19
+ onHandle(hook) {
20
+ hooks.handle.push(hook);
21
+ },
22
+ onRoute(hook) {
23
+ hooks.route.push(hook);
24
+ },
25
+ });
26
+ return { name, hooks };
27
+ }
28
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1,9 @@
1
+ import type ForeignKey from "#orm/ForeignKey";
2
+ import type PrimaryKey from "#orm/PrimaryKey";
3
+ import type StoreInput from "#orm/StoreInput";
4
+ import type { DataKey, Storable } from "pema";
5
+ type ExtractSchema<T extends StoreInput> = {
6
+ [K in keyof T]: T[K] extends PrimaryKey<infer P> ? P : T[K] extends ForeignKey<infer P> ? P : T[K] extends Storable<DataKey> ? T[K] : never;
7
+ };
8
+ export type { ExtractSchema as default };
9
+ //# sourceMappingURL=ExtractSchema.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ExtractSchema.js.map
@@ -0,0 +1,14 @@
1
+ import type { AllowedPKType } from "#orm/PrimaryKey";
2
+ import type { OptionalType } from "pema";
3
+ export type AllowedFKType = AllowedPKType | OptionalType<AllowedPKType>;
4
+ export default class ForeignKey<T extends AllowedFKType> {
5
+ #private;
6
+ constructor(type: T);
7
+ static new<T extends AllowedFKType>(type: T): ForeignKey<T>;
8
+ get type(): T;
9
+ get datatype(): keyof import("pema").DataType;
10
+ get name(): string;
11
+ get nullable(): boolean;
12
+ parse(value: unknown): unknown;
13
+ }
14
+ //# sourceMappingURL=ForeignKey.d.ts.map
@@ -0,0 +1,25 @@
1
+ export default class ForeignKey {
2
+ #type;
3
+ constructor(type) {
4
+ this.#type = type;
5
+ }
6
+ static new(type) {
7
+ return new ForeignKey(type);
8
+ }
9
+ get type() {
10
+ return this.#type;
11
+ }
12
+ get datatype() {
13
+ return this.#type.datatype;
14
+ }
15
+ get name() {
16
+ return this.#type.name;
17
+ }
18
+ get nullable() {
19
+ return this.#type.nullable;
20
+ }
21
+ parse(value) {
22
+ return this.#type.parse(value);
23
+ }
24
+ }
25
+ //# sourceMappingURL=ForeignKey.js.map
@@ -0,0 +1,17 @@
1
+ import type { Storable } from "pema";
2
+ export type Options = {
3
+ generate?: boolean;
4
+ };
5
+ export type AllowedPKType = Storable<"uuid"> | Storable<"uuid_v4"> | Storable<"uuid_v7"> | Storable<"u8"> | Storable<"u16"> | Storable<"u32"> | Storable<"u64"> | Storable<"u128">;
6
+ export default class PrimaryKey<T extends AllowedPKType> {
7
+ #private;
8
+ constructor(type: T, options?: Options);
9
+ static new<T extends AllowedPKType>(type: T, options?: Options): PrimaryKey<T>;
10
+ get type(): T;
11
+ get datatype(): "uuid" | "uuid_v4" | "uuid_v7" | "u128" | "u16" | "u32" | "u64" | "u8";
12
+ get name(): string;
13
+ get nullable(): boolean;
14
+ get generate(): boolean;
15
+ parse(value: unknown): unknown;
16
+ }
17
+ //# sourceMappingURL=PrimaryKey.d.ts.map
@@ -0,0 +1,38 @@
1
+ import E from "#db/errors";
2
+ const ALLOWED_TYPES = new Set([
3
+ "uuid", "uuid_v4", "uuid_v7",
4
+ "u8", "u16", "u32", "u64", "u128",
5
+ ]);
6
+ export default class PrimaryKey {
7
+ #type;
8
+ #generate;
9
+ constructor(type, options) {
10
+ this.#type = type;
11
+ this.#generate = options?.generate ?? true;
12
+ const datatype = this.#type.datatype;
13
+ if (!ALLOWED_TYPES.has(datatype))
14
+ throw E.pk_invalid_type(datatype);
15
+ }
16
+ static new(type, options) {
17
+ return new PrimaryKey(type, options);
18
+ }
19
+ get type() {
20
+ return this.#type;
21
+ }
22
+ get datatype() {
23
+ return this.#type.datatype;
24
+ }
25
+ get name() {
26
+ return this.#type.name;
27
+ }
28
+ get nullable() {
29
+ return false;
30
+ }
31
+ get generate() {
32
+ return this.#generate;
33
+ }
34
+ parse(value) {
35
+ return this.#type.parse(value);
36
+ }
37
+ }
38
+ //# sourceMappingURL=PrimaryKey.js.map