akanjs 2.0.7 → 2.1.0-rc.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 (498) hide show
  1. package/README.ko.md +4 -4
  2. package/README.md +4 -4
  3. package/client/router.ts +10 -3
  4. package/document/documentSchema.ts +9 -1
  5. package/index.ts +187 -0
  6. package/package.json +6 -50
  7. package/server/akanApp.ts +2 -24
  8. package/server/akanAppHeaders.ts +30 -0
  9. package/server/di/predefinedAdaptor.ts +1 -1
  10. package/types/dictionary/base.dictionary.d.ts +1 -1
  11. package/types/dictionary/dictionary.d.ts +8 -8
  12. package/types/document/documentSchema.d.ts +33 -0
  13. package/types/document/index.d.ts +1 -1
  14. package/types/document/schema.d.ts +1 -1
  15. package/types/document/types.d.ts +1 -1
  16. package/types/{devkit/akanConfig/types.d.ts → index.d.ts} +45 -54
  17. package/types/server/akanAppHeaders.d.ts +1 -0
  18. package/types/server/di/predefinedAdaptor.d.ts +1 -1
  19. package/types/store/baseSt.d.ts +2 -2
  20. package/ui/Link/SsrLink.tsx +2 -2
  21. package/webkit/useCodepush.tsx +1 -1
  22. package/cli/application/application.command.ts +0 -224
  23. package/cli/application/application.interface.tsx +0 -225
  24. package/cli/application/application.runner.ts +0 -355
  25. package/cli/application/application.script.ts +0 -244
  26. package/cli/build.ts +0 -27
  27. package/cli/cloud/cloud.command.ts +0 -48
  28. package/cli/cloud/cloud.runner.ts +0 -157
  29. package/cli/cloud/cloud.script.ts +0 -40
  30. package/cli/guideline/guideline.command.ts +0 -31
  31. package/cli/guideline/guideline.prompt.ts +0 -212
  32. package/cli/guideline/guideline.runner.ts +0 -53
  33. package/cli/guideline/guideline.script.ts +0 -33
  34. package/cli/guidelines/___library/sharedUiStructureDescription.en.md +0 -767
  35. package/cli/guidelines/___library/utilUiStructureDescription.en.md +0 -395
  36. package/cli/guidelines/___lint/lintRuleDescription.en.md +0 -64
  37. package/cli/guidelines/___module/moduleStructureDescription.en.md +0 -80
  38. package/cli/guidelines/componentRule/componentRule.generate.json +0 -131
  39. package/cli/guidelines/componentRule/componentRule.instruction.md +0 -637
  40. package/cli/guidelines/cssRule/cssRule.generate.json +0 -93
  41. package/cli/guidelines/cssRule/cssRule.instruction.md +0 -435
  42. package/cli/guidelines/databaseModule/databaseModule.generate.json +0 -51
  43. package/cli/guidelines/databaseModule/databaseModule.instruction.md +0 -612
  44. package/cli/guidelines/docPageRule/docPageRule.generate.json +0 -72
  45. package/cli/guidelines/docPageRule/docPageRule.instruction.md +0 -389
  46. package/cli/guidelines/enumConstant/enumConstant.generate.json +0 -24
  47. package/cli/guidelines/enumConstant/enumConstant.instruction.md +0 -232
  48. package/cli/guidelines/framework/framework.generate.json +0 -119
  49. package/cli/guidelines/framework/framework.instruction.md +0 -1110
  50. package/cli/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
  51. package/cli/guidelines/modelConstant/modelConstant.generate.json +0 -128
  52. package/cli/guidelines/modelConstant/modelConstant.instruction.md +0 -506
  53. package/cli/guidelines/modelDictionary/modelDictionary.generate.json +0 -108
  54. package/cli/guidelines/modelDictionary/modelDictionary.instruction.md +0 -547
  55. package/cli/guidelines/modelDocument/modelDocument.generate.json +0 -129
  56. package/cli/guidelines/modelDocument/modelDocument.instruction.md +0 -509
  57. package/cli/guidelines/modelService/modelService.generate.json +0 -135
  58. package/cli/guidelines/modelService/modelService.instruction.md +0 -708
  59. package/cli/guidelines/modelSignal/modelSignal.generate.json +0 -201
  60. package/cli/guidelines/modelSignal/modelSignal.instruction.md +0 -552
  61. package/cli/guidelines/modelStore/modelStore.generate.json +0 -130
  62. package/cli/guidelines/modelStore/modelStore.instruction.md +0 -585
  63. package/cli/guidelines/modelTemplate/modelTemplate.generate.json +0 -104
  64. package/cli/guidelines/modelTemplate/modelTemplate.instruction.md +0 -604
  65. package/cli/guidelines/modelUnit/modelUnit.generate.json +0 -92
  66. package/cli/guidelines/modelUnit/modelUnit.instruction.md +0 -541
  67. package/cli/guidelines/modelUtil/modelUtil.generate.json +0 -93
  68. package/cli/guidelines/modelUtil/modelUtil.instruction.md +0 -752
  69. package/cli/guidelines/modelView/modelView.generate.json +0 -80
  70. package/cli/guidelines/modelView/modelView.instruction.md +0 -1005
  71. package/cli/guidelines/modelZone/modelZone.generate.json +0 -126
  72. package/cli/guidelines/modelZone/modelZone.instruction.md +0 -528
  73. package/cli/guidelines/scalarConstant/scalarConstant.generate.json +0 -106
  74. package/cli/guidelines/scalarConstant/scalarConstant.instruction.md +0 -442
  75. package/cli/guidelines/scalarDictionary/scalarDictionary.generate.json +0 -83
  76. package/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md +0 -273
  77. package/cli/guidelines/scalarModule/scalarModule.generate.json +0 -35
  78. package/cli/guidelines/scalarModule/scalarModule.instruction.md +0 -81
  79. package/cli/guidelines/sharedUiUsage/sharedUiUsage.generate.json +0 -108
  80. package/cli/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +0 -310
  81. package/cli/guidelines/utilUiUsage/utilUiUsage.generate.json +0 -140
  82. package/cli/guidelines/utilUiUsage/utilUiUsage.instruction.md +0 -339
  83. package/cli/index.js +0 -184444
  84. package/cli/index.ts +0 -24
  85. package/cli/library/library.command.ts +0 -28
  86. package/cli/library/library.runner.ts +0 -66
  87. package/cli/library/library.script.ts +0 -39
  88. package/cli/module/module.command.ts +0 -35
  89. package/cli/module/module.prompt.ts +0 -18
  90. package/cli/module/module.request.ts +0 -319
  91. package/cli/module/module.runner.ts +0 -76
  92. package/cli/module/module.script.ts +0 -161
  93. package/cli/npmRegistry.ts +0 -13
  94. package/cli/openBrowser.ts +0 -15
  95. package/cli/package/package.command.ts +0 -32
  96. package/cli/package/package.runner.ts +0 -94
  97. package/cli/package/package.script.ts +0 -35
  98. package/cli/page/page.command.ts +0 -14
  99. package/cli/page/page.runner.ts +0 -14
  100. package/cli/page/page.script.ts +0 -12
  101. package/cli/pluralizeName.ts +0 -5
  102. package/cli/scalar/scalar.command.ts +0 -21
  103. package/cli/scalar/scalar.prompt.ts +0 -131
  104. package/cli/scalar/scalar.runner.ts +0 -38
  105. package/cli/scalar/scalar.script.ts +0 -16
  106. package/cli/semver.ts +0 -18
  107. package/cli/templates/__scalar/__model__/__model__.constant.ts +0 -15
  108. package/cli/templates/__scalar/__model__/__model__.dictionary.ts +0 -19
  109. package/cli/templates/__scalar/__model__/__model__.document.ts +0 -15
  110. package/cli/templates/app/akan.config.ts +0 -14
  111. package/cli/templates/app/env/env.client.debug.ts.template +0 -7
  112. package/cli/templates/app/env/env.client.develop.ts.template +0 -7
  113. package/cli/templates/app/env/env.client.local.ts.template +0 -7
  114. package/cli/templates/app/env/env.client.main.ts.template +0 -7
  115. package/cli/templates/app/env/env.client.testing.ts.template +0 -7
  116. package/cli/templates/app/env/env.client.ts +0 -21
  117. package/cli/templates/app/env/env.client.type.ts +0 -16
  118. package/cli/templates/app/env/env.server.debug.ts.template +0 -7
  119. package/cli/templates/app/env/env.server.develop.ts.template +0 -7
  120. package/cli/templates/app/env/env.server.local.ts.template +0 -7
  121. package/cli/templates/app/env/env.server.main.ts.template +0 -7
  122. package/cli/templates/app/env/env.server.testing.ts.template +0 -6
  123. package/cli/templates/app/env/env.server.ts +0 -20
  124. package/cli/templates/app/lib/___appName__/__appName__.dictionary.ts +0 -17
  125. package/cli/templates/app/lib/___appName__/__appName__.service.ts +0 -13
  126. package/cli/templates/app/lib/___appName__/__appName__.signal.ts +0 -17
  127. package/cli/templates/app/lib/___appName__/__appName__.store.ts +0 -15
  128. package/cli/templates/app/lib/option.ts +0 -17
  129. package/cli/templates/app/main.ts +0 -16
  130. package/cli/templates/app/package.json.template +0 -5
  131. package/cli/templates/app/page/_index.tsx +0 -296
  132. package/cli/templates/app/page/_layout.tsx +0 -31
  133. package/cli/templates/app/page/styles.css.template +0 -53
  134. package/cli/templates/app/public/favicon.ico +0 -0
  135. package/cli/templates/app/public/logo.png +0 -0
  136. package/cli/templates/app/tsconfig.json.template +0 -21
  137. package/cli/templates/client.ts +0 -46
  138. package/cli/templates/crudPages/[__model__Id]/edit/page.tsx +0 -47
  139. package/cli/templates/crudPages/[__model__Id]/page.tsx +0 -52
  140. package/cli/templates/crudPages/new/page.tsx +0 -42
  141. package/cli/templates/crudPages/page.tsx +0 -43
  142. package/cli/templates/crudSinglePage/page.tsx +0 -37
  143. package/cli/templates/env/_env.server.type.ts +0 -16
  144. package/cli/templates/facetIndex/index.ts +0 -32
  145. package/cli/templates/index.ts +0 -10
  146. package/cli/templates/lib/__lib/lib.constant.ts +0 -38
  147. package/cli/templates/lib/__lib/lib.dictionary.ts +0 -33
  148. package/cli/templates/lib/__lib/lib.document.ts +0 -35
  149. package/cli/templates/lib/__lib/lib.service.ts +0 -33
  150. package/cli/templates/lib/__lib/lib.signal.ts +0 -34
  151. package/cli/templates/lib/__lib/lib.store.ts +0 -33
  152. package/cli/templates/lib/cnst.ts +0 -29
  153. package/cli/templates/lib/db.ts +0 -32
  154. package/cli/templates/lib/dict.ts +0 -49
  155. package/cli/templates/lib/sig.ts +0 -60
  156. package/cli/templates/lib/srv.ts +0 -34
  157. package/cli/templates/lib/st.ts +0 -31
  158. package/cli/templates/lib/useClient.ts +0 -19
  159. package/cli/templates/lib/useServer.ts +0 -7
  160. package/cli/templates/libRoot/.gitignore.template +0 -16
  161. package/cli/templates/libRoot/akan.config.ts +0 -12
  162. package/cli/templates/libRoot/base/baseLogic.ts +0 -10
  163. package/cli/templates/libRoot/base/index.ts +0 -8
  164. package/cli/templates/libRoot/common/commonLogic.ts +0 -10
  165. package/cli/templates/libRoot/common/index.ts +0 -8
  166. package/cli/templates/libRoot/env/env.server.example.ts.template +0 -6
  167. package/cli/templates/libRoot/env/env.server.testing.ts.template +0 -6
  168. package/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.ts +0 -15
  169. package/cli/templates/libRoot/lib/___libName__/__libName__.service.ts +0 -11
  170. package/cli/templates/libRoot/lib/___libName__/__libName__.store.ts +0 -13
  171. package/cli/templates/libRoot/lib/option.ts +0 -17
  172. package/cli/templates/libRoot/package.json.template +0 -5
  173. package/cli/templates/libRoot/srvkit/backendLogic.ts +0 -10
  174. package/cli/templates/libRoot/srvkit/index.ts +0 -8
  175. package/cli/templates/libRoot/tsconfig.json.template +0 -11
  176. package/cli/templates/libRoot/ui/index.ts +0 -7
  177. package/cli/templates/libRoot/webkit/frontendLogic.ts +0 -10
  178. package/cli/templates/libRoot/webkit/index.ts +0 -8
  179. package/cli/templates/localDev/docker-compose.yaml.template +0 -37
  180. package/cli/templates/module/__Model__.Template.tsx +0 -36
  181. package/cli/templates/module/__Model__.Unit.tsx +0 -26
  182. package/cli/templates/module/__Model__.Util.tsx +0 -30
  183. package/cli/templates/module/__Model__.View.tsx +0 -29
  184. package/cli/templates/module/__Model__.Zone.tsx +0 -43
  185. package/cli/templates/module/__model__.constant.ts +0 -24
  186. package/cli/templates/module/__model__.dictionary.ts +0 -30
  187. package/cli/templates/module/__model__.document.ts +0 -23
  188. package/cli/templates/module/__model__.service.ts +0 -16
  189. package/cli/templates/module/__model__.signal.ts +0 -27
  190. package/cli/templates/module/__model__.store.ts +0 -19
  191. package/cli/templates/moduleRoot/index.tsx +0 -31
  192. package/cli/templates/pkgRoot/tsconfig.json.template +0 -10
  193. package/cli/templates/server.ts +0 -45
  194. package/cli/templates/workspaceRoot/.env.template +0 -14
  195. package/cli/templates/workspaceRoot/.gitignore.template +0 -120
  196. package/cli/templates/workspaceRoot/.vscode/settings.json.template +0 -23
  197. package/cli/templates/workspaceRoot/biome.json.template +0 -191
  198. package/cli/templates/workspaceRoot/bunfig.toml +0 -4
  199. package/cli/templates/workspaceRoot/package.json.template +0 -7
  200. package/cli/templates/workspaceRoot/tsconfig.json.template +0 -29
  201. package/cli/testHelpers.ts +0 -171
  202. package/cli/workspace/workspace.command.ts +0 -55
  203. package/cli/workspace/workspace.runner.ts +0 -79
  204. package/cli/workspace/workspace.script.ts +0 -74
  205. package/devkit/aiEditor.ts +0 -299
  206. package/devkit/akanApp/akanApp.host.ts +0 -393
  207. package/devkit/akanApp/index.ts +0 -1
  208. package/devkit/akanConfig/akanConfig.ts +0 -360
  209. package/devkit/akanConfig/index.ts +0 -2
  210. package/devkit/akanConfig/types.ts +0 -187
  211. package/devkit/applicationBuildReporter.ts +0 -69
  212. package/devkit/applicationBuildRunner.ts +0 -302
  213. package/devkit/applicationReleasePackager.ts +0 -205
  214. package/devkit/artifact/implicitRootLayout.ts +0 -155
  215. package/devkit/artifact/index.ts +0 -1
  216. package/devkit/artifact/routeSeedIndex.ts +0 -128
  217. package/devkit/auth.ts +0 -41
  218. package/devkit/builder.ts +0 -164
  219. package/devkit/capacitor.base.config.ts +0 -88
  220. package/devkit/capacitorApp.ts +0 -443
  221. package/devkit/commandDecorators/argMeta.ts +0 -102
  222. package/devkit/commandDecorators/command.ts +0 -340
  223. package/devkit/commandDecorators/commandBuilder.ts +0 -224
  224. package/devkit/commandDecorators/commandMeta.ts +0 -6
  225. package/devkit/commandDecorators/dependencyBuilder.ts +0 -100
  226. package/devkit/commandDecorators/helpFormatter.ts +0 -220
  227. package/devkit/commandDecorators/index.ts +0 -8
  228. package/devkit/commandDecorators/targetMeta.ts +0 -31
  229. package/devkit/commandDecorators/types.ts +0 -10
  230. package/devkit/constants.ts +0 -25
  231. package/devkit/createTunnel.ts +0 -36
  232. package/devkit/dependencyScanner.ts +0 -339
  233. package/devkit/executors.ts +0 -1362
  234. package/devkit/extractDeps.ts +0 -85
  235. package/devkit/fileEditor.ts +0 -106
  236. package/devkit/fileSys.ts +0 -39
  237. package/devkit/frontendBuild/allRoutesBuilder.ts +0 -103
  238. package/devkit/frontendBuild/clientBuildTypes.ts +0 -114
  239. package/devkit/frontendBuild/clientEntriesBundler.ts +0 -300
  240. package/devkit/frontendBuild/clientEntryDiscovery.ts +0 -196
  241. package/devkit/frontendBuild/csrArtifactBuilder.ts +0 -237
  242. package/devkit/frontendBuild/cssCompiler.ts +0 -285
  243. package/devkit/frontendBuild/cssImportResolver.ts +0 -116
  244. package/devkit/frontendBuild/fontOptimizer.ts +0 -427
  245. package/devkit/frontendBuild/hmrChangeClassifier.ts +0 -28
  246. package/devkit/frontendBuild/hmrWatcher.ts +0 -101
  247. package/devkit/frontendBuild/index.ts +0 -18
  248. package/devkit/frontendBuild/pagesBundleBuilder.ts +0 -137
  249. package/devkit/frontendBuild/pagesEntrySourceGenerator.ts +0 -37
  250. package/devkit/frontendBuild/precompressArtifacts.ts +0 -59
  251. package/devkit/frontendBuild/routeClientBuilder.ts +0 -290
  252. package/devkit/frontendBuild/routesManifestArtifactSerializer.ts +0 -62
  253. package/devkit/frontendBuild/ssrBaseArtifactBuilder.ts +0 -139
  254. package/devkit/frontendBuild/vendorSpecifiers.ts +0 -16
  255. package/devkit/frontendBuild/watchRootResolver.ts +0 -28
  256. package/devkit/getCredentials.ts +0 -19
  257. package/devkit/getDirname.ts +0 -3
  258. package/devkit/getModelFileData.ts +0 -59
  259. package/devkit/getRelatedCnsts.ts +0 -300
  260. package/devkit/guideline.ts +0 -19
  261. package/devkit/incrementalBuilder/incrementalBuilder.host.ts +0 -152
  262. package/devkit/incrementalBuilder/incrementalBuilder.proc.ts +0 -331
  263. package/devkit/incrementalBuilder/index.ts +0 -1
  264. package/devkit/index.ts +0 -36
  265. package/devkit/lint/no-deep-internal-import.grit +0 -25
  266. package/devkit/lint/no-import-client-functions.grit +0 -32
  267. package/devkit/lint/no-import-external-library.grit +0 -21
  268. package/devkit/lint/no-js-private-class-method.grit +0 -42
  269. package/devkit/lint/no-use-client-in-server.grit +0 -7
  270. package/devkit/lint/non-scalar-props-restricted.grit +0 -13
  271. package/devkit/linter.ts +0 -248
  272. package/devkit/mobile/index.ts +0 -1
  273. package/devkit/mobile/mobileTarget.ts +0 -88
  274. package/devkit/prompter.ts +0 -71
  275. package/devkit/scanInfo.ts +0 -606
  276. package/devkit/selectModel.ts +0 -11
  277. package/devkit/spinner.ts +0 -54
  278. package/devkit/src/capacitorApp.ts +0 -277
  279. package/devkit/sshTunnel.ts +0 -151
  280. package/devkit/streamAi.ts +0 -45
  281. package/devkit/transforms/barrelAnalyzer.ts +0 -249
  282. package/devkit/transforms/barrelImportsPlugin.ts +0 -457
  283. package/devkit/transforms/externalizeFrameworkPlugin.ts +0 -159
  284. package/devkit/transforms/index.ts +0 -5
  285. package/devkit/transforms/rscUseClientTransform.ts +0 -52
  286. package/devkit/transforms/useClientBundlePlugin.ts +0 -47
  287. package/devkit/typeChecker.ts +0 -260
  288. package/devkit/types.ts +0 -44
  289. package/devkit/ui/MultiScrollList.tsx +0 -228
  290. package/devkit/ui/ScrollList.tsx +0 -106
  291. package/devkit/ui/index.ts +0 -2
  292. package/devkit/uploadRelease.ts +0 -95
  293. package/devkit/useStdoutDimensions.ts +0 -20
  294. package/types/cli/application/application.command.d.ts +0 -7
  295. package/types/cli/application/application.interface.d.ts +0 -40
  296. package/types/cli/application/application.runner.d.ts +0 -66
  297. package/types/cli/application/application.script.d.ts +0 -72
  298. package/types/cli/build.d.ts +0 -1
  299. package/types/cli/cloud/cloud.command.d.ts +0 -7
  300. package/types/cli/cloud/cloud.runner.d.ts +0 -13
  301. package/types/cli/cloud/cloud.script.d.ts +0 -23
  302. package/types/cli/guideline/guideline.command.d.ts +0 -7
  303. package/types/cli/guideline/guideline.prompt.d.ts +0 -29
  304. package/types/cli/guideline/guideline.runner.d.ts +0 -21
  305. package/types/cli/guideline/guideline.script.d.ts +0 -16
  306. package/types/cli/index.d.ts +0 -2
  307. package/types/cli/library/library.command.d.ts +0 -7
  308. package/types/cli/library/library.runner.d.ts +0 -11
  309. package/types/cli/library/library.script.d.ts +0 -13
  310. package/types/cli/module/module.command.d.ts +0 -7
  311. package/types/cli/module/module.prompt.d.ts +0 -13
  312. package/types/cli/module/module.request.d.ts +0 -63
  313. package/types/cli/module/module.runner.d.ts +0 -55
  314. package/types/cli/module/module.script.d.ts +0 -22
  315. package/types/cli/npmRegistry.d.ts +0 -1
  316. package/types/cli/openBrowser.d.ts +0 -1
  317. package/types/cli/package/package.command.d.ts +0 -7
  318. package/types/cli/package/package.runner.d.ts +0 -13
  319. package/types/cli/package/package.script.d.ts +0 -18
  320. package/types/cli/page/page.command.d.ts +0 -7
  321. package/types/cli/page/page.runner.d.ts +0 -10
  322. package/types/cli/page/page.script.d.ts +0 -13
  323. package/types/cli/pluralizeName.d.ts +0 -1
  324. package/types/cli/scalar/scalar.command.d.ts +0 -7
  325. package/types/cli/scalar/scalar.prompt.d.ts +0 -23
  326. package/types/cli/scalar/scalar.runner.d.ts +0 -16
  327. package/types/cli/scalar/scalar.script.d.ts +0 -11
  328. package/types/cli/semver.d.ts +0 -1
  329. package/types/cli/templates/__scalar/__model__/__model__.constant.d.ts +0 -7
  330. package/types/cli/templates/__scalar/__model__/__model__.dictionary.d.ts +0 -7
  331. package/types/cli/templates/__scalar/__model__/__model__.document.d.ts +0 -7
  332. package/types/cli/templates/app/akan.config.d.ts +0 -6
  333. package/types/cli/templates/app/env/env.client.d.ts +0 -6
  334. package/types/cli/templates/app/env/env.client.type.d.ts +0 -6
  335. package/types/cli/templates/app/env/env.server.d.ts +0 -6
  336. package/types/cli/templates/app/lib/___appName__/__appName__.dictionary.d.ts +0 -7
  337. package/types/cli/templates/app/lib/___appName__/__appName__.service.d.ts +0 -7
  338. package/types/cli/templates/app/lib/___appName__/__appName__.signal.d.ts +0 -7
  339. package/types/cli/templates/app/lib/___appName__/__appName__.store.d.ts +0 -7
  340. package/types/cli/templates/app/lib/option.d.ts +0 -6
  341. package/types/cli/templates/app/main.d.ts +0 -6
  342. package/types/cli/templates/app/page/_index.d.ts +0 -9
  343. package/types/cli/templates/app/page/_layout.d.ts +0 -11
  344. package/types/cli/templates/client.d.ts +0 -4
  345. package/types/cli/templates/crudPages/[__model__Id]/edit/page.d.ts +0 -11
  346. package/types/cli/templates/crudPages/[__model__Id]/page.d.ts +0 -11
  347. package/types/cli/templates/crudPages/new/page.d.ts +0 -11
  348. package/types/cli/templates/crudPages/page.d.ts +0 -11
  349. package/types/cli/templates/crudSinglePage/page.d.ts +0 -11
  350. package/types/cli/templates/env/_env.server.type.d.ts +0 -7
  351. package/types/cli/templates/facetIndex/index.d.ts +0 -13
  352. package/types/cli/templates/facetIndex.d.ts +0 -1
  353. package/types/cli/templates/index.d.ts +0 -6
  354. package/types/cli/templates/lib/__lib/lib.constant.d.ts +0 -4
  355. package/types/cli/templates/lib/__lib/lib.dictionary.d.ts +0 -4
  356. package/types/cli/templates/lib/__lib/lib.document.d.ts +0 -4
  357. package/types/cli/templates/lib/__lib/lib.service.d.ts +0 -4
  358. package/types/cli/templates/lib/__lib/lib.signal.d.ts +0 -4
  359. package/types/cli/templates/lib/__lib/lib.store.d.ts +0 -4
  360. package/types/cli/templates/lib/cnst.d.ts +0 -4
  361. package/types/cli/templates/lib/db.d.ts +0 -4
  362. package/types/cli/templates/lib/dict.d.ts +0 -4
  363. package/types/cli/templates/lib/sig.d.ts +0 -4
  364. package/types/cli/templates/lib/srv.d.ts +0 -4
  365. package/types/cli/templates/lib/st.d.ts +0 -4
  366. package/types/cli/templates/lib/useClient.d.ts +0 -4
  367. package/types/cli/templates/lib/useServer.d.ts +0 -4
  368. package/types/cli/templates/libRoot/akan.config.d.ts +0 -5
  369. package/types/cli/templates/libRoot/base/baseLogic.d.ts +0 -5
  370. package/types/cli/templates/libRoot/base/index.d.ts +0 -5
  371. package/types/cli/templates/libRoot/base.d.ts +0 -1
  372. package/types/cli/templates/libRoot/common/commonLogic.d.ts +0 -5
  373. package/types/cli/templates/libRoot/common/index.d.ts +0 -5
  374. package/types/cli/templates/libRoot/common.d.ts +0 -1
  375. package/types/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.d.ts +0 -6
  376. package/types/cli/templates/libRoot/lib/___libName__/__libName__.service.d.ts +0 -6
  377. package/types/cli/templates/libRoot/lib/___libName__/__libName__.store.d.ts +0 -6
  378. package/types/cli/templates/libRoot/lib/option.d.ts +0 -6
  379. package/types/cli/templates/libRoot/srvkit/backendLogic.d.ts +0 -5
  380. package/types/cli/templates/libRoot/srvkit/index.d.ts +0 -5
  381. package/types/cli/templates/libRoot/srvkit.d.ts +0 -1
  382. package/types/cli/templates/libRoot/ui/index.d.ts +0 -5
  383. package/types/cli/templates/libRoot/ui.d.ts +0 -1
  384. package/types/cli/templates/libRoot/webkit/frontendLogic.d.ts +0 -5
  385. package/types/cli/templates/libRoot/webkit/index.d.ts +0 -5
  386. package/types/cli/templates/libRoot/webkit.d.ts +0 -1
  387. package/types/cli/templates/module/__Model__.Template.d.ts +0 -11
  388. package/types/cli/templates/module/__Model__.Unit.d.ts +0 -11
  389. package/types/cli/templates/module/__Model__.Util.d.ts +0 -11
  390. package/types/cli/templates/module/__Model__.View.d.ts +0 -11
  391. package/types/cli/templates/module/__Model__.Zone.d.ts +0 -11
  392. package/types/cli/templates/module/__model__.constant.d.ts +0 -8
  393. package/types/cli/templates/module/__model__.dictionary.d.ts +0 -8
  394. package/types/cli/templates/module/__model__.document.d.ts +0 -8
  395. package/types/cli/templates/module/__model__.service.d.ts +0 -8
  396. package/types/cli/templates/module/__model__.signal.d.ts +0 -9
  397. package/types/cli/templates/module/__model__.store.d.ts +0 -8
  398. package/types/cli/templates/moduleRoot/index.d.ts +0 -11
  399. package/types/cli/templates/moduleRoot.d.ts +0 -1
  400. package/types/cli/templates/server.d.ts +0 -4
  401. package/types/cli/templates.d.ts +0 -1
  402. package/types/cli/testHelpers.d.ts +0 -64
  403. package/types/cli/workspace/workspace.command.d.ts +0 -7
  404. package/types/cli/workspace/workspace.runner.d.ts +0 -14
  405. package/types/cli/workspace/workspace.script.d.ts +0 -29
  406. package/types/cli.d.ts +0 -1
  407. package/types/devkit/aiEditor.d.ts +0 -50
  408. package/types/devkit/akanApp/akanApp.host.d.ts +0 -16
  409. package/types/devkit/akanApp/index.d.ts +0 -1
  410. package/types/devkit/akanApp.d.ts +0 -1
  411. package/types/devkit/akanConfig/akanConfig.d.ts +0 -36
  412. package/types/devkit/akanConfig/index.d.ts +0 -2
  413. package/types/devkit/akanConfig.d.ts +0 -1
  414. package/types/devkit/applicationBuildReporter.d.ts +0 -25
  415. package/types/devkit/applicationBuildRunner.d.ts +0 -29
  416. package/types/devkit/applicationReleasePackager.d.ts +0 -17
  417. package/types/devkit/artifact/implicitRootLayout.d.ts +0 -17
  418. package/types/devkit/artifact/index.d.ts +0 -1
  419. package/types/devkit/artifact/routeSeedIndex.d.ts +0 -38
  420. package/types/devkit/artifact.d.ts +0 -1
  421. package/types/devkit/auth.d.ts +0 -9
  422. package/types/devkit/builder.d.ts +0 -18
  423. package/types/devkit/capacitor.base.config.d.ts +0 -3
  424. package/types/devkit/capacitorApp.d.ts +0 -58
  425. package/types/devkit/commandDecorators/argMeta.d.ts +0 -68
  426. package/types/devkit/commandDecorators/command.d.ts +0 -2
  427. package/types/devkit/commandDecorators/commandBuilder.d.ts +0 -60
  428. package/types/devkit/commandDecorators/commandMeta.d.ts +0 -2
  429. package/types/devkit/commandDecorators/dependencyBuilder.d.ts +0 -22
  430. package/types/devkit/commandDecorators/helpFormatter.d.ts +0 -3
  431. package/types/devkit/commandDecorators/index.d.ts +0 -8
  432. package/types/devkit/commandDecorators/targetMeta.d.ts +0 -21
  433. package/types/devkit/commandDecorators/types.d.ts +0 -8
  434. package/types/devkit/commandDecorators.d.ts +0 -1
  435. package/types/devkit/constants.d.ts +0 -25
  436. package/types/devkit/createTunnel.d.ts +0 -8
  437. package/types/devkit/dependencyScanner.d.ts +0 -33
  438. package/types/devkit/executors.d.ts +0 -320
  439. package/types/devkit/extractDeps.d.ts +0 -7
  440. package/types/devkit/fileEditor.d.ts +0 -16
  441. package/types/devkit/fileSys.d.ts +0 -12
  442. package/types/devkit/frontendBuild/allRoutesBuilder.d.ts +0 -18
  443. package/types/devkit/frontendBuild/clientBuildTypes.d.ts +0 -107
  444. package/types/devkit/frontendBuild/clientEntriesBundler.d.ts +0 -12
  445. package/types/devkit/frontendBuild/clientEntryDiscovery.d.ts +0 -19
  446. package/types/devkit/frontendBuild/csrArtifactBuilder.d.ts +0 -16
  447. package/types/devkit/frontendBuild/cssCompiler.d.ts +0 -25
  448. package/types/devkit/frontendBuild/cssImportResolver.d.ts +0 -9
  449. package/types/devkit/frontendBuild/fontOptimizer.d.ts +0 -14
  450. package/types/devkit/frontendBuild/hmrChangeClassifier.d.ts +0 -5
  451. package/types/devkit/frontendBuild/hmrWatcher.d.ts +0 -21
  452. package/types/devkit/frontendBuild/index.d.ts +0 -18
  453. package/types/devkit/frontendBuild/pagesBundleBuilder.d.ts +0 -28
  454. package/types/devkit/frontendBuild/pagesEntrySourceGenerator.d.ts +0 -9
  455. package/types/devkit/frontendBuild/precompressArtifacts.d.ts +0 -7
  456. package/types/devkit/frontendBuild/routeClientBuilder.d.ts +0 -50
  457. package/types/devkit/frontendBuild/routesManifestArtifactSerializer.d.ts +0 -12
  458. package/types/devkit/frontendBuild/ssrBaseArtifactBuilder.d.ts +0 -16
  459. package/types/devkit/frontendBuild/vendorSpecifiers.d.ts +0 -2
  460. package/types/devkit/frontendBuild/watchRootResolver.d.ts +0 -6
  461. package/types/devkit/frontendBuild.d.ts +0 -1
  462. package/types/devkit/getCredentials.d.ts +0 -12
  463. package/types/devkit/getDirname.d.ts +0 -1
  464. package/types/devkit/getModelFileData.d.ts +0 -16
  465. package/types/devkit/getRelatedCnsts.d.ts +0 -53
  466. package/types/devkit/guideline.d.ts +0 -19
  467. package/types/devkit/incrementalBuilder/incrementalBuilder.host.d.ts +0 -30
  468. package/types/devkit/incrementalBuilder/incrementalBuilder.proc.d.ts +0 -1
  469. package/types/devkit/incrementalBuilder/index.d.ts +0 -1
  470. package/types/devkit/incrementalBuilder.d.ts +0 -1
  471. package/types/devkit/index.d.ts +0 -36
  472. package/types/devkit/linter.d.ts +0 -108
  473. package/types/devkit/mobile/index.d.ts +0 -1
  474. package/types/devkit/mobile/mobileTarget.d.ts +0 -14
  475. package/types/devkit/mobile.d.ts +0 -1
  476. package/types/devkit/prompter.d.ts +0 -15
  477. package/types/devkit/scanInfo.d.ts +0 -82
  478. package/types/devkit/selectModel.d.ts +0 -1
  479. package/types/devkit/spinner.d.ts +0 -20
  480. package/types/devkit/src/capacitorApp.d.ts +0 -39
  481. package/types/devkit/sshTunnel.d.ts +0 -14
  482. package/types/devkit/streamAi.d.ts +0 -6
  483. package/types/devkit/transforms/barrelAnalyzer.d.ts +0 -27
  484. package/types/devkit/transforms/barrelImportsPlugin.d.ts +0 -26
  485. package/types/devkit/transforms/externalizeFrameworkPlugin.d.ts +0 -49
  486. package/types/devkit/transforms/index.d.ts +0 -5
  487. package/types/devkit/transforms/rscUseClientTransform.d.ts +0 -10
  488. package/types/devkit/transforms/useClientBundlePlugin.d.ts +0 -19
  489. package/types/devkit/transforms.d.ts +0 -1
  490. package/types/devkit/typeChecker.d.ts +0 -62
  491. package/types/devkit/types.d.ts +0 -43
  492. package/types/devkit/ui/MultiScrollList.d.ts +0 -13
  493. package/types/devkit/ui/ScrollList.d.ts +0 -7
  494. package/types/devkit/ui/index.d.ts +0 -2
  495. package/types/devkit/ui.d.ts +0 -1
  496. package/types/devkit/uploadRelease.d.ts +0 -10
  497. package/types/devkit/useStdoutDimensions.d.ts +0 -1
  498. package/types/devkit.d.ts +0 -1
@@ -1,340 +0,0 @@
1
- import { confirm, input, select } from "@inquirer/prompts";
2
- import { Logger } from "akanjs/common";
3
- import chalk from "chalk";
4
- import { type Command, program } from "commander";
5
-
6
- import { FileSys, getDirname, type PackageJson } from "..";
7
- import { AppExecutor, Executor, LibExecutor, ModuleExecutor, PkgExecutor, WorkspaceExecutor } from "../executors";
8
- import {
9
- type ArgMeta,
10
- type CommandContext,
11
- type EnumChoice,
12
- type EnumChoices,
13
- getArgMetas,
14
- type InternalArgMeta,
15
- } from "./argMeta";
16
- import { CommandContainer } from "./dependencyBuilder";
17
- import { formatCommandHelp, formatHelp } from "./helpFormatter";
18
- import { type CommandCls, getTargetMetas } from "./targetMeta";
19
-
20
- const camelToKebabCase = (str: string) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
21
-
22
- const handleOption = (programCommand: Command, argMeta: ArgMeta) => {
23
- const {
24
- type,
25
- flag = argMeta.name.slice(0, 1).toLowerCase(),
26
- desc = argMeta.name,
27
- example,
28
- enum: enumChoices,
29
- ask,
30
- } = argMeta.argsOption;
31
- const kebabName = camelToKebabCase(argMeta.name);
32
- const choices = enumChoices && typeof enumChoices !== "function" ? normalizeEnumChoices(enumChoices) : null;
33
- programCommand.option(
34
- `-${flag}, --${kebabName}${type === "boolean" ? " [boolean]" : ` <${kebabName}>`}`,
35
- `${desc}${ask ? ` (${ask})` : ""}${example ? ` (example: ${example})` : ""}${choices ? ` (choices: ${choices.map((choice) => choice.name).join(", ")})` : ""}`,
36
- );
37
- return programCommand;
38
- };
39
- const handleArgument = (programCommand: Command, argMeta: ArgMeta) => {
40
- const kebabName = camelToKebabCase(argMeta.name);
41
- programCommand.argument(
42
- `[${kebabName}]`,
43
- `${argMeta.argsOption.desc}${argMeta.argsOption.example ? ` (example: ${argMeta.argsOption.example})` : ""}`,
44
- );
45
- return programCommand;
46
- };
47
-
48
- const convertArgValue = (value: string | boolean, type: "string" | "number" | "boolean") => {
49
- if (type === "string") return value as string;
50
- else if (type === "number") return Number(value);
51
- else return value === true || value === "true";
52
- };
53
-
54
- const normalizeEnumChoices = (enumChoices: EnumChoices) =>
55
- enumChoices.map((choice: EnumChoice) =>
56
- typeof choice === "object"
57
- ? { value: choice.value, name: choice.label }
58
- : { value: choice, name: choice.toString() },
59
- );
60
-
61
- const resolveEnumChoices = async (argMeta: ArgMeta, context: CommandContext) => {
62
- const enumChoices = argMeta.argsOption.enum;
63
- if (!enumChoices) return null;
64
- if (typeof enumChoices === "function") return await enumChoices(context);
65
- return enumChoices;
66
- };
67
-
68
- const getOptionValue = async (argMeta: ArgMeta, opt: Record<string, unknown>, context: CommandContext) => {
69
- const {
70
- name,
71
- argsOption: { enum: enumChoices, default: defaultValue, type, desc, nullable, example, ask },
72
- } = argMeta;
73
- if (opt[argMeta.name] !== undefined) return convertArgValue(opt[argMeta.name] as string, type ?? "string");
74
- else if (defaultValue !== undefined) return defaultValue;
75
-
76
- if (enumChoices) {
77
- const choices = normalizeEnumChoices((await resolveEnumChoices(argMeta, context)) ?? []);
78
- const choice = await select({ message: ask ?? desc ?? `Select the ${name} value`, choices });
79
- return choice;
80
- } else if (nullable) return null;
81
- else if (type === "boolean") {
82
- const message = ask ?? desc ?? `Do you want to set ${name}? ${desc ? ` (${desc})` : ""}: `;
83
- return await confirm({ message });
84
- } else {
85
- const message = ask
86
- ? `${ask}: `
87
- : desc
88
- ? `${desc}: `
89
- : `Enter the ${name} value${example ? ` (example: ${example})` : ""}: `;
90
- if (argMeta.argsOption.nullable) return await input({ message });
91
- else return convertArgValue(await input({ message }), type ?? "string");
92
- }
93
- };
94
-
95
- const getArgumentValue = async (argMeta: ArgMeta, value: string | undefined) => {
96
- const {
97
- name,
98
- argsOption: { default: defaultValue, type, desc, nullable, example, ask },
99
- } = argMeta;
100
- if (value !== undefined) return convertArgValue(value, type ?? "string");
101
- else if (defaultValue !== undefined) return defaultValue;
102
- else if (nullable) return null;
103
-
104
- const message = ask
105
- ? `${ask}: `
106
- : desc
107
- ? `${desc}: `
108
- : `Enter the ${name} value${example ? ` (example: ${example})` : ""}: `;
109
- return convertArgValue(await input({ message }), type ?? "string");
110
- };
111
-
112
- const assignCommandContext = (context: CommandContext, argMeta: ArgMeta | InternalArgMeta, value: unknown) => {
113
- if (value instanceof AppExecutor) context.app = value;
114
- else if (value instanceof LibExecutor) context.lib = value;
115
- else if (value instanceof PkgExecutor) context.pkg = value;
116
- else if (value instanceof ModuleExecutor) context.module = value;
117
- else if (value instanceof Executor) context.exec = value;
118
- if (argMeta.type === "Argument" || argMeta.type === "Option") context.values[argMeta.name] = value;
119
- else context.values[argMeta.type.toLowerCase()] = value;
120
- };
121
-
122
- const assertCurrentDirectoryIsWorkspaceRoot = async () => {
123
- const cwd = process.cwd();
124
- const [hasPackageJson, hasTsConfig, hasEnv] = await Promise.all([
125
- FileSys.fileExists(`${cwd}/package.json`),
126
- FileSys.fileExists(`${cwd}/tsconfig.json`),
127
- FileSys.fileExists(`${cwd}/.env`),
128
- ]);
129
- if (hasPackageJson && hasTsConfig && hasEnv) return;
130
-
131
- throw new Error(
132
- [
133
- "Akan CLI commands must be run from the workspace root.",
134
- `Current directory: ${cwd}`,
135
- "Move to the directory that contains package.json, tsconfig.json, and .env, then run the command again.",
136
- ].join("\n"),
137
- );
138
- };
139
-
140
- const getInternalArgumentValue = async (
141
- argMeta: InternalArgMeta,
142
- value: string | undefined,
143
- workspace: WorkspaceExecutor,
144
- ) => {
145
- if (argMeta.type === "Workspace") return workspace;
146
- const sysType = argMeta.type.toLowerCase();
147
- const [appNames, libNames, pkgNames] = await workspace.getExecs();
148
- if (sysType === "sys") {
149
- if (value && appNames.includes(value)) return AppExecutor.from(workspace, value);
150
- else if (value && libNames.includes(value)) return LibExecutor.from(workspace, value);
151
- else {
152
- const sysName = await select<string>({
153
- message: `Select the App or Lib name`,
154
- choices: [...appNames, ...libNames],
155
- });
156
- if (appNames.includes(sysName)) return AppExecutor.from(workspace, sysName);
157
- else if (libNames.includes(sysName)) return LibExecutor.from(workspace, sysName);
158
- else throw new Error(`Invalid system name: ${sysName}`);
159
- }
160
- } else if (sysType === "exec") {
161
- if (value && appNames.includes(value)) return AppExecutor.from(workspace, value);
162
- else if (value && libNames.includes(value)) return LibExecutor.from(workspace, value);
163
- else if (value && pkgNames.includes(value)) return PkgExecutor.from(workspace, value);
164
- else {
165
- const execName = await select<string>({
166
- message: `Select the App or Lib or Pkg name`,
167
- choices: [...appNames, ...libNames, ...pkgNames],
168
- });
169
- if (appNames.includes(execName)) return AppExecutor.from(workspace, execName);
170
- else if (libNames.includes(execName)) return LibExecutor.from(workspace, execName);
171
- else if (pkgNames.includes(execName)) return PkgExecutor.from(workspace, execName);
172
- else throw new Error(`Invalid system name: ${execName}`);
173
- }
174
- } else if (sysType === "app") {
175
- if (value && appNames.includes(value)) return AppExecutor.from(workspace, value);
176
- const appName = await select<string>({ message: `Select the ${sysType} name`, choices: appNames });
177
- return AppExecutor.from(workspace, appName);
178
- } else if (sysType === "lib") {
179
- if (value && libNames.includes(value)) return LibExecutor.from(workspace, value);
180
- const libName = await select<string>({ message: `Select the ${sysType} name`, choices: libNames });
181
- return LibExecutor.from(workspace, libName);
182
- } else if (sysType === "pkg") {
183
- const pkgs = await workspace.getPkgs();
184
- if (value && pkgs.includes(value)) return PkgExecutor.from(workspace, value);
185
- const pkgName = await select<string>({ message: `Select the ${sysType} name`, choices: pkgs });
186
- return PkgExecutor.from(workspace, pkgName);
187
- } else if (sysType === "module") {
188
- if (value) {
189
- const [sysName, moduleName] = value.split(":");
190
- if (!sysName || !moduleName) throw new Error(`Invalid module name: ${value}`);
191
- if (appNames.includes(sysName)) {
192
- const app = AppExecutor.from(workspace, sysName);
193
- const modules = await app.getModules();
194
- if (modules.includes(moduleName)) return ModuleExecutor.from(app, moduleName);
195
- else throw new Error(`Invalid module name: ${moduleName}`);
196
- } else if (libNames.includes(sysName)) {
197
- const lib = LibExecutor.from(workspace, sysName);
198
- const modules = await lib.getModules();
199
- if (modules.includes(moduleName)) return ModuleExecutor.from(lib, moduleName);
200
- } else throw new Error(`Invalid system name: ${sysName}`);
201
- }
202
- const { type, name } = await select<{ type: "app" | "lib"; name: string }>({
203
- message: `select the App or Lib name`,
204
- choices: [
205
- ...appNames.map((name) => ({ name, value: { type: "app" as const, name } })),
206
- ...libNames.map((name) => ({ name, value: { type: "lib" as const, name } })),
207
- ],
208
- });
209
- const executor = type === "app" ? AppExecutor.from(workspace, name) : LibExecutor.from(workspace, name);
210
- const modules = await executor.getModules();
211
- const moduleName = await select<string>({
212
- message: `Select the module name`,
213
- choices: modules.map((name) => ({ name: `${executor.name}:${name}`, value: name })),
214
- });
215
- return ModuleExecutor.from(executor, moduleName);
216
- } else throw new Error(`Invalid system type: ${argMeta.type}`);
217
- };
218
-
219
- export const runCommands = async (...commands: CommandCls[]) => {
220
- process.on("unhandledRejection", (error) => {
221
- process.exit(1);
222
- });
223
- const __dirname = getDirname(import.meta.url);
224
- const hasPackageJson = await FileSys.fileExists(`${__dirname}/../package.json`);
225
- process.env.AKAN_VERSION = hasPackageJson
226
- ? (await FileSys.readJson<PackageJson>(`${__dirname}/../package.json`)).version
227
- : "0.0.1";
228
-
229
- const hasHelpFlag = process.argv.includes("--help") || process.argv.includes("-h");
230
- const hasCommand = process.argv.length > 2 && !process.argv[2]?.startsWith("-");
231
-
232
- if (hasHelpFlag || !hasCommand) {
233
- if (process.argv.length === 2 || (process.argv.length === 3 && hasHelpFlag)) {
234
-
235
- Logger.rawLog(formatHelp(commands, process.env.AKAN_VERSION));
236
- process.exit(0);
237
- }
238
- }
239
-
240
- program.version(process.env.AKAN_VERSION).description("Akan CLI").configureHelp({
241
- helpWidth: 100,
242
- });
243
- const installedAkanPackageJson = (await FileSys.fileExists("./node_modules/akanjs/package.json"))
244
- ? await FileSys.readJson<PackageJson>("./node_modules/akanjs/package.json")
245
- : null;
246
- if (installedAkanPackageJson && installedAkanPackageJson.version !== process.env.AKAN_VERSION) {
247
- Logger.rawLog(
248
- chalk.yellow(
249
- `
250
- Akan CLI version is mismatch with installed package. ${process.env.AKAN_VERSION} (global) vs ${installedAkanPackageJson.version} (akanjs)
251
- It may cause unexpected behavior. Run \`akan update\` to update latest akanjs.`,
252
- ),
253
- );
254
- }
255
-
256
- for (const command of commands) {
257
- const targetMetas = getTargetMetas(command);
258
- for (const targetMeta of targetMetas) {
259
- const kebabKey = camelToKebabCase(targetMeta.key);
260
- const commandNames =
261
- targetMeta.targetOption.short === true
262
- ? [
263
- kebabKey,
264
- typeof targetMeta.targetOption.short === "string"
265
- ? targetMeta.targetOption.short
266
- : kebabKey
267
- .split("-")
268
- .map((s) => s.slice(0, 1))
269
- .join(""),
270
- ]
271
- : [kebabKey];
272
- for (const commandName of commandNames) {
273
- let programCommand = program.command(commandName, {
274
- hidden: targetMeta.targetOption.devOnly,
275
- });
276
- const [allArgMetas] = getArgMetas(command, targetMeta.key);
277
- for (const argMeta of allArgMetas) {
278
- if (argMeta.type === "Option") programCommand = handleOption(programCommand, argMeta);
279
- else if (argMeta.type === "Argument") programCommand = handleArgument(programCommand, argMeta);
280
- else if (argMeta.type === "Workspace") continue;
281
- else if (argMeta.type === "Module") {
282
- programCommand = programCommand.argument(
283
- `[sys-name:module-name]`,
284
- `${argMeta.type} in this workspace (apps|libs)/<sys-name>/lib/<module-name>`,
285
- );
286
- } else {
287
- const sysType = argMeta.type.toLowerCase();
288
- programCommand = programCommand.argument(
289
- `[${sysType}]`,
290
- `${sysType} in this workspace ${sysType}s/<${sysType}Name>`,
291
- );
292
- }
293
- }
294
- programCommand = programCommand.option(`-v, --verbose [boolean]`, `verbose output`);
295
-
296
- programCommand.helpInformation = () => {
297
- return formatCommandHelp(command, targetMeta.key);
298
- };
299
-
300
- programCommand.action(async (...args: unknown[]) => {
301
- Logger.rawLog();
302
- const cmdArgs = args.slice(0, args.length - 2);
303
- const opt = args[args.length - 2] as Record<string, unknown>;
304
- const commandArgs = [] as unknown[];
305
- if (targetMeta.targetOption.runsOnWorkspaceRoot) await assertCurrentDirectoryIsWorkspaceRoot();
306
- const workspace = WorkspaceExecutor.fromRoot();
307
- const commandContext: CommandContext = { values: {} };
308
- for (const argMeta of allArgMetas) {
309
- if (argMeta.type === "Option")
310
- commandArgs[argMeta.idx] = await getOptionValue(argMeta, opt, commandContext);
311
- else if (argMeta.type === "Argument")
312
- commandArgs[argMeta.idx] = await getArgumentValue(argMeta, cmdArgs[argMeta.idx] as string);
313
- else
314
- commandArgs[argMeta.idx] = await getInternalArgumentValue(
315
- argMeta as InternalArgMeta,
316
- cmdArgs[argMeta.idx] as string,
317
- workspace,
318
- );
319
-
320
- if (commandArgs[argMeta.idx] instanceof AppExecutor)
321
- process.env.AKAN_PUBLIC_APP_NAME = (commandArgs[argMeta.idx] as AppExecutor).name;
322
- assignCommandContext(commandContext, argMeta, commandArgs[argMeta.idx]);
323
- if ((opt as { verbose?: boolean }).verbose) Executor.setVerbose(true);
324
- }
325
- const cmd = CommandContainer.get(command);
326
-
327
- try {
328
- await targetMeta.handler.call(cmd, ...commandArgs);
329
- Logger.rawLog();
330
- } catch (e) {
331
- const errMsg = e instanceof Error ? e.message : typeof e === "string" ? e : JSON.stringify(e);
332
- Logger.rawLog(`\n${chalk.red(errMsg)}`);
333
- throw e;
334
- }
335
- });
336
- }
337
- }
338
- }
339
- await program.parseAsync(process.argv);
340
- };
@@ -1,224 +0,0 @@
1
- import type {
2
- App,
3
- ArgMeta,
4
- ArgsOption,
5
- CommandContext,
6
- Exec,
7
- InternalArgMeta,
8
- InternalArgToken,
9
- Lib,
10
- Module,
11
- Pkg,
12
- PrimitiveArgType,
13
- Sys,
14
- } from "./argMeta";
15
- import { normalizePrimitiveArgType } from "./argMeta";
16
- import { assertUniqueDependencies, type DependencyInstanceMap, injectDependencies } from "./dependencyBuilder";
17
- import { COMMAND_META, type CommandCls, type TargetMeta, type TargetOption } from "./targetMeta";
18
- import type { DependencyCls, DependencyKey } from "./types";
19
-
20
- type PrimitiveValue<T extends PrimitiveArgType> = T extends StringConstructor
21
- ? string
22
- : T extends NumberConstructor
23
- ? number
24
- : boolean;
25
- type MaybeNullable<Value, Option> = Option extends { nullable: true } ? Value | null : Value;
26
- type AddArg<Params extends unknown[], Type extends PrimitiveArgType, Option> = [
27
- ...Params,
28
- MaybeNullable<PrimitiveValue<Type>, Option>,
29
- ];
30
- type AddInternalArg<Params extends unknown[], Token extends InternalArgToken> = [...Params, Token["_value"]];
31
- type AddInternalArgs<Params extends unknown[], Tokens extends readonly InternalArgToken[]> = Tokens extends readonly [
32
- infer Head extends InternalArgToken,
33
- ...infer Rest extends InternalArgToken[],
34
- ]
35
- ? AddInternalArgs<AddInternalArg<Params, Head>, Rest>
36
- : Params;
37
- type ContextFromToken<Token extends InternalArgToken> = Token["_value"] extends App
38
- ? { app: App }
39
- : Token["_value"] extends Lib
40
- ? { lib: Lib }
41
- : Token["_value"] extends Sys
42
- ? { sys: Sys }
43
- : Token["_value"] extends Pkg
44
- ? { pkg: Pkg }
45
- : Token["_value"] extends Module
46
- ? { module: Module }
47
- : Token["_value"] extends Exec
48
- ? { exec: Exec }
49
- : object;
50
- type AddInternalContext<Context, Tokens extends readonly InternalArgToken[]> = Tokens extends readonly [
51
- infer Head extends InternalArgToken,
52
- ...infer Rest extends InternalArgToken[],
53
- ]
54
- ? AddInternalContext<Context & ContextFromToken<Head>, Rest>
55
- : Context;
56
- type CommandHandler<Deps extends readonly DependencyCls[], Params extends unknown[]> = (
57
- this: DependencyInstanceMap<Deps>,
58
- ...args: Params
59
- ) => unknown | Promise<unknown>;
60
-
61
- class TargetBuilder<Deps extends readonly DependencyCls[], Params extends unknown[] = [], Context = object> {
62
- readonly #args: (ArgMeta | InternalArgMeta)[];
63
-
64
- constructor(
65
- private readonly targetOption: TargetOption,
66
- args: (ArgMeta | InternalArgMeta)[] = [],
67
- ) {
68
- this.#args = args;
69
- }
70
-
71
- arg<Type extends PrimitiveArgType, Option extends ArgsOption<Context> = ArgsOption<Context>>(
72
- name: string,
73
- type: Type,
74
- argsOption: Option = {} as Option,
75
- ): TargetBuilder<Deps, AddArg<Params, Type, Option>, Context> {
76
- return new TargetBuilder<Deps, AddArg<Params, Type, Option>, Context>(this.targetOption, [
77
- ...this.#args,
78
- {
79
- name,
80
- argsOption: { ...argsOption, type: normalizePrimitiveArgType(type) },
81
- key: "",
82
- idx: this.#args.length,
83
- type: "Argument",
84
- } as ArgMeta<CommandContext>,
85
- ]);
86
- }
87
-
88
- option<Type extends PrimitiveArgType, Option extends ArgsOption<Context> = ArgsOption<Context>>(
89
- name: string,
90
- type: Type,
91
- argsOption: Option = {} as Option,
92
- ): TargetBuilder<Deps, AddArg<Params, Type, Option>, Context> {
93
- return new TargetBuilder<Deps, AddArg<Params, Type, Option>, Context>(this.targetOption, [
94
- ...this.#args,
95
- {
96
- name,
97
- argsOption: { ...argsOption, type: normalizePrimitiveArgType(type) },
98
- key: "",
99
- idx: this.#args.length,
100
- type: "Option",
101
- } as ArgMeta<CommandContext>,
102
- ]);
103
- }
104
-
105
- with<const Tokens extends readonly InternalArgToken[]>(
106
- ...tokens: Tokens
107
- ): TargetBuilder<Deps, AddInternalArgs<Params, Tokens>, AddInternalContext<Context, Tokens>> {
108
- return new TargetBuilder<Deps, AddInternalArgs<Params, Tokens>, AddInternalContext<Context, Tokens>>(
109
- this.targetOption,
110
- [
111
- ...this.#args,
112
- ...tokens.map(
113
- (token, offset) =>
114
- ({
115
- key: "",
116
- idx: this.#args.length + offset,
117
- type: token.type,
118
- }) satisfies InternalArgMeta,
119
- ),
120
- ],
121
- );
122
- }
123
-
124
- exec(handler: CommandHandler<Deps, Params>) {
125
- return {
126
- args: this.#args,
127
- handler: handler as TargetMeta["handler"],
128
- targetOption: this.targetOption,
129
- };
130
- }
131
- }
132
-
133
- type TargetDefinition = ReturnType<TargetBuilder<readonly DependencyCls[], unknown[]>["exec"]>;
134
- type CommandBuilderContext<Deps extends readonly DependencyCls[]> = {
135
- public: (targetOption?: Omit<TargetOption, "type">) => TargetBuilder<Deps>;
136
- cloud: (targetOption?: Omit<TargetOption, "type">) => TargetBuilder<Deps>;
137
- dev: (targetOption?: Omit<TargetOption, "type">) => TargetBuilder<Deps>;
138
- arg: <Type extends PrimitiveArgType, Option extends ArgsOption<CommandContext> = ArgsOption<CommandContext>>(
139
- name: string,
140
- type: Type,
141
- argsOption?: Option,
142
- ) => ArgMeta;
143
- option: <Type extends PrimitiveArgType, Option extends ArgsOption<CommandContext> = ArgsOption<CommandContext>>(
144
- name: string,
145
- type: Type,
146
- argsOption?: Option,
147
- ) => ArgMeta;
148
- };
149
- type CommandBuilder<Deps extends readonly DependencyCls[]> = (
150
- context: CommandBuilderContext<Deps>,
151
- ) => Record<string, TargetDefinition>;
152
-
153
- const createTarget =
154
- <Deps extends readonly DependencyCls[]>(type: TargetOption["type"]) =>
155
- (targetOption: Omit<TargetOption, "type"> = {}) =>
156
- new TargetBuilder<Deps>({ runsOnWorkspaceRoot: true, ...targetOption, type });
157
-
158
- const createContext = <Deps extends readonly DependencyCls[]>(): CommandBuilderContext<Deps> => ({
159
- public: createTarget<Deps>("public"),
160
- cloud: createTarget<Deps>("cloud"),
161
- dev: createTarget<Deps>("dev"),
162
- arg: (name, type, argsOption) =>
163
- ({
164
- name,
165
- argsOption: { ...(argsOption ?? {}), type: normalizePrimitiveArgType(type) },
166
- key: "",
167
- idx: -1,
168
- type: "Argument",
169
- }) as ArgMeta<CommandContext>,
170
- option: (name, type, argsOption) =>
171
- ({
172
- name,
173
- argsOption: { ...(argsOption ?? {}), type: normalizePrimitiveArgType(type) },
174
- key: "",
175
- idx: -1,
176
- type: "Option",
177
- }) as ArgMeta<CommandContext>,
178
- });
179
-
180
- const buildCommandMeta = (definitions: Record<string, TargetDefinition>) => {
181
- const commandMeta = new Map<string, TargetMeta>();
182
- for (const [key, definition] of Object.entries(definitions)) {
183
- commandMeta.set(key, {
184
- key,
185
- args: definition.args.map((arg) => ({ ...arg, key })),
186
- handler: definition.handler,
187
- targetOption: definition.targetOption,
188
- });
189
- }
190
- return commandMeta;
191
- };
192
-
193
- export function command<RefName extends string, Deps extends readonly DependencyCls[]>(
194
- refName: RefName,
195
- deps: Deps,
196
- builder: CommandBuilder<Deps>,
197
- ): CommandCls<DependencyInstanceMap<Deps>, DependencyKey<RefName, "command">>;
198
- export function command<RefName extends string>(
199
- refName: RefName,
200
- builder: CommandBuilder<[]>,
201
- ): CommandCls<DependencyInstanceMap<[]>, DependencyKey<RefName, "command">>;
202
- export function command<RefName extends string, Deps extends readonly DependencyCls[]>(
203
- refName: RefName,
204
- depsOrBuilder: Deps | CommandBuilder<[]>,
205
- builder?: CommandBuilder<Deps>,
206
- ) {
207
- const deps = (Array.isArray(depsOrBuilder) ? depsOrBuilder : []) as unknown as Deps;
208
- const commandBuilder = (Array.isArray(depsOrBuilder) ? builder : depsOrBuilder) as CommandBuilder<Deps>;
209
- assertUniqueDependencies(deps);
210
- const commandMeta = buildCommandMeta(commandBuilder(createContext<Deps>()));
211
-
212
- class CommandBase {
213
- static readonly refName = refName;
214
- static readonly dependencyKind = "command";
215
- static readonly dependencyKey = `${refName}Command` as const;
216
- static readonly [COMMAND_META] = commandMeta;
217
-
218
- constructor() {
219
- injectDependencies(this, deps);
220
- }
221
- }
222
-
223
- return CommandBase as unknown as CommandCls<DependencyInstanceMap<Deps>, DependencyKey<RefName, "command">>;
224
- }
@@ -1,6 +0,0 @@
1
- import type { Cls } from "./types";
2
-
3
- export const Commands = () => {
4
- return (target: Cls) => {
5
- };
6
- };
@@ -1,100 +0,0 @@
1
- import type { DependencyCls, DependencyKey, DependencyKind } from "./types";
2
-
3
- type UnionToIntersection<Union> = (Union extends unknown ? (value: Union) => void : never) extends (
4
- value: infer Intersection,
5
- ) => void
6
- ? Intersection
7
- : never;
8
-
9
- type DependencyToField<Dep> = Dep extends DependencyCls<infer Instance, infer Key> ? { [K in Key]: Instance } : never;
10
-
11
- export type DependencyInstanceMap<Deps extends readonly DependencyCls[]> = [Deps[number]] extends [never]
12
- ? Record<PropertyKey, never>
13
- : UnionToIntersection<DependencyToField<Deps[number]>>;
14
-
15
- const capitalize = (value: string) => value.slice(0, 1).toUpperCase() + value.slice(1);
16
-
17
- const createDependencyKey = <RefName extends string, Kind extends DependencyKind>(
18
- refName: RefName,
19
- kind: Kind,
20
- ): DependencyKey<RefName, Kind> => `${refName}${capitalize(kind)}` as DependencyKey<RefName, Kind>;
21
-
22
- export class CommandContainer {
23
- static #instances = new Map<DependencyCls, unknown>();
24
- static #resolving = new Set<DependencyCls>();
25
-
26
- static get<T>(dep: DependencyCls<T>): T {
27
- const instance = CommandContainer.#instances.get(dep);
28
- if (instance) return instance as T;
29
- if (CommandContainer.#resolving.has(dep)) throw new Error(`Circular command dependency: ${dep.name}`);
30
- CommandContainer.#resolving.add(dep);
31
- try {
32
- const nextInstance = new dep();
33
- CommandContainer.#instances.set(dep, nextInstance);
34
- return nextInstance;
35
- } finally {
36
- CommandContainer.#resolving.delete(dep);
37
- }
38
- }
39
-
40
- static clear() {
41
- CommandContainer.#instances.clear();
42
- CommandContainer.#resolving.clear();
43
- }
44
- }
45
-
46
- export const getDependencyKey = (dep: DependencyCls) => dep.dependencyKey;
47
-
48
- export const assertUniqueDependencies = (deps: readonly DependencyCls[]) => {
49
- const keys = new Map<string, DependencyCls>();
50
- const classes = new Set<DependencyCls>();
51
- for (const dep of deps) {
52
- if (classes.has(dep)) throw new Error(`Duplicate command dependency class: ${dep.name}`);
53
- classes.add(dep);
54
- const key = getDependencyKey(dep);
55
- const existing = keys.get(key);
56
- if (existing) throw new Error(`Duplicate command dependency key "${key}": ${existing.name}, ${dep.name}`);
57
- keys.set(key, dep);
58
- }
59
- };
60
-
61
- export const injectDependencies = <Deps extends readonly DependencyCls[]>(target: object, deps: Deps) => {
62
- assertUniqueDependencies(deps);
63
- for (const dep of deps) {
64
- Object.defineProperty(target, getDependencyKey(dep), {
65
- configurable: true,
66
- enumerable: false,
67
- value: CommandContainer.get(dep),
68
- writable: false,
69
- });
70
- }
71
- return target as typeof target & DependencyInstanceMap<Deps>;
72
- };
73
-
74
- export const runner = <RefName extends string>(refName: RefName) => {
75
- class RunnerBase {
76
- static readonly refName = refName;
77
- static readonly dependencyKind = "runner";
78
- static readonly dependencyKey = createDependencyKey(refName, "runner");
79
- }
80
-
81
- return RunnerBase as unknown as DependencyCls<InstanceType<typeof RunnerBase>, DependencyKey<RefName, "runner">>;
82
- };
83
-
84
- export const script = <RefName extends string, Deps extends readonly DependencyCls[]>(
85
- refName: RefName,
86
- deps: Deps = [] as unknown as Deps,
87
- ) => {
88
- assertUniqueDependencies(deps);
89
- class ScriptBase {
90
- static readonly refName = refName;
91
- static readonly dependencyKind = "script";
92
- static readonly dependencyKey = createDependencyKey(refName, "script");
93
-
94
- constructor() {
95
- injectDependencies(this, deps);
96
- }
97
- }
98
-
99
- return ScriptBase as unknown as DependencyCls<DependencyInstanceMap<Deps>, DependencyKey<RefName, "script">>;
100
- };