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,139 +0,0 @@
1
- import path from "node:path";
2
- import type { BaseBuildArtifact } from "akanjs/server";
3
- import { resolveSsrPageEntriesForApp } from "../artifact/implicitRootLayout";
4
- import { computeRouteSeedIndex, type RouteSeedIndex, saveRouteSeedIndex } from "../artifact/routeSeedIndex";
5
- import type { App } from "../commandDecorators";
6
- import { ClientEntriesBundler } from "./clientEntriesBundler";
7
- import { CssCompiler } from "./cssCompiler";
8
- import { FontOptimizer } from "./fontOptimizer";
9
- import { PagesBundleBuilder } from "./pagesBundleBuilder";
10
- import { VENDOR_SPECIFIERS, type VendorSpecifier } from "./vendorSpecifiers";
11
-
12
- export interface BuildSsrBaseArtifactResult {
13
- artifact: BaseBuildArtifact;
14
- seedIndex: RouteSeedIndex;
15
- cssCompiler: CssCompiler;
16
- optimizedFonts: Awaited<ReturnType<FontOptimizer["optimize"]>>;
17
- }
18
-
19
- export class SsrBaseArtifactBuilder {
20
- #app: App;
21
- #command: "build" | "start";
22
- #artifactDir: string;
23
- #absArtifactDir: string;
24
- #started = Date.now();
25
-
26
- constructor(app: App, command: "build" | "start" = "start") {
27
- this.#app = app;
28
- this.#command = command;
29
- this.#artifactDir = `${command === "build" ? app.dist.cwdPath : app.cwdPath}/.akan/artifact`;
30
- this.#absArtifactDir = path.resolve(this.#artifactDir);
31
- }
32
-
33
- async build(): Promise<BuildSsrBaseArtifactResult> {
34
- const akanConfig = await this.#app.getConfig();
35
- const { rscClientUrl, vendorMap } = await this.#buildRuntimeClientEntries();
36
- const pageKeys = await this.#app.getPageKeys();
37
- this.#app.verbose(`[base-artifact] discovered ${pageKeys.length} route files under ${this.#app.cwdPath}/page`);
38
-
39
- const pageEntries = await resolveSsrPageEntriesForApp(this.#app, pageKeys);
40
- const { cssCompiler, optimizedFonts, cssAssets } = await this.#buildStyleAssets();
41
- const pagesBundle = await new PagesBundleBuilder(this.#app, this.#command, pageEntries).build();
42
- this.#app.verbose(
43
- `[base-artifact] pages bundle -> ${pagesBundle.bundlePath} (buildId=${pagesBundle.buildId}, splitting=${pagesBundle.splitting}, entry=${pagesBundle.entryBytes} bytes, outputs=${pagesBundle.outputCount}, chunks=${pagesBundle.chunkCount}, total=${pagesBundle.outputBytes} bytes)`,
44
- );
45
-
46
- const seedIndex = computeRouteSeedIndex(pageEntries);
47
- const seedIndexPath = await saveRouteSeedIndex(this.#absArtifactDir, seedIndex, {
48
- production: this.#command === "build",
49
- });
50
- this.#app.verbose(
51
- `[base-artifact] route seed index -> ${seedIndexPath} entries=${seedIndex.entries.length} globalLayouts=${seedIndex.globalLayoutFiles.length}`,
52
- );
53
-
54
- const artifact: BaseBuildArtifact = {
55
- rscClientUrl,
56
- vendorMap,
57
- cssAssets,
58
- pagesBundlePath:
59
- this.#command === "build"
60
- ? path.relative(this.#absArtifactDir, pagesBundle.bundlePath)
61
- : pagesBundle.bundlePath,
62
- pagesBundleBuildId: pagesBundle.buildId,
63
- domains: [...akanConfig.domains],
64
- subRoutes: Object.fromEntries(
65
- Array.from(akanConfig.subRoutes.entries()).map(([basePath, domains]) => [basePath, [...domains]]),
66
- ),
67
- basePaths: [...akanConfig.basePaths],
68
- branches: [...akanConfig.branches],
69
- i18n: akanConfig.i18n,
70
- imageConfig: akanConfig.images,
71
- };
72
- await Bun.write(path.join(this.#absArtifactDir, "base-artifact.json"), `${JSON.stringify(artifact, null, 2)}\n`);
73
- this.#app.verbose(`[base-artifact] complete in ${Date.now() - this.#started}ms`);
74
-
75
- return { artifact, seedIndex, cssCompiler, optimizedFonts };
76
- }
77
-
78
- async #buildRuntimeClientEntries(): Promise<{ rscClientUrl: string; vendorMap: Record<VendorSpecifier, string> }> {
79
- const akanServerPath = await this.#resolveAkanServerPath();
80
- const rscClientEntry = `${akanServerPath}/rscClient.tsx`;
81
- const vendorEntries = VENDOR_SPECIFIERS.map((specifier) => ({
82
- specifier,
83
- absPath: `${akanServerPath}/vendor/${specifier.replaceAll("/", "-").replaceAll(".", "-")}.ts`,
84
- }));
85
- const entries = [rscClientEntry, ...vendorEntries.map((v) => v.absPath)];
86
- const clientBundle = await new ClientEntriesBundler({ app: this.#app, entries, command: this.#command }).bundle();
87
- const rscClientUrl = clientBundle.entryUrlsByAbsPath.get(rscClientEntry) ?? "";
88
- const vendorMap = Object.fromEntries(
89
- vendorEntries.map(({ specifier, absPath }) => [specifier, clientBundle.entryUrlsByAbsPath.get(absPath) ?? ""]),
90
- ) as Record<VendorSpecifier, string>;
91
- this.#app.verbose(`[base-artifact] rscClientUrl=${rscClientUrl} vendors=${Object.keys(vendorMap).length}`);
92
- return { rscClientUrl, vendorMap };
93
- }
94
- async #resolveAkanServerPath() {
95
- const candidates = [
96
- path.join(this.#app.workspace.workspaceRoot, "pkgs/akanjs/server"),
97
- path.resolve(import.meta.dir, "../../server"),
98
- path.resolve(import.meta.dir, "../server"),
99
- ];
100
- for (const candidate of candidates) {
101
- if (await Bun.file(path.join(candidate, "rscClient.tsx")).exists()) return candidate;
102
- }
103
- return candidates[0];
104
- }
105
-
106
- async #buildStyleAssets(): Promise<{
107
- cssCompiler: CssCompiler;
108
- optimizedFonts: Awaited<ReturnType<FontOptimizer["optimize"]>>;
109
- cssAssets: BaseBuildArtifact["cssAssets"];
110
- }> {
111
- const cssCompiler = new CssCompiler(this.#app);
112
- const cssByBasePath = await cssCompiler.getCssByBasePath();
113
- const optimizedFonts = await new FontOptimizer(this.#app, this.#command).optimize();
114
- const cssAssets = Object.fromEntries(
115
- await Promise.all(
116
- Object.entries(cssByBasePath).flatMap(([basePath, baseCssText]) => {
117
- const cssText = [baseCssText, optimizedFonts.css].filter(Boolean).join("\n");
118
- if (!cssText) return [];
119
- return [this.#writeCssAsset(basePath, cssText)];
120
- }),
121
- ),
122
- );
123
- if (optimizedFonts.files.length > 0)
124
- this.#app.verbose(`[base-artifact] optimized ${optimizedFonts.files.length} font files`);
125
- return { cssCompiler, optimizedFonts, cssAssets };
126
- }
127
-
128
- async #writeCssAsset(basePath: string, cssText: string) {
129
- const cssAssetName = basePath || "root";
130
- const cssHash = Bun.hash(`${basePath}\n${cssText}`).toString(36);
131
- const [cssRelPath, cssUrl] = [
132
- `styles/${cssAssetName}-${cssHash}.css`,
133
- `/_akan/styles/${cssAssetName}-${cssHash}.css`,
134
- ];
135
- await Bun.write(path.join(this.#absArtifactDir, cssRelPath), cssText);
136
- this.#app.verbose(`[base-artifact] wrote ${cssText.length} bytes of CSS for ${basePath} -> ${cssRelPath}`);
137
- return [basePath, { cssUrl, cssRelPath }] as const;
138
- }
139
- }
@@ -1,16 +0,0 @@
1
- export const VENDOR_SPECIFIERS = [
2
- "react",
3
- "react-dom",
4
- "react-dom/client",
5
- "react/jsx-runtime",
6
- "react/jsx-dev-runtime",
7
- "react-refresh/runtime",
8
- "scheduler",
9
- "react-server-dom-webpack/client.browser",
10
- "akanjs/store",
11
- "akanjs/base",
12
- "akanjs/common",
13
- "akanjs/constant",
14
- ] as const;
15
-
16
- export type VendorSpecifier = (typeof VENDOR_SPECIFIERS)[number];
@@ -1,28 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import type { App } from "../commandDecorators";
4
-
5
- export class WatchRootResolver {
6
- #app: App;
7
-
8
- constructor(app: App) {
9
- this.#app = app;
10
- }
11
-
12
- async resolve(): Promise<string[]> {
13
- const tsconfig = await this.#app.getTsConfig();
14
- const set = new Set<string>();
15
- set.add(path.resolve(`${this.#app.cwdPath}/page`));
16
- for (const targets of Object.values(tsconfig.compilerOptions.paths ?? {})) {
17
- for (const target of targets) {
18
- if (!target) continue;
19
- if (path.isAbsolute(target)) continue;
20
-
21
- const cleaned = target.replace(/\/?\*+.*$/, "").replace(/\/[^/]+\.[^/]+$/, "");
22
- const resolved = path.resolve(this.#app.workspace.workspaceRoot, cleaned);
23
- if (fs.existsSync(resolved)) set.add(resolved);
24
- }
25
- }
26
- return [...set];
27
- }
28
- }
@@ -1,19 +0,0 @@
1
- import yaml from "js-yaml";
2
-
3
- import type { AppExecutor } from "./executors";
4
- import { FileSys } from "./fileSys";
5
-
6
- export interface AppSecret {
7
- postgres?: { account?: { user?: { username: string; password: string } } };
8
- }
9
- interface Secret {
10
- [key: string]: AppSecret;
11
- }
12
-
13
- export const getCredentials = async (app: AppExecutor, environment: string): Promise<AppSecret> => {
14
- const content = await FileSys.readText(`${app.workspace.workspaceRoot}/infra/app/values/${app.name}-secret.yaml`);
15
- const secret = yaml.load(content) as Secret;
16
- const appSecret = secret[environment];
17
- if (!appSecret) throw new Error(`No secret found for ${app.name} in ${environment}`);
18
- return appSecret;
19
- };
@@ -1,3 +0,0 @@
1
- import path from "node:path";
2
-
3
- export const getDirname = (url: string) => path.dirname(new URL(url).pathname);
@@ -1,59 +0,0 @@
1
- interface ModelFileData {
2
- moduleType: "lib" | "app";
3
- moduleName: string;
4
- modelName: string;
5
- constantFilePath: string;
6
- importModelNames: string[];
7
- hasImportScalar: boolean;
8
- importLibNames: string[];
9
- constantFileStr: string;
10
- unitFilePath: string;
11
- unitFileStr: string;
12
- viewFilePath: string;
13
- viewFileStr: string;
14
- }
15
-
16
- export const getModelFileData = async (modulePath: string, modelName: string): Promise<ModelFileData> => {
17
- const moduleType = modulePath.startsWith("apps") ? "app" : "lib";
18
- const moduleName = modulePath.split("/")[1] ?? "";
19
- const constantFilePath = `${modulePath}/lib/${modelName}/${modelName}.constant.ts`;
20
- const unitFilePath = `${modulePath}/lib/${modelName}/${modelName}.Unit.tsx`;
21
- const viewFilePath = `${modulePath}/lib/${modelName}/${modelName}.View.tsx`;
22
- const [constantFileStr, unitFileStr, viewFileStr] = await Promise.all([
23
- Bun.file(constantFilePath).text(),
24
- Bun.file(unitFilePath).text(),
25
- Bun.file(viewFilePath).text(),
26
- ]);
27
-
28
- const constantFileLines = constantFileStr.split("\n");
29
- const importLibNames = constantFileLines
30
- .filter((line) => line.startsWith("import { cnst as "))
31
- .map((line) => line.split("cnst as ")[1]?.split(" ")[0] ?? "");
32
-
33
- const importLocalPaths = constantFileLines
34
- .filter((line) => line.startsWith("import { ") && line.includes('from "../'))
35
- .map((line) => line.split("from ")[1]?.split('"')[1] ?? "");
36
-
37
- const importModelNames = importLocalPaths
38
- .map((path) => path.split("/")[1] ?? "")
39
- .filter((name) => !name.startsWith("_"));
40
-
41
- const hasImportScalar = !!importLocalPaths
42
- .map((path) => path.split("/")[1] ?? "")
43
- .filter((name) => name.startsWith("_")).length;
44
-
45
- return {
46
- moduleType,
47
- moduleName,
48
- modelName,
49
- constantFilePath,
50
- unitFilePath,
51
- viewFilePath,
52
- importModelNames,
53
- hasImportScalar,
54
- importLibNames,
55
- constantFileStr,
56
- unitFileStr,
57
- viewFileStr,
58
- };
59
- };
@@ -1,300 +0,0 @@
1
- import { readFileSync, realpathSync } from "node:fs";
2
- import ora from "ora";
3
- import * as ts from "typescript";
4
-
5
- const tsTranspiler = new Bun.Transpiler({ loader: "ts" });
6
- const tsxTranspiler = new Bun.Transpiler({ loader: "tsx" });
7
-
8
- const getTranspiler = (filePath: string) => (filePath.endsWith(".tsx") ? tsxTranspiler : tsTranspiler);
9
-
10
- const scanModuleSpecifiers = (source: string, filePath: string, includeExports: boolean) => {
11
- const scannedImports = getTranspiler(filePath)
12
- .scanImports(source)
13
- .map((imp) => imp.path)
14
- .filter(Boolean);
15
-
16
- if (includeExports) {
17
- const specifiers = new Set(scannedImports);
18
- const typeOnlyModuleRegex = /\b(?:import|export)\s+type\s+[\s\S]*?\s+from\s*["']([^"']+)["']/g;
19
- for (const match of source.matchAll(typeOnlyModuleRegex)) {
20
- const importPath = match[1];
21
- if (importPath) specifiers.add(importPath);
22
- }
23
- const exportFromRegex = /\bexport\s+(?:type\s+)?(?:\*|{[\s\S]*?})\s+from\s*["']([^"']+)["']/g;
24
- for (const match of source.matchAll(exportFromRegex)) {
25
- const importPath = match[1];
26
- if (importPath) specifiers.add(importPath);
27
- }
28
- return specifiers;
29
- }
30
-
31
- const importSpecifiers = new Set<string>();
32
- const importDeclarationRegex = /\bimport\s+(?:type\s+)?(?:["']([^"']+)["']|[\s\S]*?\s+from\s*["']([^"']+)["'])/g;
33
- for (const match of source.matchAll(importDeclarationRegex)) {
34
- const importPath = match[1] ?? match[2];
35
- if (importPath && (scannedImports.includes(importPath) || match[0].startsWith("import type"))) {
36
- importSpecifiers.add(importPath);
37
- }
38
- }
39
-
40
- return importSpecifiers;
41
- };
42
-
43
- /**
44
- * TypeScript 설정 파일을 읽고 파싱하는 함수
45
- */
46
- export const parseTsConfig = (tsConfigPath: string = "./tsconfig.json") => {
47
- const configFile = ts.readConfigFile(tsConfigPath, (path) => {
48
- return ts.sys.readFile(path);
49
- });
50
-
51
- return ts.parseJsonConfigFileContent(configFile.config, ts.sys, realpathSync(tsConfigPath).replace(/[^/\\]+$/, ""));
52
- };
53
-
54
- /**
55
- * 파일 내의 임포트를 기반으로 관련 파일을 수집하는 함수
56
- */
57
- export const collectImportedFiles = (constantFilePath: string, parsedConfig: ts.ParsedCommandLine) => {
58
- const allFilesToAnalyze = new Set<string>([constantFilePath]);
59
- const analyzedFiles = new Set<string>();
60
- const spinner = ora("Collecting related files...");
61
- spinner.start();
62
-
63
- function collectImported(filePath: string) {
64
- if (analyzedFiles.has(filePath)) return;
65
- analyzedFiles.add(filePath);
66
-
67
- const source = readFileSync(filePath, "utf-8");
68
- for (const importPath of scanModuleSpecifiers(source, filePath, false)) {
69
- if (!importPath.startsWith(".")) continue;
70
-
71
- const resolved = ts.resolveModuleName(importPath, filePath, parsedConfig.options, ts.sys).resolvedModule
72
- ?.resolvedFileName;
73
-
74
- if (resolved && !allFilesToAnalyze.has(resolved)) {
75
- allFilesToAnalyze.add(resolved);
76
-
77
- collectImported(resolved);
78
- }
79
- }
80
- }
81
-
82
- collectImported(constantFilePath);
83
- spinner.succeed(`Found ${allFilesToAnalyze.size} related files.`);
84
-
85
- return {
86
- allFilesToAnalyze,
87
- analyzedFiles,
88
- };
89
- };
90
-
91
- /**
92
- * export 선언을 기반으로 관련 파일을 수집하는 함수
93
- */
94
- export const collectExportedFiles = (constantFilePath: string, parsedConfig: ts.ParsedCommandLine) => {
95
- const allFilesToAnalyze = new Set<string>([constantFilePath]);
96
- const analyzedFiles = new Set<string>();
97
- const spinner = ora("Collecting files from exports...");
98
- spinner.start();
99
-
100
- function collectExported(filePath: string) {
101
- if (analyzedFiles.has(filePath)) return;
102
- analyzedFiles.add(filePath);
103
-
104
- const source = readFileSync(filePath, "utf-8");
105
- for (const importPath of scanModuleSpecifiers(source, filePath, true)) {
106
- if (!importPath.startsWith(".")) continue;
107
-
108
- const resolved = ts.resolveModuleName(importPath, filePath, parsedConfig.options, ts.sys).resolvedModule
109
- ?.resolvedFileName;
110
-
111
- if (resolved && !allFilesToAnalyze.has(resolved)) {
112
- allFilesToAnalyze.add(resolved);
113
-
114
- collectExported(resolved);
115
- }
116
- }
117
- }
118
-
119
- collectExported(constantFilePath);
120
- spinner.succeed(`Found ${allFilesToAnalyze.size} related files from exports.`);
121
-
122
- return {
123
- allFilesToAnalyze,
124
- analyzedFiles,
125
- };
126
- };
127
-
128
- /**
129
- * TypeScript 프로그램 생성 함수
130
- */
131
- export const createTsProgram = (filePaths: Set<string>, options: ts.CompilerOptions) => {
132
- const spinner = ora("Creating TypeScript program for all files...");
133
- spinner.start();
134
-
135
- const program = ts.createProgram(Array.from(filePaths), options);
136
- const checker = program.getTypeChecker();
137
-
138
- spinner.succeed("TypeScript program created.");
139
-
140
- return {
141
- program,
142
- checker,
143
- };
144
- };
145
-
146
- /**
147
- * 심볼 캐싱 및 조회 함수 생성기
148
- */
149
- export const createSymbolCache = (checker: ts.TypeChecker) => {
150
- const symbolCache = new Map<string, ts.Symbol | undefined>();
151
-
152
- return (node: ts.Node): ts.Symbol | undefined => {
153
- const cacheKey = `${node.getSourceFile().fileName}:${node.pos}:${node.end}`;
154
-
155
- if (!symbolCache.has(cacheKey)) {
156
- symbolCache.set(cacheKey, checker.getSymbolAtLocation(node));
157
- }
158
-
159
- return symbolCache.get(cacheKey);
160
- };
161
- };
162
-
163
- /**
164
- * 파일 속성 분석 함수
165
- */
166
- export const analyzeProperties = (filesToAnalyze: Set<string>, program: ts.Program, checker: ts.TypeChecker) => {
167
- const propertyMap = new Map<
168
- string,
169
- {
170
- filePath: string;
171
- isLibModule: boolean;
172
- isImport: boolean;
173
- isScalar: boolean;
174
- source: string;
175
- libName?: string;
176
- }
177
- >();
178
-
179
- const analyzedFiles = new Set<string>();
180
- const sourceLineCache = new Map<string, string[]>();
181
- const getCachedSymbol = createSymbolCache(checker);
182
-
183
- const spinner = ora("Analyzing property relationships...");
184
- spinner.start();
185
-
186
- function analyzeFileProperties(filePath: string) {
187
- if (analyzedFiles.has(filePath)) return;
188
- analyzedFiles.add(filePath);
189
-
190
- const source = program.getSourceFile(filePath);
191
- if (!source) return;
192
-
193
- if (!sourceLineCache.has(filePath)) {
194
- sourceLineCache.set(filePath, source.getFullText().split("\n"));
195
- }
196
- const sourceLines = sourceLineCache.get(filePath);
197
-
198
- function visit(node: ts.Node) {
199
- if (!source) return;
200
-
201
- if (ts.isPropertyAccessExpression(node)) {
202
- const left = node.expression;
203
- const right = node.name;
204
- const { line } = ts.getLineAndCharacterOfPosition(source, node.getStart());
205
-
206
- if (
207
- ts.isIdentifier(left) &&
208
- sourceLines &&
209
- sourceLines.length > line &&
210
- sourceLines[line] &&
211
- (sourceLines[line]?.includes(`@Field.Prop(() => ${left.text}.${right.text}`) ||
212
- sourceLines[line].includes(`base.Filter(${left.text}.${right.text},`))
213
- ) {
214
-
215
- const symbol = getCachedSymbol(right);
216
-
217
- if (symbol?.declarations && symbol.declarations.length > 0) {
218
- const key = symbol.declarations[0]?.getSourceFile().fileName.split("/").pop()?.split(".")[0] ?? "";
219
- const property = propertyMap.get(key);
220
- const isScalar = symbol.declarations[0]?.getSourceFile().fileName.includes("_") ?? false;
221
-
222
- const symbolFilePath = symbol.declarations[0]
223
- ?.getSourceFile()
224
- .fileName.replace(`${ts.sys.getCurrentDirectory()}/`, "");
225
- if (!symbolFilePath) throw new Error(`No symbol file path found for ${left.text}.${right.text}`);
226
-
227
- if (property) {
228
- propertyMap.set(`${left.text}.${right.text}`, {
229
- filePath: symbolFilePath,
230
- isLibModule: true,
231
- isImport: false,
232
- libName: left.text,
233
- source: readFileSync(symbolFilePath, "utf-8"),
234
- isScalar,
235
- });
236
- } else {
237
- propertyMap.set(key, {
238
- filePath: symbolFilePath,
239
- isLibModule: true,
240
- isImport: false,
241
- libName: left.text,
242
- isScalar,
243
- source: readFileSync(symbolFilePath, "utf-8"),
244
- });
245
- }
246
- }
247
- }
248
- } else if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
249
-
250
- const importPath = node.moduleSpecifier.text;
251
-
252
- if (importPath.startsWith(".")) {
253
- const resolved = ts.resolveModuleName(importPath, filePath, program.getCompilerOptions(), ts.sys)
254
- .resolvedModule?.resolvedFileName;
255
- const moduleName = importPath.split("/").pop()?.split(".")[0] ?? "";
256
- const property = propertyMap.get(moduleName);
257
- const isScalar = importPath.includes("_");
258
-
259
- if (moduleName && resolved && (!property || property.filePath !== resolved)) {
260
- propertyMap.set(moduleName, {
261
- filePath: resolved,
262
- isLibModule: false,
263
- isImport: true,
264
- isScalar,
265
- source: readFileSync(resolved, "utf-8"),
266
- });
267
- }
268
- }
269
- }
270
-
271
- ts.forEachChild(node, visit);
272
- }
273
-
274
- visit(source);
275
- }
276
-
277
- for (const filePath of filesToAnalyze) {
278
- analyzeFileProperties(filePath);
279
- }
280
-
281
- spinner.succeed(`Analysis complete. Found ${propertyMap.size} properties.`);
282
-
283
- return propertyMap;
284
- };
285
-
286
- /**
287
- * 메인 함수: 상수 파일 관련 요소 분석
288
- */
289
- export const getRelatedCnsts = (constantFilePath: string) => {
290
-
291
- const parsedConfig = parseTsConfig();
292
-
293
- const { allFilesToAnalyze } = collectImportedFiles(constantFilePath, parsedConfig);
294
-
295
- const { program, checker } = createTsProgram(allFilesToAnalyze, parsedConfig.options);
296
-
297
- const propertyMap = analyzeProperties(allFilesToAnalyze, program, checker);
298
-
299
- return Array.from(propertyMap.entries()).map(([key, value]) => ({ key, ...value }));
300
- };
@@ -1,19 +0,0 @@
1
- export interface GuideScan {
2
- type: "example" | "source" | "usage" | (string & {});
3
- description: string;
4
- path: string;
5
- filterText?: string;
6
- sample?: number;
7
- }
8
- export interface GuideUpdate {
9
- filePath: string;
10
- contents: string[];
11
- rules: string[];
12
- }
13
- export interface GuideGenerateJson {
14
- title: string;
15
- description: string;
16
- scans: GuideScan[];
17
- update: GuideUpdate;
18
- page?: string;
19
- }