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,300 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import type { SsrManifest, SsrManifestEntry } from "akanjs/server";
4
- import type { BunPlugin } from "bun";
5
- import { toClientReferencePath } from "../transforms/rscUseClientTransform";
6
- import {
7
- type BundleClientEntriesInternalOptions,
8
- type BundleClientEntriesResult,
9
- CLIENT_BUNDLE_NAMING,
10
- type ClientManifest,
11
- type MetafileOutput,
12
- type OpaqueEntryAliases,
13
- } from "./clientBuildTypes";
14
-
15
- /**
16
- * Low-level primitive shared by the eager base build and the lazy per-route
17
- * builds. Takes a flat entrypoints list, runs `Bun.build`, and extracts a
18
- * `ClientManifest` / `SsrManifest` covering only those entries.
19
- */
20
- export class ClientEntriesBundler {
21
- #app: BundleClientEntriesInternalOptions["app"];
22
- #entries: string[];
23
- #plugins: BunPlugin[];
24
- #external: readonly string[];
25
- #externalSubpaths: readonly string[];
26
- #externalAliases: Partial<Record<string, string>>;
27
- #command: "build" | "start";
28
- #outputSubdir: string;
29
- #reactFastRefresh: boolean;
30
- #artifactDir: string;
31
- #outdir: string;
32
- #servePrefix: string;
33
- #manifest: ClientManifest = {};
34
- #ssrManifest: SsrManifest = { moduleLoading: null, moduleMap: {} };
35
- #entryUrlsByAbsPath = new Map<string, string>();
36
- #entryOutputAbsByAbsPath = new Map<string, string>();
37
- #entryDepsByAbsPath = new Map<string, string[]>();
38
- #clientReferenceIdByAbsPath = new Map<string, string>();
39
- #opaqueEntries: OpaqueEntryAliases | null = null;
40
- #metafileOutputsByAbs = new Map<string, MetafileOutput>();
41
-
42
- constructor(options: BundleClientEntriesInternalOptions) {
43
- this.#app = options.app;
44
- this.#entries = options.entries;
45
- this.#plugins = options.plugins ?? [];
46
- this.#external = options.external ?? [];
47
- this.#externalSubpaths = options.externalSubpaths ?? [];
48
- this.#externalAliases = options.externalAliases ?? {};
49
- this.#command = options.command ?? "start";
50
- this.#outputSubdir = options.outputSubdir ?? "client";
51
- this.#reactFastRefresh = options.reactFastRefresh ?? false;
52
- this.#artifactDir = `${this.#command === "build" ? this.#app.dist.cwdPath : this.#app.cwdPath}/.akan/artifact`;
53
- this.#outdir = `${this.#artifactDir}/${this.#outputSubdir}`;
54
- this.#servePrefix = `/_akan/${this.#outputSubdir}`;
55
- }
56
-
57
- async bundle(): Promise<BundleClientEntriesResult> {
58
- const akanConfig = await this.#app.getConfig();
59
- this.#opaqueEntries = await this.#createOpaqueEntryAliases();
60
- const result = await Bun.build({
61
- entrypoints: this.#opaqueEntries.entries,
62
- outdir: this.#outdir,
63
- splitting: true,
64
- target: "browser",
65
- format: "esm",
66
- naming: CLIENT_BUNDLE_NAMING,
67
- metafile: true,
68
- define: this.#getDefine(),
69
- minify: this.#command === "build",
70
- optimizeImports: akanConfig.optimizeImports,
71
- reactFastRefresh: this.#command === "start" && this.#outputSubdir === "client" && this.#reactFastRefresh,
72
- plugins:
73
- this.#external.length > 0 || this.#externalSubpaths.length > 0 || Object.keys(this.#externalAliases).length > 0
74
- ? [...this.#plugins, this.#createExternalSpecifiersPlugin()]
75
- : this.#plugins,
76
- });
77
- if (!result.success) throw new AggregateError(result.logs, "[ClientEntriesBundler] Bun.build failed");
78
- await this.#rewriteExternalImportSpecifiers(result.outputs);
79
-
80
- const metafile = result.metafile;
81
- if (!metafile) throw new Error("[ClientEntriesBundler] metafile is missing");
82
-
83
- this.#metafileOutputsByAbs = new Map<string, MetafileOutput>(
84
- Object.entries(metafile.outputs).map(([k, v]) => [this.#absFromOutdir(k), v as MetafileOutput]),
85
- );
86
-
87
- for (const artifact of result.outputs.filter((a) => a.kind === "entry-point"))
88
- this.#addEntryArtifact(artifact.path);
89
-
90
- return {
91
- manifest: this.#manifest,
92
- ssrManifest: this.#ssrManifest,
93
- entryUrlsByAbsPath: this.#entryUrlsByAbsPath,
94
- entryOutputAbsByAbsPath: this.#entryOutputAbsByAbsPath,
95
- entryDepsByAbsPath: this.#entryDepsByAbsPath,
96
- clientReferenceIdByAbsPath: this.#clientReferenceIdByAbsPath,
97
- };
98
- }
99
-
100
- #getDefine(): Record<string, string> {
101
- const nodeEnv = this.#command === "build" ? "production" : (process.env.NODE_ENV ?? "development");
102
- return {
103
- "process.env.NODE_ENV": JSON.stringify(nodeEnv),
104
- "process.env.AKAN_PUBLIC_RENDER_ENV": JSON.stringify("ssr"),
105
- ...Object.fromEntries(
106
- Object.entries(this.#app.getPublicEnv()).map(([key, value]) => [`process.env.${key}`, JSON.stringify(value)]),
107
- ),
108
- };
109
- }
110
-
111
- async #createOpaqueEntryAliases(): Promise<OpaqueEntryAliases> {
112
- const aliasDir = path.join(this.#app.cwdPath, ".akan", "generated", "client-entry-alias", this.#outputSubdir);
113
- fs.mkdirSync(aliasDir, { recursive: true });
114
- const originalByAlias = new Map<string, string>();
115
- const aliasedEntries = await Promise.all(
116
- this.#entries.map(async (entry) => {
117
- const absEntry = path.resolve(entry);
118
- const hash = Bun.hash(`${this.#app.name}\n${this.#outputSubdir}\n${absEntry}`).toString(36);
119
- const aliasPath = path.join(aliasDir, `${hash}.tsx`);
120
- await Bun.write(
121
- aliasPath,
122
- this.#createOpaqueEntryAliasSource(absEntry, await this.#scanEntryExportNames(absEntry)),
123
- );
124
- originalByAlias.set(path.resolve(aliasPath), absEntry);
125
- return aliasPath;
126
- }),
127
- );
128
- return { entries: aliasedEntries, originalByAlias, aliasDir };
129
- }
130
-
131
- #createOpaqueEntryAliasSource(absEntry: string, exportNames: string[]): string {
132
- const entryLit = JSON.stringify(path.resolve(absEntry));
133
- if (exportNames.length === 0) return `export * from ${entryLit};\n`;
134
- const namedExports = exportNames.filter((name) => name !== "default");
135
- const lines = namedExports.length > 0 ? [`export { ${namedExports.join(", ")} } from ${entryLit};`] : [];
136
- if (exportNames.includes("default")) lines.push(`export { default } from ${entryLit};`);
137
- return `${lines.join("\n")}\n`;
138
- }
139
-
140
- async #scanEntryExportNames(absEntry: string): Promise<string[]> {
141
- const source = await Bun.file(absEntry).text();
142
- const transpiler = new Bun.Transpiler({ loader: this.#loaderForEntry(absEntry) });
143
- return transpiler.scan(source).exports;
144
- }
145
-
146
- #loaderForEntry(absPath: string): "ts" | "tsx" | "js" | "jsx" {
147
- if (absPath.endsWith(".tsx")) return "tsx";
148
- if (absPath.endsWith(".jsx")) return "jsx";
149
- if (absPath.endsWith(".ts")) return "ts";
150
- return "js";
151
- }
152
-
153
- /**
154
- * Build a BunPlugin that marks a fixed set of bare specifiers as external via `onResolve`,
155
- * as opposed to `Bun.build({ external })`, so macro-time imports still resolve normally.
156
- */
157
- #createExternalSpecifiersPlugin(): BunPlugin {
158
- const set = new Set(this.#external);
159
- const subpathSet = new Set(this.#externalSubpaths);
160
- const aliases = this.#externalAliases;
161
- const specifiers = [...new Set([...this.#external, ...this.#externalSubpaths, ...Object.keys(aliases)])];
162
- const escaped = specifiers.map((s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
163
- const filter = new RegExp(`^(${escaped.join("|")})(?:/.*)?$`);
164
- return {
165
- name: "akan-externalize-specifiers",
166
- setup(build) {
167
- build.onResolve({ filter }, (args) => {
168
- const alias = aliases[args.path];
169
- if (alias) return { path: alias, external: true };
170
- if (!ClientEntriesBundler.#matchesExternalSpecifier(args.path, set, subpathSet)) return undefined;
171
- return { path: args.path, external: true };
172
- });
173
- },
174
- };
175
- }
176
-
177
- static #matchesExternalSpecifier(
178
- specifier: string,
179
- exactExternals: Set<string>,
180
- subpathExternals: Set<string>,
181
- ): boolean {
182
- if (exactExternals.has(specifier)) return true;
183
- if (subpathExternals.has(specifier)) return true;
184
- for (const external of subpathExternals) {
185
- if (specifier.startsWith(`${external}/`)) return true;
186
- }
187
- return false;
188
- }
189
-
190
- async #rewriteExternalImportSpecifiers(outputs: Bun.BuildOutput["outputs"]): Promise<void> {
191
- if (Object.keys(this.#externalAliases).length === 0) return;
192
- await Promise.all(
193
- outputs
194
- .filter((output) => output.path.endsWith(".js"))
195
- .map(async (output) => {
196
- const source = await Bun.file(output.path).text();
197
- const rewritten = ClientEntriesBundler.rewriteExternalImportSpecifiers(source, this.#externalAliases);
198
- if (rewritten !== source) await Bun.write(output.path, rewritten);
199
- }),
200
- );
201
- }
202
-
203
- static rewriteExternalImportSpecifiers(source: string, aliases: Partial<Record<string, string>>): string {
204
- let rewritten = source;
205
- for (const [specifier, alias] of Object.entries(aliases)) {
206
- if (!alias) continue;
207
- const escaped = specifier.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
208
- rewritten = rewritten
209
- .replace(new RegExp(`(\\bfrom\\s*["'])${escaped}(["'])`, "g"), (_match, prefix, suffix) => {
210
- return `${prefix}${alias}${suffix}`;
211
- })
212
- .replace(new RegExp(`(\\bimport\\s*["'])${escaped}(["'])`, "g"), (_match, prefix, suffix) => {
213
- return `${prefix}${alias}${suffix}`;
214
- });
215
- }
216
- return rewritten;
217
- }
218
-
219
- #toServeUrl(absOutPath: string): string {
220
- const rel = path.relative(this.#outdir, absOutPath).split(path.sep).join("/");
221
- return `${this.#servePrefix}/${rel}`;
222
- }
223
-
224
- #absFromOutdir(p: string): string {
225
- return path.isAbsolute(p) ? p : path.resolve(this.#outdir, p);
226
- }
227
-
228
- #absFromEntryPoint(p: string): string {
229
- if (path.isAbsolute(p)) return path.resolve(p);
230
- const candidates = [path.resolve(process.cwd(), p), path.resolve(this.#app.cwdPath, p)];
231
- return candidates.find((candidate) => fs.existsSync(candidate)) ?? candidates[0];
232
- }
233
-
234
- #collectChunkUrls(absOutPath: string, visited = new Set<string>()): string[] {
235
- if (visited.has(absOutPath)) return [];
236
- visited.add(absOutPath);
237
- const info = this.#metafileOutputsByAbs.get(absOutPath);
238
- if (!info) return [this.#toServeUrl(absOutPath)];
239
- const urls: string[] = [this.#toServeUrl(absOutPath)];
240
- for (const imp of info.imports) {
241
- if (imp.kind === "dynamic-import") continue;
242
- const absImp = this.#absFromOutdir(imp.path);
243
- if (!absImp.endsWith(".js")) continue;
244
- urls.push(...this.#collectChunkUrls(absImp, visited));
245
- }
246
- return urls;
247
- }
248
-
249
- #collectClientDeps(absOutPath: string, visited = new Set<string>()): Set<string> {
250
- if (visited.has(absOutPath)) return new Set();
251
- visited.add(absOutPath);
252
- const deps = new Set<string>();
253
- const info = this.#metafileOutputsByAbs.get(absOutPath);
254
- if (!info) return deps;
255
- if (!this.#opaqueEntries) throw new Error("[ClientEntriesBundler] opaque entries are missing");
256
-
257
- for (const input of Object.keys(info.inputs ?? {})) {
258
- const absInput = this.#absFromEntryPoint(input);
259
- if (!absInput.includes("node_modules") && !absInput.startsWith(this.#opaqueEntries.aliasDir)) deps.add(absInput);
260
- }
261
-
262
- for (const imp of info.imports) {
263
- if (imp.kind === "dynamic-import") continue;
264
- const absImp = this.#absFromOutdir(imp.path);
265
- if (!absImp.endsWith(".js")) continue;
266
- for (const dep of this.#collectClientDeps(absImp, visited)) deps.add(dep);
267
- }
268
- return deps;
269
- }
270
-
271
- #addEntryArtifact(absOut: string): void {
272
- if (!this.#opaqueEntries) throw new Error("[ClientEntriesBundler] opaque entries are missing");
273
- const info = this.#metafileOutputsByAbs.get(absOut);
274
- const buildEntryPointAbs = info?.entryPoint ? this.#absFromEntryPoint(info.entryPoint) : null;
275
- const entryPointAbs = buildEntryPointAbs
276
- ? (this.#opaqueEntries.originalByAlias.get(buildEntryPointAbs) ?? buildEntryPointAbs)
277
- : null;
278
- if (!entryPointAbs) return;
279
-
280
- const chunkUrls = this.#collectChunkUrls(absOut);
281
- const entryUrl = chunkUrls[0] ?? this.#toServeUrl(absOut);
282
- this.#entryUrlsByAbsPath.set(entryPointAbs, entryUrl);
283
- this.#entryOutputAbsByAbsPath.set(entryPointAbs, absOut);
284
- this.#entryDepsByAbsPath.set(entryPointAbs, [...this.#collectClientDeps(absOut)].sort());
285
- const clientReferenceId = toClientReferencePath(entryPointAbs, this.#app.workspace.workspaceRoot);
286
- this.#clientReferenceIdByAbsPath.set(entryPointAbs, clientReferenceId);
287
-
288
- const flatChunks: string[] = [];
289
- for (const url of chunkUrls) flatChunks.push(url, url);
290
-
291
- const exportNames = info?.exports && info.exports.length > 0 ? info.exports : ["default"];
292
- const ssrEntriesByName: Record<string, SsrManifestEntry> = {};
293
- for (const name of exportNames) {
294
- const key = `${clientReferenceId}#${name}`;
295
- this.#manifest[key] = { id: entryUrl, chunks: flatChunks, name, async: true };
296
- ssrEntriesByName[name] = { id: absOut, chunks: [absOut, absOut], name, async: true };
297
- }
298
- this.#ssrManifest.moduleMap[entryUrl] = ssrEntriesByName;
299
- }
300
- }
@@ -1,196 +0,0 @@
1
- import path from "node:path";
2
- import type { App } from "../commandDecorators";
3
- import { BarrelAnalyzer } from "../transforms/barrelAnalyzer";
4
- import { createTsconfigPackageResolver, rewriteBarrelImports } from "../transforms/barrelImportsPlugin";
5
- import type { AkanConfig, ClientEntryDiscovery, ScannedImport } from "./clientBuildTypes";
6
-
7
- const USE_CLIENT_RE = /^\s*(?:\/\*[\s\S]*?\*\/\s*|\/\/[^\n]*\n\s*)*["']use client["']/;
8
- const SOURCE_EXTS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
9
- const NODE_MODULES_RE = /[\\/]node_modules[\\/]/;
10
- const AKANJS_NODE_MODULE_RE = /[\\/]node_modules[\\/]akanjs[\\/]/;
11
-
12
- const NON_SOURCE_EXT_RE = /\.(css|scss|sass|less|json|svg|png|jpe?g|webp|gif|avif|ico|woff2?|ttf|otf|mp3|mp4|wav)$/i;
13
- type PackageResolver = Awaited<ReturnType<typeof createTsconfigPackageResolver>>;
14
-
15
- const shouldSkipNodeModule = (absPath: string) => NODE_MODULES_RE.test(absPath) && !AKANJS_NODE_MODULE_RE.test(absPath);
16
-
17
- /**
18
- * Graph-based `"use client"` discovery, seeded from an explicit file list.
19
- *
20
- * Walks imports — including dynamic `import()` — while flattening barrel
21
- * specifiers through the same `BarrelAnalyzer` the runtime plugin uses, so
22
- * the traversal matches the module graph the bundler will actually see.
23
- */
24
- export class GraphClientEntryDiscovery implements ClientEntryDiscovery {
25
- #akanConfig: AkanConfig;
26
- #resolvePackage: PackageResolver;
27
- #analyzer: BarrelAnalyzer;
28
- #tsTranspiler = new Bun.Transpiler({ loader: "tsx" });
29
- #fileExistsCache = new Map<string, Promise<boolean>>();
30
- #readCache = new Map<string, Promise<string | null>>();
31
- #rewriteCache = new Map<string, Promise<string>>();
32
- #importCache = new Map<string, Promise<ScannedImport[]>>();
33
- #resolvedFileCache = new Map<string, Promise<string | null>>();
34
- #resolvedSpecifierCache = new Map<string, Promise<string | null>>();
35
- #reachableEntriesCache = new Map<string, Set<string>>();
36
-
37
- constructor(akanConfig: AkanConfig, resolvePackage: PackageResolver) {
38
- this.#akanConfig = akanConfig;
39
- this.#resolvePackage = resolvePackage;
40
- this.#analyzer = new BarrelAnalyzer({ resolvePackage });
41
- }
42
-
43
- static async create(app: App): Promise<GraphClientEntryDiscovery> {
44
- return new GraphClientEntryDiscovery(await app.getConfig(), await createTsconfigPackageResolver(app));
45
- }
46
-
47
- async discover(seeds: string[]): Promise<string[]> {
48
- const entries = new Set<string>();
49
- for (const seed of seeds) {
50
- for (const entry of await this.#discoverFromFile(seed, new Set())) entries.add(entry);
51
- }
52
- return Array.from(entries).sort();
53
- }
54
-
55
- invalidate(files: string[]): void {
56
- for (const file of files) {
57
- const absPath = path.resolve(file);
58
- this.#readCache.delete(absPath);
59
- this.#rewriteCache.delete(absPath);
60
- this.#importCache.delete(absPath);
61
- this.#reachableEntriesCache.delete(absPath);
62
- }
63
-
64
- if (files.length > 0) this.#reachableEntriesCache.clear();
65
- }
66
-
67
- async #fileExists(p: string): Promise<boolean> {
68
- const absPath = path.resolve(p);
69
- let cached = this.#fileExistsCache.get(absPath);
70
- if (!cached) {
71
- cached = Bun.file(absPath).exists();
72
- this.#fileExistsCache.set(absPath, cached);
73
- }
74
- return cached;
75
- }
76
-
77
- #readFile(file: string): Promise<string | null> {
78
- const absPath = path.resolve(file);
79
- let cached = this.#readCache.get(absPath);
80
- if (!cached) {
81
- cached = Bun.file(absPath)
82
- .text()
83
- .catch(() => null);
84
- this.#readCache.set(absPath, cached);
85
- }
86
- return cached;
87
- }
88
-
89
- async #resolveFileCandidate(absPathNoExt: string): Promise<string | null> {
90
- const cacheKey = path.resolve(absPathNoExt);
91
- let cached = this.#resolvedFileCache.get(cacheKey);
92
- if (cached) return cached;
93
- cached = (async () => {
94
- if (await this.#fileExists(cacheKey)) return cacheKey;
95
- for (const ext of SOURCE_EXTS) {
96
- const f = `${cacheKey}${ext}`;
97
- if (await this.#fileExists(f)) return f;
98
- }
99
- for (const ext of SOURCE_EXTS) {
100
- const f = path.join(cacheKey, `index${ext}`);
101
- if (await this.#fileExists(f)) return f;
102
- }
103
- return null;
104
- })();
105
- this.#resolvedFileCache.set(cacheKey, cached);
106
- return cached;
107
- }
108
-
109
- async #resolveSpecifier(spec: string, importerDir: string): Promise<string | null> {
110
- const cacheKey = `${importerDir}\0${spec}`;
111
- let cached = this.#resolvedSpecifierCache.get(cacheKey);
112
- if (cached) return cached;
113
- cached = (async () => {
114
- if (spec.startsWith(".") || spec.startsWith("/")) {
115
- const abs = spec.startsWith("/") ? spec : path.resolve(importerDir, spec);
116
- return this.#resolveFileCandidate(abs);
117
- }
118
- const pkg = await this.#resolvePackage(spec);
119
- if (pkg) return pkg.entryFile;
120
- return null;
121
- })();
122
- this.#resolvedSpecifierCache.set(cacheKey, cached);
123
- return cached;
124
- }
125
-
126
- async #getRewrittenSource(file: string, content: string): Promise<string> {
127
- const absPath = path.resolve(file);
128
- let cached = this.#rewriteCache.get(absPath);
129
- if (!cached) {
130
- cached = (async () => {
131
- if (this.#akanConfig.barrelImports.length === 0) return content;
132
- try {
133
- return (await rewriteBarrelImports(content, this.#akanConfig.barrelImports, this.#analyzer)) ?? content;
134
- } catch {
135
- return content;
136
- }
137
- })();
138
- this.#rewriteCache.set(absPath, cached);
139
- }
140
- return cached;
141
- }
142
-
143
- async #getImports(file: string, source: string): Promise<ScannedImport[]> {
144
- const absPath = path.resolve(file);
145
- let cached = this.#importCache.get(absPath);
146
- if (!cached) {
147
- cached = Promise.resolve().then(() => {
148
- try {
149
- return this.#tsTranspiler.scanImports(source);
150
- } catch {
151
- return [];
152
- }
153
- });
154
- this.#importCache.set(absPath, cached);
155
- }
156
- return cached;
157
- }
158
-
159
- async #discoverFromFile(file: string, visiting: Set<string>): Promise<Set<string>> {
160
- const absPath = path.resolve(file);
161
- const cached = this.#reachableEntriesCache.get(absPath);
162
- if (cached) return new Set(cached);
163
- if (visiting.has(absPath) || shouldSkipNodeModule(absPath)) return new Set();
164
-
165
- visiting.add(absPath);
166
- const entries = new Set<string>();
167
- const content = await this.#readFile(absPath);
168
- if (content === null) return this.#finishDiscovery(absPath, visiting, entries);
169
-
170
- if (USE_CLIENT_RE.test(content)) {
171
- entries.add(absPath);
172
- return this.#finishDiscovery(absPath, visiting, entries);
173
- }
174
-
175
- const source = await this.#getRewrittenSource(absPath, content);
176
- const imports = await this.#getImports(absPath, source);
177
- const importerDir = path.dirname(absPath);
178
- for (const imp of imports) {
179
- const spec = imp.path;
180
- if (!spec) continue;
181
- if (NON_SOURCE_EXT_RE.test(spec)) continue;
182
- const resolved = await this.#resolveSpecifier(spec, importerDir);
183
- if (!resolved) continue;
184
- if (shouldSkipNodeModule(resolved)) continue;
185
- for (const entry of await this.#discoverFromFile(resolved, visiting)) entries.add(entry);
186
- }
187
-
188
- return this.#finishDiscovery(absPath, visiting, entries);
189
- }
190
-
191
- #finishDiscovery(absPath: string, visiting: Set<string>, entries: Set<string>): Set<string> {
192
- visiting.delete(absPath);
193
- this.#reachableEntriesCache.set(absPath, entries);
194
- return new Set(entries);
195
- }
196
- }