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,220 +0,0 @@
1
- import chalk from "chalk";
2
-
3
- import { type EnumChoice, getArgMetas } from "./argMeta";
4
- import { type CommandCls, getTargetMetas } from "./targetMeta";
5
-
6
- const camelToKebabCase = (str: string) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
7
- const formatChoice = (choice: EnumChoice) => (typeof choice === "object" ? choice.label : choice.toString());
8
-
9
- const groupCommands = (commands: CommandCls[]) => {
10
- const groups = new Map<string, { name: string; commands: { key: string; args: string[]; desc?: string }[] }>();
11
-
12
- for (const command of commands) {
13
- const className = command.name.replace("Command", "");
14
- const groupName = className;
15
-
16
- if (!groups.has(groupName)) {
17
- groups.set(groupName, { name: groupName, commands: [] });
18
- }
19
-
20
- const targetMetas = getTargetMetas(command);
21
- for (const targetMeta of targetMetas) {
22
-
23
- if (targetMeta.targetOption.devOnly) continue;
24
-
25
- const [allArgMetas] = getArgMetas(command, targetMeta.key);
26
- const args = allArgMetas
27
- .filter((arg) => arg.type !== "Option")
28
- .map((arg) => {
29
- if (arg.type === "Workspace") return "";
30
- if (arg.type === "Module") return "[sys:module]";
31
- if (arg.type === "Argument") {
32
- return `[${arg.name}]`;
33
- }
34
- return `[${arg.type.toLowerCase()}]`;
35
- })
36
- .filter(Boolean);
37
-
38
- const group = groups.get(groupName);
39
- if (group) {
40
- group.commands.push({
41
- key: camelToKebabCase(targetMeta.key),
42
- args,
43
- desc: targetMeta.targetOption.desc,
44
- });
45
- }
46
- }
47
- }
48
-
49
- return groups;
50
- };
51
-
52
- export const formatHelp = (commands: CommandCls[], version: string) => {
53
- const groups = groupCommands(commands);
54
- const lines: string[] = [];
55
-
56
- lines.push("");
57
- lines.push(chalk.bold.cyan(" ╔═══════════════════════════════════════════════════╗"));
58
- lines.push(
59
- chalk.bold.cyan(" ║") +
60
- chalk.bold.white(" Akan.js Framework CLI ") +
61
- chalk.bold.cyan(" ║"),
62
- );
63
- lines.push(chalk.bold.cyan(" ╚═══════════════════════════════════════════════════╝"));
64
- lines.push("");
65
- lines.push(chalk.gray(` Version: ${version}`));
66
- lines.push("");
67
-
68
- lines.push(chalk.bold.yellow(" USAGE"));
69
- lines.push("");
70
- lines.push(chalk.gray(" $ ") + chalk.white("akan") + chalk.gray(" <command> [options]"));
71
- lines.push("");
72
-
73
- lines.push(chalk.bold.yellow(" COMMANDS"));
74
- lines.push("");
75
-
76
- for (const [groupName, group] of groups) {
77
-
78
- if (group.commands.length === 0) continue;
79
-
80
- lines.push(chalk.bold.magenta(` ${groupName}`));
81
- lines.push("");
82
-
83
- for (const cmd of group.commands) {
84
- const cmdName = chalk.green(cmd.key);
85
- const cmdArgs = cmd.args.length > 0 ? chalk.gray(` ${cmd.args.join(" ")}`) : "";
86
-
87
- if (cmd.desc) {
88
- const maxLineLength = 70;
89
- const cmdPrefix = ` ${cmdName}${cmdArgs}`;
90
- const indent = " ";
91
-
92
- if (cmdPrefix.length + cmd.desc.length + 3 < maxLineLength) {
93
-
94
- lines.push(`${cmdPrefix} ${chalk.gray(cmd.desc)}`);
95
- } else {
96
-
97
- lines.push(cmdPrefix);
98
- lines.push(`${indent}${chalk.gray(cmd.desc)}`);
99
- }
100
- } else {
101
- lines.push(` ${cmdName}${cmdArgs}`);
102
- }
103
- }
104
- lines.push("");
105
- }
106
-
107
- lines.push(chalk.bold.yellow(" OPTIONS"));
108
- lines.push("");
109
- lines.push(` ${chalk.green("-v, --verbose")} ${chalk.gray("Enable verbose output")}`);
110
- lines.push(` ${chalk.green("-h, --help")} ${chalk.gray("Display this help message")}`);
111
- lines.push(` ${chalk.green("-V, --version")} ${chalk.gray("Output version number")}`);
112
- lines.push("");
113
-
114
- lines.push(chalk.bold.yellow(" EXAMPLES"));
115
- lines.push("");
116
- lines.push(chalk.gray(" # Create a new workspace"));
117
- lines.push(chalk.white(" $ akan create-workspace myproject"));
118
- lines.push("");
119
- lines.push(chalk.gray(" # Start development server"));
120
- lines.push(chalk.white(" $ akan start myapp"));
121
- lines.push("");
122
- lines.push(chalk.gray(" # Create a new module"));
123
- lines.push(chalk.white(" $ akan create-module userProfile"));
124
- lines.push("");
125
-
126
- lines.push(chalk.gray(" Documentation: ") + chalk.cyan("https://akanjs.com/docs"));
127
- lines.push(chalk.gray(" Report issues: ") + chalk.cyan("https://github.com/akan-team/akanjs/issues"));
128
- lines.push("");
129
-
130
- return lines.join("\n");
131
- };
132
-
133
- export const formatCommandHelp = (command: CommandCls, key: string) => {
134
- const [allArgMetas, argMetas] = getArgMetas(command, key);
135
- const kebabKey = camelToKebabCase(key);
136
- const lines: string[] = [];
137
-
138
- const targetMetas = getTargetMetas(command);
139
- const targetMeta = targetMetas.find((t) => t.key === key);
140
- const commandDesc = targetMeta?.targetOption.desc;
141
-
142
- lines.push("");
143
- lines.push(chalk.bold.cyan(` Command: ${kebabKey}`));
144
- if (commandDesc) {
145
- lines.push(chalk.gray(` ${commandDesc}`));
146
- }
147
- lines.push("");
148
-
149
- const args = allArgMetas
150
- .filter((arg) => arg.type !== "Option")
151
- .map((arg) => {
152
- if (arg.type === "Workspace") return "";
153
- if (arg.type === "Module") return "[sys:module]";
154
- if (arg.type === "Argument") {
155
- return `[${camelToKebabCase(arg.name)}]`;
156
- }
157
- return `[${arg.type.toLowerCase()}]`;
158
- })
159
- .filter(Boolean)
160
- .join(" ");
161
-
162
- lines.push(chalk.bold.yellow(" USAGE"));
163
- lines.push("");
164
- lines.push(chalk.gray(" $ ") + chalk.white(`akan ${kebabKey}`) + (args ? chalk.gray(` ${args}`) : ""));
165
- lines.push("");
166
-
167
- const nonOptionArgs = allArgMetas.filter((arg) => arg.type !== "Option");
168
- if (nonOptionArgs.length > 0) {
169
- lines.push(chalk.bold.yellow(" ARGUMENTS"));
170
- lines.push("");
171
-
172
- for (const arg of nonOptionArgs) {
173
- if (arg.type === "Workspace") continue;
174
-
175
- let argName: string;
176
- let argDesc: string;
177
- let example = "";
178
-
179
- if (arg.type === "Argument") {
180
- argName = camelToKebabCase(arg.name);
181
- argDesc = arg.argsOption.desc ?? "";
182
- example = arg.argsOption.example ? chalk.gray(` (e.g., ${String(arg.argsOption.example)})`) : "";
183
- } else if (arg.type === "Module") {
184
- argName = "sys:module";
185
- argDesc = "Module in format: app-name:module-name or lib-name:module-name";
186
- } else {
187
- argName = arg.type.toLowerCase();
188
- argDesc = `${arg.type} name in this workspace`;
189
- }
190
-
191
- lines.push(` ${chalk.green(argName)} ${chalk.gray(argDesc)}${example}`);
192
- }
193
-
194
- lines.push("");
195
- }
196
-
197
- const optionArgs = argMetas.filter((a) => a.type === "Option");
198
- if (optionArgs.length > 0) {
199
- lines.push(chalk.bold.yellow(" OPTIONS"));
200
- lines.push("");
201
-
202
- for (const arg of optionArgs) {
203
- const opt = arg.argsOption;
204
- const flag = opt.flag ? `-${opt.flag}, ` : "";
205
- const kebabName = camelToKebabCase(arg.name);
206
- const optName = `${flag}--${kebabName}`;
207
- const optDesc = opt.desc ?? "";
208
- const defaultVal = opt.default !== undefined ? chalk.gray(` [default: ${String(opt.default)}]`) : "";
209
- const choices = opt.enum
210
- ? chalk.gray(
211
- typeof opt.enum === "function" ? " ([dynamic choices])" : ` (${opt.enum.map(formatChoice).join(", ")})`,
212
- )
213
- : "";
214
- lines.push(` ${chalk.green(optName)} ${chalk.gray(optDesc)}${defaultVal}${choices}`);
215
- }
216
- lines.push("");
217
- }
218
-
219
- return lines.join("\n");
220
- };
@@ -1,8 +0,0 @@
1
- export * from "./argMeta";
2
- export * from "./command";
3
- export * from "./commandBuilder";
4
- export * from "./commandMeta";
5
- export * from "./dependencyBuilder";
6
- export * from "./helpFormatter";
7
- export * from "./targetMeta";
8
- export * from "./types";
@@ -1,31 +0,0 @@
1
- import type { ArgMeta, InternalArgMeta } from "./argMeta";
2
- import type { DependencyCls } from "./types";
3
-
4
- export const COMMAND_META: unique symbol = Symbol("akan.command.meta");
5
-
6
- export interface TargetMeta {
7
- key: string;
8
- targetOption: TargetOption;
9
- args: (ArgMeta | InternalArgMeta)[];
10
- handler: (this: unknown, ...args: unknown[]) => unknown | Promise<unknown>;
11
- }
12
-
13
- export interface CommandStatics {
14
- [COMMAND_META]: Map<string, TargetMeta>;
15
- }
16
-
17
- export type CommandCls<Instance = unknown, Key extends string = string> = DependencyCls<Instance, Key> & CommandStatics;
18
-
19
- export const getTargetMetas = (command: CommandCls): TargetMeta[] => {
20
- const targetMetaMap = command[COMMAND_META];
21
- if (!targetMetaMap) throw new Error(`TargetMeta is not defined for ${command.name}`);
22
- return [...targetMetaMap.values()];
23
- };
24
-
25
- export interface TargetOption {
26
- type: "public" | "cloud" | "dev";
27
- short?: string | true;
28
- devOnly?: boolean;
29
- desc?: string;
30
- runsOnWorkspaceRoot?: boolean;
31
- }
@@ -1,10 +0,0 @@
1
- export type Cls<T = unknown> = new (...args: unknown[]) => T;
2
-
3
- export type DependencyKind = "command" | "script" | "runner";
4
- export type DependencyKey<RefName extends string, Kind extends DependencyKind> = `${RefName}${Capitalize<Kind>}`;
5
-
6
- export type DependencyCls<T = unknown, Key extends string = string> = (new () => T) & {
7
- readonly dependencyKey: Key;
8
- readonly dependencyKind: DependencyKind;
9
- readonly refName: string;
10
- };
@@ -1,25 +0,0 @@
1
- import type { SupportedLlmModel } from "./aiEditor";
2
-
3
- export const basePath = `${Bun.env.HOME ?? Bun.env.USERPROFILE}/.akan`;
4
- export const configPath = `${basePath}/config.json`;
5
- export const akanCloudHost =
6
- process.env.AKAN_PUBLIC_OPERATION_MODE === "local" ? "http://localhost" : "https://cloud.akanjs.com";
7
- export const akanCloudUrl = `${akanCloudHost}${process.env.AKAN_PUBLIC_OPERATION_MODE === "local" ? ":8282" : ""}/메ㅑ`;
8
-
9
- export interface HostConfig {
10
- auth?: {
11
- token: string;
12
- self: { id: string; nickname: string };
13
- };
14
- }
15
- export const defaultHostConfig: HostConfig = {};
16
- export interface AkanGlobalConfig {
17
- cloudHost: {
18
- [key: string]: HostConfig;
19
- };
20
- llm: {
21
- model: SupportedLlmModel;
22
- apiKey: string;
23
- } | null;
24
- }
25
- export const defaultAkanGlobalConfig: AkanGlobalConfig = { cloudHost: {}, llm: null };
@@ -1,36 +0,0 @@
1
- import type { SshOptions } from "akanjs/base";
2
-
3
- import { type AppExecutor, WorkspaceExecutor } from "./executors";
4
- import { createSshTunnel } from "./sshTunnel";
5
-
6
- const getSshTunnelOptions = (app: AppExecutor, environment: string): SshOptions => {
7
- const { serveDomain, repoName } = WorkspaceExecutor.getBaseDevEnv();
8
- return {
9
- host: `${app.name}-${environment}.${serveDomain}`,
10
- port: process.env.SSH_TUNNEL_PORT ? parseInt(process.env.SSH_TUNNEL_PORT) : 32767,
11
- username: process.env.SSH_TUNNEL_USERNAME ?? "root",
12
- password: process.env.SSH_TUNNEL_PASSWORD ?? repoName,
13
- };
14
- };
15
-
16
- interface TunnelOption {
17
- app: AppExecutor;
18
- environment: string;
19
- port?: number;
20
- }
21
- export const createTunnel = async (
22
- service: "redis" | "postgres",
23
- { app, environment, port = service === "postgres" ? 5432 : 6379 }: TunnelOption,
24
- ) => {
25
- const sshOptions: SshOptions = getSshTunnelOptions(app, environment);
26
- await createSshTunnel({
27
- localHost: "0.0.0.0",
28
- localPort: port,
29
- srcHost: "0.0.0.0",
30
- srcPort: port,
31
- dstHost: `${service}-0.${service}-svc.${app.name}-${environment}.svc.cluster.local`,
32
- dstPort: service === "postgres" ? 5432 : 6379,
33
- sshOptions,
34
- });
35
- return `localhost:${port}`;
36
- };
@@ -1,339 +0,0 @@
1
- import { builtinModules } from "node:module";
2
- import * as path from "node:path";
3
- import ignore from "ignore";
4
- import ts from "typescript";
5
- import type { App, Lib, Pkg } from "./commandDecorators";
6
- import { FileSys } from "./fileSys";
7
- import type { PackageJson, TsConfigJson } from "./types";
8
-
9
- const testFileRegex = /\.(?:test|spec)\.[cm]?[tj]sx?$/;
10
- const builtinModuleSet = new Set([...builtinModules, ...builtinModules.map((mod) => `node:${mod}`)]);
11
- const stripShebang = (source: string) => source.replace(/^#!.*(?:\r?\n|$)/, "");
12
-
13
- export class TypeScriptDependencyScanner {
14
- #fileDependencies = new Map<string, string[]>();
15
- #fileRuntimeDependencies = new Map<string, string[]>();
16
- #fileTypeDependencies = new Map<string, string[]>();
17
- #visitedFiles = new Set<string>();
18
- readonly #tsTranspiler = new Bun.Transpiler({ loader: "ts" });
19
- readonly #tsxTranspiler = new Bun.Transpiler({ loader: "tsx" });
20
- private readonly directory: string;
21
- private readonly rootPackageJson: PackageJson;
22
- private readonly ig: ReturnType<typeof ignore>;
23
- private readonly workspaceRoot: string;
24
-
25
- constructor(
26
- directory: string,
27
- {
28
- workspaceRoot,
29
- rootPackageJson,
30
- gitignorePatterns = [],
31
- }: { workspaceRoot: string; tsconfig: TsConfigJson; rootPackageJson: PackageJson; gitignorePatterns?: string[] },
32
- ) {
33
- this.directory = directory;
34
- this.rootPackageJson = rootPackageJson;
35
- this.ig = ignore().add(gitignorePatterns);
36
- this.workspaceRoot = workspaceRoot;
37
- }
38
-
39
- async getMonorepoDependencies(
40
- projectName: string,
41
- { pkgs = [], libs = [] }: { pkgs?: string[]; libs?: string[] } = {},
42
- ): Promise<{ pkgDeps: string[]; libDeps: string[]; npmDeps: string[]; npmDevDeps: string[] }> {
43
- const npmSet = new Set(
44
- Object.keys({ ...this.rootPackageJson.dependencies, ...this.rootPackageJson.devDependencies }),
45
- );
46
- const pkgPathSet = new Set(pkgs);
47
- const libPathSet = new Set(libs.map((lib) => `@libs/${lib}`));
48
- await this.getDependencies();
49
- const [npmDepSet, pkgPathDepSet, libPathDepSet] = this.#getImportSetsFromDependencies(
50
- [npmSet, pkgPathSet, libPathSet],
51
- this.#fileRuntimeDependencies,
52
- );
53
- const [npmDevDepSet] = this.#getImportSetsFromDependencies([npmSet], this.#fileTypeDependencies);
54
- const pkgDeps = [...pkgPathDepSet];
55
- const libDeps = [...libPathDepSet]
56
- .map((path) => path.replace("@libs/", ""))
57
- .filter((libName) => libName !== projectName);
58
- return {
59
- pkgDeps,
60
- libDeps,
61
- npmDeps: [...npmDepSet],
62
- npmDevDeps: [...npmDevDepSet].filter((dep) => !npmDepSet.has(dep)),
63
- };
64
- }
65
-
66
- async getPackageBuildDependencies(
67
- projectName: string,
68
- ): Promise<{ npmDeps: string[]; npmDevDeps: string[]; missingDeps: string[] }> {
69
- const runtimeDeps = new Set<string>();
70
- const devDeps = new Set<string>();
71
- const sourceFiles = await this.#findTypeScriptFiles(this.directory, {
72
- excludeBuildFiles: true,
73
- excludeTestFiles: true,
74
- });
75
- const cssFiles = await this.#findCssFiles(this.directory);
76
-
77
- for (const filePath of sourceFiles) {
78
- const fileContent = await FileSys.readText(filePath);
79
- const { imports, typeImports } = this.#extractImports(fileContent, filePath);
80
- this.#addNormalizedImports(runtimeDeps, imports, projectName);
81
- this.#addNormalizedImports(devDeps, typeImports, projectName);
82
- }
83
-
84
- for (const filePath of cssFiles) {
85
- const fileContent = await FileSys.readText(filePath);
86
- this.#addNormalizedImports(runtimeDeps, this.#extractCssPluginImports(fileContent), projectName);
87
- }
88
-
89
- const buildFilePath = path.join(this.directory, "build.ts");
90
- if (await FileSys.fileExists(buildFilePath)) {
91
- const fileContent = await FileSys.readText(buildFilePath);
92
- const { imports, typeImports } = this.#extractImports(fileContent, buildFilePath);
93
- this.#addNormalizedImports(devDeps, [...imports, ...typeImports], projectName);
94
- }
95
-
96
- for (const dep of runtimeDeps) devDeps.delete(dep);
97
-
98
- const rootDeps = { ...this.rootPackageJson.dependencies, ...this.rootPackageJson.devDependencies };
99
- const missingDeps = [...runtimeDeps, ...devDeps].filter((dep) => !rootDeps[dep]).sort();
100
- return {
101
- npmDeps: [...runtimeDeps].sort(),
102
- npmDevDeps: [...devDeps].sort(),
103
- missingDeps,
104
- };
105
- }
106
-
107
- async getImportSets<DepSets extends Set<string>[]>(depSets: DepSets): Promise<DepSets> {
108
- const fileDependencies = await this.getDependencies();
109
- return this.#getImportSetsFromDependencies(depSets, fileDependencies);
110
- }
111
-
112
- #getImportSetsFromDependencies<DepSets extends Set<string>[]>(
113
- depSets: DepSets,
114
- fileDependencies: Map<string, string[]>,
115
- ): DepSets {
116
- const importedDepSets = new Array<Set<string>>(depSets.length);
117
- for (let i = 0; i < depSets.length; i++) importedDepSets[i] = new Set<string>();
118
- fileDependencies.forEach((imps) => {
119
- imps.forEach((imp) => {
120
- if (imp.startsWith(".")) return;
121
- const moduleName = imp;
122
- const moduleNameParts = moduleName.split("/");
123
- const subModuleLength = moduleNameParts.length;
124
- for (let i = 0; i < subModuleLength; i++) {
125
- const importName = moduleNameParts.slice(0, i + 1).join("/");
126
- for (let j = 0; j < depSets.length; j++) {
127
- if (depSets[j]?.has(importName)) {
128
- importedDepSets[j]?.add(importName);
129
- return;
130
- }
131
- }
132
- }
133
- });
134
- });
135
- return importedDepSets as DepSets;
136
- }
137
-
138
- async getDependencies(): Promise<Map<string, string[]>> {
139
- this.#fileDependencies.clear();
140
- this.#fileRuntimeDependencies.clear();
141
- this.#fileTypeDependencies.clear();
142
- this.#visitedFiles.clear();
143
-
144
- const files = await this.#findTypeScriptFiles(this.directory);
145
-
146
- for (const file of files) await this.#analyzeFile(file, this.directory);
147
-
148
- return this.#fileDependencies;
149
- }
150
-
151
- async #findTypeScriptFiles(
152
- directory: string,
153
- {
154
- excludeBuildFiles = false,
155
- excludeTestFiles = false,
156
- }: { excludeBuildFiles?: boolean; excludeTestFiles?: boolean } = {},
157
- ): Promise<string[]> {
158
- const files: string[] = [];
159
- const skipDirs = ["node_modules", "dist", "build", ".git", ".next", "public", "ios", "android"];
160
-
161
- const glob = new Bun.Glob("**/*.{ts,tsx}");
162
- for await (const filePath of glob.scan({ cwd: directory, onlyFiles: true })) {
163
- if (skipDirs.some((dir) => filePath.includes(`/${dir}/`) || filePath.startsWith(`${dir}/`))) continue;
164
- if (excludeBuildFiles && filePath === "build.ts") continue;
165
- if (excludeTestFiles && testFileRegex.test(filePath)) continue;
166
-
167
- const fullPath = path.join(directory, filePath);
168
- const relativePath = path.relative(this.workspaceRoot, fullPath);
169
- if (this.ig.ignores(relativePath)) continue;
170
-
171
- files.push(fullPath);
172
- }
173
- return files;
174
- }
175
-
176
- async #findCssFiles(directory: string): Promise<string[]> {
177
- const files: string[] = [];
178
- const skipDirs = ["node_modules", "dist", "build", ".git", ".next", "public", "ios", "android"];
179
- const glob = new Bun.Glob("**/*.css");
180
- for await (const filePath of glob.scan({ cwd: directory, onlyFiles: true })) {
181
- if (skipDirs.some((dir) => filePath.includes(`/${dir}/`) || filePath.startsWith(`${dir}/`))) continue;
182
-
183
- const fullPath = path.join(directory, filePath);
184
- const relativePath = path.relative(this.workspaceRoot, fullPath);
185
- if (this.ig.ignores(relativePath)) continue;
186
-
187
- files.push(fullPath);
188
- }
189
- return files;
190
- }
191
-
192
- async #analyzeFile(filePath: string, baseDir: string): Promise<void> {
193
- if (this.#visitedFiles.has(filePath)) return;
194
-
195
- this.#visitedFiles.add(filePath);
196
-
197
- try {
198
- const fileContent = await FileSys.readText(filePath);
199
- const { imports, typeImports } = this.#extractImports(fileContent, filePath);
200
-
201
- const resolvedImports = await this.#resolveImports(imports, filePath, baseDir);
202
- const resolvedTypeImports = await this.#resolveImports(typeImports, filePath, baseDir);
203
-
204
- const relativePath = path.relative(baseDir, filePath);
205
- this.#fileDependencies.set(relativePath, [...new Set([...resolvedImports, ...resolvedTypeImports])]);
206
- this.#fileRuntimeDependencies.set(relativePath, resolvedImports);
207
- this.#fileTypeDependencies.set(relativePath, resolvedTypeImports);
208
- } catch {
209
- }
210
- }
211
-
212
- async #resolveImports(imports: string[], filePath: string, baseDir: string): Promise<string[]> {
213
- return await Promise.all(
214
- imports.map(async (importPath) => {
215
- if (importPath.startsWith(".")) {
216
-
217
- const resolvedPath = `./${path.join(path.relative(baseDir, filePath), importPath)}`;
218
- return await this.#ensureExtension(resolvedPath);
219
- }
220
- return importPath;
221
- }),
222
- );
223
- }
224
-
225
- async #ensureExtension(filePath: string): Promise<string> {
226
- if (await FileSys.fileExists(`${filePath}.ts`)) return `${filePath}.ts`;
227
- else if (await FileSys.fileExists(`${filePath}.tsx`)) return `${filePath}.tsx`;
228
- else if (await FileSys.fileExists(filePath)) return filePath;
229
- return `${filePath}.ts`;
230
- }
231
-
232
- #extractImports(source: string, filePath: string) {
233
- const transpiler = filePath.endsWith(".tsx") ? this.#tsxTranspiler : this.#tsTranspiler;
234
- const scanSource = stripShebang(source);
235
- const imports = new Set(
236
- transpiler
237
- .scanImports(scanSource)
238
- .map((imp) => imp.path)
239
- .filter(Boolean),
240
- );
241
- const typeImports = new Set<string>();
242
-
243
- const sourceFile = ts.createSourceFile(filePath, scanSource, ts.ScriptTarget.Latest, true);
244
- for (const statement of sourceFile.statements) {
245
- if (!ts.isImportDeclaration(statement)) continue;
246
- if (!ts.isStringLiteral(statement.moduleSpecifier)) continue;
247
-
248
- const importPath = statement.moduleSpecifier.text;
249
- const namedBindings = statement.importClause?.namedBindings;
250
- const isNamedTypeOnlyImport =
251
- namedBindings &&
252
- ts.isNamedImports(namedBindings) &&
253
- namedBindings.elements.length > 0 &&
254
- namedBindings.elements.every((element) => element.isTypeOnly);
255
-
256
- if ((statement.importClause?.isTypeOnly || isNamedTypeOnlyImport) && !imports.has(importPath)) {
257
- typeImports.add(importPath);
258
- }
259
- }
260
-
261
- return { imports: [...imports], typeImports: [...typeImports] };
262
- }
263
-
264
- #extractCssPluginImports(source: string) {
265
- const imports = new Set<string>();
266
- const pluginRegex = /@plugin\s+(?:url\()?["']([^"')]+)["']\)?/g;
267
- for (const match of source.matchAll(pluginRegex)) {
268
- const importPath = match[1];
269
- if (importPath) imports.add(importPath);
270
- }
271
- return [...imports];
272
- }
273
-
274
- #addNormalizedImports(deps: Set<string>, imports: string[], projectName: string) {
275
- for (const importPath of imports) {
276
- const dep = this.#normalizePackageImport(importPath, projectName);
277
- if (dep) deps.add(dep);
278
- }
279
- }
280
-
281
- #normalizePackageImport(importPath: string, projectName: string): string | null {
282
- if (
283
- importPath.startsWith(".") ||
284
- importPath.startsWith("/") ||
285
- importPath.startsWith("#") ||
286
- importPath.startsWith("bun:") ||
287
- builtinModuleSet.has(importPath)
288
- )
289
- return null;
290
-
291
- const parts = importPath.split("/");
292
- const packageName = importPath.startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
293
- if (!packageName || packageName === projectName || importPath.startsWith(`${projectName}/`)) return null;
294
- return packageName;
295
- }
296
-
297
- generateDependencyGraph(): string {
298
- let graph = "Dependency Graph:\n\n";
299
-
300
- for (const [file, imports] of this.#fileDependencies.entries()) {
301
- graph += `${file}:\n`;
302
-
303
- const projectImports = imports.filter((i) => !i.startsWith("react") && !i.startsWith("@"));
304
- const externalImports = imports.filter((i) => i.startsWith("react") || i.startsWith("@"));
305
-
306
- if (projectImports.length > 0) {
307
- graph += " Project dependencies:\n";
308
- projectImports.forEach((imp) => {
309
- graph += ` → ${imp}\n`;
310
- });
311
- }
312
-
313
- if (externalImports.length > 0) {
314
- graph += " External dependencies:\n";
315
- externalImports.forEach((imp) => {
316
- graph += ` → ${imp}\n`;
317
- });
318
- }
319
-
320
- graph += "\n";
321
- }
322
-
323
- return graph;
324
- }
325
-
326
- static async from(exec: App | Lib | Pkg) {
327
- const [tsconfig, rootPackageJson, gitignorePatterns] = await Promise.all([
328
- exec.getTsConfig(),
329
- exec.workspace.getPackageJson(),
330
- exec.workspace.getGitignorePatterns(),
331
- ]);
332
- return new TypeScriptDependencyScanner(exec.cwdPath, {
333
- workspaceRoot: exec.workspace.cwdPath,
334
- tsconfig,
335
- rootPackageJson,
336
- gitignorePatterns,
337
- });
338
- }
339
- }