@akanjs/cli 0.0.65 → 0.0.67

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.
package/index.js CHANGED
@@ -897,10 +897,29 @@ var TypeScriptDependencyScanner = class {
897
897
  if (ts2.isStringLiteral(moduleSpecifier))
898
898
  imports.push(moduleSpecifier.text);
899
899
  }
900
+ if (ts2.isCallExpression(node)) {
901
+ if (node.expression.kind === ts2.SyntaxKind.ImportKeyword) {
902
+ if (node.arguments.length > 0) {
903
+ const arg = node.arguments[0];
904
+ if (ts2.isStringLiteral(arg))
905
+ imports.push(arg.text);
906
+ }
907
+ }
908
+ if (ts2.isArrowFunction(node.expression) && node.expression.body) {
909
+ const body = node.expression.body;
910
+ if (ts2.isCallExpression(body) && body.expression.kind === ts2.SyntaxKind.ImportKeyword) {
911
+ if (body.arguments.length > 0) {
912
+ const arg = body.arguments[0];
913
+ if (ts2.isStringLiteral(arg))
914
+ imports.push(arg.text);
915
+ }
916
+ }
917
+ }
918
+ }
900
919
  ts2.forEachChild(node, visit);
901
920
  };
902
921
  visit(sourceFile);
903
- return imports;
922
+ return [...new Set(imports)];
904
923
  }
905
924
  generateDependencyGraph() {
906
925
  let graph = "Dependency Graph:\n\n";
@@ -1856,6 +1875,7 @@ var Target = {
1856
1875
  // pkgs/@akanjs/devkit/src/commandDecorators/command.ts
1857
1876
  var import_prompts3 = require("@inquirer/prompts");
1858
1877
  var import_commander = require("commander");
1878
+ var import_fs10 = __toESM(require("fs"), 1);
1859
1879
  var camelToKebabCase = (str) => str.replace(/([A-Z])/g, "-$1").toLowerCase();
1860
1880
  var handleOption = (programCommand, argMeta) => {
1861
1881
  const {
@@ -1945,7 +1965,9 @@ var getArgumentValue = async (argMeta, value, workspace) => {
1945
1965
  throw new Error(`Invalid system type: ${argMeta.type}`);
1946
1966
  };
1947
1967
  var runCommands = async (...commands) => {
1948
- import_commander.program.version("0.0.1").description("An example CLI for managing a directory");
1968
+ const hasPackageJson = import_fs10.default.existsSync("package.json");
1969
+ const version = hasPackageJson ? JSON.parse(import_fs10.default.readFileSync("package.json", "utf8")).version : "0.0.1";
1970
+ import_commander.program.version(version).description("Akan CLI");
1949
1971
  for (const command of commands) {
1950
1972
  const targetMetas = getTargetMetas(command);
1951
1973
  for (const targetMeta of targetMetas) {
@@ -2089,7 +2111,7 @@ var LibraryRunner = class {
2089
2111
  })
2090
2112
  );
2091
2113
  Object.keys(allDependencies).sort().forEach((dep) => {
2092
- if (!!rootDependencies[dep] || !!libDependencies[dep])
2114
+ if (!!libPackageJson.dependencies?.[dep] || !!rootPackageJson.dependencies?.[dep])
2093
2115
  dependencies[dep] = allDependencies[dep];
2094
2116
  else
2095
2117
  devDependencies[dep] = allDependencies[dep];
@@ -2138,6 +2160,7 @@ var LibraryScript = class {
2138
2160
  }
2139
2161
  async pullLibrary(lib, branch) {
2140
2162
  await this.#runner.pullLibrary(lib, branch);
2163
+ await this.#runner.mergeLibraryDependencies(lib);
2141
2164
  }
2142
2165
  };
2143
2166
 
@@ -2150,7 +2173,7 @@ var import_openai3 = require("@langchain/openai");
2150
2173
  var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
2151
2174
  var import_dotenv = __toESM(require("dotenv"));
2152
2175
  var esbuild = __toESM(require("esbuild"));
2153
- var import_fs10 = __toESM(require("fs"));
2176
+ var import_fs11 = __toESM(require("fs"));
2154
2177
  var import_promises2 = __toESM(require("fs/promises"));
2155
2178
  var import_js_yaml2 = __toESM(require("js-yaml"));
2156
2179
  var import_ora2 = __toESM(require("ora"));
@@ -3319,7 +3342,7 @@ var ApplicationRunner = class {
3319
3342
  app.log(`CSR server is running on http://localhost:4201`);
3320
3343
  }
3321
3344
  async #prepareIos(app) {
3322
- const isAdded = import_fs10.default.existsSync(`${app.cwdPath}/ios/App/Podfile`);
3345
+ const isAdded = import_fs11.default.existsSync(`${app.cwdPath}/ios/App/Podfile`);
3323
3346
  if (!isAdded) {
3324
3347
  await app.spawn("npx", ["cap", "add", "ios"]);
3325
3348
  await app.spawn("npx", ["@capacitor/assets", "generate"]);
@@ -3354,7 +3377,7 @@ var ApplicationRunner = class {
3354
3377
  await capacitorApp.releaseIos();
3355
3378
  }
3356
3379
  async #prepareAndroid(app) {
3357
- const isAdded = import_fs10.default.existsSync(`${app.cwdPath}/android/app/build.gradle`);
3380
+ const isAdded = import_fs11.default.existsSync(`${app.cwdPath}/android/app/build.gradle`);
3358
3381
  if (!isAdded) {
3359
3382
  await app.spawn("npx", ["cap", "add", "android"]);
3360
3383
  await app.spawn("npx", ["@capacitor/assets", "generate"]);
@@ -3437,14 +3460,14 @@ var ApplicationRunner = class {
3437
3460
  const buildRoot = `${app.workspace.workspaceRoot}/releases/builds/${app.name}`;
3438
3461
  const appVersionInfo = import_js_yaml2.default.load(app.readFile("config.yaml"));
3439
3462
  const platformVersion = appVersionInfo.platforms.android.versionName;
3440
- if (import_fs10.default.existsSync(buildRoot))
3463
+ if (import_fs11.default.existsSync(buildRoot))
3441
3464
  await import_promises2.default.rm(buildRoot, { recursive: true, force: true });
3442
3465
  await import_promises2.default.mkdir(buildRoot, { recursive: true });
3443
- if (rebuild || !import_fs10.default.existsSync(`${distApp.cwdPath}/backend`))
3466
+ if (rebuild || !import_fs11.default.existsSync(`${distApp.cwdPath}/backend`))
3444
3467
  await this.buildBackend(app, distApp);
3445
- if (rebuild || !import_fs10.default.existsSync(`${distApp.cwdPath}/frontend`))
3468
+ if (rebuild || !import_fs11.default.existsSync(`${distApp.cwdPath}/frontend`))
3446
3469
  await this.buildFrontend(app, distApp);
3447
- if (rebuild || !import_fs10.default.existsSync(`${distApp.cwdPath}/csr`))
3470
+ if (rebuild || !import_fs11.default.existsSync(`${distApp.cwdPath}/csr`))
3448
3471
  await this.buildCsr(app, distApp);
3449
3472
  const buildVersion = `${platformVersion}-${buildNum}`;
3450
3473
  const buildPath = `${buildRoot}/${buildVersion}`;
@@ -3459,7 +3482,7 @@ var ApplicationRunner = class {
3459
3482
  buildRoot,
3460
3483
  "./"
3461
3484
  ]);
3462
- if (import_fs10.default.existsSync(`${distApp.cwdPath}/csr`)) {
3485
+ if (import_fs11.default.existsSync(`${distApp.cwdPath}/csr`)) {
3463
3486
  await import_promises2.default.cp(`${distApp.cwdPath}/csr`, "./csr", { recursive: true });
3464
3487
  await app.workspace.spawn("zip", [
3465
3488
  "-r",
@@ -3469,7 +3492,7 @@ var ApplicationRunner = class {
3469
3492
  await import_promises2.default.rm("./csr", { recursive: true, force: true });
3470
3493
  }
3471
3494
  const sourceRoot = `${app.workspace.workspaceRoot}/releases/sources/${app.name}`;
3472
- if (import_fs10.default.existsSync(sourceRoot)) {
3495
+ if (import_fs11.default.existsSync(sourceRoot)) {
3473
3496
  const MAX_RETRY = 3;
3474
3497
  for (let i = 0; i < MAX_RETRY; i++) {
3475
3498
  try {
@@ -3489,7 +3512,7 @@ var ApplicationRunner = class {
3489
3512
  await Promise.all(
3490
3513
  [".next", "ios", "android", "public/libs"].map(async (path7) => {
3491
3514
  const targetPath = `${sourceRoot}/apps/${app.name}/${path7}`;
3492
- if (import_fs10.default.existsSync(targetPath))
3515
+ if (import_fs11.default.existsSync(targetPath))
3493
3516
  await import_promises2.default.rm(targetPath, { recursive: true, force: true });
3494
3517
  })
3495
3518
  );
@@ -3517,8 +3540,8 @@ var ApplicationRunner = class {
3517
3540
  []
3518
3541
  )
3519
3542
  ]);
3520
- import_fs10.default.writeFileSync(`${sourceRoot}/tsconfig.json`, JSON.stringify(tsconfig, null, 2));
3521
- import_fs10.default.writeFileSync(
3543
+ import_fs11.default.writeFileSync(`${sourceRoot}/tsconfig.json`, JSON.stringify(tsconfig, null, 2));
3544
+ import_fs11.default.writeFileSync(
3522
3545
  `${sourceRoot}/README.md`,
3523
3546
  `# ${app.name}
3524
3547
  \uBCF8 \uD504\uB85C\uC81D\uD2B8\uC758 \uC18C\uC2A4\uCF54\uB4DC \uBC0F \uAD00\uB828\uC790\uB8CC\uB294 \uBAA8\uB450 \uBE44\uBC00\uC815\uBCF4\uB85C \uAD00\uB9AC\uB429\uB2C8\uB2E4.
@@ -3911,6 +3934,7 @@ ApplicationCommand = __decorateClass([
3911
3934
  // pkgs/@akanjs/cli/src/package/package.runner.ts
3912
3935
  var esbuild2 = __toESM(require("esbuild"));
3913
3936
  var import_esbuild_plugin_d = require("esbuild-plugin-d.ts");
3937
+ var import_fs12 = __toESM(require("fs"));
3914
3938
  var import_promises3 = __toESM(require("fs/promises"));
3915
3939
  var PackageRunner = class {
3916
3940
  async version(workspace) {
@@ -3932,8 +3956,8 @@ var PackageRunner = class {
3932
3956
  async buildPackage(pkg, distPkg) {
3933
3957
  const rootPackageJson = pkg.workspace.readJson("package.json");
3934
3958
  const pkgJson = pkg.readJson("package.json");
3935
- await pkg.workspace.exec(`rm -rf dist/${pkg.name}`);
3936
- await import_promises3.default.rm(`dist/pkgs/${pkg.name}`, { force: true, recursive: true });
3959
+ if (import_fs12.default.existsSync(distPkg.cwdPath))
3960
+ await pkg.workspace.exec(`rm -rf ${distPkg.cwdPath}`);
3937
3961
  let buildResult;
3938
3962
  if (pkg.name === "@akanjs/config") {
3939
3963
  buildResult = await esbuild2.build({
@@ -4007,12 +4031,22 @@ var PackageRunner = class {
4007
4031
  plugins: []
4008
4032
  });
4009
4033
  }
4034
+ const allDependencies = {
4035
+ ...rootPackageJson.dependencies,
4036
+ ...rootPackageJson.devDependencies,
4037
+ ...rootPackageJson.peerDependencies
4038
+ };
4010
4039
  const dependencies = buildResult.outputFiles ? extractDependencies(buildResult.outputFiles, rootPackageJson) : {};
4011
4040
  const pkgPackageJson = {
4012
4041
  ...pkgJson,
4013
4042
  main: "./index.js",
4014
4043
  engines: { node: ">=22" },
4015
4044
  dependencies,
4045
+ ...pkgJson.peerDependencies ? {
4046
+ peerDependencies: Object.fromEntries(
4047
+ Object.keys(pkgJson.peerDependencies).sort().map((dep) => [dep, allDependencies[dep] ?? pkgJson.peerDependencies?.[dep] ?? "0.0.0"])
4048
+ )
4049
+ } : {},
4016
4050
  ...["@akanjs/config", "@akanjs/cli"].includes(pkg.name) ? {} : {
4017
4051
  exports: {
4018
4052
  ".": {
@@ -4026,6 +4060,7 @@ var PackageRunner = class {
4026
4060
  if (buildResult.outputFiles)
4027
4061
  buildResult.outputFiles.map((file) => distPkg.writeFile(file.path, file.text));
4028
4062
  distPkg.writeJson("package.json", pkgPackageJson);
4063
+ pkg.writeJson("package.json", pkgPackageJson);
4029
4064
  }
4030
4065
  };
4031
4066
 
@@ -4279,14 +4314,14 @@ var import_output_parsers2 = require("@langchain/core/output_parsers");
4279
4314
  var import_prompts8 = require("@langchain/core/prompts");
4280
4315
  var import_runnables3 = require("@langchain/core/runnables");
4281
4316
  var import_openai4 = require("@langchain/openai");
4282
- var import_fs11 = __toESM(require("fs"));
4317
+ var import_fs13 = __toESM(require("fs"));
4283
4318
  var ModuleRunner = class {
4284
4319
  async createModule(workspace, moduleName) {
4285
4320
  const openAIApiKey = process.env.OPENAI_API_KEY;
4286
4321
  if (!openAIApiKey)
4287
4322
  throw new Error("OPENAI_API_KEY is not set");
4288
4323
  const chatModel = new import_openai4.ChatOpenAI({ modelName: "gpt-4o", openAIApiKey });
4289
- const projectConfig = JSON.parse(import_fs11.default.readFileSync(`rootPath/projectConfig.json`, "utf-8"));
4324
+ const projectConfig = JSON.parse(import_fs13.default.readFileSync(`rootPath/projectConfig.json`, "utf-8"));
4290
4325
  const mainPrompt = import_prompts8.PromptTemplate.fromTemplate(requestModule());
4291
4326
  const chain = import_runnables3.RunnableSequence.from([mainPrompt, chatModel, new import_output_parsers2.StringOutputParser()]);
4292
4327
  const resultOne = await chain.invoke({
@@ -4340,7 +4375,7 @@ ${paths ? new Array(paths.size).fill(0).map((_, index) => {
4340
4375
  if (!filePath)
4341
4376
  throw new Error("filePath is undefined");
4342
4377
  return `${key}
4343
- \`\`\`${import_fs11.default.readFileSync(filePath, "utf8")}\`\`\`\`
4378
+ \`\`\`${import_fs13.default.readFileSync(filePath, "utf8")}\`\`\`\`
4344
4379
 
4345
4380
  `;
4346
4381
  }) : ""}
@@ -4355,11 +4390,11 @@ css\uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 DaisyUI\uB97C \uAE30\uBC18\uC73C\uB85C \
4355
4390
  ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uB514\uC790\uC778\uD574\uC11C \uC791\uC131\uD574\uC918.
4356
4391
  `;
4357
4392
  try {
4358
- import_fs11.default.writeFileSync("./local/prompt.txt", prompt);
4393
+ import_fs13.default.writeFileSync("./local/prompt.txt", prompt);
4359
4394
  const { content } = await streamAi(prompt, (chunk) => {
4360
4395
  process.stdout.write(chunk);
4361
4396
  });
4362
- import_fs11.default.writeFileSync("./local/result.txt", content);
4397
+ import_fs13.default.writeFileSync("./local/result.txt", content);
4363
4398
  } catch (error) {
4364
4399
  }
4365
4400
  }
@@ -4386,7 +4421,7 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4386
4421
  if (!filePath)
4387
4422
  throw new Error("filePath is undefined");
4388
4423
  return `${key}
4389
- \`\`\`${import_fs11.default.readFileSync(filePath, "utf8")}\`\`\`\`
4424
+ \`\`\`${import_fs13.default.readFileSync(filePath, "utf8")}\`\`\`\`
4390
4425
 
4391
4426
  `;
4392
4427
  }) : ""}
@@ -4401,11 +4436,11 @@ ${names.Model}.Unit.Card\uC758 \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C
4401
4436
  ${names.Model}.View.General \uB9AC\uC561\uD2B8 \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uB514\uC790\uC778\uD574\uC11C \uC791\uC131\uD574\uC918.
4402
4437
  `;
4403
4438
  try {
4404
- import_fs11.default.writeFileSync("./local/prompt.txt", prompt);
4439
+ import_fs13.default.writeFileSync("./local/prompt.txt", prompt);
4405
4440
  const { content } = await streamAi(prompt, (chunk) => {
4406
4441
  process.stdout.write(chunk);
4407
4442
  });
4408
- import_fs11.default.writeFileSync("./local/result.txt", content);
4443
+ import_fs13.default.writeFileSync("./local/result.txt", content);
4409
4444
  } catch (error) {
4410
4445
  }
4411
4446
  }
@@ -4727,7 +4762,7 @@ WorkspaceCommand = __decorateClass([
4727
4762
  ], WorkspaceCommand);
4728
4763
 
4729
4764
  // pkgs/@akanjs/cli/index.ts
4730
- require("dotenv").config();
4765
+ require("dotenv").config({ path: `${process.cwd()}/.env` });
4731
4766
  void runCommands(
4732
4767
  WorkspaceCommand,
4733
4768
  ApplicationCommand,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "commonjs",
3
3
  "name": "@akanjs/cli",
4
- "version": "0.0.65",
4
+ "version": "0.0.67",
5
5
  "bin": {
6
6
  "akan": "index.js"
7
7
  },
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env ts-node
2
1
  export declare class TypeScriptDependencyScanner {
3
2
  #private;
4
3
  readonly directory: string;