@akanjs/cli 0.0.42 → 0.0.44

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 (157) hide show
  1. package/index.js +126 -95
  2. package/package.json +1 -1
  3. package/src/templates/__scalar/__model__/__model__.constant.js +36 -0
  4. package/src/templates/__scalar/__model__/__model__.dictionary.js +47 -0
  5. package/src/templates/__scalar/__model__/__model__.document.js +34 -0
  6. package/src/templates/app/akan.config.ts.template +5 -0
  7. package/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +45 -0
  8. package/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +46 -0
  9. package/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +40 -0
  10. package/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +48 -0
  11. package/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +39 -0
  12. package/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +41 -0
  13. package/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +58 -0
  14. package/src/templates/app/app/[lang]/(__appName__)/layout.js +50 -0
  15. package/src/templates/app/app/[lang]/admin/layout.js +51 -0
  16. package/src/templates/app/app/[lang]/admin/page.js +61 -0
  17. package/src/templates/app/app/csr.js +32 -0
  18. package/src/templates/app/app/index.html.template +13 -0
  19. package/src/templates/app/app/layout.js +36 -0
  20. package/src/templates/app/app/robots.js +41 -0
  21. package/src/templates/app/app/sitemap.js +37 -0
  22. package/src/templates/app/base/baseLogic.js +36 -0
  23. package/src/templates/app/base/index.js +30 -0
  24. package/src/templates/app/capacitor.config.ts.template +8 -0
  25. package/src/templates/app/common/commonLogic.js +36 -0
  26. package/src/templates/app/common/index.js +30 -0
  27. package/src/templates/app/env/env.client.js +39 -0
  28. package/src/templates/app/env/env.client.type.js +36 -0
  29. package/src/templates/app/env/env.server.js +39 -0
  30. package/src/templates/app/jest.config.js +37 -0
  31. package/src/templates/app/lib/___appName__/__appName__.dictionary.js +32 -0
  32. package/src/templates/app/lib/___appName__/__appName__.service.js +43 -0
  33. package/src/templates/app/lib/___appName__/__appName__.store.js +37 -0
  34. package/src/templates/app/lib/___appName__/_server.js +35 -0
  35. package/src/templates/app/lib/option.js +43 -0
  36. package/src/templates/app/lib/setting/Setting.Template.js +55 -0
  37. package/src/templates/app/lib/setting/Setting.Unit.js +36 -0
  38. package/src/templates/app/lib/setting/Setting.Util.js +32 -0
  39. package/src/templates/app/lib/setting/Setting.View.js +49 -0
  40. package/src/templates/app/lib/setting/Setting.Zone.js +78 -0
  41. package/src/templates/app/lib/setting/_server.js +49 -0
  42. package/src/templates/app/lib/setting/index.js +59 -0
  43. package/src/templates/app/lib/setting/setting.constant.js +47 -0
  44. package/src/templates/app/lib/setting/setting.dictionary.js +47 -0
  45. package/src/templates/app/lib/setting/setting.document.js +49 -0
  46. package/src/templates/app/lib/setting/setting.service.js +38 -0
  47. package/src/templates/app/lib/setting/setting.signal.js +35 -0
  48. package/src/templates/app/lib/setting/setting.store.js +42 -0
  49. package/src/templates/app/lib/summary/Summary.Template.js +41 -0
  50. package/src/templates/app/lib/summary/Summary.Unit.js +36 -0
  51. package/src/templates/app/lib/summary/Summary.Util.js +31 -0
  52. package/src/templates/app/lib/summary/Summary.View.js +49 -0
  53. package/src/templates/app/lib/summary/Summary.Zone.js +60 -0
  54. package/src/templates/app/lib/summary/_server.js +49 -0
  55. package/src/templates/app/lib/summary/index.js +65 -0
  56. package/src/templates/app/lib/summary/summary.constant.js +45 -0
  57. package/src/templates/app/lib/summary/summary.dictionary.js +50 -0
  58. package/src/templates/app/lib/summary/summary.document.js +49 -0
  59. package/src/templates/app/lib/summary/summary.service.js +35 -0
  60. package/src/templates/app/lib/summary/summary.signal.js +35 -0
  61. package/src/templates/app/lib/summary/summary.store.js +42 -0
  62. package/src/templates/app/lib/user/User.Template.js +63 -0
  63. package/src/templates/app/lib/user/User.Unit.js +36 -0
  64. package/src/templates/app/lib/user/User.Util.js +92 -0
  65. package/src/templates/app/lib/user/User.View.js +64 -0
  66. package/src/templates/app/lib/user/User.Zone.js +72 -0
  67. package/src/templates/app/lib/user/_server.js +49 -0
  68. package/src/templates/app/lib/user/index.js +59 -0
  69. package/src/templates/app/lib/user/user.constant.js +68 -0
  70. package/src/templates/app/lib/user/user.dictionary.js +53 -0
  71. package/src/templates/app/lib/user/user.document.js +55 -0
  72. package/src/templates/app/lib/user/user.service.js +43 -0
  73. package/src/templates/app/lib/user/user.signal.js +35 -0
  74. package/src/templates/app/lib/user/user.signal.spec.js +38 -0
  75. package/src/templates/app/lib/user/user.signal.test.js +40 -0
  76. package/src/templates/app/lib/user/user.store.js +40 -0
  77. package/src/templates/app/main.js +41 -0
  78. package/src/templates/app/middleware.js +36 -0
  79. package/src/templates/app/nest/backendLogic.js +35 -0
  80. package/src/templates/app/nest/index.js +30 -0
  81. package/src/templates/app/next/frontendLogic.js +35 -0
  82. package/src/templates/app/next/index.js +30 -0
  83. package/src/templates/app/page.test.ts.template +10 -0
  84. package/src/templates/app/playwright.config.ts.template +6 -0
  85. package/src/templates/app/postcss.config.js.template +10 -0
  86. package/src/templates/app/public/favicon.ico +0 -0
  87. package/src/templates/app/public/icons/icon-128x128.png +0 -0
  88. package/src/templates/app/public/icons/icon-144x144.png +0 -0
  89. package/src/templates/app/public/icons/icon-152x152.png +0 -0
  90. package/src/templates/app/public/icons/icon-192x192.png +0 -0
  91. package/src/templates/app/public/icons/icon-256x256.png +0 -0
  92. package/src/templates/app/public/icons/icon-384x384.png +0 -0
  93. package/src/templates/app/public/icons/icon-48x48.png +0 -0
  94. package/src/templates/app/public/icons/icon-512x512.png +0 -0
  95. package/src/templates/app/public/icons/icon-72x72.png +0 -0
  96. package/src/templates/app/public/icons/icon-96x96.png +0 -0
  97. package/src/templates/app/public/logo.svg +70 -0
  98. package/src/templates/app/public/manifest.json.template +67 -0
  99. package/src/templates/app/tsconfig.json.template +22 -0
  100. package/src/templates/app/tsconfig.spec.json.template +7 -0
  101. package/src/templates/app/ui/Footer.js +65 -0
  102. package/src/templates/app/ui/MainHeader.js +129 -0
  103. package/src/templates/app/ui/index.js +31 -0
  104. package/src/templates/client.js +43 -0
  105. package/src/templates/crudPages/[__model__Id]/edit/page.js +71 -0
  106. package/src/templates/crudPages/[__model__Id]/page.js +81 -0
  107. package/src/templates/crudPages/new/page.js +68 -0
  108. package/src/templates/crudPages/page.js +69 -0
  109. package/src/templates/index.js +32 -0
  110. package/src/templates/lib/__lib/extends/summary.constant.js +44 -0
  111. package/src/templates/lib/__lib/lib.constant.js +54 -0
  112. package/src/templates/lib/__lib/lib.dictionary.js +43 -0
  113. package/src/templates/lib/__lib/lib.document.js +42 -0
  114. package/src/templates/lib/__lib/lib.service.js +84 -0
  115. package/src/templates/lib/__lib/lib.signal.js +37 -0
  116. package/src/templates/lib/__lib/lib.store.js +35 -0
  117. package/src/templates/lib/__scalar/_server.js +40 -0
  118. package/src/templates/lib/cnst.js +33 -0
  119. package/src/templates/lib/cnst_.js +52 -0
  120. package/src/templates/lib/db.js +54 -0
  121. package/src/templates/lib/dict.js +46 -0
  122. package/src/templates/lib/fetch.js +49 -0
  123. package/src/templates/lib/sig.js +38 -0
  124. package/src/templates/lib/srv.js +53 -0
  125. package/src/templates/lib/st.js +37 -0
  126. package/src/templates/lib/store.js +53 -0
  127. package/src/templates/lib/usePage.js +34 -0
  128. package/src/templates/libRoot/.gitignore.template +15 -0
  129. package/src/templates/libRoot/jest.config.js +37 -0
  130. package/src/templates/libRoot/package.json.template +5 -0
  131. package/src/templates/libRoot/tsconfig.json.template +11 -0
  132. package/src/templates/libRoot/tsconfig.spec.json.template +7 -0
  133. package/src/templates/module/__Model__.Template.js +52 -0
  134. package/src/templates/module/__Model__.Unit.js +40 -0
  135. package/src/templates/module/__Model__.Util.js +68 -0
  136. package/src/templates/module/__Model__.View.js +46 -0
  137. package/src/templates/module/__Model__.Zone.js +81 -0
  138. package/src/templates/module/__model__.constant.js +70 -0
  139. package/src/templates/module/__model__.dictionary.js +99 -0
  140. package/src/templates/module/__model__.document.js +54 -0
  141. package/src/templates/module/__model__.service.js +42 -0
  142. package/src/templates/module/__model__.signal.js +61 -0
  143. package/src/templates/module/__model__.signal.spec.js +40 -0
  144. package/src/templates/module/__model__.signal.test.js +49 -0
  145. package/src/templates/module/__model__.store.js +40 -0
  146. package/src/templates/module/_server.js +48 -0
  147. package/src/templates/module/index.js +59 -0
  148. package/src/templates/pkgRoot/tsconfig.json.template +12 -0
  149. package/src/templates/server.js +60 -0
  150. package/src/templates/workplaceRoot/.env.template +20 -0
  151. package/src/templates/workplaceRoot/.gitignore.template +195 -0
  152. package/src/templates/workplaceRoot/.prettierignore.template +10 -0
  153. package/src/templates/workplaceRoot/.prettierrc.json.template +5 -0
  154. package/src/templates/workplaceRoot/.swcrc.template +9 -0
  155. package/src/templates/workplaceRoot/README.md.template +37 -0
  156. package/src/templates/workplaceRoot/eslint.config.js.template +141 -0
  157. package/src/templates/workplaceRoot/tsconfig.json.template +29 -0
package/index.js CHANGED
@@ -47,26 +47,31 @@
47
47
  var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
48
48
 
49
49
  // pkgs/@akanjs/devkit/src/baseDevEnv.ts
50
- var appName, repoName, serveDomain, env, baseDevEnv, getSshTunnelOptions;
50
+ var getBaseDevEnv, getSshTunnelOptions;
51
51
  var init_baseDevEnv = __esm({
52
52
  "pkgs/@akanjs/devkit/src/baseDevEnv.ts"() {
53
- appName = process.env.NEXT_PUBLIC_APP_NAME;
54
- repoName = process.env.NEXT_PUBLIC_REPO_NAME;
55
- if (!repoName)
56
- throw new Error("NEXT_PUBLIC_REPO_NAME is not set");
57
- serveDomain = process.env.NEXT_PUBLIC_SERVE_DOMAIN;
58
- if (!serveDomain)
59
- throw new Error("NEXT_PUBLIC_SERVE_DOMAIN is not set");
60
- env = process.env.NEXT_PUBLIC_ENV ?? "debug";
61
- if (!env)
62
- throw new Error("NEXT_PUBLIC_ENV is not set");
63
- baseDevEnv = { ...appName ? { appName } : {}, repoName, serveDomain, env };
64
- getSshTunnelOptions = (appName2, environment) => ({
65
- host: `${appName2}-${environment}.${serveDomain}`,
66
- port: process.env.SSU_TUNNEL_PORT ? parseInt(process.env.SSU_TUNNEL_PORT) : 32767,
67
- username: process.env.SSU_TUNNEL_USERNAME ?? "root",
68
- password: process.env.SSU_TUNNEL_PASSWORD ?? repoName
69
- });
53
+ getBaseDevEnv = () => {
54
+ const appName = process.env.NEXT_PUBLIC_APP_NAME;
55
+ const repoName = process.env.NEXT_PUBLIC_REPO_NAME;
56
+ if (!repoName)
57
+ throw new Error("NEXT_PUBLIC_REPO_NAME is not set");
58
+ const serveDomain = process.env.NEXT_PUBLIC_SERVE_DOMAIN;
59
+ if (!serveDomain)
60
+ throw new Error("NEXT_PUBLIC_SERVE_DOMAIN is not set");
61
+ const env = process.env.NEXT_PUBLIC_ENV ?? "debug";
62
+ if (!env)
63
+ throw new Error("NEXT_PUBLIC_ENV is not set");
64
+ return { ...appName ? { appName } : {}, repoName, serveDomain, env };
65
+ };
66
+ getSshTunnelOptions = (appName, environment) => {
67
+ const { serveDomain, repoName } = getBaseDevEnv();
68
+ return {
69
+ host: `${appName}-${environment}.${serveDomain}`,
70
+ port: process.env.SSU_TUNNEL_PORT ? parseInt(process.env.SSU_TUNNEL_PORT) : 32767,
71
+ username: process.env.SSU_TUNNEL_USERNAME ?? "root",
72
+ password: process.env.SSU_TUNNEL_PASSWORD ?? repoName
73
+ };
74
+ };
70
75
  }
71
76
  });
72
77
 
@@ -76,14 +81,14 @@
76
81
  "pkgs/@akanjs/devkit/src/createTunnel.ts"() {
77
82
  import_tunnel_ssh = __require("tunnel-ssh");
78
83
  init_baseDevEnv();
79
- createTunnel = async ({ appName: appName2, environment, port = 27017 }) => {
84
+ createTunnel = async ({ appName, environment, port = 27017 }) => {
80
85
  const tunnelOptions = { autoClose: true, reconnectOnError: true };
81
- const sshOptions = getSshTunnelOptions(appName2, environment);
86
+ const sshOptions = getSshTunnelOptions(appName, environment);
82
87
  const serverOptions = { port };
83
88
  const forwardOptions = {
84
89
  srcAddr: "0.0.0.0",
85
90
  srcPort: port,
86
- dstAddr: `mongo-0.mongo-svc.${appName2}-${environment}`,
91
+ dstAddr: `mongo-0.mongo-svc.${appName}-${environment}`,
87
92
  dstPort: 27017
88
93
  };
89
94
  const [server, client] = await (0, import_tunnel_ssh.createTunnel)(tunnelOptions, serverOptions, sshOptions, forwardOptions);
@@ -677,19 +682,19 @@
677
682
  var getBaseConfigEnv;
678
683
  var init_baseConfigEnv = __esm({
679
684
  "pkgs/@akanjs/config/src/baseConfigEnv.ts"() {
680
- getBaseConfigEnv = (appName2 = process.env.NEXT_PUBLIC_APP_NAME) => {
681
- if (!appName2)
685
+ getBaseConfigEnv = (appName = process.env.NEXT_PUBLIC_APP_NAME) => {
686
+ if (!appName)
682
687
  throw new Error("NEXT_PUBLIC_APP_NAME is not set");
683
- const repoName2 = process.env.NEXT_PUBLIC_REPO_NAME;
684
- if (!repoName2)
688
+ const repoName = process.env.NEXT_PUBLIC_REPO_NAME;
689
+ if (!repoName)
685
690
  throw new Error("NEXT_PUBLIC_REPO_NAME is not set");
686
- const serveDomain2 = process.env.NEXT_PUBLIC_SERVE_DOMAIN;
687
- if (!serveDomain2)
691
+ const serveDomain = process.env.NEXT_PUBLIC_SERVE_DOMAIN;
692
+ if (!serveDomain)
688
693
  throw new Error("NEXT_PUBLIC_SERVE_DOMAIN is not set");
689
- const env2 = process.env.NEXT_PUBLIC_ENV ?? "debug";
690
- if (!env2)
694
+ const env = process.env.NEXT_PUBLIC_ENV ?? "debug";
695
+ if (!env)
691
696
  throw new Error("NEXT_PUBLIC_ENV is not set");
692
- return { appName: appName2, repoName: repoName2, serveDomain: serveDomain2, env: env2 };
697
+ return { appName, repoName, serveDomain, env };
693
698
  };
694
699
  }
695
700
  });
@@ -728,7 +733,7 @@
728
733
  disable: commandType === "serve"
729
734
  });
730
735
  devDomain = process.env.NEXT_PUBLIC_SERVE_DOMAIN ?? "akanjs.com";
731
- withBase = (appName2, config, libs, routes = []) => {
736
+ withBase = (appName, config, libs, routes = []) => {
732
737
  return composePlugins(
733
738
  (0, import_bundle_analyzer.default)({ enabled: process.env.ANALYZE === "true" }),
734
739
  ...commandType !== "serve" || process.env.USE_PWA === "true" ? [withPWA] : []
@@ -762,7 +767,7 @@
762
767
  experimental: {
763
768
  ...config.experimental ?? {},
764
769
  optimizePackageImports: [
765
- ...[appName2, ...libs].map((lib) => [`@${lib}/ui`, `@${lib}/next`, `@${lib}/common`, `@${lib}/client`]).flat(),
770
+ ...[appName, ...libs].map((lib) => [`@${lib}/ui`, `@${lib}/next`, `@${lib}/common`, `@${lib}/client`]).flat(),
766
771
  "@contract",
767
772
  "@akanjs/next",
768
773
  "@akanjs/common"
@@ -873,10 +878,10 @@ export default getNextConfig(config, appInfo);
873
878
  makeAppConfig = (config, props = {}) => {
874
879
  const baseConfigEnv = getBaseConfigEnv(props.appName);
875
880
  const {
876
- appName: appName2 = baseConfigEnv.appName,
877
- repoName: repoName2 = baseConfigEnv.repoName,
878
- serveDomain: serveDomain2 = baseConfigEnv.serveDomain,
879
- env: env2 = baseConfigEnv.env,
881
+ appName = baseConfigEnv.appName,
882
+ repoName = baseConfigEnv.repoName,
883
+ serveDomain = baseConfigEnv.serveDomain,
884
+ env = baseConfigEnv.env,
880
885
  command = "build"
881
886
  } = props;
882
887
  return {
@@ -898,10 +903,10 @@ RUN npx pnpm i --prod
898
903
  COPY . .
899
904
  ENV PORT 8080
900
905
  ENV NODE_OPTIONS=--max_old_space_size=8192
901
- ENV NEXT_PUBLIC_REPO_NAME=${repoName2}
902
- ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain2}
903
- ENV NEXT_PUBLIC_APP_NAME=${appName2}
904
- ENV NEXT_PUBLIC_ENV=${env2}
906
+ ENV NEXT_PUBLIC_REPO_NAME=${repoName}
907
+ ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
908
+ ENV NEXT_PUBLIC_APP_NAME=${appName}
909
+ ENV NEXT_PUBLIC_ENV=${env}
905
910
  ENV NEXT_PUBLIC_OPERATION_MODE=cloud
906
911
  CMD ["node", "main.js"]`,
907
912
  explicitDependencies: config.backend?.explicitDependencies ?? []
@@ -917,14 +922,14 @@ RUN npx pnpm i --prod
917
922
  COPY . .
918
923
  ENV PORT 4200
919
924
  ENV NODE_OPTIONS=--max_old_space_size=8192
920
- ENV NEXT_PUBLIC_REPO_NAME=${repoName2}
921
- ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain2}
922
- ENV NEXT_PUBLIC_APP_NAME=${appName2}
923
- ENV NEXT_PUBLIC_ENV=${env2}
925
+ ENV NEXT_PUBLIC_REPO_NAME=${repoName}
926
+ ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
927
+ ENV NEXT_PUBLIC_APP_NAME=${appName}
928
+ ENV NEXT_PUBLIC_ENV=${env}
924
929
  ENV NEXT_PUBLIC_OPERATION_MODE=cloud
925
930
  CMD ["npm", "start"]`,
926
931
  nextConfig: withBase(
927
- appName2,
932
+ appName,
928
933
  config.frontend?.nextConfig ? typeof config.frontend.nextConfig === "function" ? config.frontend.nextConfig() : config.frontend.nextConfig : {},
929
934
  config.libs ?? [],
930
935
  config.frontend?.routes
@@ -1345,21 +1350,21 @@ CMD ["npm", "start"]`,
1345
1350
  WorkspaceExecutor = class _WorkspaceExecutor extends Executor {
1346
1351
  workspaceRoot;
1347
1352
  repoName;
1348
- constructor({ workspaceRoot, repoName: repoName2 }) {
1349
- super(`${repoName2} Executor`, workspaceRoot);
1353
+ constructor({ workspaceRoot, repoName }) {
1354
+ super(`${repoName} Executor`, workspaceRoot);
1350
1355
  this.workspaceRoot = workspaceRoot;
1351
- this.repoName = repoName2;
1356
+ this.repoName = repoName;
1352
1357
  }
1353
1358
  static fromRoot() {
1354
- const repoName2 = import_path3.default.basename(process.cwd());
1355
- return new _WorkspaceExecutor({ workspaceRoot: process.cwd(), repoName: repoName2 });
1359
+ const repoName = import_path3.default.basename(process.cwd());
1360
+ return new _WorkspaceExecutor({ workspaceRoot: process.cwd(), repoName });
1356
1361
  }
1357
1362
  async scan() {
1358
1363
  const [appNames, libNames, pkgNames] = await Promise.all([this.getApps(), this.getLibs(), this.getPkgs()]);
1359
1364
  const [appScanResults, libScanResults, pkgScanResults] = await Promise.all([
1360
1365
  Promise.all(
1361
- appNames.map(async (appName2) => {
1362
- const app = AppExecutor.from(this, appName2);
1366
+ appNames.map(async (appName) => {
1367
+ const app = AppExecutor.from(this, appName);
1363
1368
  const akanConfig = await app.getConfig("scan");
1364
1369
  return await app.scan({ akanConfig });
1365
1370
  })
@@ -1433,7 +1438,7 @@ CMD ["npm", "start"]`,
1433
1438
  this.type = type;
1434
1439
  }
1435
1440
  async getConfig(command) {
1436
- return this.type === "app" ? await getAppConfig(this.cwdPath, { ...baseDevEnv, appName: this.name, command }) : await getLibConfig(this.cwdPath, { ...baseDevEnv, appName: this.name, command });
1441
+ return this.type === "app" ? await getAppConfig(this.cwdPath, { ...getBaseDevEnv(), appName: this.name, command }) : await getLibConfig(this.cwdPath, { ...getBaseDevEnv(), appName: this.name, command });
1437
1442
  }
1438
1443
  async scan({
1439
1444
  tsconfig = this.getTsConfig(`${this.cwdPath}/tsconfig.json`),
@@ -1587,7 +1592,7 @@ CMD ["npm", "start"]`,
1587
1592
  return new _AppExecutor({ workspace: executor.workspace, name });
1588
1593
  }
1589
1594
  async getConfig(command) {
1590
- return await getAppConfig(this.cwdPath, { ...baseDevEnv, appName: this.name, command });
1595
+ return await getAppConfig(this.cwdPath, { ...getBaseDevEnv(), appName: this.name, command });
1591
1596
  }
1592
1597
  async syncAssets(libDeps) {
1593
1598
  const projectPublicLibPath = `${this.cwdPath}/public/libs`;
@@ -1628,7 +1633,7 @@ CMD ["npm", "start"]`,
1628
1633
  return new _LibExecutor({ workspace: executor.workspace, name });
1629
1634
  }
1630
1635
  async getConfig(command) {
1631
- return await getLibConfig(this.cwdPath, { ...baseDevEnv, appName: this.name, command });
1636
+ return await getLibConfig(this.cwdPath, { ...getBaseDevEnv(), appName: this.name, command });
1632
1637
  }
1633
1638
  };
1634
1639
  PkgExecutor = class _PkgExecutor extends Executor {
@@ -1671,10 +1676,10 @@ CMD ["npm", "start"]`,
1671
1676
  workspaceRoot;
1672
1677
  repoName;
1673
1678
  name;
1674
- constructor({ workspaceRoot, repoName: repoName2, name }) {
1679
+ constructor({ workspaceRoot, repoName, name }) {
1675
1680
  super(`${name} Dist Pkg Executor`, `${workspaceRoot}/dist/pkgs/${name}`);
1676
1681
  this.workspaceRoot = workspaceRoot;
1677
- this.repoName = repoName2;
1682
+ this.repoName = repoName;
1678
1683
  this.name = name;
1679
1684
  }
1680
1685
  static from(workspaceExecutor, name) {
@@ -2052,11 +2057,12 @@ CMD ["npm", "start"]`,
2052
2057
  });
2053
2058
 
2054
2059
  // pkgs/@akanjs/devkit/src/commandDecorators/command.ts
2055
- var import_prompts3, import_commander, camelToKebabCase, handleOption, convertOptionValue, getOptionValue, getArgumentValue, runCommands;
2060
+ var import_prompts3, import_commander, import_dotenv, camelToKebabCase, handleOption, convertOptionValue, getOptionValue, getArgumentValue, runCommands;
2056
2061
  var init_command = __esm({
2057
2062
  "pkgs/@akanjs/devkit/src/commandDecorators/command.ts"() {
2058
2063
  import_prompts3 = __require("@inquirer/prompts");
2059
2064
  import_commander = __require("commander");
2065
+ import_dotenv = __toESM(__require("dotenv"));
2060
2066
  init_executors();
2061
2067
  init_argMeta();
2062
2068
  init_targetMeta();
@@ -2131,8 +2137,8 @@ CMD ["npm", "start"]`,
2131
2137
  if (value)
2132
2138
  return AppExecutor.from(workspace, value);
2133
2139
  const apps = await workspace.getApps();
2134
- const appName2 = await (0, import_prompts3.select)({ message: `Select the ${sysType} name`, choices: apps });
2135
- return AppExecutor.from(workspace, appName2);
2140
+ const appName = await (0, import_prompts3.select)({ message: `Select the ${sysType} name`, choices: apps });
2141
+ return AppExecutor.from(workspace, appName);
2136
2142
  } else if (sysType === "lib") {
2137
2143
  if (value)
2138
2144
  return LibExecutor.from(workspace, value);
@@ -2149,6 +2155,7 @@ CMD ["npm", "start"]`,
2149
2155
  throw new Error(`Invalid system type: ${argMeta.type}`);
2150
2156
  };
2151
2157
  runCommands = async (...commands) => {
2158
+ import_dotenv.default.config();
2152
2159
  import_commander.program.version("0.0.1").description("An example CLI for managing a directory");
2153
2160
  for (const command of commands) {
2154
2161
  const targetMetas = getTargetMetas(command);
@@ -3395,7 +3402,7 @@ page.tsx_end
3395
3402
  });
3396
3403
 
3397
3404
  // pkgs/@akanjs/cli/src/application/application.runner.ts
3398
- var import_prompts4, import_output_parsers, import_prompts5, import_runnables2, import_openai2, import_plugin_react, import_dotenv, esbuild, import_fs10, import_promises2, import_js_yaml2, import_ora2, import_path4, vite, import_vite_plugin_node_polyfills, import_vite_tsconfig_paths, ApplicationRunner;
3405
+ var import_prompts4, import_output_parsers, import_prompts5, import_runnables2, import_openai2, import_plugin_react, import_dotenv2, esbuild, import_fs10, import_promises2, import_js_yaml2, import_ora2, import_path4, vite, import_vite_plugin_node_polyfills, import_vite_tsconfig_paths, ApplicationRunner;
3399
3406
  var init_application_runner = __esm({
3400
3407
  "pkgs/@akanjs/cli/src/application/application.runner.ts"() {
3401
3408
  init_src();
@@ -3407,7 +3414,7 @@ page.tsx_end
3407
3414
  import_runnables2 = __require("@langchain/core/runnables");
3408
3415
  import_openai2 = __require("@langchain/openai");
3409
3416
  import_plugin_react = __toESM(__require("@vitejs/plugin-react"));
3410
- import_dotenv = __toESM(__require("dotenv"));
3417
+ import_dotenv2 = __toESM(__require("dotenv"));
3411
3418
  esbuild = __toESM(__require("esbuild"));
3412
3419
  import_fs10 = __toESM(__require("fs"));
3413
3420
  import_promises2 = __toESM(__require("fs/promises"));
@@ -3420,20 +3427,20 @@ page.tsx_end
3420
3427
  init_application_prompt();
3421
3428
  ApplicationRunner = class {
3422
3429
  async scanSync(app) {
3423
- const akanConfig = await getAppConfig(app.cwdPath, { ...baseDevEnv, appName: app.name, command: "serve" });
3430
+ const akanConfig = await getAppConfig(app.cwdPath, { ...getBaseDevEnv(), appName: app.name, command: "serve" });
3424
3431
  const scanResult = await app.scan({ akanConfig });
3425
3432
  await app.syncAssets(scanResult.akanConfig.libs);
3426
3433
  return scanResult;
3427
3434
  }
3428
3435
  async #prepareCommand(app, distApp, type, target) {
3429
3436
  await distApp.exec(`rm -rf ${target}`);
3430
- const env2 = import_dotenv.default.parse(app.workspace.readFile(".env"));
3437
+ const env = import_dotenv2.default.parse(app.workspace.readFile(".env"));
3431
3438
  if (target === "frontend")
3432
3439
  app.writeFile("next.config.ts", defaultNextConfigFile);
3433
3440
  return {
3434
3441
  env: {
3435
3442
  ...process.env,
3436
- ...env2,
3443
+ ...env,
3437
3444
  AKAN_COMMAND_TYPE: type,
3438
3445
  NEXT_PUBLIC_APP_NAME: app.name,
3439
3446
  AKAN_WORKSPACE_ROOT: app.workspace.workspaceRoot
@@ -3466,7 +3473,7 @@ page.tsx_end
3466
3473
  distApp.writeFile(import_path4.default.join(distApp.cwdPath, "backend", "Dockerfile"), akanConfig.backend.dockerfile);
3467
3474
  }
3468
3475
  async serveBackend(app, distApp) {
3469
- const { env: env2 } = await this.#prepareCommand(app, distApp, "serve", "backend");
3476
+ const { env } = await this.#prepareCommand(app, distApp, "serve", "backend");
3470
3477
  const ctx = await esbuild.context({
3471
3478
  write: true,
3472
3479
  entryPoints: [`${app.cwdPath}/main.ts`],
@@ -3478,12 +3485,12 @@ page.tsx_end
3478
3485
  });
3479
3486
  await ctx.watch();
3480
3487
  await sleep(100);
3481
- await distApp.spawn("node", ["--watch", "backend/main.js"], { env: env2 });
3488
+ await distApp.spawn("node", ["--watch", "backend/main.js"], { env });
3482
3489
  }
3483
3490
  async buildFrontend(app, distApp) {
3484
- const { env: env2 } = await this.#prepareCommand(app, distApp, "build", "frontend");
3491
+ const { env } = await this.#prepareCommand(app, distApp, "build", "frontend");
3485
3492
  const akanConfig = await app.getConfig("build");
3486
- await app.spawn("npx", ["next", "build", "--no-lint"], { env: env2 });
3493
+ await app.spawn("npx", ["next", "build", "--no-lint"], { env });
3487
3494
  await esbuild.build({
3488
3495
  entryPoints: [`${app.cwdPath}/next.config.ts`],
3489
3496
  outdir: `${distApp.cwdPath}/frontend`,
@@ -3519,12 +3526,12 @@ page.tsx_end
3519
3526
  distApp.writeFile("frontend/Dockerfile", akanConfig.frontend.dockerfile);
3520
3527
  }
3521
3528
  async serveFrontend(app, distApp) {
3522
- const { env: env2 } = await this.#prepareCommand(app, distApp, "serve", "frontend");
3523
- await app.spawn("npx", ["next", "dev", "-p", "4200"], { env: env2 });
3529
+ const { env } = await this.#prepareCommand(app, distApp, "serve", "frontend");
3530
+ await app.spawn("npx", ["next", "dev", "-p", "4200"], { env });
3524
3531
  }
3525
3532
  async #getViteConfig(app, distApp) {
3526
- const { env: env2 } = await this.#prepareCommand(app, distApp, "build", "csr");
3527
- const processEnv = env2;
3533
+ const { env } = await this.#prepareCommand(app, distApp, "build", "csr");
3534
+ const processEnv = env;
3528
3535
  const akanjsPrefix = process.env.USE_AKANJS_PKGS === "true" ? "../../../../pkgs/" : "";
3529
3536
  const config = vite.defineConfig({
3530
3537
  root: `${app.cwdPath}/app`,
@@ -3837,11 +3844,11 @@ page.tsx_end
3837
3844
  local
3838
3845
  });
3839
3846
  }
3840
- async createApplicationTemplate(workspace, appName2) {
3847
+ async createApplicationTemplate(workspace, appName) {
3841
3848
  await workspace.applyTemplate({
3842
- basePath: `apps/${appName2}`,
3849
+ basePath: `apps/${appName}`,
3843
3850
  template: "appRoot",
3844
- dict: { appName: appName2, AppName: capitalize(appName2) }
3851
+ dict: { appName, AppName: capitalize(appName) }
3845
3852
  });
3846
3853
  }
3847
3854
  async generateApplicationTemplate(app) {
@@ -4191,6 +4198,30 @@ page.tsx_end
4191
4198
  plugins: [(0, import_esbuild_plugin_d.dtsPlugin)({ tsconfig: `${pkg.cwdPath}/tsconfig.json` })]
4192
4199
  });
4193
4200
  await pkg.workspace.exec(`rsync -aq ${pkg.cwdPath}/src/ ${distPkg.cwdPath}/src/`);
4201
+ } else if (pkg.name === "@akanjs/cli") {
4202
+ await esbuild2.build({
4203
+ write: true,
4204
+ entryPoints: [`${pkg.cwdPath}/index.ts`],
4205
+ bundle: true,
4206
+ packages: "external",
4207
+ outdir: distPkg.cwdPath,
4208
+ logLevel: "warning",
4209
+ plugins: [(0, import_esbuild_plugin_d.dtsPlugin)({ tsconfig: `${pkg.cwdPath}/tsconfig.json` })]
4210
+ });
4211
+ await esbuild2.build({
4212
+ write: true,
4213
+ entryPoints: [`${pkg.cwdPath}/src/templates/**/*.ts`, `${pkg.cwdPath}/src/templates/**/*.tsx`],
4214
+ bundle: true,
4215
+ packages: "external",
4216
+ outdir: `${distPkg.cwdPath}/src/templates`,
4217
+ outbase: `${pkg.cwdPath}/src/templates`,
4218
+ platform: "node",
4219
+ format: "cjs",
4220
+ footer: { js: "module.exports = module.exports.default;" }
4221
+ });
4222
+ await pkg.workspace.exec(
4223
+ `rsync -aq --exclude="*.ts" --exclude="*.tsx" ${pkg.cwdPath}/src/templates/ ${distPkg.cwdPath}/src/templates/`
4224
+ );
4194
4225
  } else {
4195
4226
  await esbuild2.build({
4196
4227
  write: true,
@@ -4633,12 +4664,12 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4633
4664
  const [appNames, libNames] = await sys2.workspace.getSyss();
4634
4665
  const scalarConstantExampleFiles = [
4635
4666
  ...(await Promise.all(
4636
- appNames.map(async (appName2) => {
4637
- const app = AppExecutor.from(sys2.workspace, appName2);
4667
+ appNames.map(async (appName) => {
4668
+ const app = AppExecutor.from(sys2.workspace, appName);
4638
4669
  const scalarModules = await app.getScalarModules();
4639
4670
  return await Promise.all(
4640
4671
  scalarModules.map((scalarModule) => ({
4641
- path: `${appName2}/${scalarModule}/${scalarModule}.constant.ts`,
4672
+ path: `${appName}/${scalarModule}/${scalarModule}.constant.ts`,
4642
4673
  content: app.readFile(`lib/__scalar/${scalarModule}/${scalarModule}.constant.ts`)
4643
4674
  }))
4644
4675
  );
@@ -4859,19 +4890,19 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4859
4890
  init_devkit();
4860
4891
  import_uuid2 = __require("uuid");
4861
4892
  WorkspaceRunner = class {
4862
- async createWorkspace(repoName2, appName2, dirname = ".") {
4893
+ async createWorkspace(repoName, appName, dirname = ".") {
4863
4894
  }
4864
4895
  async generateMongo(workspace) {
4865
4896
  const namespace = "00000000-0000-0000-0000-000000000000";
4866
4897
  const appNames = await workspace.getApps();
4867
- const apps = appNames.map((appName2) => AppExecutor.from(workspace, appName2));
4898
+ const apps = appNames.map((appName) => AppExecutor.from(workspace, appName));
4868
4899
  const appDatas = apps.reduce(
4869
4900
  (acc, app) => [
4870
4901
  ...acc,
4871
- ...["debug", "develop", "main"].map((env2) => ({
4902
+ ...["debug", "develop", "main"].map((env) => ({
4872
4903
  appName: app.name,
4873
- env: env2,
4874
- secret: getCredentials(app, env2)
4904
+ env,
4905
+ secret: getCredentials(app, env)
4875
4906
  }))
4876
4907
  ],
4877
4908
  []
@@ -4879,17 +4910,17 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4879
4910
  const mongoConnectionList = {
4880
4911
  type: "Compass Connections",
4881
4912
  version: { $numberInt: "1" },
4882
- connections: appDatas.map(({ appName: appName2, env: env2, secret }) => ({
4883
- id: (0, import_uuid2.v5)(`${appName2}-${env2}`, namespace),
4913
+ connections: appDatas.map(({ appName, env, secret }) => ({
4914
+ id: (0, import_uuid2.v5)(`${appName}-${env}`, namespace),
4884
4915
  favorite: {
4885
- name: `${appName2}-${env2}`,
4916
+ name: `${appName}-${env}`,
4886
4917
  color: "color9"
4887
4918
  },
4888
4919
  savedConnectionType: "favorite",
4889
4920
  connectionOptions: {
4890
- connectionString: `mongodb://${secret.mongo.account.user.username}:${secret.mongo.account.user.password}@mongo-0.mongo-svc.${appName2}-${env2}/?directConnection=true&authSource=${appName2}-${env2}`,
4921
+ connectionString: `mongodb://${secret.mongo.account.user.username}:${secret.mongo.account.user.password}@mongo-0.mongo-svc.${appName}-${env}/?directConnection=true&authSource=${appName}-${env}`,
4891
4922
  sshTunnel: {
4892
- host: `${appName2}-${env2}.akamir.com`,
4923
+ host: `${appName}-${env}.akamir.com`,
4893
4924
  port: "32767",
4894
4925
  username: "root",
4895
4926
  password: "akamir"
@@ -4919,10 +4950,10 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4919
4950
  init_workspace_runner();
4920
4951
  WorkspaceScript = class {
4921
4952
  #runner = new WorkspaceRunner();
4922
- async createWorkspace(repoName2, appName2, dirname = ".") {
4953
+ async createWorkspace(repoName, appName, dirname = ".") {
4923
4954
  const cwdPath = process.cwd();
4924
- const workspaceRoot = import_path5.default.join(cwdPath, dirname, repoName2);
4925
- const workspace = new WorkspaceExecutor({ workspaceRoot, repoName: repoName2 });
4955
+ const workspaceRoot = import_path5.default.join(cwdPath, dirname, repoName);
4956
+ const workspace = new WorkspaceExecutor({ workspaceRoot, repoName });
4926
4957
  const dependencies = [
4927
4958
  "@akanjs/base",
4928
4959
  "@akanjs/cli",
@@ -4943,9 +4974,9 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4943
4974
  const devDependencies = ["@akanjs/test", "@akanjs/devkit"];
4944
4975
  const latestPublishedVersionOfBase = await (0, import_latest_version2.default)("@akanjs/base");
4945
4976
  const packageJson = {
4946
- name: repoName2,
4977
+ name: repoName,
4947
4978
  version: "0.0.1",
4948
- description: `${repoName2} workspace`,
4979
+ description: `${repoName} workspace`,
4949
4980
  dependencies: Object.fromEntries(dependencies.map((dependency) => [dependency, latestPublishedVersionOfBase])),
4950
4981
  devDependencies: Object.fromEntries(
4951
4982
  devDependencies.map((dependency) => [dependency, latestPublishedVersionOfBase])
@@ -4955,7 +4986,7 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4955
4986
  await workspace.applyTemplate({
4956
4987
  basePath: ".",
4957
4988
  template: "workspaceRoot",
4958
- dict: { repoName: repoName2, RepoName: capitalize(repoName2) }
4989
+ dict: { repoName, RepoName: capitalize(repoName) }
4959
4990
  });
4960
4991
  workspace.log("Installing dependencies...");
4961
4992
  await workspace.spawn("pnpm", ["i"]);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "commonjs",
3
3
  "name": "@akanjs/cli",
4
- "version": "0.0.42",
4
+ "version": "0.0.44",
5
5
  "bin": {
6
6
  "akan": "index.js"
7
7
  },
@@ -0,0 +1,36 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // pkgs/@akanjs/cli/src/templates/__scalar/__model__/__model__.constant.ts
20
+ var model_constant_exports = {};
21
+ __export(model_constant_exports, {
22
+ default: () => getContent
23
+ });
24
+ module.exports = __toCommonJS(model_constant_exports);
25
+ function getContent(scanResult, dict) {
26
+ return `
27
+ import { Field, Model } from "@akanjs/constant";
28
+
29
+ @Model.Scalar("${dict.Model}")
30
+ export class ${dict.Model} {
31
+ @Field.Prop(() => String)
32
+ field: string;
33
+ }
34
+ `;
35
+ }
36
+ module.exports = module.exports.default;
@@ -0,0 +1,47 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // pkgs/@akanjs/cli/src/templates/__scalar/__model__/__model__.dictionary.ts
20
+ var model_dictionary_exports = {};
21
+ __export(model_dictionary_exports, {
22
+ default: () => getContent
23
+ });
24
+ module.exports = __toCommonJS(model_dictionary_exports);
25
+ function getContent(scanResult, dict) {
26
+ return `
27
+ import { ModelDictionary } from "@akanjs/dictionary";
28
+
29
+ import type { ${dict.Model} } from "./${dict.model}.constant";
30
+
31
+ const modelDictionary = {
32
+ modelName: ["${dict.Model}", "${dict.Model}"],
33
+ modelDesc: ["${dict.Model}", "${dict.Model}"],
34
+
35
+ // * ==================== Model ==================== * //
36
+ field: ["Field", "\uD544\uB4DC"],
37
+ "desc-field": ["Field", "\uD544\uB4DC"],
38
+ // * ==================== Model ==================== * //
39
+
40
+ // * ==================== Etc ==================== * //
41
+ // * ==================== Etc ==================== * //
42
+ } satisfies ModelDictionary<${dict.Model}>;
43
+
44
+ export const ${dict.model}Dictionary = modelDictionary;
45
+ `;
46
+ }
47
+ module.exports = module.exports.default;
@@ -0,0 +1,34 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // pkgs/@akanjs/cli/src/templates/__scalar/__model__/__model__.document.ts
20
+ var model_document_exports = {};
21
+ __export(model_document_exports, {
22
+ default: () => getContent
23
+ });
24
+ module.exports = __toCommonJS(model_document_exports);
25
+ function getContent(scanResult, dict) {
26
+ return `
27
+ import { by } from "@akanjs/document";
28
+
29
+ import * as cnst from "./${dict.model}.constant";
30
+
31
+ export class ${dict.Model} extends by(cnst.${dict.Model}) {}
32
+ `;
33
+ }
34
+ module.exports = module.exports.default;
@@ -0,0 +1,5 @@
1
+ import type { AppConfig } from "@akanjs/config";
2
+
3
+ const config: AppConfig = {};
4
+
5
+ export default config;