akanjs 0.0.1 → 2.0.0-beta.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 (682) hide show
  1. package/CODE_OF_CONDUCT.md +54 -0
  2. package/CONTRIBUTING.md +83 -0
  3. package/LICENSE +21 -0
  4. package/README.ko.md +244 -0
  5. package/README.md +237 -6
  6. package/base/base.ts +194 -0
  7. package/base/baseEnv.ts +162 -0
  8. package/base/index.ts +6 -0
  9. package/base/primitiveRegistry.ts +342 -0
  10. package/base/symbols.ts +11 -0
  11. package/base/types.ts +137 -0
  12. package/base/utils.ts +30 -0
  13. package/cli/application/application.command.ts +213 -0
  14. package/cli/application/application.interface.tsx +225 -0
  15. package/cli/application/application.runner.ts +359 -0
  16. package/cli/application/application.script.ts +244 -0
  17. package/cli/build.ts +25 -0
  18. package/cli/cloud/cloud.command.ts +48 -0
  19. package/cli/cloud/cloud.runner.ts +158 -0
  20. package/cli/cloud/cloud.script.ts +40 -0
  21. package/cli/guideline/guideline.command.ts +31 -0
  22. package/cli/guideline/guideline.prompt.ts +212 -0
  23. package/cli/guideline/guideline.runner.ts +53 -0
  24. package/cli/guideline/guideline.script.ts +33 -0
  25. package/cli/guidelines/___library/sharedUiStructureDescription.en.md +767 -0
  26. package/cli/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  27. package/cli/guidelines/___lint/lintRuleDescription.en.md +64 -0
  28. package/cli/guidelines/___module/moduleStructureDescription.en.md +80 -0
  29. package/cli/guidelines/componentRule/componentRule.generate.json +131 -0
  30. package/cli/guidelines/componentRule/componentRule.instruction.md +637 -0
  31. package/cli/guidelines/cssRule/cssRule.generate.json +93 -0
  32. package/cli/guidelines/cssRule/cssRule.instruction.md +435 -0
  33. package/cli/guidelines/databaseModule/databaseModule.generate.json +51 -0
  34. package/cli/guidelines/databaseModule/databaseModule.instruction.md +612 -0
  35. package/cli/guidelines/docPageRule/docPageRule.generate.json +72 -0
  36. package/cli/guidelines/docPageRule/docPageRule.instruction.md +389 -0
  37. package/cli/guidelines/enumConstant/enumConstant.generate.json +24 -0
  38. package/cli/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  39. package/cli/guidelines/framework/framework.generate.json +119 -0
  40. package/cli/guidelines/framework/framework.instruction.md +1110 -0
  41. package/cli/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
  42. package/cli/guidelines/modelConstant/modelConstant.generate.json +128 -0
  43. package/cli/guidelines/modelConstant/modelConstant.instruction.md +506 -0
  44. package/cli/guidelines/modelDictionary/modelDictionary.generate.json +108 -0
  45. package/cli/guidelines/modelDictionary/modelDictionary.instruction.md +547 -0
  46. package/cli/guidelines/modelDocument/modelDocument.generate.json +129 -0
  47. package/cli/guidelines/modelDocument/modelDocument.instruction.md +536 -0
  48. package/cli/guidelines/modelService/modelService.generate.json +135 -0
  49. package/cli/guidelines/modelService/modelService.instruction.md +708 -0
  50. package/cli/guidelines/modelSignal/modelSignal.generate.json +201 -0
  51. package/cli/guidelines/modelSignal/modelSignal.instruction.md +552 -0
  52. package/cli/guidelines/modelStore/modelStore.generate.json +130 -0
  53. package/cli/guidelines/modelStore/modelStore.instruction.md +585 -0
  54. package/cli/guidelines/modelTemplate/modelTemplate.generate.json +104 -0
  55. package/cli/guidelines/modelTemplate/modelTemplate.instruction.md +604 -0
  56. package/cli/guidelines/modelUnit/modelUnit.generate.json +92 -0
  57. package/cli/guidelines/modelUnit/modelUnit.instruction.md +541 -0
  58. package/cli/guidelines/modelUtil/modelUtil.generate.json +93 -0
  59. package/cli/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  60. package/cli/guidelines/modelView/modelView.generate.json +80 -0
  61. package/cli/guidelines/modelView/modelView.instruction.md +1005 -0
  62. package/cli/guidelines/modelZone/modelZone.generate.json +126 -0
  63. package/cli/guidelines/modelZone/modelZone.instruction.md +528 -0
  64. package/cli/guidelines/scalarConstant/scalarConstant.generate.json +106 -0
  65. package/cli/guidelines/scalarConstant/scalarConstant.instruction.md +442 -0
  66. package/cli/guidelines/scalarDictionary/scalarDictionary.generate.json +83 -0
  67. package/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md +273 -0
  68. package/cli/guidelines/scalarModule/scalarModule.generate.json +35 -0
  69. package/cli/guidelines/scalarModule/scalarModule.instruction.md +81 -0
  70. package/cli/guidelines/sharedUiUsage/sharedUiUsage.generate.json +108 -0
  71. package/cli/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +310 -0
  72. package/cli/guidelines/utilUiUsage/utilUiUsage.generate.json +140 -0
  73. package/cli/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  74. package/cli/index.js +11401 -0
  75. package/cli/index.ts +24 -0
  76. package/cli/library/library.command.ts +28 -0
  77. package/cli/library/library.runner.ts +69 -0
  78. package/cli/library/library.script.ts +39 -0
  79. package/cli/module/module.command.ts +35 -0
  80. package/cli/module/module.prompt.ts +18 -0
  81. package/cli/module/module.request.ts +319 -0
  82. package/cli/module/module.runner.ts +76 -0
  83. package/cli/module/module.script.ts +161 -0
  84. package/cli/package/package.command.ts +32 -0
  85. package/cli/package/package.runner.ts +64 -0
  86. package/cli/package/package.script.ts +35 -0
  87. package/cli/page/page.command.ts +14 -0
  88. package/cli/page/page.runner.ts +14 -0
  89. package/cli/page/page.script.ts +12 -0
  90. package/cli/scalar/scalar.command.ts +21 -0
  91. package/cli/scalar/scalar.prompt.ts +131 -0
  92. package/cli/scalar/scalar.runner.ts +38 -0
  93. package/cli/scalar/scalar.script.ts +16 -0
  94. package/cli/templates/__scalar/__model__/__model__.constant.ts +15 -0
  95. package/cli/templates/__scalar/__model__/__model__.dictionary.ts +19 -0
  96. package/cli/templates/__scalar/__model__/__model__.document.ts +15 -0
  97. package/cli/templates/app/akan.config.ts +14 -0
  98. package/cli/templates/app/capacitor.config.ts.template +8 -0
  99. package/cli/templates/app/common/commonLogic.ts +12 -0
  100. package/cli/templates/app/common/index.ts +10 -0
  101. package/cli/templates/app/env/env.client.debug.ts.template +7 -0
  102. package/cli/templates/app/env/env.client.develop.ts.template +7 -0
  103. package/cli/templates/app/env/env.client.local.ts.template +7 -0
  104. package/cli/templates/app/env/env.client.main.ts.template +7 -0
  105. package/cli/templates/app/env/env.client.testing.ts.template +7 -0
  106. package/cli/templates/app/env/env.client.ts +21 -0
  107. package/cli/templates/app/env/env.client.type.ts +16 -0
  108. package/cli/templates/app/env/env.server.debug.ts.template +7 -0
  109. package/cli/templates/app/env/env.server.develop.ts.template +9 -0
  110. package/cli/templates/app/env/env.server.local.ts.template +14 -0
  111. package/cli/templates/app/env/env.server.main.ts.template +9 -0
  112. package/cli/templates/app/env/env.server.testing.ts.template +6 -0
  113. package/cli/templates/app/env/env.server.ts +20 -0
  114. package/cli/templates/app/lib/___appName__/__appName__.dictionary.ts +17 -0
  115. package/cli/templates/app/lib/___appName__/__appName__.service.ts +13 -0
  116. package/cli/templates/app/lib/___appName__/__appName__.signal.ts +17 -0
  117. package/cli/templates/app/lib/___appName__/__appName__.store.ts +15 -0
  118. package/cli/templates/app/lib/option.ts +17 -0
  119. package/cli/templates/app/main.ts +16 -0
  120. package/cli/templates/app/package.json.template +5 -0
  121. package/cli/templates/app/page/_index.tsx +172 -0
  122. package/cli/templates/app/page/_layout.tsx +32 -0
  123. package/cli/templates/app/page/styles.css.template +53 -0
  124. package/cli/templates/app/public/favicon.ico +0 -0
  125. package/cli/templates/app/public/logo.png +0 -0
  126. package/cli/templates/app/srvkit/backendLogic.ts +12 -0
  127. package/cli/templates/app/srvkit/index.ts +10 -0
  128. package/cli/templates/app/tsconfig.json.template +21 -0
  129. package/cli/templates/app/ui/UiComponent.ts +16 -0
  130. package/cli/templates/app/ui/index.ts +10 -0
  131. package/cli/templates/app/webkit/frontendLogic.ts +12 -0
  132. package/cli/templates/app/webkit/index.ts +10 -0
  133. package/cli/templates/client.ts +46 -0
  134. package/cli/templates/crudPages/[__model__Id]/edit/page.tsx +47 -0
  135. package/cli/templates/crudPages/[__model__Id]/page.tsx +52 -0
  136. package/cli/templates/crudPages/new/page.tsx +42 -0
  137. package/cli/templates/crudPages/page.tsx +43 -0
  138. package/cli/templates/crudSinglePage/page.tsx +37 -0
  139. package/cli/templates/env/_env.server.type.ts +16 -0
  140. package/cli/templates/facetIndex/index.ts +32 -0
  141. package/cli/templates/index.ts +10 -0
  142. package/cli/templates/lib/__lib/lib.constant.ts +38 -0
  143. package/cli/templates/lib/__lib/lib.dictionary.ts +33 -0
  144. package/cli/templates/lib/__lib/lib.document.ts +35 -0
  145. package/cli/templates/lib/__lib/lib.service.ts +33 -0
  146. package/cli/templates/lib/__lib/lib.signal.ts +34 -0
  147. package/cli/templates/lib/__lib/lib.store.ts +33 -0
  148. package/cli/templates/lib/cnst.ts +29 -0
  149. package/cli/templates/lib/db.ts +32 -0
  150. package/cli/templates/lib/dict.ts +49 -0
  151. package/cli/templates/lib/sig.ts +60 -0
  152. package/cli/templates/lib/srv.ts +34 -0
  153. package/cli/templates/lib/st.ts +31 -0
  154. package/cli/templates/lib/useClient.ts +19 -0
  155. package/cli/templates/lib/useServer.ts +7 -0
  156. package/cli/templates/libRoot/.gitignore.template +16 -0
  157. package/cli/templates/libRoot/akan.config.ts +12 -0
  158. package/cli/templates/libRoot/base/baseLogic.ts +10 -0
  159. package/cli/templates/libRoot/base/index.ts +8 -0
  160. package/cli/templates/libRoot/common/commonLogic.ts +10 -0
  161. package/cli/templates/libRoot/common/index.ts +8 -0
  162. package/cli/templates/libRoot/env/env.server.example.ts.template +6 -0
  163. package/cli/templates/libRoot/env/env.server.testing.ts.template +6 -0
  164. package/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.ts +15 -0
  165. package/cli/templates/libRoot/lib/___libName__/__libName__.service.ts +11 -0
  166. package/cli/templates/libRoot/lib/___libName__/__libName__.store.ts +13 -0
  167. package/cli/templates/libRoot/lib/option.ts +17 -0
  168. package/cli/templates/libRoot/package.json.template +5 -0
  169. package/cli/templates/libRoot/srvkit/backendLogic.ts +10 -0
  170. package/cli/templates/libRoot/srvkit/index.ts +8 -0
  171. package/cli/templates/libRoot/tsconfig.json.template +11 -0
  172. package/cli/templates/libRoot/ui/index.ts +7 -0
  173. package/cli/templates/libRoot/webkit/frontendLogic.ts +10 -0
  174. package/cli/templates/libRoot/webkit/index.ts +8 -0
  175. package/cli/templates/localDev/docker-compose.yaml.template +37 -0
  176. package/cli/templates/module/__Model__.Template.tsx +36 -0
  177. package/cli/templates/module/__Model__.Unit.tsx +26 -0
  178. package/cli/templates/module/__Model__.Util.tsx +30 -0
  179. package/cli/templates/module/__Model__.View.tsx +29 -0
  180. package/cli/templates/module/__Model__.Zone.tsx +43 -0
  181. package/cli/templates/module/__model__.constant.ts +24 -0
  182. package/cli/templates/module/__model__.dictionary.ts +30 -0
  183. package/cli/templates/module/__model__.document.ts +23 -0
  184. package/cli/templates/module/__model__.service.ts +16 -0
  185. package/cli/templates/module/__model__.signal.ts +27 -0
  186. package/cli/templates/module/__model__.store.ts +19 -0
  187. package/cli/templates/module/index.tsx +44 -0
  188. package/cli/templates/moduleRoot/index.tsx +31 -0
  189. package/cli/templates/pkgRoot/tsconfig.json.template +10 -0
  190. package/cli/templates/server.ts +45 -0
  191. package/cli/templates/workspaceRoot/.env.template +14 -0
  192. package/cli/templates/workspaceRoot/.gitignore.template +130 -0
  193. package/cli/templates/workspaceRoot/.vscode/settings.json.template +23 -0
  194. package/cli/templates/workspaceRoot/biome.json.template +175 -0
  195. package/cli/templates/workspaceRoot/bunfig.toml +4 -0
  196. package/cli/templates/workspaceRoot/infra/app/Chart.yaml.template +6 -0
  197. package/cli/templates/workspaceRoot/infra/app/templates/frontend.yaml.template +182 -0
  198. package/cli/templates/workspaceRoot/infra/app/values/_common-values.yaml.template +183 -0
  199. package/cli/templates/workspaceRoot/package.json.template +7 -0
  200. package/cli/templates/workspaceRoot/tsconfig.json.template +26 -0
  201. package/cli/testHelpers.ts +171 -0
  202. package/cli/workspace/workspace.command.ts +60 -0
  203. package/cli/workspace/workspace.runner.ts +57 -0
  204. package/cli/workspace/workspace.script.ts +68 -0
  205. package/client/capacitor.ts +68 -0
  206. package/client/clientRuntime.ts +141 -0
  207. package/client/cookie.ts +121 -0
  208. package/client/createFont.ts +8 -0
  209. package/client/csrTypes.ts +259 -0
  210. package/client/decorators.ts +25 -0
  211. package/client/device.ts +147 -0
  212. package/client/fetch.ts +1 -0
  213. package/client/index.ts +15 -0
  214. package/client/locale.ts +4 -0
  215. package/client/makePageProto.tsx +178 -0
  216. package/client/router.ts +286 -0
  217. package/client/rscNavigation.ts +19 -0
  218. package/client/storage.ts +33 -0
  219. package/client/translator.ts +43 -0
  220. package/client/types.ts +228 -0
  221. package/client/useClient.ts +1 -0
  222. package/common/Logger.ts +177 -0
  223. package/common/applyMixins.ts +14 -0
  224. package/common/capitalize.ts +4 -0
  225. package/common/deepObjectify.ts +27 -0
  226. package/common/formatNumber.ts +14 -0
  227. package/common/formatPhone.ts +7 -0
  228. package/common/getAllPropertyDescriptors.ts +13 -0
  229. package/common/hmrPhase.ts +17 -0
  230. package/common/httpClient.ts +101 -0
  231. package/common/index.ts +50 -0
  232. package/common/isDayjs.ts +3 -0
  233. package/common/isEmail.ts +2 -0
  234. package/common/isPhoneNumber.ts +8 -0
  235. package/common/isQueryEqual.ts +23 -0
  236. package/common/isValidDate.ts +14 -0
  237. package/common/localeConfig.ts +41 -0
  238. package/common/lowerlize.ts +4 -0
  239. package/common/mergeVersion.ts +10 -0
  240. package/common/objectify.ts +7 -0
  241. package/common/pathGet.ts +13 -0
  242. package/common/pathSet.ts +16 -0
  243. package/common/randomPick.ts +1 -0
  244. package/common/randomPicks.ts +12 -0
  245. package/common/routeConvention.ts +203 -0
  246. package/common/sleep.ts +8 -0
  247. package/common/splitVersion.ts +11 -0
  248. package/common/subRoute.ts +34 -0
  249. package/common/types.ts +15 -0
  250. package/constant/constantRegistry.ts +334 -0
  251. package/constant/crystalize.ts +45 -0
  252. package/constant/deserialize.ts +70 -0
  253. package/constant/fieldInfo.ts +415 -0
  254. package/constant/getDefault.ts +18 -0
  255. package/constant/immerify.ts +16 -0
  256. package/constant/index.ts +10 -0
  257. package/constant/purify.ts +118 -0
  258. package/constant/serialize.ts +87 -0
  259. package/constant/types.ts +105 -0
  260. package/constant/via.ts +360 -0
  261. package/devkit/aiEditor.ts +299 -0
  262. package/devkit/akanApp/akanApp.host.ts +356 -0
  263. package/devkit/akanApp/index.ts +1 -0
  264. package/devkit/akanConfig/akanConfig.ts +332 -0
  265. package/devkit/akanConfig/index.ts +2 -0
  266. package/devkit/akanConfig/types.ts +187 -0
  267. package/devkit/applicationBuildReporter.ts +69 -0
  268. package/devkit/applicationBuildRunner.ts +302 -0
  269. package/devkit/applicationReleasePackager.ts +205 -0
  270. package/devkit/artifact/implicitRootLayout.ts +155 -0
  271. package/devkit/artifact/index.ts +1 -0
  272. package/devkit/artifact/routeSeedIndex.ts +128 -0
  273. package/devkit/auth.ts +41 -0
  274. package/devkit/builder.ts +164 -0
  275. package/devkit/capacitor.base.config.ts +74 -0
  276. package/devkit/capacitorApp.ts +385 -0
  277. package/devkit/commandDecorators/argMeta.ts +88 -0
  278. package/devkit/commandDecorators/command.ts +314 -0
  279. package/devkit/commandDecorators/commandBuilder.ts +188 -0
  280. package/devkit/commandDecorators/commandMeta.ts +6 -0
  281. package/devkit/commandDecorators/dependencyBuilder.ts +100 -0
  282. package/devkit/commandDecorators/helpFormatter.ts +217 -0
  283. package/devkit/commandDecorators/index.ts +8 -0
  284. package/devkit/commandDecorators/targetMeta.ts +31 -0
  285. package/devkit/commandDecorators/types.ts +10 -0
  286. package/devkit/constants.ts +25 -0
  287. package/devkit/createTunnel.ts +36 -0
  288. package/devkit/dependencyScanner.ts +339 -0
  289. package/devkit/executors.ts +1326 -0
  290. package/devkit/extractDeps.ts +85 -0
  291. package/devkit/fileEditor.ts +106 -0
  292. package/devkit/fileSys.ts +39 -0
  293. package/devkit/frontendBuild/allRoutesBuilder.ts +103 -0
  294. package/devkit/frontendBuild/clientBuildTypes.ts +114 -0
  295. package/devkit/frontendBuild/clientEntriesBundler.ts +300 -0
  296. package/devkit/frontendBuild/clientEntryDiscovery.ts +196 -0
  297. package/devkit/frontendBuild/csrArtifactBuilder.ts +237 -0
  298. package/devkit/frontendBuild/cssCompiler.ts +279 -0
  299. package/devkit/frontendBuild/cssImportResolver.ts +116 -0
  300. package/devkit/frontendBuild/fontOptimizer.ts +427 -0
  301. package/devkit/frontendBuild/hmrChangeClassifier.ts +28 -0
  302. package/devkit/frontendBuild/hmrWatcher.ts +101 -0
  303. package/devkit/frontendBuild/index.ts +18 -0
  304. package/devkit/frontendBuild/pagesBundleBuilder.ts +137 -0
  305. package/devkit/frontendBuild/pagesEntrySourceGenerator.ts +37 -0
  306. package/devkit/frontendBuild/precompressArtifacts.ts +59 -0
  307. package/devkit/frontendBuild/routeClientBuilder.ts +290 -0
  308. package/devkit/frontendBuild/routesManifestArtifactSerializer.ts +62 -0
  309. package/devkit/frontendBuild/ssrBaseArtifactBuilder.ts +139 -0
  310. package/devkit/frontendBuild/vendorSpecifiers.ts +16 -0
  311. package/devkit/frontendBuild/watchRootResolver.ts +28 -0
  312. package/devkit/getCredentials.ts +19 -0
  313. package/devkit/getDirname.ts +3 -0
  314. package/devkit/getModelFileData.ts +59 -0
  315. package/devkit/getRelatedCnsts.ts +300 -0
  316. package/devkit/guideline.ts +19 -0
  317. package/devkit/incrementalBuilder/incrementalBuilder.host.ts +78 -0
  318. package/devkit/incrementalBuilder/incrementalBuilder.proc.ts +330 -0
  319. package/devkit/incrementalBuilder/index.ts +1 -0
  320. package/devkit/index.ts +36 -0
  321. package/devkit/lint/no-import-client-functions.grit +32 -0
  322. package/devkit/lint/no-import-external-library.grit +21 -0
  323. package/devkit/lint/no-js-private-class-method.grit +42 -0
  324. package/devkit/lint/no-use-client-in-server.grit +7 -0
  325. package/devkit/lint/non-scalar-props-restricted.grit +13 -0
  326. package/devkit/linter.ts +248 -0
  327. package/devkit/mobile/index.ts +1 -0
  328. package/devkit/mobile/mobileTarget.ts +47 -0
  329. package/devkit/prompter.ts +71 -0
  330. package/devkit/scanInfo.ts +605 -0
  331. package/devkit/selectModel.ts +11 -0
  332. package/devkit/spinner.ts +54 -0
  333. package/devkit/sshTunnel.ts +151 -0
  334. package/devkit/streamAi.ts +45 -0
  335. package/devkit/transforms/barrelAnalyzer.ts +249 -0
  336. package/devkit/transforms/barrelImportsPlugin.ts +451 -0
  337. package/devkit/transforms/externalizeFrameworkPlugin.ts +159 -0
  338. package/devkit/transforms/index.ts +5 -0
  339. package/devkit/transforms/rscUseClientTransform.ts +52 -0
  340. package/devkit/transforms/useClientBundlePlugin.ts +47 -0
  341. package/devkit/typeChecker.ts +260 -0
  342. package/devkit/types.ts +42 -0
  343. package/devkit/ui/MultiScrollList.tsx +228 -0
  344. package/devkit/ui/ScrollList.tsx +106 -0
  345. package/devkit/ui/index.ts +2 -0
  346. package/devkit/uploadRelease.ts +95 -0
  347. package/devkit/useStdoutDimensions.ts +20 -0
  348. package/dictionary/base.dictionary.ts +91 -0
  349. package/dictionary/dictInfo.ts +1079 -0
  350. package/dictionary/dictionary.ts +10 -0
  351. package/dictionary/index.ts +12 -0
  352. package/dictionary/locale.ts +230 -0
  353. package/dictionary/trans.ts +196 -0
  354. package/document/by.ts +39 -0
  355. package/document/dataLoader.ts +91 -0
  356. package/document/database.ts +168 -0
  357. package/document/databaseRegistry.ts +113 -0
  358. package/document/documentQuery.ts +143 -0
  359. package/document/documentSchema.ts +91 -0
  360. package/document/filterMeta.ts +210 -0
  361. package/document/index.ts +11 -0
  362. package/document/into.ts +169 -0
  363. package/document/loaderInfo.ts +50 -0
  364. package/document/schema.ts +24 -0
  365. package/document/types.ts +41 -0
  366. package/fetch/client/fetchClient.ts +600 -0
  367. package/fetch/client/httpClient.ts +157 -0
  368. package/fetch/client/index.ts +3 -0
  369. package/fetch/client/wsClient.ts +246 -0
  370. package/fetch/fetchType/appliedReturn.type.ts +108 -0
  371. package/fetch/fetchType/buildFetch.type.ts +24 -0
  372. package/fetch/fetchType/clientSignal.type.ts +22 -0
  373. package/fetch/fetchType/endpointFetch.type.ts +56 -0
  374. package/fetch/fetchType/index.ts +5 -0
  375. package/fetch/fetchType/sliceFetch.type.ts +173 -0
  376. package/fetch/index.ts +4 -0
  377. package/fetch/requestStorage.ts +127 -0
  378. package/fetch/serializer/fetch.serializer.ts +131 -0
  379. package/fetch/serializer/index.ts +1 -0
  380. package/fetch/types.ts +28 -0
  381. package/package.json +202 -5
  382. package/server/SSR_MEMORY_DIAGNOSIS.md +107 -0
  383. package/server/akanApp.ts +855 -0
  384. package/server/akanLib.ts +43 -0
  385. package/server/akanOption.ts +42 -0
  386. package/server/akanServer.ts +369 -0
  387. package/server/artifact/builderRpc.ts +124 -0
  388. package/server/artifact/index.ts +6 -0
  389. package/server/artifact/ipcTypes.ts +46 -0
  390. package/server/artifact/manifestTypes.ts +19 -0
  391. package/server/artifact/routeClientCache.ts +224 -0
  392. package/server/artifact/routeSeedIndexStore.ts +89 -0
  393. package/server/artifact/routesManifestStore.ts +120 -0
  394. package/server/decorators.ts +95 -0
  395. package/server/di/diLifecycle.ts +520 -0
  396. package/server/di/index.ts +4 -0
  397. package/server/di/predefinedAdaptor.ts +77 -0
  398. package/server/di/resolveAdaptorHierarchy.ts +82 -0
  399. package/server/di/resolveHierarchy.ts +89 -0
  400. package/server/di/resolveServiceHierarchy.ts +47 -0
  401. package/server/di/utils.ts +40 -0
  402. package/server/hmr/changeBatch.ts +14 -0
  403. package/server/hmr/clientScript.ts +310 -0
  404. package/server/hmr/devHmrController.ts +395 -0
  405. package/server/hmr/index.ts +4 -0
  406. package/server/hmr/wsHub.ts +56 -0
  407. package/server/imageOptimizer.ts +427 -0
  408. package/server/imageOptimizerError.ts +8 -0
  409. package/server/index.ts +14 -0
  410. package/server/lifecycle/shutdownManager.ts +52 -0
  411. package/server/logging/rotatingLogWriter.ts +190 -0
  412. package/server/processMetricsCollector.ts +78 -0
  413. package/server/proxy/akanResponse.ts +16 -0
  414. package/server/proxy/bunRequestFields.ts +12 -0
  415. package/server/proxy/hostBasePathWebProxy.ts +112 -0
  416. package/server/proxy/index.ts +15 -0
  417. package/server/proxy/localeWebProxy.ts +71 -0
  418. package/server/proxy/types.ts +41 -0
  419. package/server/proxy/webProxyRunner.ts +90 -0
  420. package/server/resolver/database.resolver.ts +340 -0
  421. package/server/resolver/index.ts +3 -0
  422. package/server/resolver/resolver.contract.fixture.ts +222 -0
  423. package/server/resolver/service.resolver.ts +176 -0
  424. package/server/resolver/signal.resolver.ts +386 -0
  425. package/server/robots.ts +32 -0
  426. package/server/routeElementComposer.tsx +91 -0
  427. package/server/routeTreeBuilder.ts +279 -0
  428. package/server/routing/apiRouter.ts +226 -0
  429. package/server/rscClient.tsx +140 -0
  430. package/server/rscWorker.tsx +625 -0
  431. package/server/rscWorkerHost.ts +616 -0
  432. package/server/sitemap.ts +90 -0
  433. package/server/ssrFromRscRenderer.tsx +285 -0
  434. package/server/ssrTypes.ts +48 -0
  435. package/server/types/react-server-dom-webpack.d.ts +91 -0
  436. package/server/types.tsx +109 -0
  437. package/server/vendor/akanjs-base.ts +1 -0
  438. package/server/vendor/akanjs-common.ts +1 -0
  439. package/server/vendor/akanjs-constant.ts +1 -0
  440. package/server/vendor/akanjs-store.ts +1 -0
  441. package/server/vendor/react-dom-client.ts +5 -0
  442. package/server/vendor/react-dom.ts +21 -0
  443. package/server/vendor/react-jsx-dev-runtime.ts +5 -0
  444. package/server/vendor/react-jsx-runtime.ts +5 -0
  445. package/server/vendor/react-refresh-runtime.ts +6 -0
  446. package/server/vendor/react-server-dom-webpack-client-browser.ts +12 -0
  447. package/server/vendor/react.ts +51 -0
  448. package/server/vendor/scheduler.ts +23 -0
  449. package/server/webRouter.ts +712 -0
  450. package/service/adapt.ts +47 -0
  451. package/service/base.service.ts +18 -0
  452. package/service/index.ts +10 -0
  453. package/service/injectInfo.ts +393 -0
  454. package/service/ipcTypes.ts +127 -0
  455. package/service/predefinedAdaptor/cache.adaptor.ts +105 -0
  456. package/service/predefinedAdaptor/compress.adaptor.ts +357 -0
  457. package/service/predefinedAdaptor/database.adaptor.ts +1310 -0
  458. package/service/predefinedAdaptor/index.ts +13 -0
  459. package/service/predefinedAdaptor/logging.adaptor.ts +36 -0
  460. package/service/predefinedAdaptor/queue.adaptor.ts +42 -0
  461. package/service/predefinedAdaptor/role.adaptor.ts +18 -0
  462. package/service/predefinedAdaptor/schedule.adaptor.ts +188 -0
  463. package/service/predefinedAdaptor/solidCache.adaptor.ts +143 -0
  464. package/service/predefinedAdaptor/solidPubsub.adaptor.ts +98 -0
  465. package/service/predefinedAdaptor/solidQueue.adaptor.ts +203 -0
  466. package/service/predefinedAdaptor/solidSqlite.ts +85 -0
  467. package/service/predefinedAdaptor/sqlitePath.ts +20 -0
  468. package/service/predefinedAdaptor/storage.adaptor.ts +121 -0
  469. package/service/predefinedAdaptor/websocket.adaptor.ts +313 -0
  470. package/service/serve.ts +223 -0
  471. package/service/serviceModule.ts +221 -0
  472. package/service/serviceRegistry.ts +26 -0
  473. package/service/types.ts +113 -0
  474. package/signal/base.signal.ts +46 -0
  475. package/signal/endpoint.ts +122 -0
  476. package/signal/endpointInfo.ts +374 -0
  477. package/signal/exception.ts +50 -0
  478. package/signal/guard.ts +18 -0
  479. package/signal/guards.ts +16 -0
  480. package/signal/index.ts +18 -0
  481. package/signal/intercept.ts +39 -0
  482. package/signal/internal.ts +56 -0
  483. package/signal/internalArg.ts +38 -0
  484. package/signal/internalInfo.ts +208 -0
  485. package/signal/middleware.ts +108 -0
  486. package/signal/serializer/fetch.serializer.ts +128 -0
  487. package/signal/serializer/index.ts +1 -0
  488. package/signal/serverSignal.ts +114 -0
  489. package/signal/signalContext.ts +446 -0
  490. package/signal/signalRegistry.ts +82 -0
  491. package/signal/slice.ts +158 -0
  492. package/signal/sliceInfo.ts +254 -0
  493. package/signal/types.ts +131 -0
  494. package/store/action.ts +1067 -0
  495. package/store/baseSt.ts +81 -0
  496. package/store/hooks.ts +2 -0
  497. package/store/index.ts +8 -0
  498. package/store/rootStore.ts +26 -0
  499. package/store/state.ts +226 -0
  500. package/store/stateBuilder.ts +429 -0
  501. package/store/stateInfo.ts +66 -0
  502. package/store/store.ts +194 -0
  503. package/store/storeInstance.ts +382 -0
  504. package/store/storeRegistry.ts +84 -0
  505. package/store/types.ts +69 -0
  506. package/store/withSelector.ts +62 -0
  507. package/test/index.ts +16 -0
  508. package/test/playwright.config.base.ts +48 -0
  509. package/test/playwright.pageAgent.ts +41 -0
  510. package/test/sample.ts +19 -0
  511. package/test/sampleOf.ts +70 -0
  512. package/test/signalTest.preload.ts +10 -0
  513. package/test/signalTestRuntime.ts +126 -0
  514. package/test/testServer.ts +187 -0
  515. package/ui/BottomSheet.tsx +103 -0
  516. package/ui/Button.tsx +70 -0
  517. package/ui/ClientSide.tsx +11 -0
  518. package/ui/Clipboard.tsx +49 -0
  519. package/ui/Constant/Doc.tsx +696 -0
  520. package/ui/Constant/Mermaid.tsx +149 -0
  521. package/ui/Constant/index.ts +6 -0
  522. package/ui/Constant/schemaDoc.ts +324 -0
  523. package/ui/Copy.tsx +27 -0
  524. package/ui/CsrImage.tsx +38 -0
  525. package/ui/Data/CardList.tsx +141 -0
  526. package/ui/Data/Dashboard.tsx +72 -0
  527. package/ui/Data/Insight.tsx +35 -0
  528. package/ui/Data/Item.tsx +285 -0
  529. package/ui/Data/ListContainer.tsx +320 -0
  530. package/ui/Data/Pagination.tsx +54 -0
  531. package/ui/Data/QueryMaker.tsx +21 -0
  532. package/ui/Data/TableList.tsx +161 -0
  533. package/ui/Data/index.ts +11 -0
  534. package/ui/Data/index_.tsx +11 -0
  535. package/ui/DatePicker.tsx +184 -0
  536. package/ui/Dialog/Action.tsx +15 -0
  537. package/ui/Dialog/Close.tsx +22 -0
  538. package/ui/Dialog/Content.tsx +11 -0
  539. package/ui/Dialog/Modal.tsx +137 -0
  540. package/ui/Dialog/Provider.tsx +33 -0
  541. package/ui/Dialog/Title.tsx +15 -0
  542. package/ui/Dialog/Trigger.tsx +22 -0
  543. package/ui/Dialog/context.ts +20 -0
  544. package/ui/Dialog/index.tsx +15 -0
  545. package/ui/DragAction.tsx +129 -0
  546. package/ui/DraggableList.tsx +230 -0
  547. package/ui/Dropdown.tsx +51 -0
  548. package/ui/Empty.tsx +32 -0
  549. package/ui/Field.tsx +1556 -0
  550. package/ui/FontFace.tsx +26 -0
  551. package/ui/Image.tsx +185 -0
  552. package/ui/InfiniteScroll.tsx +67 -0
  553. package/ui/Input.tsx +636 -0
  554. package/ui/KeyboardAvoiding.tsx +62 -0
  555. package/ui/Layout/BottomAction.tsx +15 -0
  556. package/ui/Layout/BottomInset.tsx +42 -0
  557. package/ui/Layout/BottomTab.tsx +71 -0
  558. package/ui/Layout/Header.tsx +38 -0
  559. package/ui/Layout/LeftSider.tsx +34 -0
  560. package/ui/Layout/Navbar.tsx +46 -0
  561. package/ui/Layout/RightSider.tsx +41 -0
  562. package/ui/Layout/Sider.tsx +69 -0
  563. package/ui/Layout/Template.tsx +11 -0
  564. package/ui/Layout/TopLeftAction.tsx +28 -0
  565. package/ui/Layout/Unit.tsx +19 -0
  566. package/ui/Layout/View.tsx +12 -0
  567. package/ui/Layout/Zone.tsx +10 -0
  568. package/ui/Layout/index.ts +27 -0
  569. package/ui/Link/Back.tsx +15 -0
  570. package/ui/Link/Close.tsx +20 -0
  571. package/ui/Link/CsrLink.tsx +41 -0
  572. package/ui/Link/Lang.tsx +16 -0
  573. package/ui/Link/SsrLink.tsx +68 -0
  574. package/ui/Link/index.tsx +32 -0
  575. package/ui/Link/types.ts +47 -0
  576. package/ui/Load/Edit.tsx +19 -0
  577. package/ui/Load/Edit_Client.tsx +120 -0
  578. package/ui/Load/Page.tsx +40 -0
  579. package/ui/Load/PageCSR.tsx +39 -0
  580. package/ui/Load/Pagination.tsx +89 -0
  581. package/ui/Load/Units.tsx +330 -0
  582. package/ui/Load/View.tsx +115 -0
  583. package/ui/Load/index.ts +11 -0
  584. package/ui/Load/index_.tsx +6 -0
  585. package/ui/Loading/Area.tsx +10 -0
  586. package/ui/Loading/Button.tsx +17 -0
  587. package/ui/Loading/Input.tsx +17 -0
  588. package/ui/Loading/ProgressBar.tsx +14 -0
  589. package/ui/Loading/Skeleton.tsx +22 -0
  590. package/ui/Loading/Spin.tsx +22 -0
  591. package/ui/Loading/index.tsx +8 -0
  592. package/ui/Menu.tsx +273 -0
  593. package/ui/Modal.tsx +87 -0
  594. package/ui/Model/AdminPanel.tsx +51 -0
  595. package/ui/Model/Edit.tsx +46 -0
  596. package/ui/Model/EditModal.tsx +301 -0
  597. package/ui/Model/EditWrapper.tsx +48 -0
  598. package/ui/Model/LoadInit.tsx +11 -0
  599. package/ui/Model/New.tsx +46 -0
  600. package/ui/Model/NewWrapper.tsx +20 -0
  601. package/ui/Model/NewWrapper_Client.tsx +57 -0
  602. package/ui/Model/Remove.tsx +75 -0
  603. package/ui/Model/RemoveWrapper.tsx +38 -0
  604. package/ui/Model/SureToRemove.tsx +108 -0
  605. package/ui/Model/View.tsx +65 -0
  606. package/ui/Model/ViewEditModal.tsx +125 -0
  607. package/ui/Model/ViewModal.tsx +71 -0
  608. package/ui/Model/ViewWrapper.tsx +38 -0
  609. package/ui/Model/index.ts +33 -0
  610. package/ui/Model/index_.tsx +16 -0
  611. package/ui/More.tsx +56 -0
  612. package/ui/ObjectId.tsx +29 -0
  613. package/ui/Pagination.tsx +120 -0
  614. package/ui/Popconfirm.tsx +135 -0
  615. package/ui/Portal.tsx +10 -0
  616. package/ui/Radio.tsx +53 -0
  617. package/ui/RecentTime.tsx +123 -0
  618. package/ui/Refresh.tsx +24 -0
  619. package/ui/ScreenNavigator.tsx +129 -0
  620. package/ui/Select.tsx +322 -0
  621. package/ui/Signal/Arg.tsx +352 -0
  622. package/ui/Signal/Doc.tsx +231 -0
  623. package/ui/Signal/Listener.tsx +74 -0
  624. package/ui/Signal/Message.tsx +267 -0
  625. package/ui/Signal/Object.tsx +131 -0
  626. package/ui/Signal/PubSub.tsx +247 -0
  627. package/ui/Signal/Request.tsx +30 -0
  628. package/ui/Signal/Response.tsx +76 -0
  629. package/ui/Signal/RestApi.tsx +390 -0
  630. package/ui/Signal/WebSocket.tsx +47 -0
  631. package/ui/Signal/index.ts +10 -0
  632. package/ui/Signal/makeExample.ts +75 -0
  633. package/ui/System/CSR.tsx +420 -0
  634. package/ui/System/Client.tsx +296 -0
  635. package/ui/System/Common.tsx +83 -0
  636. package/ui/System/DevModeToggle.tsx +21 -0
  637. package/ui/System/Gtag.tsx +69 -0
  638. package/ui/System/Messages.tsx +175 -0
  639. package/ui/System/Reconnect.tsx +156 -0
  640. package/ui/System/Root.tsx +10 -0
  641. package/ui/System/SSR.tsx +163 -0
  642. package/ui/System/SelectLanguage.tsx +47 -0
  643. package/ui/System/ThemeToggle.tsx +98 -0
  644. package/ui/System/index.tsx +23 -0
  645. package/ui/Tab/Menu.tsx +56 -0
  646. package/ui/Tab/Menus.tsx +10 -0
  647. package/ui/Tab/Panel.tsx +25 -0
  648. package/ui/Tab/Provider.tsx +25 -0
  649. package/ui/Tab/context.ts +16 -0
  650. package/ui/Tab/index.tsx +11 -0
  651. package/ui/Table.tsx +131 -0
  652. package/ui/ToggleSelect.tsx +144 -0
  653. package/ui/Unauthorized.tsx +29 -0
  654. package/ui/animated.tsx +8 -0
  655. package/ui/fontCss.ts +86 -0
  656. package/ui/index.ts +44 -0
  657. package/ui/styles.css +617 -0
  658. package/webkit/bootCsr.tsx +275 -0
  659. package/webkit/createRobotPage.ts +15 -0
  660. package/webkit/createSitemapPage.ts +4 -0
  661. package/webkit/index.ts +19 -0
  662. package/webkit/lazy.tsx +37 -0
  663. package/webkit/types.ts +7 -0
  664. package/webkit/useCamera.tsx +99 -0
  665. package/webkit/useCodepush.tsx +99 -0
  666. package/webkit/useContact.tsx +48 -0
  667. package/webkit/useCsrValues.ts +661 -0
  668. package/webkit/useDebounce.ts +24 -0
  669. package/webkit/useFetch.ts +48 -0
  670. package/webkit/useGeoLocation.tsx +24 -0
  671. package/webkit/useHistory.ts +76 -0
  672. package/webkit/useInterval.ts +21 -0
  673. package/webkit/useLocation.ts +69 -0
  674. package/webkit/usePurchase.tsx +156 -0
  675. package/webkit/usePushNoti.tsx +48 -0
  676. package/webkit/useThrottle.ts +22 -0
  677. package/src/index.js +0 -2
  678. package/src/index.js.map +0 -1
  679. package/src/lib/akan2.js +0 -4
  680. package/src/lib/akan2.js.map +0 -1
  681. package/src/run.js +0 -4
  682. package/src/run.js.map +0 -1
@@ -0,0 +1,273 @@
1
+ # Scalar Dictionary Implementation Guide for Akan.js
2
+
3
+ ## Purpose of Scalar Dictionary Files
4
+
5
+ Scalar dictionary files in Akan.js provide internationalization (i18n) support by:
6
+
7
+ - Defining translations for scalar names, fields, and enum values
8
+ - Supporting multiple languages (primarily English and Korean)
9
+ - Enabling consistent terminology across the application
10
+ - Providing field descriptions for documentation and tooltips
11
+ - Maintaining type safety with the constant model definition
12
+ - Creating a centralized translation source for UI components
13
+
14
+ ## File Structure and Location
15
+
16
+ ### Location Convention
17
+
18
+ ```
19
+ {app,lib}/
20
+ └── */lib/__scalar/
21
+ └── <scalarName>/ # camelCase directory
22
+ ├── <scalarName>.constant.ts # scalar definition
23
+ └── <scalarName>.dictionary.ts # translations
24
+ ```
25
+
26
+ ### Key Benefits
27
+
28
+ - End-to-end type safety
29
+ - Fluent builder pattern
30
+ - Automatic validation via generics
31
+ - Multi-language support
32
+
33
+ ## Required Imports
34
+
35
+ ```typescript
36
+ import { scalarDictionary } from "akanjs/dictionary";
37
+
38
+ // Import types using "import type" for cleaner code
39
+ import type { YourScalar, YourEnum } from "./yourScalar.constant";
40
+ ```
41
+
42
+ ## Scalar Dictionary Builder
43
+
44
+ The `scalarDictionary()` function creates a type-safe dictionary using a fluent builder pattern.
45
+
46
+ ### Builder Methods
47
+
48
+ | Method | Description | Example |
49
+ | ---------------------------- | -------------------------------- | -------------------------------------------------------------------------- |
50
+ | `.of((t) => ...)` | Define scalar name & description | `.of((t) => t(["Scalar Name", "스칼라 이름"]).desc(["Desc", "설명"]))` |
51
+ | `.model<T>((t) => ...)` | Define field translations | `.model<YourScalar>((t) => ({ fieldName: t(["Label", "레이블"]) }))` |
52
+ | `.enum<T>(name, (t) => ...)` | Define enum value translations | `.enum<YourEnum>("enumName", (t) => ({ value1: t(["Label", "레이블"]) }))` |
53
+
54
+ ## Translation Format
55
+
56
+ Each translation uses the `t()` function with an array of values. The array order matches the language order defined in `scalarDictionary()`.
57
+
58
+ ```typescript
59
+ // Language order: ["en", "ko"]
60
+ // Index 0 = English, Index 1 = Korean
61
+
62
+ t(["English Label", "한국어 레이블"]).desc(["English description", "한국어 설명"]);
63
+ ```
64
+
65
+ ### Translation Methods
66
+
67
+ | Method | Purpose | Example |
68
+ | -------------- | ---------------------- | ---------------------------------------- |
69
+ | `t([...])` | Define the label/name | `t(["Status", "상태"])` |
70
+ | `.desc([...])` | Define the description | `.desc(["Current status", "현재 상태"])` |
71
+
72
+ > **Note**: Both label and description are required for complete internationalization support.
73
+
74
+ ## Basic Structure
75
+
76
+ ```typescript
77
+ import { scalarDictionary } from "akanjs/dictionary";
78
+ import type { YourScalar, YourEnum } from "./yourScalar.constant";
79
+
80
+ export const dictionary = scalarDictionary(["en", "ko"])
81
+ .of((t) => t(["Scalar Name", "스칼라 이름"]).desc(["Scalar description", "스칼라 설명"]))
82
+ .model<YourScalar>((t) => ({
83
+ fieldName: t(["Field Label", "필드 레이블"]).desc(["Field description", "필드 설명"]),
84
+ }))
85
+ .enum<YourEnum>("enumName", (t) => ({
86
+ value1: t(["Value Label", "값 레이블"]).desc(["Value description", "값 설명"]),
87
+ }));
88
+ ```
89
+
90
+ ## Complete Example
91
+
92
+ ```typescript
93
+ // File: libs/payment/lib/__scalar/price/price.dictionary.ts
94
+ import { scalarDictionary } from "akanjs/dictionary";
95
+ import type { Currency, Price } from "./price.constant";
96
+
97
+ export const dictionary = scalarDictionary(["en", "ko"])
98
+ .of((t) => t(["Price", "가격"]).desc(["Price information", "가격 정보"]))
99
+ .model<Price>((t) => ({
100
+ amount: t(["Amount", "금액"]).desc(["Price amount", "가격 금액"]),
101
+ currency: t(["Currency", "통화"]).desc(["Currency type", "통화 유형"]),
102
+ }))
103
+ .enum<Currency>("currency", (t) => ({
104
+ usd: t(["USD", "달러"]).desc(["US Dollar", "미국 달러"]),
105
+ krw: t(["KRW", "원"]).desc(["Korean Won", "한국 원"]),
106
+ eur: t(["EUR", "유로"]).desc(["Euro", "유로"]),
107
+ }));
108
+ ```
109
+
110
+ ## Enum Name Matching
111
+
112
+ The first argument to `.enum()` must match the name used in `enumOf()` from the constant file. This ensures proper type checking and runtime resolution.
113
+
114
+ ### Example
115
+
116
+ **constant.ts**:
117
+
118
+ ```typescript
119
+ export class Currency extends enumOf("currency", ["usd", "krw", "eur"]) {}
120
+ ```
121
+
122
+ **dictionary.ts**:
123
+
124
+ ```typescript
125
+ // Must match: "currency"
126
+ .enum<Currency>("currency", (t) => ({
127
+ usd: t(["USD", "달러"]).desc(["US Dollar", "미국 달러"]),
128
+ krw: t(["KRW", "원"]).desc(["Korean Won", "한국 원"]),
129
+ eur: t(["EUR", "유로"]).desc(["Euro", "유로"]),
130
+ }))
131
+ ```
132
+
133
+ > **Important**: The enum name string must exactly match the first argument of `enumOf()`. For example, `enumOf("journey", [...])` requires `.enum<Journey>("journey", ...)`.
134
+
135
+ ## Type Imports
136
+
137
+ Always import types from the constant file to ensure type safety. The generic parameters enforce that all fields and enum values have translations.
138
+
139
+ ```typescript
140
+ import { scalarDictionary } from "akanjs/dictionary";
141
+
142
+ // Import types using "import type" for cleaner code
143
+ import type { EncourageInfo, Inquiry, Journey } from "./encourageInfo.constant";
144
+
145
+ export const dictionary = scalarDictionary(["en", "ko"])
146
+ .of((t) => t(["Encourage Info", "격려 정보"]).desc(["Encouragement information", "격려 정보"]))
147
+ .model<EncourageInfo>((t) => ({
148
+ // TypeScript ensures all fields of EncourageInfo are defined
149
+ }))
150
+ .enum<Journey>("journey", (t) => ({
151
+ // TypeScript ensures all values of Journey enum are defined
152
+ }))
153
+ .enum<Inquiry>("inquiry", (t) => ({
154
+ // TypeScript ensures all values of Inquiry enum are defined
155
+ }));
156
+ ```
157
+
158
+ ### Type Safety Benefits
159
+
160
+ - **`import type`**: Use `import type` for type-only imports. This ensures no runtime code is included.
161
+ - **`.model<Type>`**: Provides autocomplete for field names and validates that all fields are translated.
162
+ - **`.enum<Type>`**: Provides autocomplete for enum values and validates that all values are translated.
163
+
164
+ ## Common Mistakes and Fixes
165
+
166
+ | Issue | Wrong ❌ | Correct ✅ |
167
+ | ----------------- | -------------------------------- | ----------------------------------------------- |
168
+ | Missing .desc() | `t(["Label", "레이블"])` | `t(["Label", "레이블"]).desc(["Desc", "설명"])` |
169
+ | Wrong enum name | `.enum<Journey>("Journey", ...)` | `.enum<Journey>("journey", ...)` |
170
+ | Missing export | `const dictionary = ...` | `export const dictionary = ...` |
171
+ | Wrong array order | `t(["한국어", "English"])` | `t(["English", "한국어"])` |
172
+ | Missing field | (TypeScript error) | All fields defined |
173
+
174
+ ## Best Practices
175
+
176
+ ### 1. Always Use Type Generics
177
+
178
+ Use `.model<Type>` and `.enum<Type>` to ensure TypeScript validates all fields and values are translated.
179
+
180
+ ### 2. Consistent Language Order
181
+
182
+ Always use the same language order (e.g., `["en", "ko"]`) across all dictionaries in your project.
183
+
184
+ ### 3. Meaningful Descriptions
185
+
186
+ Provide helpful descriptions that explain the field's purpose, not just repeat the label.
187
+
188
+ ```typescript
189
+ // ❌ Bad - description just repeats the label
190
+ amount: t(["Amount", "금액"]).desc(["Amount", "금액"]),
191
+
192
+ // ✅ Good - description explains the purpose
193
+ amount: t(["Amount", "금액"]).desc(["Price amount in selected currency", "선택된 통화의 가격 금액"]),
194
+ ```
195
+
196
+ ### 4. Export as 'dictionary'
197
+
198
+ Use the standard export name `dictionary` for consistency with the framework's auto-import system.
199
+
200
+ ```typescript
201
+ // ✅ Correct
202
+ export const dictionary = scalarDictionary(["en", "ko"])...
203
+ ```
204
+
205
+ ## Implementation Checklist
206
+
207
+ ### Required Elements
208
+
209
+ - [ ] File location: `__scalar/<name>/<name>.dictionary.ts`
210
+ - [ ] Import `scalarDictionary` from `akanjs/dictionary`
211
+ - [ ] Import types from constant file using `import type`
212
+ - [ ] Initialize with correct language order: `["en", "ko"]`
213
+ - [ ] Define scalar name/description with `.of()`
214
+ - [ ] Define all field translations with `.model<Type>()`
215
+ - [ ] Define all enum translations with `.enum<Type>(name)`
216
+ - [ ] Ensure enum name matches `enumOf()` name
217
+ - [ ] Include both label and description for all entries
218
+ - [ ] Export as `dictionary`
219
+
220
+ ### Translation Format
221
+
222
+ - [ ] Each translation uses `t([...]).desc([...])`
223
+ - [ ] First element is English translation
224
+ - [ ] Second element is Korean translation
225
+ - [ ] No trailing punctuation in translations
226
+ - [ ] First letter capitalized in English
227
+
228
+ ## Full Example with Multiple Enums
229
+
230
+ ```typescript
231
+ // File: apps/example/lib/__scalar/encourageInfo/encourageInfo.dictionary.ts
232
+ import { scalarDictionary } from "akanjs/dictionary";
233
+ import type { EncourageInfo, Inquiry, Journey } from "./encourageInfo.constant";
234
+
235
+ export const dictionary = scalarDictionary(["en", "ko"])
236
+ .of((t) => t(["Encourage Info", "격려 정보"]).desc(["User encouragement settings", "사용자 격려 설정"]))
237
+ .model<EncourageInfo>((t) => ({
238
+ journey: t(["Journey", "여정"]).desc(["User journey stage", "사용자 여정 단계"]),
239
+ inquiry: t(["Inquiry", "문의"]).desc(["Inquiry type", "문의 유형"]),
240
+ message: t(["Message", "메시지"]).desc(["Encouragement message", "격려 메시지"]),
241
+ showAt: t(["Show At", "표시 시간"]).desc(["When to show encouragement", "격려 표시 시점"]),
242
+ }))
243
+ .enum<Journey>("journey", (t) => ({
244
+ firstJoin: t(["First Join", "첫 가입"]).desc(["User just joined", "사용자가 방금 가입함"]),
245
+ waitPay: t(["Waiting Payment", "결제 대기"]).desc(["Awaiting payment", "결제 대기 중"]),
246
+ onProgress: t(["In Progress", "진행 중"]).desc(["Currently active", "현재 진행 중"]),
247
+ completed: t(["Completed", "완료됨"]).desc(["Journey completed", "여정 완료"]),
248
+ }))
249
+ .enum<Inquiry>("inquiry", (t) => ({
250
+ general: t(["General", "일반"]).desc(["General inquiry", "일반 문의"]),
251
+ support: t(["Support", "지원"]).desc(["Technical support", "기술 지원"]),
252
+ billing: t(["Billing", "청구"]).desc(["Billing inquiry", "청구 문의"]),
253
+ }));
254
+ ```
255
+
256
+ ## Pro Tips
257
+
258
+ - **TypeScript Errors**: TypeScript will show errors if you miss any fields or enum values - use this to your advantage!
259
+ - **Usage**: The dictionary is used for UI labels, form validation messages, and API documentation
260
+ - **Descriptions**: Keep descriptions concise but informative - they appear in tooltips and help text
261
+ - **Consistency**: Match the field order in dictionary with the constant file for easier maintenance
262
+
263
+ ## Summary
264
+
265
+ 1. **Import**: `scalarDictionary` from `akanjs/dictionary`, types from constant file
266
+ 2. **Initialize**: `scalarDictionary(["en", "ko"])`
267
+ 3. **Scalar Info**: `.of((t) => t([...]).desc([...]))`
268
+ 4. **Fields**: `.model<Type>((t) => ({ field: t([...]).desc([...]) }))`
269
+ 5. **Enums**: `.enum<Type>("enumName", (t) => ({ value: t([...]).desc([...]) }))`
270
+ 6. **Export**: `export const dictionary = ...`
271
+ 7. **Format**: `t(["English", "Korean"]).desc(["English desc", "Korean desc"])`
272
+
273
+ Following these guidelines ensures your scalar dictionary files are complete, type-safe, and maintainable across the Akan.js framework.
@@ -0,0 +1,35 @@
1
+ {
2
+ "title": "Scalar Module",
3
+ "description": "Overview and summary of scalar modules in Akan.js - reusable data structures for embedded documents, DTOs, and shared schemas",
4
+ "scans": [
5
+ {
6
+ "type": "source",
7
+ "description": "constant instruction file",
8
+ "path": "pkgs/akanjs/cli/guidelines/scalarConstant/scalarConstant.instruction.md"
9
+ },
10
+ {
11
+ "type": "source",
12
+ "description": "dictionary instruction file",
13
+ "path": "pkgs/akanjs/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md"
14
+ },
15
+ {
16
+ "type": "source",
17
+ "description": "core scalar module factory functions",
18
+ "path": "pkgs/akanjs/server/module.ts"
19
+ }
20
+ ],
21
+ "update": {
22
+ "filePath": "./scalarModule.instruction.md",
23
+ "contents": [
24
+ "Purpose and architecture of scalar modules in Akan.js",
25
+ "Complete file structure and directory organization",
26
+ "Naming conventions for directories, files, classes, enums and dictionary keys"
27
+ ],
28
+ "rules": [
29
+ "Follow camelCase naming for directories and files",
30
+ "Use PascalCase for class names and enum types",
31
+ "Design scalars for reusability across multiple modules"
32
+ ]
33
+ },
34
+ "page": "/akanjs/(docs)/docs/scalar/overview/_index.tsx"
35
+ }
@@ -0,0 +1,81 @@
1
+ # Scalar Modules Overview
2
+
3
+ ## Purpose
4
+
5
+ Scalar modules provide reusable value objects for:
6
+
7
+ - Embedded documents in domain models
8
+ - Shared DTOs and configuration objects
9
+ - Type-safe schemas across your application
10
+ - Internationalized data structures
11
+
12
+ ## Core Principles
13
+
14
+ - **Reusability**: Designed for cross-module consumption
15
+ - **Stateless**: Pure data containers without business logic
16
+ - **Type-Safe**: Full TypeScript integration with runtime validation
17
+ - **Composable**: Embeddable within larger domain models
18
+ - **I18n Ready**: Built-in translation support
19
+
20
+ ## File Structure
21
+
22
+ ```
23
+ {domain}/lib/
24
+ └── __scalar/ // Special scalar directory
25
+ └── [scalarName]/ // camelCase scalar name
26
+ ├── [name].constant.ts // Schema definition
27
+ ├── [name].dictionary.ts // I18n translations
28
+ └── [name].document.ts // Method extensions (optional)
29
+ ```
30
+
31
+ ## File Responsibilities
32
+
33
+ | File Type | Purpose |
34
+ | ----------------- | ---------------------------------------------------------------- |
35
+ | `*.constant.ts` | Defines schema with `@Model.Scalar` and `@Field.Prop` decorators |
36
+ | `*.dictionary.ts` | Provides internationalization with `ModelDictionary<Type>` |
37
+ | `*.document.ts` | Extends functionality with custom methods using `by()` decorator |
38
+
39
+ ## Naming Conventions
40
+
41
+ | Element | Convention | Example |
42
+ | ---------------- | ---------------------- | --------------------------- |
43
+ | Scalar Directory | `camelCase` | `geoLocation` |
44
+ | Constant File | `[name].constant.ts` | `geoLocation.constant.ts` |
45
+ | Dictionary File | `[name].dictionary.ts` | `geoLocation.dictionary.ts` |
46
+ | Document File | `[name].document.ts` | `geoLocation.document.ts` |
47
+ | Scalar Class | `PascalCase` | `GeoLocation` |
48
+ | Enum Values | `camelCase` | `highAccuracy` |
49
+ | Dictionary Keys | `kebab-case` prefixes | `desc-fieldName` |
50
+
51
+ ## Core Components
52
+
53
+ 1. **Constant File**: Schema definition with typed fields and validation
54
+ 2. **Dictionary File**: I18n translations for model metadata, fields and enums
55
+ 3. **Document File**: Optional method extensions for data transformations
56
+
57
+ ## Key Rules
58
+
59
+ 1. One scalar class per file with matching `@Model.Scalar` parameter
60
+ 2. All fields require decorators (`@Field.Prop`, `@Field.Hidden`, etc.)
61
+ 3. Dictionary must include all fields/enums with `modelName`/`modelDesc`
62
+ 4. Use `satisfies ModelDictionary<Type>` for dictionary type safety
63
+
64
+ ## Best Practices
65
+
66
+ - Design for maximum reusability across modules
67
+ - Keep scalars focused and lightweight
68
+ - Use immutable fields for invariant data
69
+ - Provide complete I18n coverage in dictionaries
70
+ - Add document methods only for data transformations
71
+ - Validate fields with options (min/max, minlength/maxlength)
72
+
73
+ ## Integration Points
74
+
75
+ - **Domain Models**: Embedded as value objects
76
+ - **GraphQL**: Auto-generated types and enums
77
+ - **Validation**: Runtime type checking through decorators
78
+ - **Internationalization**: Consistent terminology via dictionaries
79
+ - **API Contracts**: Shared request/response payloads
80
+
81
+ Scalar modules provide foundational data structures that enable consistent, type-safe modeling across Akan.js applications while promoting code reuse and maintainability.
@@ -0,0 +1,108 @@
1
+ {
2
+ "title": "Shared UI Components Usage Guide",
3
+ "description": "Comprehensive guide on using shared library UI components in Akan.js applications",
4
+ "scans": [
5
+ {
6
+ "type": "source",
7
+ "description": "Core shared UI component library structure",
8
+ "path": "libs/shared/ui/index.ts"
9
+ },
10
+ {
11
+ "type": "source",
12
+ "description": "Field component implementations (form inputs)",
13
+ "path": "libs/shared/ui/Field.tsx"
14
+ },
15
+ {
16
+ "type": "source",
17
+ "description": "Data component implementations (tables, lists, visualization)",
18
+ "path": "libs/shared/ui/Data/index_.tsx"
19
+ },
20
+ {
21
+ "type": "source",
22
+ "description": "Load component implementations (data fetching)",
23
+ "path": "libs/shared/ui/Load/index_.tsx"
24
+ },
25
+ {
26
+ "type": "source",
27
+ "description": "Model component implementations (CRUD operations)",
28
+ "path": "libs/shared/ui/Model/index_.tsx"
29
+ },
30
+ {
31
+ "type": "source",
32
+ "description": "System component implementations (providers, app utilities)",
33
+ "path": "libs/shared/ui/System/index.tsx"
34
+ },
35
+ {
36
+ "type": "source",
37
+ "description": "Only component implementations (conditional rendering)",
38
+ "path": "libs/shared/ui/Only/index.tsx"
39
+ },
40
+ {
41
+ "type": "example",
42
+ "description": "Field components usage examples",
43
+ "path": "{apps,libs}/*/lib/*/*.{Template,Unit,View,Zone}.tsx",
44
+ "filterText": "Field} from \"@shared/ui\"",
45
+ "sample": 5
46
+ },
47
+ {
48
+ "type": "example",
49
+ "description": "Data components usage examples",
50
+ "path": "{apps,libs}/*/lib/*/*.{Zone,View}.tsx",
51
+ "filterText": "Data} from \"@shared/ui\"",
52
+ "sample": 5
53
+ },
54
+ {
55
+ "type": "example",
56
+ "description": "Load components usage examples",
57
+ "path": "{apps,libs}/*/lib/*/*.{Zone,View}.tsx",
58
+ "filterText": "Load} from \"@shared/ui\"",
59
+ "sample": 5
60
+ },
61
+ {
62
+ "type": "example",
63
+ "description": "Model components usage examples",
64
+ "path": "{apps,libs}/*/lib/*/*.{Template,Unit,Util,Zone}.tsx",
65
+ "filterText": "Model} from \"@shared/ui\"",
66
+ "sample": 5
67
+ },
68
+ {
69
+ "type": "example",
70
+ "description": "Only component usage examples",
71
+ "path": "{apps,libs}/*/lib/*/*.{Unit,View,Util}.tsx",
72
+ "filterText": "Only} from \"@shared/ui\"",
73
+ "sample": 3
74
+ },
75
+ {
76
+ "type": "example",
77
+ "description": "Complex form examples with validation",
78
+ "path": "{apps,libs}/*/lib/*/*.Template.tsx",
79
+ "filterText": "validate",
80
+ "sample": 3
81
+ },
82
+ {
83
+ "type": "example",
84
+ "description": "Store integration examples",
85
+ "path": "{apps,libs}/*/lib/*/*.{Template,Unit,View,Zone}.tsx",
86
+ "filterText": "sliceName",
87
+ "sample": 5
88
+ }
89
+ ],
90
+ "update": {
91
+ "filePath": "./sharedUiUsage.instruction.md",
92
+ "contents": [
93
+ "Overview of Shared UI Components",
94
+ "Component Namespaces (Field, Data, Load, Model, System, Only, Editor, Property)",
95
+ "Basic Component Usage",
96
+ "Form Fields and Validation",
97
+ "Data Management Components",
98
+ "Loading and Data Fetching",
99
+ "CRUD Operations",
100
+ "Conditional Rendering",
101
+ "Store Integration",
102
+ "Common Patterns and Best Practices",
103
+ "Troubleshooting"
104
+ ],
105
+ "rules": []
106
+ },
107
+ "page": "/model/[model]"
108
+ }