@nlabs/lex 1.46.2 → 1.47.1

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 (149) hide show
  1. package/__mocks__/LexConfig.js +20 -0
  2. package/__mocks__/boxen.js +7 -0
  3. package/__mocks__/build.js +16 -0
  4. package/__mocks__/chalk.js +23 -0
  5. package/__mocks__/compile.js +8 -0
  6. package/__mocks__/execa.js +21 -0
  7. package/__mocks__/ora.js +17 -0
  8. package/__mocks__/versions.js +12 -0
  9. package/dist/LexConfig.d.ts +79 -0
  10. package/dist/LexConfig.js +83 -15
  11. package/dist/commands/ai/ai.d.ts +17 -0
  12. package/dist/commands/ai/ai.js +303 -0
  13. package/dist/commands/ai/index.d.ts +8 -0
  14. package/dist/commands/ai/index.js +7 -0
  15. package/dist/commands/build/build.cli.test.d.ts +5 -0
  16. package/dist/commands/build/build.d.ts +18 -0
  17. package/dist/commands/build/build.integration.test.d.ts +1 -0
  18. package/dist/commands/build/build.js +400 -0
  19. package/dist/commands/build/build.options.test.d.ts +5 -0
  20. package/dist/commands/clean/clean.cli.test.d.ts +1 -0
  21. package/dist/commands/clean/clean.d.ts +7 -0
  22. package/dist/commands/clean/clean.integration.test.d.ts +1 -0
  23. package/dist/commands/clean/clean.js +31 -0
  24. package/dist/commands/clean/clean.options.test.d.ts +1 -0
  25. package/dist/commands/compile/compile.cli.test.d.ts +1 -0
  26. package/dist/commands/compile/compile.d.ts +2 -0
  27. package/dist/commands/compile/compile.integration.test.d.ts +1 -0
  28. package/dist/commands/compile/compile.js +239 -0
  29. package/dist/commands/compile/compile.options.test.d.ts +1 -0
  30. package/dist/commands/config/config.cli.test.d.ts +1 -0
  31. package/dist/commands/config/config.d.ts +7 -0
  32. package/dist/commands/config/config.integration.test.d.ts +1 -0
  33. package/dist/commands/config/config.js +43 -0
  34. package/dist/commands/config/config.options.test.d.ts +1 -0
  35. package/dist/commands/copy/copy.cli.test.d.ts +1 -0
  36. package/dist/commands/copy/copy.d.ts +6 -0
  37. package/dist/commands/copy/copy.integration.test.d.ts +1 -0
  38. package/dist/commands/copy/copy.js +38 -0
  39. package/dist/commands/copy/copy.options.test.d.ts +1 -0
  40. package/dist/commands/create/create.cli.test.d.ts +1 -0
  41. package/dist/commands/create/create.d.ts +8 -0
  42. package/dist/commands/create/create.integration.test.d.ts +1 -0
  43. package/dist/commands/create/create.js +124 -0
  44. package/dist/commands/create/create.options.test.d.ts +1 -0
  45. package/dist/commands/dev/dev.cli.test.d.ts +1 -0
  46. package/dist/commands/dev/dev.d.ts +11 -0
  47. package/dist/commands/dev/dev.integration.test.d.ts +1 -0
  48. package/dist/commands/dev/dev.js +70 -0
  49. package/dist/commands/dev/dev.options.test.d.ts +1 -0
  50. package/dist/commands/init/init.cli.test.d.ts +1 -0
  51. package/dist/commands/init/init.d.ts +9 -0
  52. package/dist/commands/init/init.integration.test.d.ts +1 -0
  53. package/dist/commands/init/init.js +93 -0
  54. package/dist/commands/init/init.options.test.d.ts +1 -0
  55. package/dist/commands/link/link.cli.test.d.ts +1 -0
  56. package/dist/commands/link/link.d.ts +6 -0
  57. package/dist/commands/link/link.integration.test.d.ts +1 -0
  58. package/dist/commands/link/link.js +15 -0
  59. package/dist/commands/link/link.options.test.d.ts +1 -0
  60. package/dist/commands/lint/autofix.d.ts +2 -0
  61. package/dist/commands/lint/lint.cli.test.d.ts +1 -0
  62. package/dist/commands/lint/lint.d.ts +39 -0
  63. package/dist/commands/lint/lint.integration.test.d.ts +1 -0
  64. package/dist/commands/lint/lint.js +820 -0
  65. package/dist/commands/lint/lint.options.test.d.ts +1 -0
  66. package/dist/commands/migrate/migrate.cli.test.d.ts +1 -0
  67. package/dist/commands/migrate/migrate.d.ts +7 -0
  68. package/dist/commands/migrate/migrate.integration.test.d.ts +1 -0
  69. package/dist/commands/migrate/migrate.js +37 -0
  70. package/dist/commands/migrate/migrate.options.test.d.ts +1 -0
  71. package/dist/commands/publish/publish.cli.test.d.ts +1 -0
  72. package/dist/commands/publish/publish.d.ts +12 -0
  73. package/dist/commands/publish/publish.integration.test.d.ts +1 -0
  74. package/dist/commands/publish/publish.js +104 -0
  75. package/dist/commands/publish/publish.options.test.d.ts +1 -0
  76. package/dist/commands/test/test.cli.test.d.ts +1 -0
  77. package/dist/commands/test/test.d.ts +50 -0
  78. package/dist/commands/test/test.integration.test.d.ts +1 -0
  79. package/dist/commands/test/test.js +327 -0
  80. package/dist/commands/test/test.options.test.d.ts +1 -0
  81. package/dist/commands/test/test.test.d.ts +1 -0
  82. package/dist/commands/update/update.cli.test.d.ts +1 -0
  83. package/dist/commands/update/update.d.ts +9 -0
  84. package/dist/commands/update/update.integration.test.d.ts +1 -0
  85. package/dist/commands/update/update.js +131 -0
  86. package/dist/commands/update/update.options.test.d.ts +1 -0
  87. package/dist/commands/upgrade/upgrade.cli.test.d.ts +1 -0
  88. package/dist/commands/upgrade/upgrade.d.ts +7 -0
  89. package/dist/commands/upgrade/upgrade.integration.test.d.ts +1 -0
  90. package/dist/commands/upgrade/upgrade.js +47 -0
  91. package/dist/commands/upgrade/upgrade.options.test.d.ts +1 -0
  92. package/dist/commands/versions/versions.cli.test.d.ts +1 -0
  93. package/dist/commands/versions/versions.d.ts +13 -0
  94. package/dist/commands/versions/versions.integration.test.d.ts +1 -0
  95. package/dist/commands/versions/versions.js +41 -0
  96. package/dist/commands/versions/versions.options.test.d.ts +1 -0
  97. package/dist/create/changelog.d.ts +6 -0
  98. package/dist/create/changelog.js +3 -3
  99. package/dist/index.d.ts +31 -0
  100. package/dist/index.js +35 -0
  101. package/dist/lex.d.ts +2 -0
  102. package/dist/lex.js +25 -22
  103. package/dist/types.d.ts +5 -0
  104. package/dist/types.js +1 -0
  105. package/dist/utils/aiService.d.ts +9 -0
  106. package/dist/utils/aiService.js +299 -0
  107. package/dist/utils/app.d.ts +41 -0
  108. package/dist/utils/app.js +53 -3
  109. package/dist/utils/file.d.ts +3 -0
  110. package/dist/utils/file.js +18 -3
  111. package/dist/utils/log.d.ts +1 -0
  112. package/dist/utils/log.js +2 -1
  113. package/dist/utils/reactShim.d.ts +2 -0
  114. package/dist/utils/reactShim.js +3 -3
  115. package/eslint.config.js +5 -0
  116. package/index.cjs +20 -0
  117. package/jest.config.cjs +31 -27
  118. package/jest.config.lex.d.ts +2 -0
  119. package/jest.config.lex.js +86 -38
  120. package/jest.setup.js +5 -0
  121. package/lex.config.js +50 -0
  122. package/package.json +73 -53
  123. package/{.postcssrc.js → postcss.config.js} +21 -9
  124. package/resolver.cjs +125 -14
  125. package/tsconfig.json +2 -1
  126. package/webpack.config.d.ts +2 -0
  127. package/webpack.config.js +27 -11
  128. package/dist/commands/build.js +0 -265
  129. package/dist/commands/bulid.test.js +0 -317
  130. package/dist/commands/clean.js +0 -31
  131. package/dist/commands/clean.test.js +0 -63
  132. package/dist/commands/compile.js +0 -195
  133. package/dist/commands/compile.test.js +0 -93
  134. package/dist/commands/config.js +0 -43
  135. package/dist/commands/copy.js +0 -38
  136. package/dist/commands/create.js +0 -120
  137. package/dist/commands/dev.js +0 -70
  138. package/dist/commands/init.js +0 -93
  139. package/dist/commands/link.js +0 -15
  140. package/dist/commands/lint.js +0 -179
  141. package/dist/commands/migrate.js +0 -37
  142. package/dist/commands/publish.js +0 -104
  143. package/dist/commands/test.js +0 -190
  144. package/dist/commands/update.js +0 -64
  145. package/dist/commands/upgrade.js +0 -47
  146. package/dist/commands/versions.js +0 -41
  147. package/dist/commands/versions.test.js +0 -49
  148. package/dist/lint.js +0 -11
  149. package/jest.setup.ts +0 -3
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ export interface MigrateOptions {
2
+ readonly cliName?: string;
3
+ readonly packageManager?: string;
4
+ readonly quiet?: boolean;
5
+ }
6
+ export type MigrateCallback = typeof process.exit;
7
+ export declare const migrate: (cmd: MigrateOptions, callback?: MigrateCallback) => Promise<number>;
@@ -0,0 +1,37 @@
1
+ import { execa } from "execa";
2
+ import { LexConfig } from "../../LexConfig.js";
3
+ import { createSpinner, getPackageJson, removeConflictModules, removeModules } from "../../utils/app.js";
4
+ import { log } from "../../utils/log.js";
5
+ const migrate = async (cmd, callback = process.exit) => {
6
+ const { cliName = "Lex", packageManager: cmdPackageManager, quiet } = cmd;
7
+ const cwd = process.cwd();
8
+ const spinner = createSpinner(quiet);
9
+ spinner.start("Removing node modules...");
10
+ await removeModules();
11
+ const { packageManager: configPackageManager } = LexConfig.config;
12
+ const packageManager = cmdPackageManager || configPackageManager;
13
+ const packagePath = `${cwd}/package.json`;
14
+ const appPackage = getPackageJson(packagePath);
15
+ const { dependencies = {}, devDependencies = {} } = appPackage;
16
+ appPackage.dependencies = removeConflictModules(dependencies);
17
+ appPackage.devDependencies = removeConflictModules(devDependencies);
18
+ try {
19
+ await execa(packageManager, ["install"], {
20
+ encoding: "utf8",
21
+ stdio: "inherit"
22
+ });
23
+ spinner.succeed("Successfully migrated app!");
24
+ callback(0);
25
+ return 0;
26
+ } catch (error) {
27
+ log(`
28
+ ${cliName} Error: ${error.message}`, "error", quiet);
29
+ spinner.fail("Failed to remove modules.");
30
+ callback(1);
31
+ return 1;
32
+ }
33
+ };
34
+ export {
35
+ migrate
36
+ };
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL21pZ3JhdGUvbWlncmF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCByZW1vdmVDb25mbGljdE1vZHVsZXMsIHJlbW92ZU1vZHVsZXN9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIE1pZ3JhdGVDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRlID0gYXN5bmMgKGNtZDogTWlncmF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBNaWdyYXRlQ2FsbGJhY2sgPSBwcm9jZXNzLmV4aXQpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0fSA9IGNtZDtcblxuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gLy8gRGlzcGxheSBtZXNzYWdlXG4gIC8vIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdSZW1vdmluZyBub2RlIG1vZHVsZXMuLi4nKTtcblxuICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gIGF3YWl0IHJlbW92ZU1vZHVsZXMoKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlcjtcbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vcGFja2FnZS5qc29uYDtcbiAgY29uc3QgYXBwUGFja2FnZSA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgY29uc3Qge2RlcGVuZGVuY2llcyA9IHt9LCBkZXZEZXBlbmRlbmNpZXMgPSB7fX0gPSBhcHBQYWNrYWdlO1xuXG4gIC8vIFJlbW92ZSBFU0J1aWxkLCBKZXN0IGFuZCBXZWJwYWNrIGZyb20gYXBwIHNpbmNlIGl0IHdpbGwgY29uZmxpY3RcbiAgYXBwUGFja2FnZS5kZXBlbmRlbmNpZXMgPSByZW1vdmVDb25mbGljdE1vZHVsZXMoZGVwZW5kZW5jaWVzKTtcbiAgYXBwUGFja2FnZS5kZXZEZXBlbmRlbmNpZXMgPSByZW1vdmVDb25mbGljdE1vZHVsZXMoZGV2RGVwZW5kZW5jaWVzKTtcblxuICAvLyBJbnN0YWxsIG5ldyBsaXN0IG9mIHBhY2thZ2VzXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EocGFja2FnZU1hbmFnZXIsIFsnaW5zdGFsbCddLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgLy8gU3RvcCBsb2FkZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBtaWdyYXRlZCBhcHAhJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHJlbW92ZSBtb2R1bGVzLicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxhQUFZO0FBRXBCLFNBQVEsaUJBQWdCO0FBQ3hCLFNBQVEsZUFBZSxnQkFBZ0IsdUJBQXVCLHFCQUFvQjtBQUNsRixTQUFRLFdBQVU7QUFVWCxNQUFNLFVBQVUsT0FBTyxLQUFxQixXQUE0QixRQUFRLFNBQTBCO0FBQy9HLFFBQU0sRUFBQyxVQUFVLE9BQU8sZ0JBQWdCLG1CQUFtQixNQUFLLElBQUk7QUFFcEUsUUFBTSxNQUFjLFFBQVEsSUFBSTtBQU1oQyxRQUFNLFVBQVUsY0FBYyxLQUFLO0FBQ25DLFVBQVEsTUFBTSwwQkFBMEI7QUFHeEMsUUFBTSxjQUFjO0FBRXBCLFFBQU0sRUFBQyxnQkFBZ0IscUJBQW9CLElBQUksVUFBVTtBQUN6RCxRQUFNLGlCQUF5QixxQkFBcUI7QUFDcEQsUUFBTSxjQUFzQixHQUFHLEdBQUc7QUFDbEMsUUFBTSxhQUFhLGVBQWUsV0FBVztBQUM3QyxRQUFNLEVBQUMsZUFBZSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsRUFBQyxJQUFJO0FBR2xELGFBQVcsZUFBZSxzQkFBc0IsWUFBWTtBQUM1RCxhQUFXLGtCQUFrQixzQkFBc0IsZUFBZTtBQUdsRSxNQUFJO0FBQ0YsVUFBTSxNQUFNLGdCQUFnQixDQUFDLFNBQVMsR0FBRztBQUFBLE1BQ3ZDLFVBQVU7QUFBQSxNQUNWLE9BQU87QUFBQSxJQUNULENBQUM7QUFHRCxZQUFRLFFBQVEsNEJBQTRCO0FBRzVDLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNULFNBQVEsT0FBTztBQUViLFFBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFHMUQsWUFBUSxLQUFLLDJCQUEyQjtBQUd4QyxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ export interface PublishOptions {
2
+ readonly bump?: string;
3
+ readonly cliName?: string;
4
+ readonly newVersion?: string;
5
+ readonly otp?: string;
6
+ readonly packageManager?: string;
7
+ readonly private?: boolean;
8
+ readonly quiet?: boolean;
9
+ readonly tag?: string;
10
+ }
11
+ export type PublishCallback = typeof process.exit;
12
+ export declare const publish: (cmd: PublishOptions, callback?: PublishCallback) => Promise<number>;
@@ -0,0 +1,104 @@
1
+ import { execa } from "execa";
2
+ import semver from "semver";
3
+ import { LexConfig } from "../../LexConfig.js";
4
+ import { createSpinner, getPackageJson, setPackageJson } from "../../utils/app.js";
5
+ import { log } from "../../utils/log.js";
6
+ const publish = async (cmd, callback = process.exit) => {
7
+ const { bump, cliName = "Lex", newVersion, otp, packageManager: cmdPackageManager, private: accessPrivate, tag, quiet } = cmd;
8
+ log(`${cliName} publishing npm module...`, "info", quiet);
9
+ const spinner = createSpinner(quiet);
10
+ await LexConfig.parseConfig(cmd);
11
+ const { packageManager: configPackageManager } = LexConfig.config;
12
+ const packageManager = cmdPackageManager || configPackageManager;
13
+ const publishOptions = ["publish"];
14
+ if (accessPrivate) {
15
+ publishOptions.push("--access", "restricted");
16
+ }
17
+ if (otp) {
18
+ publishOptions.push("--otp", otp);
19
+ }
20
+ if (tag) {
21
+ publishOptions.push("--tag", tag);
22
+ }
23
+ let nextVersion;
24
+ const packagePath = `${process.cwd()}/package.json`;
25
+ let packageJson;
26
+ let packageName;
27
+ let prevVersion;
28
+ try {
29
+ packageJson = getPackageJson(packagePath);
30
+ packageName = packageJson.name;
31
+ prevVersion = packageJson.version;
32
+ } catch (error) {
33
+ log(`
34
+ ${cliName} Error: The file, ${packagePath}, was not found or is malformed.
35
+ `, "error", quiet);
36
+ log(error.message, "error");
37
+ callback(1);
38
+ return 1;
39
+ }
40
+ if (newVersion) {
41
+ nextVersion = newVersion;
42
+ } else if (bump) {
43
+ const formatBump = bump.toString().trim().toLowerCase();
44
+ if (formatBump) {
45
+ const validReleases = ["major", "minor", "patch"];
46
+ const validPreReleases = ["alpha", "beta", "rc"];
47
+ const packageVersion = semver.coerce(prevVersion);
48
+ if (!semver.valid(packageVersion)) {
49
+ log(`
50
+ ${cliName} Error: Version is invalid in package.json`, "error", quiet);
51
+ callback(1);
52
+ return 1;
53
+ }
54
+ if (validReleases.includes(formatBump)) {
55
+ nextVersion = semver.inc(packageVersion, formatBump);
56
+ } else if (validPreReleases.includes(formatBump)) {
57
+ nextVersion = semver.inc(packageVersion, "prerelease", formatBump);
58
+ } else {
59
+ log(`
60
+ ${cliName} Error: Bump type is invalid. please make sure it is one of the following: ${validReleases.join(", ")}, ${validPreReleases.join(", ")}`, "error", quiet);
61
+ callback(1);
62
+ return 1;
63
+ }
64
+ } else {
65
+ log(`
66
+ ${cliName} Error: Bump type is missing.`, "error", quiet);
67
+ callback(1);
68
+ return 1;
69
+ }
70
+ }
71
+ if (nextVersion && packageManager === "yarn") {
72
+ publishOptions.push("--new-version", nextVersion);
73
+ } else if (nextVersion && packageJson) {
74
+ try {
75
+ setPackageJson({ ...packageJson, version: nextVersion }, packagePath);
76
+ } catch (error) {
77
+ log(`
78
+ ${cliName} Error: The file, ${packagePath}, was not found or is malformed. ${error.message}`, "error", quiet);
79
+ callback(1);
80
+ return 1;
81
+ }
82
+ } else {
83
+ nextVersion = prevVersion;
84
+ }
85
+ try {
86
+ await execa(packageManager, publishOptions, {
87
+ encoding: "utf8",
88
+ stdio: "inherit"
89
+ });
90
+ spinner.succeed(`Successfully published npm package: ${packageName}!`);
91
+ callback(0);
92
+ return 0;
93
+ } catch (error) {
94
+ log(`
95
+ ${cliName} Error: ${error.message}`, "error", quiet);
96
+ spinner.fail("Publishing to npm has failed.");
97
+ callback(1);
98
+ return 1;
99
+ }
100
+ };
101
+ export {
102
+ publish
103
+ };
104
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCBzZW12ZXIsIHtSZWxlYXNlVHlwZX0gZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCBzZXRQYWNrYWdlSnNvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVtcD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmV3VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgb3RwPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJpdmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBQdWJsaXNoQ2FsbGJhY2sgPSB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgcHVibGlzaCA9IGFzeW5jIChjbWQ6IFB1Ymxpc2hPcHRpb25zLCBjYWxsYmFjazogUHVibGlzaENhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bXAsIGNsaU5hbWUgPSAnTGV4JywgbmV3VmVyc2lvbiwgb3RwLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHByaXZhdGU6IGFjY2Vzc1ByaXZhdGUsIHRhZywgcXVpZXR9ID0gY21kO1xuICBsb2coYCR7Y2xpTmFtZX0gcHVibGlzaGluZyBucG0gbW9kdWxlLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtwYWNrYWdlTWFuYWdlcjogY29uZmlnUGFja2FnZU1hbmFnZXJ9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgcGFja2FnZU1hbmFnZXI6IHN0cmluZyA9IGNtZFBhY2thZ2VNYW5hZ2VyIHx8IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyO1xuICBjb25zdCBwdWJsaXNoT3B0aW9uczogc3RyaW5nW10gPSBbJ3B1Ymxpc2gnXTtcblxuICBpZihhY2Nlc3NQcml2YXRlKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS1hY2Nlc3MnLCAncmVzdHJpY3RlZCcpO1xuICB9XG5cbiAgaWYob3RwKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS1vdHAnLCBvdHApO1xuICB9XG5cbiAgaWYodGFnKSB7XG4gICAgcHVibGlzaE9wdGlvbnMucHVzaCgnLS10YWcnLCB0YWcpO1xuICB9XG5cbiAgLy8gR2V0IG5leHQgdmVyc2lvbiBudW1iZXJcbiAgbGV0IG5leHRWZXJzaW9uOiBzdHJpbmc7XG4gIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuICBsZXQgcGFja2FnZUpzb247XG4gIGxldCBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBsZXQgcHJldlZlcnNpb246IHN0cmluZztcblxuICAvLyBJZiBub3QgdXNpbmcgeWFybiwgd2UnbGwgdXNlIG5wbSBhbmQgbWFudWFsbHkgdXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlclxuICB0cnkge1xuICAgIHBhY2thZ2VKc29uID0gZ2V0UGFja2FnZUpzb24ocGFja2FnZVBhdGgpO1xuICAgIHBhY2thZ2VOYW1lID0gcGFja2FnZUpzb24ubmFtZTtcbiAgICBwcmV2VmVyc2lvbiA9IHBhY2thZ2VKc29uLnZlcnNpb247XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFRoZSBmaWxlLCAke3BhY2thZ2VQYXRofSwgd2FzIG5vdCBmb3VuZCBvciBpcyBtYWxmb3JtZWQuXFxuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZyhlcnJvci5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwYWNrYWdlLmpzb24gd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb25cbiAgaWYobmV3VmVyc2lvbikge1xuICAgIC8vIElmIHVzaW5nIGEgc3BlY2lmaWMgdmVyc2lvbiwgd2UgZG9uJ3QgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG5leHQgYnVtcFxuICAgIG5leHRWZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSBlbHNlIGlmKGJ1bXApIHtcbiAgICAvLyBEZXRlcm1pbmUgbmV4dCB2ZXJzaW9uXG4gICAgY29uc3QgZm9ybWF0QnVtcCA9IGJ1bXAudG9TdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZihmb3JtYXRCdW1wKSB7XG4gICAgICBjb25zdCB2YWxpZFJlbGVhc2VzOiBzdHJpbmdbXSA9IFsnbWFqb3InLCAnbWlub3InLCAncGF0Y2gnXTtcbiAgICAgIGNvbnN0IHZhbGlkUHJlUmVsZWFzZXM6IHN0cmluZ1tdID0gWydhbHBoYScsICdiZXRhJywgJ3JjJ107XG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgdmVyc2lvbiBpbiBwYWNrYWdlLmpzb24gaXMgdmFsaWRcbiAgICAgIGNvbnN0IHBhY2thZ2VWZXJzaW9uID0gc2VtdmVyLmNvZXJjZShwcmV2VmVyc2lvbik7XG5cbiAgICAgIGlmKCFzZW12ZXIudmFsaWQocGFja2FnZVZlcnNpb24pKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogVmVyc2lvbiBpcyBpbnZhbGlkIGluIHBhY2thZ2UuanNvbmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICBpZih2YWxpZFJlbGVhc2VzLmluY2x1ZGVzKGZvcm1hdEJ1bXApKSB7XG4gICAgICAgIG5leHRWZXJzaW9uID0gc2VtdmVyLmluYyhwYWNrYWdlVmVyc2lvbiwgZm9ybWF0QnVtcCBhcyBSZWxlYXNlVHlwZSk7XG4gICAgICB9IGVsc2UgaWYodmFsaWRQcmVSZWxlYXNlcy5pbmNsdWRlcyhmb3JtYXRCdW1wKSkge1xuICAgICAgICBuZXh0VmVyc2lvbiA9IHNlbXZlci5pbmMocGFja2FnZVZlcnNpb24sICdwcmVyZWxlYXNlJywgZm9ybWF0QnVtcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEJ1bXAgdHlwZSBpcyBpbnZhbGlkLiBwbGVhc2UgbWFrZSBzdXJlIGl0IGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nOiAke3ZhbGlkUmVsZWFzZXMuam9pbignLCAnKX0sICR7dmFsaWRQcmVSZWxlYXNlcy5qb2luKCcsICcpfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEJ1bXAgdHlwZSBpcyBtaXNzaW5nLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgaWYobmV4dFZlcnNpb24gJiYgcGFja2FnZU1hbmFnZXIgPT09ICd5YXJuJykge1xuICAgIHB1Ymxpc2hPcHRpb25zLnB1c2goJy0tbmV3LXZlcnNpb24nLCBuZXh0VmVyc2lvbik7XG4gIH0gZWxzZSBpZihuZXh0VmVyc2lvbiAmJiBwYWNrYWdlSnNvbikge1xuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIHVwZGF0ZWQgdmVyc2lvblxuICAgICAgc2V0UGFja2FnZUpzb24oey4uLnBhY2thZ2VKc29uLCB2ZXJzaW9uOiBuZXh0VmVyc2lvbn0sIHBhY2thZ2VQYXRoKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFRoZSBmaWxlLCAke3BhY2thZ2VQYXRofSwgd2FzIG5vdCBmb3VuZCBvciBpcyBtYWxmb3JtZWQuICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBuZXh0VmVyc2lvbiA9IHByZXZWZXJzaW9uO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShwYWNrYWdlTWFuYWdlciwgcHVibGlzaE9wdGlvbnMsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgfSk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQgbnBtIHBhY2thZ2U6ICR7cGFja2FnZU5hbWV9IWApO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoJ1B1Ymxpc2hpbmcgdG8gbnBtIGhhcyBmYWlsZWQuJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGFBQVk7QUFDcEIsT0FBTyxZQUEyQjtBQUVsQyxTQUFRLGlCQUFnQjtBQUN4QixTQUFRLGVBQWUsZ0JBQWdCLHNCQUFxQjtBQUM1RCxTQUFRLFdBQVU7QUFlWCxNQUFNLFVBQVUsT0FBTyxLQUFxQixXQUE0QixRQUFRLFNBQTBCO0FBQy9HLFFBQU0sRUFBQyxNQUFNLFVBQVUsT0FBTyxZQUFZLEtBQUssZ0JBQWdCLG1CQUFtQixTQUFTLGVBQWUsS0FBSyxNQUFLLElBQUk7QUFDeEgsTUFBSSxHQUFHLE9BQU8sNkJBQTZCLFFBQVEsS0FBSztBQUd4RCxRQUFNLFVBQVUsY0FBYyxLQUFLO0FBR25DLFFBQU0sVUFBVSxZQUFZLEdBQUc7QUFFL0IsUUFBTSxFQUFDLGdCQUFnQixxQkFBb0IsSUFBSSxVQUFVO0FBQ3pELFFBQU0saUJBQXlCLHFCQUFxQjtBQUNwRCxRQUFNLGlCQUEyQixDQUFDLFNBQVM7QUFFM0MsTUFBRyxlQUFlO0FBQ2hCLG1CQUFlLEtBQUssWUFBWSxZQUFZO0FBQUEsRUFDOUM7QUFFQSxNQUFHLEtBQUs7QUFDTixtQkFBZSxLQUFLLFNBQVMsR0FBRztBQUFBLEVBQ2xDO0FBRUEsTUFBRyxLQUFLO0FBQ04sbUJBQWUsS0FBSyxTQUFTLEdBQUc7QUFBQSxFQUNsQztBQUdBLE1BQUk7QUFDSixRQUFNLGNBQXNCLEdBQUcsUUFBUSxJQUFJLENBQUM7QUFDNUMsTUFBSTtBQUNKLE1BQUk7QUFDSixNQUFJO0FBR0osTUFBSTtBQUNGLGtCQUFjLGVB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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ export interface TestOptions {
2
+ readonly analyze?: boolean;
3
+ readonly aiDebug?: boolean;
4
+ readonly aiGenerate?: boolean;
5
+ readonly aiAnalyze?: boolean;
6
+ readonly bail?: boolean;
7
+ readonly changedFilesWithAncestor?: boolean;
8
+ readonly changedSince?: string;
9
+ readonly ci?: boolean;
10
+ readonly cliName?: string;
11
+ readonly collectCoverageFrom?: string;
12
+ readonly colors?: boolean;
13
+ readonly config?: string;
14
+ readonly debug?: boolean;
15
+ readonly debugTests?: boolean;
16
+ readonly detectOpenHandles?: boolean;
17
+ readonly env?: string;
18
+ readonly errorOnDeprecated?: boolean;
19
+ readonly expand?: boolean;
20
+ readonly forceExit?: boolean;
21
+ readonly generate?: boolean;
22
+ readonly json?: boolean;
23
+ readonly lastCommit?: boolean;
24
+ readonly listTests?: boolean;
25
+ readonly logHeapUsage?: boolean;
26
+ readonly maxWorkers?: string;
27
+ readonly noStackTrace?: boolean;
28
+ readonly notify?: boolean;
29
+ readonly onlyChanged?: boolean;
30
+ readonly outputFile?: string;
31
+ readonly passWithNoTests?: boolean;
32
+ readonly quiet?: boolean;
33
+ readonly removeCache?: boolean;
34
+ readonly runInBand?: boolean;
35
+ readonly setup?: string;
36
+ readonly showConfig?: boolean;
37
+ readonly silent?: boolean;
38
+ readonly testLocationInResults?: boolean;
39
+ readonly testNamePattern?: string;
40
+ readonly testPathPattern?: string;
41
+ readonly update?: boolean;
42
+ readonly useStderr?: boolean;
43
+ readonly verbose?: boolean;
44
+ readonly watch?: string;
45
+ readonly watchAll?: boolean;
46
+ }
47
+ export type TestCallback = typeof process.exit;
48
+ export declare const getTestFilePatterns: (testPathPattern?: string) => string[];
49
+ export declare const test: (options: TestOptions, args: string[], callback?: TestCallback) => Promise<number>;
50
+ export default test;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,327 @@
1
+ import { execa } from "execa";
2
+ import { readFileSync } from "fs";
3
+ import { sync as globSync } from "glob";
4
+ import { resolve as pathResolve } from "path";
5
+ import { URL } from "url";
6
+ import { LexConfig } from "../../LexConfig.js";
7
+ import { createSpinner } from "../../utils/app.js";
8
+ import { relativeNodePath } from "../../utils/file.js";
9
+ import { log } from "../../utils/log.js";
10
+ import { aiFunction } from "../ai/ai.js";
11
+ const getTestFilePatterns = (testPathPattern) => {
12
+ const defaultPatterns = ["**/*.test.*", "**/*.spec.*", "**/*.integration.*"];
13
+ if (!testPathPattern) {
14
+ return defaultPatterns;
15
+ }
16
+ return [testPathPattern];
17
+ };
18
+ const findUncoveredSourceFiles = () => {
19
+ const sourceFiles = globSync("src/**/*.{ts,tsx,js,jsx}", {
20
+ cwd: process.cwd(),
21
+ ignore: ["**/node_modules/**", "**/dist/**", "**/*.test.*", "**/*.spec.*"]
22
+ });
23
+ const testFiles = globSync("**/*.{test,spec}.{ts,tsx,js,jsx}", {
24
+ cwd: process.cwd(),
25
+ ignore: ["**/node_modules/**", "**/dist/**"]
26
+ });
27
+ return sourceFiles.filter((sourceFile) => {
28
+ const baseName = sourceFile.replace(/\.[^/.]+$/, "");
29
+ return !testFiles.some((testFile) => testFile.includes(baseName));
30
+ });
31
+ };
32
+ const processTestResults = (outputFile) => {
33
+ if (!outputFile) {
34
+ return null;
35
+ }
36
+ try {
37
+ const content = readFileSync(outputFile, "utf-8");
38
+ return JSON.parse(content);
39
+ } catch (_error) {
40
+ return null;
41
+ }
42
+ };
43
+ const test = async (options, args, callback = process.exit) => {
44
+ const {
45
+ analyze = false,
46
+ aiAnalyze = false,
47
+ aiDebug = false,
48
+ aiGenerate = false,
49
+ bail,
50
+ changedFilesWithAncestor,
51
+ changedSince,
52
+ ci,
53
+ cliName = "Lex",
54
+ collectCoverageFrom,
55
+ colors,
56
+ config,
57
+ debug = false,
58
+ debugTests = false,
59
+ detectOpenHandles,
60
+ env,
61
+ errorOnDeprecated,
62
+ expand,
63
+ forceExit,
64
+ generate = false,
65
+ json,
66
+ lastCommit,
67
+ listTests,
68
+ logHeapUsage,
69
+ maxWorkers,
70
+ noStackTrace,
71
+ notify,
72
+ onlyChanged,
73
+ outputFile,
74
+ passWithNoTests,
75
+ quiet,
76
+ removeCache,
77
+ runInBand,
78
+ setup,
79
+ showConfig,
80
+ silent,
81
+ testLocationInResults,
82
+ testNamePattern,
83
+ testPathPattern,
84
+ update,
85
+ useStderr,
86
+ verbose,
87
+ watch,
88
+ watchAll
89
+ } = options;
90
+ const useGenerate = generate || aiGenerate;
91
+ const useAnalyze = analyze || aiAnalyze;
92
+ const useDebug = debugTests || aiDebug;
93
+ log(`${cliName} testing...`, "info", quiet);
94
+ const spinner = createSpinner(quiet);
95
+ await LexConfig.parseConfig(options);
96
+ const { useTypescript } = LexConfig.config;
97
+ if (useTypescript) {
98
+ LexConfig.checkTypescriptConfig();
99
+ }
100
+ if (useGenerate) {
101
+ spinner.start("AI is analyzing code to generate test cases...");
102
+ try {
103
+ const uncoveredFiles = findUncoveredSourceFiles();
104
+ if (uncoveredFiles.length > 0) {
105
+ const targetFile = uncoveredFiles[0];
106
+ await aiFunction({
107
+ prompt: `Generate Jest unit tests for this file: ${targetFile}
108
+
109
+ ${readFileSync(targetFile, "utf-8")}
110
+
111
+ Please create comprehensive tests that cover the main functionality. Include test fixtures and mocks where necessary.`,
112
+ task: "test",
113
+ file: targetFile,
114
+ context: true,
115
+ quiet
116
+ });
117
+ spinner.succeed(`AI test generation suggestions provided for ${targetFile}`);
118
+ } else {
119
+ spinner.succeed("All source files appear to have corresponding test files");
120
+ }
121
+ } catch (aiError) {
122
+ spinner.fail("Could not generate AI test suggestions");
123
+ if (!quiet) {
124
+ console.error("AI test generation error:", aiError);
125
+ }
126
+ }
127
+ }
128
+ const dirName = new URL(".", import.meta.url).pathname;
129
+ const dirPath = pathResolve(dirName, "../../..");
130
+ const jestPath = relativeNodePath("jest-cli/bin/jest.js", dirPath);
131
+ const jestConfigFile = config || pathResolve(dirName, "../../../jest.config.lex.js");
132
+ const jestSetupFile = setup || "";
133
+ const jestOptions = ["--no-cache"];
134
+ jestOptions.push("--config", jestConfigFile);
135
+ if (bail) {
136
+ jestOptions.push("--bail");
137
+ }
138
+ if (changedFilesWithAncestor) {
139
+ jestOptions.push("--changedFilesWithAncestor");
140
+ }
141
+ if (changedSince) {
142
+ jestOptions.push("--changedSince");
143
+ }
144
+ if (ci) {
145
+ jestOptions.push("--ci");
146
+ }
147
+ if (collectCoverageFrom) {
148
+ jestOptions.push("--collectCoverageFrom", collectCoverageFrom);
149
+ }
150
+ if (colors) {
151
+ jestOptions.push("--colors");
152
+ }
153
+ if (debug) {
154
+ jestOptions.push("--debug");
155
+ }
156
+ if (detectOpenHandles) {
157
+ jestOptions.push("--detectOpenHandles");
158
+ }
159
+ if (env) {
160
+ jestOptions.push("--env");
161
+ }
162
+ if (errorOnDeprecated) {
163
+ jestOptions.push("--errorOnDeprecated");
164
+ }
165
+ if (expand) {
166
+ jestOptions.push("--expand");
167
+ }
168
+ if (forceExit) {
169
+ jestOptions.push("--forceExit");
170
+ }
171
+ if (json) {
172
+ jestOptions.push("--json");
173
+ }
174
+ if (lastCommit) {
175
+ jestOptions.push("--lastCommit");
176
+ }
177
+ if (listTests) {
178
+ jestOptions.push("--listTests");
179
+ }
180
+ if (logHeapUsage) {
181
+ jestOptions.push("--logHeapUsage");
182
+ }
183
+ if (maxWorkers) {
184
+ jestOptions.push("--maxWorkers", maxWorkers);
185
+ }
186
+ if (noStackTrace) {
187
+ jestOptions.push("--noStackTrace");
188
+ }
189
+ if (notify) {
190
+ jestOptions.push("--notify");
191
+ }
192
+ if (onlyChanged) {
193
+ jestOptions.push("--onlyChanged");
194
+ }
195
+ let tempOutputFile = outputFile;
196
+ if ((useAnalyze || useDebug) && !outputFile) {
197
+ tempOutputFile = ".lex-test-results.json";
198
+ jestOptions.push("--json", "--outputFile", tempOutputFile);
199
+ } else if (outputFile) {
200
+ jestOptions.push("--outputFile", outputFile);
201
+ }
202
+ if (passWithNoTests) {
203
+ jestOptions.push("--passWithNoTests");
204
+ }
205
+ if (runInBand) {
206
+ jestOptions.push("--runInBand");
207
+ }
208
+ if (showConfig) {
209
+ jestOptions.push("--showConfig");
210
+ }
211
+ if (silent) {
212
+ jestOptions.push("--silent");
213
+ }
214
+ if (testLocationInResults) {
215
+ jestOptions.push("--testLocationInResults");
216
+ }
217
+ if (testNamePattern) {
218
+ jestOptions.push("--testNamePattern", testNamePattern);
219
+ }
220
+ if (testPathPattern) {
221
+ jestOptions.push("--testPathPatterns", testPathPattern);
222
+ }
223
+ if (useStderr) {
224
+ jestOptions.push("--useStderr");
225
+ }
226
+ if (verbose) {
227
+ jestOptions.push("--verbose");
228
+ }
229
+ if (watchAll) {
230
+ jestOptions.push("--watchAll");
231
+ }
232
+ if (removeCache) {
233
+ jestOptions.push("--no-cache");
234
+ }
235
+ if (jestSetupFile !== "") {
236
+ const cwd = process.cwd();
237
+ jestOptions.push(`--setupFilesAfterEnv=${pathResolve(cwd, jestSetupFile)}`);
238
+ }
239
+ if (update) {
240
+ jestOptions.push("--updateSnapshot");
241
+ }
242
+ if (watch) {
243
+ jestOptions.push("--watch", watch);
244
+ }
245
+ if (args) {
246
+ jestOptions.push(...args);
247
+ }
248
+ try {
249
+ await execa(jestPath, jestOptions, {
250
+ encoding: "utf8",
251
+ stdio: "inherit"
252
+ });
253
+ spinner.succeed("Testing completed!");
254
+ if (useAnalyze) {
255
+ spinner.start("AI is analyzing test coverage and suggesting improvements...");
256
+ try {
257
+ const testResults = processTestResults(tempOutputFile);
258
+ const filePatterns = getTestFilePatterns(testPathPattern);
259
+ await aiFunction({
260
+ prompt: `Analyze these Jest test results and suggest test coverage improvements:
261
+
262
+ ${JSON.stringify(testResults, null, 2)}
263
+
264
+ Test patterns: ${filePatterns.join(", ")}
265
+
266
+ Please provide:
267
+ 1. Analysis of current coverage gaps
268
+ 2. Suggestions for improving test cases
269
+ 3. Recommendations for additional integration test scenarios
270
+ 4. Best practices for increasing test effectiveness`,
271
+ task: "optimize",
272
+ context: true,
273
+ quiet
274
+ });
275
+ spinner.succeed("AI test analysis complete");
276
+ } catch (aiError) {
277
+ spinner.fail("Could not generate AI test analysis");
278
+ if (!quiet) {
279
+ console.error("AI analysis error:", aiError);
280
+ }
281
+ }
282
+ }
283
+ callback(0);
284
+ return 0;
285
+ } catch (error) {
286
+ log(`
287
+ ${cliName} Error: Check for unit test errors and/or coverage.`, "error", quiet);
288
+ spinner.fail("Testing failed!");
289
+ if (useDebug) {
290
+ spinner.start("AI is analyzing test failures...");
291
+ try {
292
+ const testResults = processTestResults(tempOutputFile);
293
+ await aiFunction({
294
+ prompt: `Debug these failed Jest tests and suggest fixes:
295
+
296
+ ${JSON.stringify(error.message, null, 2)}
297
+
298
+ Test results: ${JSON.stringify(testResults, null, 2)}
299
+
300
+ Please provide:
301
+ 1. Analysis of why the tests are failing
302
+ 2. Specific suggestions to fix each failing test
303
+ 3. Any potential issues with test fixtures or mocks
304
+ 4. Code examples for solutions`,
305
+ task: "help",
306
+ context: true,
307
+ quiet
308
+ });
309
+ spinner.succeed("AI debugging assistance complete");
310
+ } catch (aiError) {
311
+ spinner.fail("Could not generate AI debugging assistance");
312
+ if (!quiet) {
313
+ console.error("AI debugging error:", aiError);
314
+ }
315
+ }
316
+ }
317
+ callback(1);
318
+ return 1;
319
+ }
320
+ };
321
+ var test_default = test;
322
+ export {
323
+ test_default as default,
324
+ getTestFilePatterns,
325
+ test
326
+ };
327
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Rlc3QvdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcbmltcG9ydCB7VVJMfSBmcm9tICd1cmwnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lcn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVsYXRpdmVOb2RlUGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgYW5hbHl6ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpRGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBhaUdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlBbmFseXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYmFpbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRGaWxlc1dpdGhBbmNlc3Rvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRTaW5jZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xsZWN0Q292ZXJhZ2VGcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcnM/OiBib29sZWFuO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVidWdUZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldGVjdE9wZW5IYW5kbGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nO1xuICByZWFkb25seSBlcnJvck9uRGVwcmVjYXRlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGV4cGFuZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZvcmNlRXhpdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkganNvbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhc3RDb21taXQ/OiBib29sZWFuO1xuICByZWFkb25seSBsaXN0VGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBsb2dIZWFwVXNhZ2U/OiBib29sZWFuO1xuICByZWFkb25seSBtYXhXb3JrZXJzPzogc3RyaW5nO1xuICByZWFkb25seSBub1N0YWNrVHJhY2U/OiBib29sZWFuO1xuICByZWFkb25seSBub3RpZnk/OiBib29sZWFuO1xuICByZWFkb25seSBvbmx5Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlQ2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBydW5JbkJhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBzZXR1cD86IHN0cmluZztcbiAgcmVhZG9ubHkgc2hvd0NvbmZpZz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNpbGVudD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3RMb2NhdGlvbkluUmVzdWx0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3ROYW1lUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICByZWFkb25seSB1cGRhdGU/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2F0Y2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdhdGNoQWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVGVzdENhbGxiYWNrID0gdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IGdldFRlc3RGaWxlUGF0dGVybnMgPSAodGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkZWZhdWx0UGF0dGVybnMgPSBbJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJywgJyoqLyouaW50ZWdyYXRpb24uKiddO1xuXG4gIGlmKCF0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGVmYXVsdFBhdHRlcm5zO1xuICB9XG5cbiAgcmV0dXJuIFt0ZXN0UGF0aFBhdHRlcm5dO1xufTtcblxuY29uc3QgZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzID0gKCk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBnbG9iU3luYygnc3JjLyoqLyoue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovKi50ZXN0LionLCAnKiovKi5zcGVjLionXVxuICB9KTtcblxuICBjb25zdCB0ZXN0RmlsZXMgPSBnbG9iU3luYygnKiovKi57dGVzdCxzcGVjfS57dHMsdHN4LGpzLGpzeH0nLCB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovZGlzdC8qKiddXG4gIH0pO1xuXG4gIC8vIFNpbXBsZSBoZXVyaXN0aWMgdG8gZmluZCBzb3VyY2UgZmlsZXMgd2l0aG91dCBjb3JyZXNwb25kaW5nIHRlc3QgZmlsZXNcbiAgcmV0dXJuIHNvdXJjZUZpbGVzLmZpbHRlcigoc291cmNlRmlsZSkgPT4ge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gc291cmNlRmlsZS5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpO1xuICAgIHJldHVybiAhdGVzdEZpbGVzLnNvbWUoKHRlc3RGaWxlKSA9PiB0ZXN0RmlsZS5pbmNsdWRlcyhiYXNlTmFtZSkpO1xuICB9KTtcbn07XG5cbmNvbnN0IHByb2Nlc3NUZXN0UmVzdWx0cyA9IChvdXRwdXRGaWxlPzogc3RyaW5nKTogYW55ID0+IHtcbiAgaWYoIW91dHB1dEZpbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhvdXRwdXRGaWxlLCAndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRlc3QgPSBhc3luYyAob3B0aW9uczogVGVzdE9wdGlvbnMsIGFyZ3M6IHN0cmluZ1tdLCBjYWxsYmFjazogVGVzdENhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUgPSBmYWxzZSxcbiAgICBhaUFuYWx5emUgPSBmYWxzZSxcbiAgICBhaURlYnVnID0gZmFsc2UsXG4gICAgYWlHZW5lcmF0ZSA9IGZhbHNlLFxuICAgIGJhaWwsXG4gICAgY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yLFxuICAgIGNoYW5nZWRTaW5jZSxcbiAgICBjaSxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgY29sbGVjdENvdmVyYWdlRnJvbSxcbiAgICBjb2xvcnMsXG4gICAgY29uZmlnLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgZGVidWdUZXN0cyA9IGZhbHNlLFxuICAgIGRldGVjdE9wZW5IYW5kbGVzLFxuICAgIGVudixcbiAgICBlcnJvck9uRGVwcmVjYXRlZCxcbiAgICBleHBhbmQsXG4gICAgZm9yY2VFeGl0LFxuICAgIGdlbmVyYXRlID0gZmFsc2UsXG4gICAganNvbixcbiAgICBsYXN0Q29tbWl0LFxuICAgIGxpc3RUZXN0cyxcbiAgICBsb2dIZWFwVXNhZ2UsXG4gICAgbWF4V29ya2VycyxcbiAgICBub1N0YWNrVHJhY2UsXG4gICAgbm90aWZ5LFxuICAgIG9ubHlDaGFuZ2VkLFxuICAgIG91dHB1dEZpbGUsXG4gICAgcGFzc1dpdGhOb1Rlc3RzLFxuICAgIHF1aWV0LFxuICAgIHJlbW92ZUNhY2hlLFxuICAgIHJ1bkluQmFuZCxcbiAgICBzZXR1cCxcbiAgICBzaG93Q29uZmlnLFxuICAgIHNpbGVudCxcbiAgICB0ZXN0TG9jYXRpb25JblJlc3VsdHMsXG4gICAgdGVzdE5hbWVQYXR0ZXJuLFxuICAgIHRlc3RQYXRoUGF0dGVybixcbiAgICB1cGRhdGUsXG4gICAgdXNlU3RkZXJyLFxuICAgIHZlcmJvc2UsXG4gICAgd2F0Y2gsXG4gICAgd2F0Y2hBbGxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgdXNlR2VuZXJhdGUgPSBnZW5lcmF0ZSB8fCBhaUdlbmVyYXRlO1xuICBjb25zdCB1c2VBbmFseXplID0gYW5hbHl6ZSB8fCBhaUFuYWx5emU7XG4gIGNvbnN0IHVzZURlYnVnID0gZGVidWdUZXN0cyB8fCBhaURlYnVnO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSB0ZXN0aW5nLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhvcHRpb25zKTtcblxuICBjb25zdCB7dXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBpZih1c2VHZW5lcmF0ZSkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyBjb2RlIHRvIGdlbmVyYXRlIHRlc3QgY2FzZXMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1bmNvdmVyZWRGaWxlcyA9IGZpbmRVbmNvdmVyZWRTb3VyY2VGaWxlcygpO1xuXG4gICAgICBpZih1bmNvdmVyZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEZpbGUgPSB1bmNvdmVyZWRGaWxlc1swXTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBwcm9tcHQ6IGBHZW5lcmF0ZSBKZXN0IHVuaXQgdGVzdHMgZm9yIHRoaXMgZmlsZTogJHt0YXJnZXRGaWxlfVxcblxcbiR7cmVhZEZpbGVTeW5jKHRhcmdldEZpbGUsICd1dGYtOCcpfVxcblxcblBsZWFzZSBjcmVhdGUgY29tcHJlaGVuc2l2ZSB0ZXN0cyB0aGF0IGNvdmVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHkuIEluY2x1ZGUgdGVzdCBmaXh0dXJlcyBhbmQgbW9ja3Mgd2hlcmUgbmVjZXNzYXJ5LmAsXG4gICAgICAgICAgdGFzazogJ3Rlc3QnLFxuICAgICAgICAgIGZpbGU6IHRhcmdldEZpbGUsXG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBxdWlldFxuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoYEFJIHRlc3QgZ2VuZXJhdGlvbiBzdWdnZXN0aW9ucyBwcm92aWRlZCBmb3IgJHt0YXJnZXRGaWxlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBbGwgc291cmNlIGZpbGVzIGFwcGVhciB0byBoYXZlIGNvcnJlc3BvbmRpbmcgdGVzdCBmaWxlcycpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgdGVzdCBzdWdnZXN0aW9ucycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIHRlc3QgZ2VuZXJhdGlvbiBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLicpO1xuICBjb25zdCBqZXN0UGF0aDogc3RyaW5nID0gcmVsYXRpdmVOb2RlUGF0aCgnamVzdC1jbGkvYmluL2plc3QuanMnLCBkaXJQYXRoKTtcbiAgY29uc3QgamVzdENvbmZpZ0ZpbGU6IHN0cmluZyA9IGNvbmZpZyB8fCBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vamVzdC5jb25maWcubGV4LmpzJyk7XG4gIGNvbnN0IGplc3RTZXR1cEZpbGU6IHN0cmluZyA9IHNldHVwIHx8ICcnO1xuICBjb25zdCBqZXN0T3B0aW9uczogc3RyaW5nW10gPSBbJy0tbm8tY2FjaGUnXTtcblxuICBqZXN0T3B0aW9ucy5wdXNoKCctLWNvbmZpZycsIGplc3RDb25maWdGaWxlKTtcblxuICBpZihiYWlsKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1iYWlsJyk7XG4gIH1cblxuICBpZihjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3IpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcicpO1xuICB9XG5cbiAgaWYoY2hhbmdlZFNpbmNlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkU2luY2UnKTtcbiAgfVxuXG4gIGlmKGNpKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jaScpO1xuICB9XG5cbiAgaWYoY29sbGVjdENvdmVyYWdlRnJvbSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY29sbGVjdENvdmVyYWdlRnJvbScsIGNvbGxlY3RDb3ZlcmFnZUZyb20pO1xuICB9XG5cbiAgaWYoY29sb3JzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jb2xvcnMnKTtcbiAgfVxuXG4gIGlmKGRlYnVnKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1kZWJ1ZycpO1xuICB9XG5cbiAgaWYoZGV0ZWN0T3BlbkhhbmRsZXMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWRldGVjdE9wZW5IYW5kbGVzJyk7XG4gIH1cblxuICBpZihlbnYpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWVudicpO1xuICB9XG5cbiAgaWYoZXJyb3JPbkRlcHJlY2F0ZWQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWVycm9yT25EZXByZWNhdGVkJyk7XG4gIH1cblxuICBpZihleHBhbmQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWV4cGFuZCcpO1xuICB9XG5cbiAgaWYoZm9yY2VFeGl0KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1mb3JjZUV4aXQnKTtcbiAgfVxuXG4gIGlmKGpzb24pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWpzb24nKTtcbiAgfVxuXG4gIGlmKGxhc3RDb21taXQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWxhc3RDb21taXQnKTtcbiAgfVxuXG4gIGlmKGxpc3RUZXN0cykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbGlzdFRlc3RzJyk7XG4gIH1cblxuICBpZihsb2dIZWFwVXNhZ2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWxvZ0hlYXBVc2FnZScpO1xuICB9XG5cbiAgaWYobWF4V29ya2Vycykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbWF4V29ya2VycycsIG1heFdvcmtlcnMpO1xuICB9XG5cbiAgaWYobm9TdGFja1RyYWNlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1ub1N0YWNrVHJhY2UnKTtcbiAgfVxuXG4gIGlmKG5vdGlmeSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbm90aWZ5Jyk7XG4gIH1cblxuICBpZihvbmx5Q2hhbmdlZCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tb25seUNoYW5nZWQnKTtcbiAgfVxuXG4gIGxldCB0ZW1wT3V0cHV0RmlsZSA9IG91dHB1dEZpbGU7XG5cbiAgaWYoKHVzZUFuYWx5emUgfHwgdXNlRGVidWcpICYmICFvdXRwdXRGaWxlKSB7XG4gICAgdGVtcE91dHB1dEZpbGUgPSAnLmxleC10ZXN0LXJlc3VsdHMuanNvbic7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1qc29uJywgJy0tb3V0cHV0RmlsZScsIHRlbXBPdXRwdXRGaWxlKTtcbiAgfSBlbHNlIGlmKG91dHB1dEZpbGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW91dHB1dEZpbGUnLCBvdXRwdXRGaWxlKTtcbiAgfVxuXG4gIGlmKHBhc3NXaXRoTm9UZXN0cykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tcGFzc1dpdGhOb1Rlc3RzJyk7XG4gIH1cblxuICBpZihydW5JbkJhbmQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXJ1bkluQmFuZCcpO1xuICB9XG5cbiAgaWYoc2hvd0NvbmZpZykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tc2hvd0NvbmZpZycpO1xuICB9XG5cbiAgaWYoc2lsZW50KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1zaWxlbnQnKTtcbiAgfVxuXG4gIGlmKHRlc3RMb2NhdGlvbkluUmVzdWx0cykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tdGVzdExvY2F0aW9uSW5SZXN1bHRzJyk7XG4gIH1cblxuICBpZih0ZXN0TmFtZVBhdHRlcm4pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXRlc3ROYW1lUGF0dGVybicsIHRlc3ROYW1lUGF0dGVybik7XG4gIH1cblxuICBpZih0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXRlc3RQYXRoUGF0dGVybnMnLCB0ZXN0UGF0aFBhdHRlcm4pO1xuICB9XG5cbiAgaWYodXNlU3RkZXJyKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS11c2VTdGRlcnInKTtcbiAgfVxuXG4gIGlmKHZlcmJvc2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXZlcmJvc2UnKTtcbiAgfVxuXG4gIGlmKHdhdGNoQWxsKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS13YXRjaEFsbCcpO1xuICB9XG5cbiAgaWYocmVtb3ZlQ2FjaGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW5vLWNhY2hlJyk7XG4gIH1cblxuICBpZihqZXN0U2V0dXBGaWxlICE9PSAnJykge1xuICAgIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKGAtLXNldHVwRmlsZXNBZnRlckVudj0ke3BhdGhSZXNvbHZlKGN3ZCwgamVzdFNldHVwRmlsZSl9YCk7XG4gIH1cblxuICBpZih1cGRhdGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXVwZGF0ZVNuYXBzaG90Jyk7XG4gIH1cblxuICBpZih3YXRjaCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0td2F0Y2gnLCB3YXRjaCk7XG4gIH1cblxuICBpZihhcmdzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCguLi5hcmdzKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoamVzdFBhdGgsIGplc3RPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdUZXN0aW5nIGNvbXBsZXRlZCEnKTtcblxuICAgIGlmKHVzZUFuYWx5emUpIHtcbiAgICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0aW5nIGltcHJvdmVtZW50cy4uLicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IHByb2Nlc3NUZXN0UmVzdWx0cyh0ZW1wT3V0cHV0RmlsZSk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJucyA9IGdldFRlc3RGaWxlUGF0dGVybnModGVzdFBhdGhQYXR0ZXJuKTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBwcm9tcHQ6IGBBbmFseXplIHRoZXNlIEplc3QgdGVzdCByZXN1bHRzIGFuZCBzdWdnZXN0IHRlc3QgY292ZXJhZ2UgaW1wcm92ZW1lbnRzOlxuXG4ke0pTT04uc3RyaW5naWZ5KHRlc3RSZXN1bHRzLCBudWxsLCAyKX1cblxuVGVzdCBwYXR0ZXJuczogJHtmaWxlUGF0dGVybnMuam9pbignLCAnKX1cblxuUGxlYXNlIHByb3ZpZGU6XG4xLiBBbmFseXNpcyBvZiBjdXJyZW50IGNvdmVyYWdlIGdhcHNcbjIuIFN1Z2dlc3Rpb25zIGZvciBpbXByb3ZpbmcgdGVzdCBjYXNlc1xuMy4gUmVjb21tZW5kYXRpb25zIGZvciBhZGRpdGlvbmFsIGludGVncmF0aW9uIHRlc3Qgc2NlbmFyaW9zXG40LiBCZXN0IHByYWN0aWNlcyBmb3IgaW5jcmVhc2luZyB0ZXN0IGVmZmVjdGl2ZW5lc3NgLFxuICAgICAgICAgIHRhc2s6ICdvcHRpbWl6ZScsXG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBxdWlldFxuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIHRlc3QgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSB0ZXN0IGFuYWx5c2lzJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFuYWx5c2lzIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENoZWNrIGZvciB1bml0IHRlc3QgZXJyb3JzIGFuZC9vciBjb3ZlcmFnZS5gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ1Rlc3RpbmcgZmFpbGVkIScpO1xuXG4gICAgaWYodXNlRGVidWcpIHtcbiAgICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0ZXN0IGZhaWx1cmVzLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRlc3RSZXN1bHRzID0gcHJvY2Vzc1Rlc3RSZXN1bHRzKHRlbXBPdXRwdXRGaWxlKTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBwcm9tcHQ6IGBEZWJ1ZyB0aGVzZSBmYWlsZWQgSmVzdCB0ZXN0cyBhbmQgc3VnZ2VzdCBmaXhlczpcblxuJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlLCBudWxsLCAyKX1cblxuVGVzdCByZXN1bHRzOiAke0pTT04uc3RyaW5naWZ5KHRlc3RSZXN1bHRzLCBudWxsLCAyKX1cblxuUGxlYXNlIHByb3ZpZGU6XG4xLiBBbmFseXNpcyBvZiB3aHkgdGhlIHRlc3RzIGFyZSBmYWlsaW5nXG4yLiBTcGVjaWZpYyBzdWdnZXN0aW9ucyB0byBmaXggZWFjaCBmYWlsaW5nIHRlc3RcbjMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGVzdCBmaXh0dXJlcyBvciBtb2Nrc1xuNC4gQ29kZSBleGFtcGxlcyBmb3Igc29sdXRpb25zYCxcbiAgICAgICAgICB0YXNrOiAnaGVscCcsXG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBxdWlldFxuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIGRlYnVnZ2luZyBhc3Npc3RhbmNlIGNvbXBsZXRlJyk7XG4gICAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgZGVidWdnaW5nIGFzc2lzdGFuY2UnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignQUkgZGVidWdnaW5nIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRlc3Q7Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsb0JBQW1CO0FBQzNCLFNBQVEsUUFBUSxnQkFBZTtBQUMvQixTQUFRLFdBQVcsbUJBQWtCO0FBQ3JDLFNBQVEsV0FBVTtBQUVsQixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLHFCQUFvQjtBQUM1QixTQUFRLHdCQUF1QjtBQUMvQixTQUFRLFdBQVU7QUFDbEIsU0FBUSxrQkFBaUI7QUFtRGxCLE1BQU0sc0JBQXNCLENBQUMsb0JBQXVDO0FBQ3pFLFFBQU0sa0JBQWtCLENBQUMsZUFBZSxlQUFlLG9CQUFvQjtBQUUzRSxNQUFHLENBQUMsaUJBQWlCO0FBQ25CLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxDQUFDLGVBQWU7QUFDekI7QUFFQSxNQUFNLDJCQUEyQixNQUFnQjtBQUMvQyxRQUFNLGNBQWMsU0FBUyw0QkFBNEI7QUFBQSxJQUN2RCxLQUFLLFFBQVEsSUFBSTtBQUFB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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export interface UpdateOptions {
2
+ readonly cliName?: string;
3
+ readonly interactive?: boolean;
4
+ readonly packageManager?: string;
5
+ readonly quiet?: boolean;
6
+ readonly registry?: string;
7
+ }
8
+ export type UpdateCallback = typeof process.exit;
9
+ export declare const update: (cmd: UpdateOptions, callback?: UpdateCallback) => Promise<number>;
@@ -0,0 +1 @@
1
+ export {};