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,443 +0,0 @@
1
- import { cp, mkdir, rm } from "node:fs/promises";
2
- import path from "node:path";
3
- import { MobileProject } from "@trapezedev/project";
4
- import type { AndroidProject } from "@trapezedev/project/dist/android/project";
5
- import type { IosProject } from "@trapezedev/project/dist/ios/project";
6
- import { capitalize } from "akanjs/common";
7
- import type { AkanMobileTargetConfig } from "./akanConfig";
8
- import type { AppExecutor } from "./executors";
9
- import { FileEditor } from "./fileEditor";
10
- import { resolveMobilePath, targetHtmlFilename } from "./mobile";
11
-
12
- interface RunConfig {
13
- operation: "local" | "release";
14
- env: "local" | "debug" | "develop" | "main";
15
- regenerate?: boolean;
16
- }
17
-
18
- interface PrepareConfig extends RunConfig {}
19
-
20
- export class CapacitorApp {
21
- project: MobileProject & { ios: IosProject; android: AndroidProject };
22
- iosTargetName = "App";
23
- readonly targetRoot: string;
24
- readonly targetRootPath: string;
25
- readonly targetWebRoot: string;
26
- readonly targetAssetRoot: string;
27
- readonly iosRootPath = "ios";
28
- readonly iosProjectPath = "ios/App";
29
- readonly androidRootPath = "android";
30
- constructor(
31
- private readonly app: AppExecutor,
32
- readonly target: AkanMobileTargetConfig,
33
- ) {
34
- this.targetRootPath = path.posix.join("mobile", this.target.name);
35
- this.targetRoot = path.join(this.app.cwdPath, this.targetRootPath);
36
- this.targetWebRoot = path.join(this.targetRoot, "www");
37
- this.targetAssetRoot = path.join(this.targetRoot, "assets");
38
- this.project = new MobileProject(this.app.cwdPath, {
39
- android: { path: this.androidRootPath },
40
- ios: { path: this.iosProjectPath },
41
- }) as MobileProject & { ios: IosProject; android: AndroidProject };
42
- }
43
- async init({
44
- platform,
45
- operation = "release",
46
- env = "debug",
47
- regenerate = false,
48
- }: { platform?: "ios" | "android" } & Partial<PrepareConfig> = {}) {
49
- await mkdir(this.targetRoot, { recursive: true });
50
- await this.#writeCapacitorConfig();
51
- if (regenerate) {
52
- if (!platform || platform === "ios")
53
- await rm(path.join(this.app.cwdPath, this.iosRootPath), { recursive: true, force: true });
54
- if (!platform || platform === "android")
55
- await rm(path.join(this.app.cwdPath, this.androidRootPath), { recursive: true, force: true });
56
- }
57
- const project = this.project as MobileProject;
58
- await this.project.load();
59
- if ((!platform || platform === "android") && !project.android) {
60
- await this.#spawnMobile("npx", ["cap", "add", "android"], { operation, env });
61
- await this.project.load();
62
- }
63
- if ((!platform || platform === "ios") && !project.ios) {
64
- await this.#spawnMobile("npx", ["cap", "add", "ios"], { operation, env });
65
- await this.project.load();
66
- }
67
- return this;
68
- }
69
- async save() {
70
- await this.project.commit();
71
- }
72
- async #prepareIos({ operation, env, regenerate = false }: PrepareConfig) {
73
- await this.init({ platform: "ios", operation, env, regenerate });
74
- await this.#prepareTargetAssets();
75
- await this.#prepareExternalFiles("ios");
76
- await this.#applyIosMetadata();
77
- await this.#applyPermissions();
78
- await this.#applyLinks();
79
- await this.project.commit();
80
- await this.#generateAssets({ operation, env });
81
- this.app.verbose(`syncing iOS`);
82
- await this.#spawnMobile("npx", ["cap", "sync", "ios"], { operation, env });
83
- this.app.verbose(`sync completed.`);
84
- }
85
- async buildIos({ env = "debug", regenerate = false }: { env?: RunConfig["env"]; regenerate?: boolean } = {}) {
86
- await this.prepareWww();
87
- await this.#prepareIos({ operation: "release", env, regenerate });
88
- await this.#spawnMobile("npx", ["cap", "build", "ios"], { operation: "release", env }, { stdio: "inherit" });
89
- this.app.verbose(`build completed iOS.`);
90
- return;
91
- }
92
- async syncIos() {
93
- await this.#spawnMobile("npx", ["cap", "sync", "ios"], { operation: "local", env: "local" });
94
- }
95
- async openIos() {
96
- await this.#spawnMobile("npx", ["cap", "open", "ios"], { operation: "local", env: "local" });
97
- }
98
- async runIos({ operation, env, regenerate = false }: RunConfig) {
99
- if (operation === "release") await this.prepareWww();
100
- await this.#prepareIos({ operation, env, regenerate });
101
- const args = ["cap", "run", "ios"];
102
- await this.#spawnMobile("npx", args, { operation, env }, { stdio: "inherit" });
103
- }
104
-
105
- async #prepareAndroid({ operation, env, regenerate = false }: PrepareConfig) {
106
- await this.init({ platform: "android", operation, env, regenerate });
107
- await this.#prepareTargetAssets();
108
- await this.#prepareExternalFiles("android");
109
- await this.#applyAndroidMetadata();
110
- await this.#applyPermissions();
111
- await this.#applyLinks();
112
- await this.project.commit();
113
- await this.#generateAssets({ operation, env });
114
- await this.#spawnMobile("npx", ["cap", "sync", "android"], { operation, env });
115
- }
116
-
117
- async #updateAndroidBuildTypes() {
118
-
119
- const appGradle = await FileEditor.create(path.join(this.app.cwdPath, this.androidRootPath, "app/build.gradle"));
120
- const buildTypesBlock = `
121
- debug {
122
- applicationIdSuffix ".debug"
123
- versionNameSuffix "-DEBUG"
124
- debuggable true
125
- minifyEnabled false
126
- }
127
- `;
128
- const singinConfigBlock = `
129
- signingConfigs {
130
- debug {
131
- storeFile file('debug.keystore')
132
- storePassword 'android'
133
- keyAlias 'androiddebugkey'
134
- keyPassword 'android'
135
- }
136
- release {
137
- if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
138
- storeFile file(MYAPP_RELEASE_STORE_FILE)
139
- storePassword MYAPP_RELEASE_STORE_PASSWORD
140
- keyAlias MYAPP_RELEASE_KEY_ALIAS
141
- keyPassword MYAPP_RELEASE_KEY_PASSWORD
142
- }
143
- }
144
- }
145
- `;
146
- if (appGradle.find("signingConfigs {") === -1) {
147
- appGradle.insertBefore("buildTypes {", singinConfigBlock);
148
- }
149
- if (appGradle.find(`applicationIdSuffix ".debug"`) === -1) {
150
- appGradle.insertAfter("buildTypes {", buildTypesBlock);
151
- }
152
- await appGradle.save();
153
- }
154
- async buildAndroid(
155
- assembleType: "apk" | "aab",
156
- { env = "debug", regenerate = false }: { env?: RunConfig["env"]; regenerate?: boolean } = {},
157
- ) {
158
- await this.prepareWww();
159
- await this.#prepareAndroid({ operation: "release", env, regenerate });
160
- await this.#updateAndroidBuildTypes();
161
-
162
- const isWindows = process.platform === "win32";
163
- const gradleCommand = isWindows ? "gradlew.bat" : "./gradlew";
164
-
165
- await this.app.spawn(gradleCommand, [assembleType === "apk" ? "assembleRelease" : "bundleRelease"], {
166
- stdio: "inherit",
167
- cwd: path.join(this.app.cwdPath, this.androidRootPath),
168
- env: this.#commandEnv("release", env),
169
- });
170
- }
171
- async openAndroid() {
172
- await this.#spawnMobile("npx", ["cap", "open", "android"], { operation: "local", env: "local" });
173
- }
174
- async syncAndroid(options: { regenerate?: boolean } = {}) {
175
- await this.prepareWww();
176
- await this.#prepareAndroid({ operation: "release", env: "debug", ...options });
177
- this.app.log(`Sync Android Completed.`);
178
- }
179
- async runAndroid({ operation, env, regenerate = false }: RunConfig) {
180
- if (operation === "release") await this.prepareWww();
181
- await this.#prepareAndroid({ operation, env, regenerate });
182
- this.app.logger.info(`Running Android in ${operation} mode on ${env} env`);
183
- const args = ["cap", "run", "android"];
184
- await this.#spawnMobile("npx", args, { operation, env }, { stdio: "inherit" });
185
- }
186
-
187
- async releaseIos() {
188
- await this.prepareWww();
189
- await this.#prepareIos({ operation: "release", env: "main" });
190
- }
191
- async releaseAndroid() {
192
- await this.prepareWww();
193
- await this.#prepareAndroid({ operation: "release", env: "main" });
194
- }
195
- async prepareWww() {
196
- const htmlSource = path.join(this.app.dist.cwdPath, "csr", targetHtmlFilename(this.target));
197
- if (!(await Bun.file(htmlSource).exists()))
198
- throw new Error(`CSR html for mobile target '${this.target.name}' not found: ${htmlSource}`);
199
- await rm(this.targetWebRoot, { recursive: true, force: true });
200
- await mkdir(this.targetWebRoot, { recursive: true });
201
- await Bun.write(
202
- path.join(this.targetWebRoot, "index.html"),
203
- this.#injectMobileTargetMeta(await Bun.file(htmlSource).text()),
204
- );
205
- }
206
- #injectMobileTargetMeta(html: string) {
207
- const basePath = this.target.basePath?.replace(/^\/+|\/+$/g, "") ?? "";
208
- const script = `<script>window.__AKAN_MOBILE_TARGET__=${JSON.stringify({ name: this.target.name, basePath })};</script>`;
209
- if (html.includes("window.__AKAN_MOBILE_TARGET__")) return html;
210
- return html.replace(/<\/head\s*>/i, `${script}\n</head>`);
211
- }
212
- async #writeCapacitorConfig() {
213
- await mkdir(this.targetRoot, { recursive: true });
214
- const appInfoPath = path
215
- .relative(this.app.cwdPath, path.join(this.app.cwdPath, "akan.app.json"))
216
- .split(path.sep)
217
- .join("/");
218
- const baseConfigPath = path
219
- .relative(this.app.cwdPath, path.join(this.app.workspace.cwdPath, "pkgs/akanjs/devkit/capacitor.base.config"))
220
- .split(path.sep)
221
- .join("/");
222
- const content = `import type { AppScanResult } from "akanjs/devkit";
223
- import { withBase } from "${baseConfigPath.startsWith(".") ? baseConfigPath : `./${baseConfigPath}`}";
224
- import appInfo from "${appInfoPath.startsWith(".") ? appInfoPath : `./${appInfoPath}`}";
225
-
226
- export default withBase(
227
- (config, target) => ({
228
- ...config,
229
- webDir: \`mobile/\${target.name}/www\`,
230
- android: {
231
- ...config.android,
232
- path: "android",
233
- },
234
- ios: {
235
- ...config.ios,
236
- path: "ios",
237
- },
238
- }),
239
- appInfo as AppScanResult,
240
- );
241
- `;
242
- await Bun.write(path.join(this.app.cwdPath, "capacitor.config.ts"), content);
243
- }
244
- async #prepareTargetAssets() {
245
- if (!this.target.assets) return;
246
- await mkdir(this.targetAssetRoot, { recursive: true });
247
- if (this.target.assets.icon)
248
- await cp(path.join(this.app.cwdPath, this.target.assets.icon), path.join(this.targetAssetRoot, "icon.png"), {
249
- force: true,
250
- });
251
- if (this.target.assets.splash)
252
- await cp(path.join(this.app.cwdPath, this.target.assets.splash), path.join(this.targetAssetRoot, "splash.png"), {
253
- force: true,
254
- });
255
- }
256
- async #prepareExternalFiles(platform: "ios" | "android") {
257
- const files = this.target.files?.[platform];
258
- if (!files) return;
259
- const platformRoot = path.join(this.app.cwdPath, platform === "ios" ? this.iosRootPath : this.androidRootPath);
260
- await Promise.all(
261
- Object.entries(files).map(async ([to, from]) => {
262
- const targetPath = path.join(platformRoot, to);
263
- await mkdir(path.dirname(targetPath), { recursive: true });
264
- await cp(path.join(this.app.cwdPath, from), targetPath, { force: true });
265
- }),
266
- );
267
- }
268
- async #generateAssets({ operation, env }: Pick<RunConfig, "operation" | "env">) {
269
- if (!this.target.assets) return;
270
- await this.#spawnMobile(
271
- "npx",
272
- [
273
- "@capacitor/assets",
274
- "generate",
275
- "--assetPath",
276
- path.posix.join(this.targetRootPath, "assets"),
277
- "--iosProject",
278
- this.iosProjectPath,
279
- "--androidProject",
280
- this.androidRootPath,
281
- ],
282
- { operation, env },
283
- );
284
- }
285
- async #applyIosMetadata() {
286
- this.project.ios.setBundleId("App", "Debug", this.target.appId);
287
- this.project.ios.setBundleId("App", "Release", this.target.appId);
288
- await this.project.ios.setVersion("App", "Debug", this.target.version);
289
- await this.project.ios.setVersion("App", "Release", this.target.version);
290
- await this.project.ios.setBuild("App", "Debug", this.target.buildNum);
291
- await this.project.ios.setBuild("App", "Release", this.target.buildNum);
292
- }
293
- async #applyAndroidMetadata() {
294
- await this.project.android.setVersionName(this.target.version);
295
- await this.project.android.setPackageName(this.target.appId);
296
- await this.project.android.setVersionCode(this.target.buildNum);
297
- await this.project.android.setAppName(this.target.appName);
298
- }
299
- async #applyPermissions() {
300
- for (const permission of this.target.permissions ?? []) {
301
- if (permission === "camera") await this.addCamera();
302
- else if (permission === "contacts") await this.addContact();
303
- else if (permission === "location") await this.addLocation();
304
- else if (permission === "push") await this.addPush();
305
- }
306
- }
307
- async #applyLinks() {
308
- const links = this.target.links;
309
- if (!links) return;
310
- const schemes = links.schemes ?? [];
311
- if (schemes.length > 0) {
312
- await this.#setPermissionInIos({
313
- appTransportSecurity: "",
314
- });
315
- for (const scheme of schemes) {
316
- this.project.android
317
- .getAndroidManifest()
318
- .injectFragment(
319
- "activity",
320
- `<intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="${scheme}" /></intent-filter>`,
321
- );
322
- }
323
- }
324
- for (const domain of links.associatedDomains ?? []) {
325
- this.app.logger.info(`Configure iOS associated domain manually if needed: ${domain}`);
326
- }
327
- for (const host of links.androidHosts ?? []) {
328
- const pathPrefix = resolveMobilePath(this.target, "/");
329
- this.project.android
330
- .getAndroidManifest()
331
- .injectFragment(
332
- "activity",
333
- `<intent-filter android:autoVerify="true"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="https" android:host="${host}" android:pathPrefix="${pathPrefix}" /></intent-filter>`,
334
- );
335
- }
336
- }
337
- #commandEnv(operation: "local" | "release", env: "local" | "debug" | "develop" | "main") {
338
- return this.app.getCommandEnv({
339
- APP_OPERATION_MODE: operation,
340
- AKAN_PUBLIC_OPERATION_MODE: env === "local" ? "local" : "cloud",
341
- AKAN_PUBLIC_ENV: env,
342
- AKAN_MOBILE_TARGET: this.target.name,
343
- });
344
- }
345
- async #spawn(command: string, args: string[] = [], options: Parameters<AppExecutor["spawn"]>[2] = {}) {
346
- return await this.app.spawn(command, args, { cwd: this.app.cwdPath, ...options });
347
- }
348
- async #spawnMobile(
349
- command: string,
350
- args: string[] = [],
351
- { operation, env }: Pick<RunConfig, "operation" | "env">,
352
- options: Parameters<AppExecutor["spawn"]>[2] = {},
353
- ) {
354
- return await this.#spawn(command, args, {
355
- ...options,
356
- env: { ...this.#commandEnv(operation, env), ...options.env },
357
- });
358
- }
359
- async addCamera() {
360
- await this.#setPermissionInIos({
361
- cameraUsageDescription: "$(PRODUCT_NAME) requires access to the camera to take photos.",
362
- photoAddUsageDescription: "$(PRODUCT_NAME) requires access to the photo library to take photos.",
363
- photoUsageDescription: "$(PRODUCT_NAME) requires access to the photo library to take photos.",
364
- });
365
- this.#setPermissionsInAndroid(["READ_MEDIA_IMAGES", "READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"]);
366
- }
367
- async addContact() {
368
- await this.#setPermissionInIos({
369
- contactsUsageDescription: "$(PRODUCT_NAME) requires access to the contacts to add new contacts.",
370
- });
371
- this.#setPermissionsInAndroid(["READ_CONTACTS", "WRITE_CONTACTS"]);
372
- }
373
- async addLocation() {
374
- await this.#setPermissionInIos({
375
- locationAlwaysUsageDescription: "$(PRODUCT_NAME) requires access to the location to get the user's location.",
376
- locationWhenInUseUsageDescription: "$(PRODUCT_NAME) requires access to the location to get the user's location.",
377
- });
378
- this.#setPermissionsInAndroid(["ACCESS_COARSE_LOCATION", "ACCESS_FINE_LOCATION"]);
379
- this.#setFeaturesInAndroid(["android.hardware.location.gps"]);
380
- }
381
- async addPush() {
382
- await this.#setPermissionInIos({
383
- userNotificationsUsageDescription: "$(PRODUCT_NAME) uses notifications to keep you updated.",
384
- });
385
- this.#setPermissionsInAndroid(["POST_NOTIFICATIONS"]);
386
- }
387
- async #setPermissionInIos(permissions: { [key: string]: string }) {
388
- const updateNs = Object.fromEntries(
389
- Object.entries(permissions).map(([key, value]) => [`NS${capitalize(key)}`, value]),
390
- );
391
- await Promise.all([
392
- this.project.ios.updateInfoPlist(this.iosTargetName, "Debug", updateNs),
393
- this.project.ios.updateInfoPlist(this.iosTargetName, "Release", updateNs),
394
- ]);
395
- }
396
- #setFeaturesInAndroid(features: string[]) {
397
- for (const feature of features) {
398
- if (this.#hasFeatureInAndroid(feature)) {
399
- this.app.logger.info(`${feature} already exists in android`);
400
- return this;
401
- }
402
- this.app.logger.info(`Adding ${feature} to android`);
403
- this.project.android
404
- .getAndroidManifest()
405
- .injectFragment("manifest", `<uses-feature android:name="${feature}" />`);
406
- }
407
- return this;
408
- }
409
- #getFeaturesInAndroid() {
410
- const androidManifest = this.project.android.getAndroidManifest();
411
- const element = androidManifest.getDocumentElement();
412
- if (!element) throw new Error("manifest not found");
413
- const usesFeature = element.getElementsByTagName("uses-feature");
414
- return Array.from(usesFeature).map((feature) => feature.getAttribute("android:name"));
415
- }
416
- #hasFeatureInAndroid(feature: string) {
417
- return this.#getFeaturesInAndroid().includes(feature);
418
- }
419
-
420
- #setPermissionsInAndroid(permissions: string[]) {
421
- for (const permission of permissions) {
422
- if (this.#hasPermissionInAndroid(permission)) {
423
- this.app.logger.info(`${permission} already exists in android`);
424
- return this;
425
- }
426
- this.app.logger.info(`Adding ${permission} to android`);
427
- this.project.android
428
- .getAndroidManifest()
429
- .injectFragment("manifest", `<uses-permission android:name="android.permission.${permission}" />`);
430
- }
431
- return this;
432
- }
433
- #getPermissionsInAndroid() {
434
- const androidManifest = this.project.android.getAndroidManifest();
435
- const element = androidManifest.getDocumentElement();
436
- if (!element) throw new Error("manifest not found");
437
- const usesPermission = element.getElementsByTagName("uses-permission");
438
- return Array.from(usesPermission).map((permission) => permission.getAttribute("android:name"));
439
- }
440
- #hasPermissionInAndroid(permission: string) {
441
- return this.#getPermissionsInAndroid().includes(permission);
442
- }
443
- }
@@ -1,102 +0,0 @@
1
- import type {
2
- AppExecutor,
3
- Executor,
4
- LibExecutor,
5
- ModuleExecutor,
6
- PkgExecutor,
7
- SysExecutor,
8
- WorkspaceExecutor,
9
- } from "../executors";
10
- import { COMMAND_META, type CommandCls } from "./targetMeta";
11
-
12
- export const argTypes = ["Argument", "Option"] as const;
13
- export type ArgType = (typeof argTypes)[number];
14
-
15
- export const internalArgTypes = ["Workspace", "App", "Lib", "Sys", "Pkg", "Module", "Exec"] as const;
16
- export type InternalArgType = (typeof internalArgTypes)[number];
17
-
18
- export type PrimitiveArgType = StringConstructor | NumberConstructor | BooleanConstructor;
19
- export type NormalizedPrimitiveArgType = "string" | "number" | "boolean";
20
-
21
- export type CommandContext = {
22
- values: Record<string, unknown>;
23
- app?: AppExecutor;
24
- lib?: LibExecutor;
25
- sys?: SysExecutor;
26
- pkg?: PkgExecutor;
27
- module?: ModuleExecutor;
28
- exec?: Executor;
29
- };
30
-
31
- export type EnumChoice = string | number | { label: string; value: string | number | boolean };
32
- export type EnumChoices = readonly EnumChoice[];
33
- export type DynamicEnum<Context> = (context: Context) => EnumChoices | Promise<EnumChoices>;
34
-
35
- export interface ArgsOption<Context = CommandContext> {
36
- type?: "string" | "number" | "boolean";
37
- flag?: string;
38
- desc?: string;
39
- default?: string | number | boolean;
40
- nullable?: boolean;
41
- example?: string | number | boolean;
42
- enum?: EnumChoices | DynamicEnum<Context>;
43
- ask?: string;
44
- }
45
- export interface ArgMeta<Context = CommandContext> {
46
- name: string;
47
- argsOption: ArgsOption<Context>;
48
- key: string;
49
- idx: number;
50
- type: ArgType;
51
- }
52
- export interface InternalArgMeta {
53
- key: string;
54
- idx: number;
55
- type: InternalArgType;
56
- option?: { nullable?: boolean };
57
- }
58
-
59
- export const getArgMetas = (
60
- command: CommandCls,
61
- key: string,
62
- ): [(ArgMeta | InternalArgMeta)[], ArgMeta[], (ArgMeta | InternalArgMeta)[]] => {
63
- const allArgMetas = [...(command[COMMAND_META]?.get(key)?.args ?? [])];
64
- const argMetas = allArgMetas.filter((argMeta): argMeta is ArgMeta => argMeta.type === "Option");
65
- const internalArgMetas = allArgMetas.filter((argMeta) => argMeta.type !== "Option");
66
- return [allArgMetas, argMetas, internalArgMetas];
67
- };
68
-
69
- export interface InternalArgToken<T = unknown, Type extends InternalArgType = InternalArgType> {
70
- type: Type;
71
- _value: T;
72
- }
73
-
74
- const createInternalArgToken = <T, Type extends InternalArgType>(type: Type) => ({ type }) as InternalArgToken<T, Type>;
75
-
76
- export const normalizePrimitiveArgType = (type: PrimitiveArgType): NormalizedPrimitiveArgType => {
77
- if (type === String) return "string";
78
- if (type === Number) return "number";
79
- if (type === Boolean) return "boolean";
80
- throw new Error(`Invalid primitive argument type: ${type}`);
81
- };
82
-
83
- export const App = createInternalArgToken<AppExecutor, "App">("App");
84
- export type App = AppExecutor;
85
-
86
- export const Lib = createInternalArgToken<LibExecutor, "Lib">("Lib");
87
- export type Lib = LibExecutor;
88
-
89
- export const Sys = createInternalArgToken<SysExecutor, "Sys">("Sys");
90
- export type Sys = SysExecutor;
91
-
92
- export const Exec = createInternalArgToken<Executor, "Exec">("Exec");
93
- export type Exec = Executor;
94
-
95
- export const Pkg = createInternalArgToken<PkgExecutor, "Pkg">("Pkg");
96
- export type Pkg = PkgExecutor;
97
-
98
- export const Module = createInternalArgToken<ModuleExecutor, "Module">("Module");
99
- export type Module = ModuleExecutor;
100
-
101
- export const Workspace = createInternalArgToken<WorkspaceExecutor, "Workspace">("Workspace");
102
- export type Workspace = WorkspaceExecutor;