@servicetitan/startup 32.3.2 → 32.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/cli/commands/get-command.d.ts.map +1 -1
  2. package/dist/cli/commands/get-command.js +2 -0
  3. package/dist/cli/commands/get-command.js.map +1 -1
  4. package/dist/cli/commands/init.d.ts +1 -1
  5. package/dist/cli/commands/init.d.ts.map +1 -1
  6. package/dist/cli/commands/init.js +6 -5
  7. package/dist/cli/commands/init.js.map +1 -1
  8. package/dist/cli/commands/install.d.ts +1 -4
  9. package/dist/cli/commands/install.d.ts.map +1 -1
  10. package/dist/cli/commands/install.js +12 -118
  11. package/dist/cli/commands/install.js.map +1 -1
  12. package/dist/cli/commands/lint.d.ts.map +1 -1
  13. package/dist/cli/commands/lint.js +7 -55
  14. package/dist/cli/commands/lint.js.map +1 -1
  15. package/dist/cli/commands/mfe-list.d.ts.map +1 -1
  16. package/dist/cli/commands/mfe-list.js +2 -1
  17. package/dist/cli/commands/mfe-list.js.map +1 -1
  18. package/dist/cli/commands/review/rules/index.d.ts.map +1 -1
  19. package/dist/cli/commands/review/rules/index.js +2 -0
  20. package/dist/cli/commands/review/rules/index.js.map +1 -1
  21. package/dist/cli/commands/review/rules/no-deprecated-startup-install.d.ts +7 -0
  22. package/dist/cli/commands/review/rules/no-deprecated-startup-install.d.ts.map +1 -0
  23. package/dist/cli/commands/review/rules/no-deprecated-startup-install.js +38 -0
  24. package/dist/cli/commands/review/rules/no-deprecated-startup-install.js.map +1 -0
  25. package/dist/cli/commands/review/types.d.ts +1 -0
  26. package/dist/cli/commands/review/types.d.ts.map +1 -1
  27. package/dist/cli/commands/review/types.js.map +1 -1
  28. package/dist/cli/commands/stylelint.d.ts +17 -0
  29. package/dist/cli/commands/stylelint.d.ts.map +1 -0
  30. package/dist/cli/commands/stylelint.js +63 -0
  31. package/dist/cli/commands/stylelint.js.map +1 -0
  32. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
  33. package/dist/cli/commands/upload-sourcemaps.js +2 -1
  34. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  35. package/dist/cli/utils/cli-git.d.ts +0 -9
  36. package/dist/cli/utils/cli-git.d.ts.map +1 -1
  37. package/dist/cli/utils/cli-git.js +0 -59
  38. package/dist/cli/utils/cli-git.js.map +1 -1
  39. package/dist/cli/utils/cli-npm.d.ts +0 -3
  40. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  41. package/dist/cli/utils/cli-npm.js +0 -22
  42. package/dist/cli/utils/cli-npm.js.map +1 -1
  43. package/dist/cli/utils/index.d.ts +0 -1
  44. package/dist/cli/utils/index.d.ts.map +1 -1
  45. package/dist/cli/utils/index.js +0 -1
  46. package/dist/cli/utils/index.js.map +1 -1
  47. package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
  48. package/dist/cli/utils/lerna-exec.js +2 -2
  49. package/dist/cli/utils/lerna-exec.js.map +1 -1
  50. package/dist/cli/utils/stylelint.d.ts +8 -0
  51. package/dist/cli/utils/stylelint.d.ts.map +1 -0
  52. package/dist/cli/utils/stylelint.js +67 -0
  53. package/dist/cli/utils/stylelint.js.map +1 -0
  54. package/dist/utils/get-configuration.d.ts +1 -0
  55. package/dist/utils/get-configuration.d.ts.map +1 -1
  56. package/dist/utils/get-configuration.js +1 -0
  57. package/dist/utils/get-configuration.js.map +1 -1
  58. package/package.json +8 -9
  59. package/src/cli/commands/__tests__/init.test.ts +11 -14
  60. package/src/cli/commands/__tests__/install.test.ts +19 -224
  61. package/src/cli/commands/__tests__/lint.test.ts +52 -10
  62. package/src/cli/commands/__tests__/mfe-list.test.ts +5 -4
  63. package/src/cli/commands/__tests__/stylelint.test.ts +32 -0
  64. package/src/cli/commands/__tests__/upload-sourcemaps.test.ts +4 -7
  65. package/src/cli/commands/get-command.ts +2 -0
  66. package/src/cli/commands/init.ts +6 -4
  67. package/src/cli/commands/install.ts +13 -116
  68. package/src/cli/commands/lint.ts +5 -57
  69. package/src/cli/commands/mfe-list.ts +2 -1
  70. package/src/cli/commands/review/rules/__tests__/no-deprecated-startup-install.test.ts +81 -0
  71. package/src/cli/commands/review/rules/index.ts +2 -0
  72. package/src/cli/commands/review/rules/no-deprecated-startup-install.ts +30 -0
  73. package/src/cli/commands/review/types.ts +1 -0
  74. package/src/cli/commands/stylelint.ts +26 -0
  75. package/src/cli/commands/upload-sourcemaps.ts +2 -1
  76. package/src/cli/utils/__tests__/cli-git.test.ts +4 -140
  77. package/src/cli/utils/__tests__/cli-npm.test.ts +0 -43
  78. package/src/cli/utils/__tests__/lerna-exec.test.ts +2 -2
  79. package/src/cli/utils/__tests__/stylelint.test.ts +164 -0
  80. package/src/cli/utils/cli-git.ts +1 -52
  81. package/src/cli/utils/cli-npm.ts +0 -12
  82. package/src/cli/utils/index.ts +1 -1
  83. package/src/cli/utils/lerna-exec.ts +1 -1
  84. package/src/cli/utils/stylelint.ts +55 -0
  85. package/src/utils/get-configuration.ts +1 -0
  86. package/dist/cli/utils/is-ci.d.ts +0 -2
  87. package/dist/cli/utils/is-ci.d.ts.map +0 -1
  88. package/dist/cli/utils/is-ci.js +0 -15
  89. package/dist/cli/utils/is-ci.js.map +0 -1
  90. package/src/cli/utils/__tests__/is-ci.test.ts +0 -40
  91. package/src/cli/utils/is-ci.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"get-command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAqB1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA0B3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAE1E"}
1
+ {"version":3,"file":"get-command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAsB1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA2B3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAE1E"}
@@ -26,6 +26,7 @@ const _preparepackage = require("./prepare-package");
26
26
  const _review = require("./review");
27
27
  const _runtask = require("./run-task");
28
28
  const _start = require("./start");
29
+ const _stylelint = require("./stylelint");
29
30
  const _stylescheck = require("./styles-check");
30
31
  const _test = require("./test");
31
32
  const _uploadsourcemaps = require("./upload-sourcemaps");
@@ -46,6 +47,7 @@ const commands = {
46
47
  [_utils.CommandName['prepare-package']]: _preparepackage.PreparePackage,
47
48
  [_utils.CommandName.review]: _review.Review,
48
49
  [_utils.CommandName.start]: _start.Start,
50
+ [_utils.CommandName.stylelint]: _stylelint.Stylelint,
49
51
  [_utils.CommandName['styles-check']]: _stylescheck.StylesCheck,
50
52
  [_utils.CommandName.test]: _test.Tests,
51
53
  [_utils.CommandName.task]: _runtask.RunTask,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/get-command.ts"],"sourcesContent":["import { CommandName } from '../../utils';\n\nimport { Build } from './build';\nimport { BundlePackage } from './bundle-package';\nimport { Clean } from './clean';\nimport { ConvertEslintConfig } from './convert-eslint-config';\nimport { ESLintCommand } from './eslint';\nimport { Init } from './init';\nimport { Install } from './install';\nimport { KendoUILicense } from './kendo-ui-license';\nimport { Lint } from './lint';\nimport { MFEList } from './mfe-list';\nimport { MFEPackageClean } from './mfe-package-clean';\nimport { MFEPackagePublish } from './mfe-package-publish';\nimport { MFEPublish } from './mfe-publish';\nimport { PreparePackage } from './prepare-package';\nimport { Review } from './review';\nimport { RunTask } from './run-task';\nimport { Start } from './start';\nimport { StylesCheck } from './styles-check';\nimport { Tests } from './test';\nimport { Command, Newable } from './types';\nimport { UploadSourcemaps } from './upload-sourcemaps';\n\nconst commands: Record<CommandName, Newable<Command>> = {\n [CommandName.build]: Build,\n [CommandName['bundle-package']]: BundlePackage,\n [CommandName['convert-eslint-config']]: ConvertEslintConfig,\n [CommandName.clean]: Clean,\n [CommandName.eslint]: ESLintCommand,\n [CommandName.init]: Init,\n [CommandName.install]: Install,\n [CommandName['kendo-ui-license']]: KendoUILicense,\n [CommandName.lint]: Lint,\n [CommandName['mfe-list']]: MFEList,\n [CommandName['mfe-package-clean']]: MFEPackageClean,\n [CommandName['mfe-package-publish']]: MFEPackagePublish,\n [CommandName['mfe-publish']]: MFEPublish,\n [CommandName['prepare-package']]: PreparePackage,\n [CommandName.review]: Review,\n [CommandName.start]: Start,\n [CommandName['styles-check']]: StylesCheck,\n [CommandName.test]: Tests,\n [CommandName.task]: RunTask,\n [CommandName['upload-sourcemaps']]: UploadSourcemaps,\n};\n\nexport function getCommand(name: CommandName): Newable<Command> | undefined {\n return commands[name];\n}\n"],"names":["getCommand","commands","CommandName","build","Build","BundlePackage","ConvertEslintConfig","clean","Clean","eslint","ESLintCommand","init","Init","install","Install","KendoUILicense","lint","Lint","MFEList","MFEPackageClean","MFEPackagePublish","MFEPublish","PreparePackage","review","Review","start","Start","StylesCheck","test","Tests","task","RunTask","UploadSourcemaps","name"],"mappings":";;;;+BA+CgBA;;;eAAAA;;;uBA/CY;uBAEN;+BACQ;uBACR;qCACc;wBACN;sBACT;yBACG;gCACO;sBACV;yBACG;iCACQ;mCACE;4BACP;gCACI;wBACR;yBACC;uBACF;6BACM;sBACN;kCAEW;AAEjC,MAAMC,WAAkD;IACpD,CAACC,kBAAW,CAACC,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACF,kBAAW,CAAC,iBAAiB,CAAC,EAAEG,4BAAa;IAC9C,CAACH,kBAAW,CAAC,wBAAwB,CAAC,EAAEI,wCAAmB;IAC3D,CAACJ,kBAAW,CAACK,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACN,kBAAW,CAACO,MAAM,CAAC,EAAEC,qBAAa;IACnC,CAACR,kBAAW,CAACS,IAAI,CAAC,EAAEC,UAAI;IACxB,CAACV,kBAAW,CAACW,OAAO,CAAC,EAAEC,gBAAO;IAC9B,CAACZ,kBAAW,CAAC,mBAAmB,CAAC,EAAEa,8BAAc;IACjD,CAACb,kBAAW,CAACc,IAAI,CAAC,EAAEC,UAAI;IACxB,CAACf,kBAAW,CAAC,WAAW,CAAC,EAAEgB,gBAAO;IAClC,CAAChB,kBAAW,CAAC,oBAAoB,CAAC,EAAEiB,gCAAe;IACnD,CAACjB,kBAAW,CAAC,sBAAsB,CAAC,EAAEkB,oCAAiB;IACvD,CAAClB,kBAAW,CAAC,cAAc,CAAC,EAAEmB,sBAAU;IACxC,CAACnB,kBAAW,CAAC,kBAAkB,CAAC,EAAEoB,8BAAc;IAChD,CAACpB,kBAAW,CAACqB,MAAM,CAAC,EAAEC,cAAM;IAC5B,CAACtB,kBAAW,CAACuB,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACxB,kBAAW,CAAC,eAAe,CAAC,EAAEyB,wBAAW;IAC1C,CAACzB,kBAAW,CAAC0B,IAAI,CAAC,EAAEC,WAAK;IACzB,CAAC3B,kBAAW,CAAC4B,IAAI,CAAC,EAAEC,gBAAO;IAC3B,CAAC7B,kBAAW,CAAC,oBAAoB,CAAC,EAAE8B,kCAAgB;AACxD;AAEO,SAAShC,WAAWiC,IAAiB;IACxC,OAAOhC,QAAQ,CAACgC,KAAK;AACzB"}
1
+ {"version":3,"sources":["../../../src/cli/commands/get-command.ts"],"sourcesContent":["import { CommandName } from '../../utils';\n\nimport { Build } from './build';\nimport { BundlePackage } from './bundle-package';\nimport { Clean } from './clean';\nimport { ConvertEslintConfig } from './convert-eslint-config';\nimport { ESLintCommand } from './eslint';\nimport { Init } from './init';\nimport { Install } from './install';\nimport { KendoUILicense } from './kendo-ui-license';\nimport { Lint } from './lint';\nimport { MFEList } from './mfe-list';\nimport { MFEPackageClean } from './mfe-package-clean';\nimport { MFEPackagePublish } from './mfe-package-publish';\nimport { MFEPublish } from './mfe-publish';\nimport { PreparePackage } from './prepare-package';\nimport { Review } from './review';\nimport { RunTask } from './run-task';\nimport { Start } from './start';\nimport { Stylelint } from './stylelint';\nimport { StylesCheck } from './styles-check';\nimport { Tests } from './test';\nimport { Command, Newable } from './types';\nimport { UploadSourcemaps } from './upload-sourcemaps';\n\nconst commands: Record<CommandName, Newable<Command>> = {\n [CommandName.build]: Build,\n [CommandName['bundle-package']]: BundlePackage,\n [CommandName['convert-eslint-config']]: ConvertEslintConfig,\n [CommandName.clean]: Clean,\n [CommandName.eslint]: ESLintCommand,\n [CommandName.init]: Init,\n [CommandName.install]: Install,\n [CommandName['kendo-ui-license']]: KendoUILicense,\n [CommandName.lint]: Lint,\n [CommandName['mfe-list']]: MFEList,\n [CommandName['mfe-package-clean']]: MFEPackageClean,\n [CommandName['mfe-package-publish']]: MFEPackagePublish,\n [CommandName['mfe-publish']]: MFEPublish,\n [CommandName['prepare-package']]: PreparePackage,\n [CommandName.review]: Review,\n [CommandName.start]: Start,\n [CommandName.stylelint]: Stylelint,\n [CommandName['styles-check']]: StylesCheck,\n [CommandName.test]: Tests,\n [CommandName.task]: RunTask,\n [CommandName['upload-sourcemaps']]: UploadSourcemaps,\n};\n\nexport function getCommand(name: CommandName): Newable<Command> | undefined {\n return commands[name];\n}\n"],"names":["getCommand","commands","CommandName","build","Build","BundlePackage","ConvertEslintConfig","clean","Clean","eslint","ESLintCommand","init","Init","install","Install","KendoUILicense","lint","Lint","MFEList","MFEPackageClean","MFEPackagePublish","MFEPublish","PreparePackage","review","Review","start","Start","stylelint","Stylelint","StylesCheck","test","Tests","task","RunTask","UploadSourcemaps","name"],"mappings":";;;;+BAiDgBA;;;eAAAA;;;uBAjDY;uBAEN;+BACQ;uBACR;qCACc;wBACN;sBACT;yBACG;gCACO;sBACV;yBACG;iCACQ;mCACE;4BACP;gCACI;wBACR;yBACC;uBACF;2BACI;6BACE;sBACN;kCAEW;AAEjC,MAAMC,WAAkD;IACpD,CAACC,kBAAW,CAACC,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACF,kBAAW,CAAC,iBAAiB,CAAC,EAAEG,4BAAa;IAC9C,CAACH,kBAAW,CAAC,wBAAwB,CAAC,EAAEI,wCAAmB;IAC3D,CAACJ,kBAAW,CAACK,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACN,kBAAW,CAACO,MAAM,CAAC,EAAEC,qBAAa;IACnC,CAACR,kBAAW,CAACS,IAAI,CAAC,EAAEC,UAAI;IACxB,CAACV,kBAAW,CAACW,OAAO,CAAC,EAAEC,gBAAO;IAC9B,CAACZ,kBAAW,CAAC,mBAAmB,CAAC,EAAEa,8BAAc;IACjD,CAACb,kBAAW,CAACc,IAAI,CAAC,EAAEC,UAAI;IACxB,CAACf,kBAAW,CAAC,WAAW,CAAC,EAAEgB,gBAAO;IAClC,CAAChB,kBAAW,CAAC,oBAAoB,CAAC,EAAEiB,gCAAe;IACnD,CAACjB,kBAAW,CAAC,sBAAsB,CAAC,EAAEkB,oCAAiB;IACvD,CAAClB,kBAAW,CAAC,cAAc,CAAC,EAAEmB,sBAAU;IACxC,CAACnB,kBAAW,CAAC,kBAAkB,CAAC,EAAEoB,8BAAc;IAChD,CAACpB,kBAAW,CAACqB,MAAM,CAAC,EAAEC,cAAM;IAC5B,CAACtB,kBAAW,CAACuB,KAAK,CAAC,EAAEC,YAAK;IAC1B,CAACxB,kBAAW,CAACyB,SAAS,CAAC,EAAEC,oBAAS;IAClC,CAAC1B,kBAAW,CAAC,eAAe,CAAC,EAAE2B,wBAAW;IAC1C,CAAC3B,kBAAW,CAAC4B,IAAI,CAAC,EAAEC,WAAK;IACzB,CAAC7B,kBAAW,CAAC8B,IAAI,CAAC,EAAEC,gBAAO;IAC3B,CAAC/B,kBAAW,CAAC,oBAAoB,CAAC,EAAEgC,kCAAgB;AACxD;AAEO,SAASlC,WAAWmC,IAAiB;IACxC,OAAOlC,QAAQ,CAACkC,KAAK;AACzB"}
@@ -11,7 +11,7 @@ export declare class Init extends Command<Args> {
11
11
  };
12
12
  };
13
13
  execute(): Promise<void>;
14
- cloneRepo(destination: string): Promise<boolean>;
14
+ cloneRepo(destination: string): boolean;
15
15
  }
16
16
  export {};
17
17
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,IAAK,SAAQ,OAAO,CAAC,IAAI,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,WAAW,4BAA4B;IACvD,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;MAErB;IAGI,OAAO;IAoBP,SAAS,CAAC,WAAW,EAAE,MAAM;CAWtC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,IAAK,SAAQ,OAAO,CAAC,IAAI,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,WAAW,4BAA4B;IACvD,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;MAErB;IAGI,OAAO;IAsBb,SAAS,CAAC,WAAW,EAAE,MAAM;CAWhC"}
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "Init", {
8
8
  return Init;
9
9
  }
10
10
  });
11
+ const _install = require("@servicetitan/install");
11
12
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
13
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
14
  const _utils = require("../../utils");
14
- const _utils1 = require("../utils");
15
15
  const _types = require("./types");
16
16
  function _define_property(obj, key, value) {
17
17
  if (key in obj) {
@@ -54,18 +54,19 @@ class Init extends _types.Command {
54
54
  } else if (_fs.default.readdirSync(destination).length !== 0) {
55
55
  throw new Error(`${destination} is not an empty directory`);
56
56
  }
57
- if (await this.cloneRepo(destination)) {
57
+ if (this.cloneRepo(destination)) {
58
58
  _utils.log.info(`copied example project to ${destination}`);
59
59
  return;
60
60
  }
61
- if (!(0, _utils1.gitIsReachable)({
61
+ if (!(0, _install.gitIsReachable)({
62
62
  name: REPO_NAME
63
63
  })) {
64
64
  throw new Error(`could not read servicetitan/${REPO_NAME} repository`);
65
65
  }
66
+ return Promise.resolve();
66
67
  }
67
- async cloneRepo(destination) {
68
- const ok = await (0, _utils1.gitCloneRepo)({
68
+ cloneRepo(destination) {
69
+ const ok = (0, _install.gitCloneRepo)({
69
70
  destination,
70
71
  name: REPO_NAME
71
72
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { log, logErrors } from '../../utils';\nimport { gitCloneRepo, gitIsReachable } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n output?: string;\n}\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init extends Command<Args> {\n static readonly description = 'Create example project';\n static readonly options = {\n output: { string: true, description: 'Output path' },\n };\n\n @logErrors\n async execute() {\n const destination = path.resolve(this.args.output ?? '.');\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n } else if (!fs.lstatSync(destination).isDirectory()) {\n throw new Error(`${destination} is not a directory`);\n } else if (fs.readdirSync(destination).length !== 0) {\n throw new Error(`${destination} is not an empty directory`);\n }\n\n if (await this.cloneRepo(destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n\n if (!gitIsReachable({ name: REPO_NAME })) {\n throw new Error(`could not read servicetitan/${REPO_NAME} repository`);\n }\n }\n\n async cloneRepo(destination: string) {\n const ok = await gitCloneRepo({ destination, name: REPO_NAME });\n if (!ok) {\n return false;\n }\n\n fs.rmSync(path.join(destination, '.git'), { recursive: true, force: true });\n fs.rmSync(path.join(destination, '.github', 'CODEOWNERS'));\n fs.rmSync(path.join(destination, 'package-lock.json'));\n return true;\n }\n}\n"],"names":["Init","REPO_NAME","Command","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","cloneRepo","log","info","gitIsReachable","name","ok","gitCloneRepo","rmSync","join","force","description","options","string"],"mappings":";;;;+BAaaA;;;eAAAA;;;2DAbE;6DACE;uBAEc;wBACc;uBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMrC,MAAMC,YAAY;AAEX,MAAMD,aAAaE,cAAO;IAM7B,MACMC,UAAU;YACqB;QAAjC,MAAMC,cAAcC,aAAI,CAACC,OAAO,CAAC,CAAA,oBAAA,IAAI,CAACC,IAAI,CAACC,MAAM,cAAhB,+BAAA,oBAAoB;QACrD,IAAI,CAACC,WAAE,CAACC,UAAU,CAACN,cAAc;YAC7BK,WAAE,CAACE,SAAS,CAACP,aAAa;gBAAEQ,WAAW;YAAK;QAChD,OAAO,IAAI,CAACH,WAAE,CAACI,SAAS,CAACT,aAAaU,WAAW,IAAI;YACjD,MAAM,IAAIC,MAAM,GAAGX,YAAY,mBAAmB,CAAC;QACvD,OAAO,IAAIK,WAAE,CAACO,WAAW,CAACZ,aAAaa,MAAM,KAAK,GAAG;YACjD,MAAM,IAAIF,MAAM,GAAGX,YAAY,0BAA0B,CAAC;QAC9D;QAEA,IAAI,MAAM,IAAI,CAACc,SAAS,CAACd,cAAc;YACnCe,UAAG,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAEhB,aAAa;YACnD;QACJ;QAEA,IAAI,CAACiB,IAAAA,sBAAc,EAAC;YAAEC,MAAMrB;QAAU,IAAI;YACtC,MAAM,IAAIc,MAAM,CAAC,4BAA4B,EAAEd,UAAU,WAAW,CAAC;QACzE;IACJ;IAEA,MAAMiB,UAAUd,WAAmB,EAAE;QACjC,MAAMmB,KAAK,MAAMC,IAAAA,oBAAY,EAAC;YAAEpB;YAAakB,MAAMrB;QAAU;QAC7D,IAAI,CAACsB,IAAI;YACL,OAAO;QACX;QAEAd,WAAE,CAACgB,MAAM,CAACpB,aAAI,CAACqB,IAAI,CAACtB,aAAa,SAAS;YAAEQ,WAAW;YAAMe,OAAO;QAAK;QACzElB,WAAE,CAACgB,MAAM,CAACpB,aAAI,CAACqB,IAAI,CAACtB,aAAa,WAAW;QAC5CK,WAAE,CAACgB,MAAM,CAACpB,aAAI,CAACqB,IAAI,CAACtB,aAAa;QACjC,OAAO;IACX;AACJ;AArCI,iBADSJ,MACO4B,eAAc;AAC9B,iBAFS5B,MAEO6B,WAAU;IACtBrB,QAAQ;QAAEsB,QAAQ;QAAMF,aAAa;IAAc;AACvD"}
1
+ {"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import { gitCloneRepo, gitIsReachable } from '@servicetitan/install';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { log, logErrors } from '../../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n output?: string;\n}\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init extends Command<Args> {\n static readonly description = 'Create example project';\n static readonly options = {\n output: { string: true, description: 'Output path' },\n };\n\n @logErrors\n async execute() {\n const destination = path.resolve(this.args.output ?? '.');\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n } else if (!fs.lstatSync(destination).isDirectory()) {\n throw new Error(`${destination} is not a directory`);\n } else if (fs.readdirSync(destination).length !== 0) {\n throw new Error(`${destination} is not an empty directory`);\n }\n\n if (this.cloneRepo(destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n\n if (!gitIsReachable({ name: REPO_NAME })) {\n throw new Error(`could not read servicetitan/${REPO_NAME} repository`);\n }\n\n return Promise.resolve();\n }\n\n cloneRepo(destination: string) {\n const ok = gitCloneRepo({ destination, name: REPO_NAME });\n if (!ok) {\n return false;\n }\n\n fs.rmSync(path.join(destination, '.git'), { recursive: true, force: true });\n fs.rmSync(path.join(destination, '.github', 'CODEOWNERS'));\n fs.rmSync(path.join(destination, 'package-lock.json'));\n return true;\n }\n}\n"],"names":["Init","REPO_NAME","Command","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","cloneRepo","log","info","gitIsReachable","name","Promise","ok","gitCloneRepo","rmSync","join","force","description","options","string"],"mappings":";;;;+BAaaA;;;eAAAA;;;yBAbgC;2DAC9B;6DACE;uBAEc;uBACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMrC,MAAMC,YAAY;AAEX,MAAMD,aAAaE,cAAO;IAM7B,MACMC,UAAU;YACqB;QAAjC,MAAMC,cAAcC,aAAI,CAACC,OAAO,CAAC,CAAA,oBAAA,IAAI,CAACC,IAAI,CAACC,MAAM,cAAhB,+BAAA,oBAAoB;QACrD,IAAI,CAACC,WAAE,CAACC,UAAU,CAACN,cAAc;YAC7BK,WAAE,CAACE,SAAS,CAACP,aAAa;gBAAEQ,WAAW;YAAK;QAChD,OAAO,IAAI,CAACH,WAAE,CAACI,SAAS,CAACT,aAAaU,WAAW,IAAI;YACjD,MAAM,IAAIC,MAAM,GAAGX,YAAY,mBAAmB,CAAC;QACvD,OAAO,IAAIK,WAAE,CAACO,WAAW,CAACZ,aAAaa,MAAM,KAAK,GAAG;YACjD,MAAM,IAAIF,MAAM,GAAGX,YAAY,0BAA0B,CAAC;QAC9D;QAEA,IAAI,IAAI,CAACc,SAAS,CAACd,cAAc;YAC7Be,UAAG,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAEhB,aAAa;YACnD;QACJ;QAEA,IAAI,CAACiB,IAAAA,uBAAc,EAAC;YAAEC,MAAMrB;QAAU,IAAI;YACtC,MAAM,IAAIc,MAAM,CAAC,4BAA4B,EAAEd,UAAU,WAAW,CAAC;QACzE;QAEA,OAAOsB,QAAQjB,OAAO;IAC1B;IAEAY,UAAUd,WAAmB,EAAE;QAC3B,MAAMoB,KAAKC,IAAAA,qBAAY,EAAC;YAAErB;YAAakB,MAAMrB;QAAU;QACvD,IAAI,CAACuB,IAAI;YACL,OAAO;QACX;QAEAf,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa,SAAS;YAAEQ,WAAW;YAAMgB,OAAO;QAAK;QACzEnB,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa,WAAW;QAC5CK,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa;QACjC,OAAO;IACX;AACJ;AAvCI,iBADSJ,MACO6B,eAAc;AAC9B,iBAFS7B,MAEO8B,WAAU;IACtBtB,QAAQ;QAAEuB,QAAQ;QAAMF,aAAa;IAAc;AACvD"}
@@ -12,7 +12,7 @@ export declare class Install extends Command<Args> {
12
12
  describe: string;
13
13
  hidden: boolean;
14
14
  };
15
- quite: {
15
+ quiet: {
16
16
  boolean: boolean;
17
17
  describe: string;
18
18
  hidden: boolean;
@@ -23,9 +23,6 @@ export declare class Install extends Command<Args> {
23
23
  };
24
24
  };
25
25
  execute(): Promise<void>;
26
- private configureNpmToken;
27
- private fetchNpmToken;
28
- private installPackages;
29
26
  }
30
27
  export {};
31
28
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,qBAAa,OAAQ,SAAQ,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,kCAAkC;IAC7D,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;MAIrB;IAGI,OAAO;YAcC,iBAAiB;YAsCjB,aAAa;IAqC3B,OAAO,CAAC,eAAe;CAyB1B"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,OAAQ,SAAQ,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,kCAAkC;IAC7D,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;MAIrB;IAGI,OAAO;CAoBhB"}
@@ -9,12 +9,8 @@ Object.defineProperty(exports, "Install", {
9
9
  }
10
10
  });
11
11
  const _child_process = require("child_process");
12
- const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
13
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
- const _os = /*#__PURE__*/ _interop_require_default(require("os"));
15
12
  const _utils = require("../../utils");
16
13
  const _types = require("./types");
17
- const _utils1 = require("../utils");
18
14
  function _define_property(obj, key, value) {
19
15
  if (key in obj) {
20
16
  Object.defineProperty(obj, key, {
@@ -28,11 +24,6 @@ function _define_property(obj, key, value) {
28
24
  }
29
25
  return obj;
30
26
  }
31
- function _interop_require_default(obj) {
32
- return obj && obj.__esModule ? obj : {
33
- default: obj
34
- };
35
- }
36
27
  function _ts_decorate(decorators, target, key, desc) {
37
28
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38
29
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -42,120 +33,23 @@ function _ts_decorate(decorators, target, key, desc) {
42
33
  function _ts_metadata(k, v) {
43
34
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
44
35
  }
45
- const REPO_NAME = 'frontend-dev-config';
46
- const AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';
47
- const AUTH_TOKEN_REGEX = /^\/\/registry\.npmjs\.org\/:_authToken=\s*\${([^}]+)}/m;
48
36
  class Install extends _types.Command {
49
37
  async execute() {
50
- var _this_args, _this_args1;
51
- if (!((_this_args = this.args) === null || _this_args === void 0 ? void 0 : _this_args.quiet)) {
38
+ if (!this.args.quiet) {
52
39
  _utils.log.info(`startup cli v${(0, _utils.getStartupVersion)()}`);
53
40
  }
54
- const env = await this.configureNpmToken();
55
- if (((_this_args1 = this.args) === null || _this_args1 === void 0 ? void 0 : _this_args1.token) !== true) {
56
- this.installPackages(env);
57
- }
58
- return Promise.resolve(); // stops "async method has no 'await' expression" lint error
59
- }
60
- async configureNpmToken() {
61
- var _this_args, _this_args1, _this_args2, _this_args3;
62
- if ((0, _utils1.isCI)() || ((_this_args = this.args) === null || _this_args === void 0 ? void 0 : _this_args.fix) || ((_this_args1 = this.args) === null || _this_args1 === void 0 ? void 0 : _this_args1.token) === false) {
63
- return;
64
- }
65
- if (!((_this_args2 = this.args) === null || _this_args2 === void 0 ? void 0 : _this_args2.quiet)) {
66
- _utils.log.info('Configuring NPM token ...');
67
- }
68
- if (((_this_args3 = this.args) === null || _this_args3 === void 0 ? void 0 : _this_args3.token) !== true) {
69
- const npmUser = (0, _utils1.npmWhoAmI)();
70
- /* istanbul ignore next: debug only */ _utils.log.debug('install:npm-user', ()=>JSON.stringify({
71
- npmUser
72
- }));
73
- if (npmUser === 'st-team') {
74
- return;
75
- }
76
- }
77
- const token = await this.fetchNpmToken();
78
- if (!token) {
79
- return;
80
- }
81
- (0, _child_process.execSync)(`npm config set "${AUTH_TOKEN_KEY}"="${token}"`);
82
- if (!_fs.default.existsSync('.npmrc')) {
83
- return;
84
- }
85
- const npmrc = _fs.default.readFileSync('.npmrc', 'utf-8');
86
- const match = AUTH_TOKEN_REGEX.exec(npmrc);
87
- if (match) {
88
- return {
89
- [match[1]]: token
90
- };
91
- }
92
- (0, _child_process.execSync)(`npm config delete --location=project "${AUTH_TOKEN_KEY}"`);
93
- }
94
- async fetchNpmToken() {
95
- const tempDirPath = _fs.default.mkdtempSync(_path.default.join(_os.default.tmpdir(), 'st-install-'));
96
- try {
97
- if (!await (0, _utils1.gitCloneRepo)({
98
- destination: tempDirPath,
99
- name: REPO_NAME
100
- })) {
101
- throw new Error(`could not clone servicetitan/${REPO_NAME}`);
102
- }
103
- const npmJson = (0, _utils.readJsonSafe)(_path.default.join(tempDirPath, '.npm.json'));
104
- /* istanbul ignore next: debug only */ _utils.log.debug('install:fetch-token', ()=>JSON.stringify(npmJson, null, 2));
105
- if (!(npmJson && typeof npmJson === 'object' || Array.isArray(npmJson))) {
106
- throw new Error('.npm.json is not an object');
107
- }
108
- const { readOnlyToken: authToken } = npmJson;
109
- if (!authToken) {
110
- throw new Error('.npm.json does not contain auth token');
111
- }
112
- if (typeof authToken !== 'string') {
113
- throw new Error('.npm.json auth token is not a string');
114
- }
115
- return Buffer.from(authToken, 'base64').toString('utf-8');
116
- } catch (e) {
117
- _utils.log.warning(String(e));
118
- } finally{
119
- try {
120
- _fs.default.rmSync(tempDirPath, {
121
- recursive: true,
122
- force: true
123
- });
124
- } catch (e) {
125
- // ignore
126
- }
127
- }
128
- }
129
- installPackages(env) {
130
- var _this_args, _this_args1;
131
- /* istanbul ignore next: debug only */ _utils.log.debug('install:install-packages', ()=>JSON.stringify({
132
- env
133
- }));
134
- /**
135
- * Note, if these are changed, update bootstrap.js to match
136
- * @see {@link file://./../../../../../bootstrap.js}
137
- */ const npmArguments = [
138
- (0, _utils1.isCI)() ? 'ci' : 'i',
139
- '--audit=false',
140
- '--fund=false',
141
- '--legacy-peer-deps',
142
- ...((_this_args = this.args) === null || _this_args === void 0 ? void 0 : _this_args.fix) ? [
143
- '--package-lock-only',
144
- '--prefer-dedupe'
145
- ] : []
146
- ].join(' ');
147
- if (!((_this_args1 = this.args) === null || _this_args1 === void 0 ? void 0 : _this_args1.quiet)) {
148
- _utils.log.info(`Running npm ${npmArguments} ...`);
149
- }
150
- (0, _child_process.execSync)(`npm ${npmArguments}`, {
151
- ...env ? {
152
- env: {
153
- ...process.env,
154
- ...env
155
- }
156
- } : {},
41
+ const options = [
42
+ this.args.fix ? '--fix' : '',
43
+ this.args.quiet ? '--quiet' : '',
44
+ this.args.token === true ? '--token' : '',
45
+ this.args.token === false ? '--no-token' : ''
46
+ ].filter((option)=>!!option);
47
+ const command = `npx @servicetitan/install ${options.join(' ')}`.trim();
48
+ _utils.log.debug('install', command);
49
+ (0, _child_process.execSync)(command, {
157
50
  stdio: 'inherit'
158
51
  });
52
+ return Promise.resolve(); // stops "async method has no 'await' expression" lint error
159
53
  }
160
54
  }
161
55
  _define_property(Install, "description", 'Install project dependencies');
@@ -165,7 +59,7 @@ _define_property(Install, "options", {
165
59
  describe: 'Update and dedupe package-lock.json',
166
60
  hidden: true
167
61
  },
168
- quite: {
62
+ quiet: {
169
63
  boolean: true,
170
64
  describe: 'Suppress output',
171
65
  hidden: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\nimport { log, logErrors, getStartupVersion, readJsonSafe } from '../../utils';\nimport { Command, CommandArgs } from './types';\nimport { gitCloneRepo, isCI, npmWhoAmI } from '../utils';\n\ninterface Args extends CommandArgs {\n fix?: boolean;\n quiet?: boolean;\n token?: boolean;\n}\n\nconst REPO_NAME = 'frontend-dev-config';\nconst AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';\nconst AUTH_TOKEN_REGEX = /^\\/\\/registry\\.npmjs\\.org\\/:_authToken=\\s*\\${([^}]+)}/m;\n\nexport class Install extends Command<Args> {\n static readonly description = 'Install project dependencies';\n static readonly options = {\n fix: { boolean: true, describe: 'Update and dedupe package-lock.json', hidden: true },\n quite: { boolean: true, describe: 'Suppress output', hidden: true },\n token: { boolean: true, describe: 'Configure npm token' },\n };\n\n @logErrors\n async execute() {\n if (!this.args?.quiet) {\n log.info(`startup cli v${getStartupVersion()}`);\n }\n\n const env = await this.configureNpmToken();\n\n if (this.args?.token !== true) {\n this.installPackages(env);\n }\n\n return Promise.resolve(); // stops \"async method has no 'await' expression\" lint error\n }\n\n private async configureNpmToken() {\n if (isCI() || this.args?.fix || this.args?.token === false) {\n return;\n }\n\n if (!this.args?.quiet) {\n log.info('Configuring NPM token ...');\n }\n\n if (this.args?.token !== true) {\n const npmUser = npmWhoAmI();\n /* istanbul ignore next: debug only */\n log.debug('install:npm-user', () => JSON.stringify({ npmUser }));\n if (npmUser === 'st-team') {\n return;\n }\n }\n\n const token = await this.fetchNpmToken();\n if (!token) {\n return;\n }\n\n execSync(`npm config set \"${AUTH_TOKEN_KEY}\"=\"${token}\"`);\n\n if (!fs.existsSync('.npmrc')) {\n return;\n }\n\n const npmrc = fs.readFileSync('.npmrc', 'utf-8');\n const match = AUTH_TOKEN_REGEX.exec(npmrc);\n if (match) {\n return { [match[1]]: token };\n }\n\n execSync(`npm config delete --location=project \"${AUTH_TOKEN_KEY}\"`);\n }\n\n private async fetchNpmToken() {\n const tempDirPath = fs.mkdtempSync(path.join(os.tmpdir(), 'st-install-'));\n try {\n if (!(await gitCloneRepo({ destination: tempDirPath, name: REPO_NAME }))) {\n throw new Error(`could not clone servicetitan/${REPO_NAME}`);\n }\n\n const npmJson = readJsonSafe(path.join(tempDirPath, '.npm.json'));\n\n /* istanbul ignore next: debug only */\n log.debug('install:fetch-token', () => JSON.stringify(npmJson, null, 2));\n\n if (!((npmJson && typeof npmJson === 'object') || Array.isArray(npmJson))) {\n throw new Error('.npm.json is not an object');\n }\n\n const { readOnlyToken: authToken } = npmJson;\n if (!authToken) {\n throw new Error('.npm.json does not contain auth token');\n }\n\n if (typeof authToken !== 'string') {\n throw new Error('.npm.json auth token is not a string');\n }\n\n return Buffer.from(authToken, 'base64').toString('utf-8');\n } catch (e) {\n log.warning(String(e));\n } finally {\n try {\n fs.rmSync(tempDirPath, { recursive: true, force: true });\n } catch {\n // ignore\n }\n }\n }\n\n private installPackages(env?: Record<string, string>) {\n /* istanbul ignore next: debug only */\n log.debug('install:install-packages', () => JSON.stringify({ env }));\n\n /**\n * Note, if these are changed, update bootstrap.js to match\n * @see {@link file://./../../../../../bootstrap.js}\n */\n const npmArguments = [\n isCI() ? 'ci' : 'i',\n '--audit=false',\n '--fund=false',\n '--legacy-peer-deps',\n ...(this.args?.fix ? ['--package-lock-only', '--prefer-dedupe'] : []),\n ].join(' ');\n\n if (!this.args?.quiet) {\n log.info(`Running npm ${npmArguments} ...`);\n }\n\n execSync(`npm ${npmArguments}`, {\n ...(env ? { env: { ...process.env, ...env } } : {}),\n stdio: 'inherit',\n });\n }\n}\n"],"names":["Install","REPO_NAME","AUTH_TOKEN_KEY","AUTH_TOKEN_REGEX","Command","execute","args","quiet","log","info","getStartupVersion","env","configureNpmToken","token","installPackages","Promise","resolve","isCI","fix","npmUser","npmWhoAmI","debug","JSON","stringify","fetchNpmToken","execSync","fs","existsSync","npmrc","readFileSync","match","exec","tempDirPath","mkdtempSync","path","join","os","tmpdir","gitCloneRepo","destination","name","Error","npmJson","readJsonSafe","Array","isArray","readOnlyToken","authToken","Buffer","from","toString","e","warning","String","rmSync","recursive","force","npmArguments","process","stdio","description","options","boolean","describe","hidden","quite"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { log, logErrors, getStartupVersion } from '../../utils';\nimport { Command, CommandArgs } from './types';\ninterface Args extends CommandArgs {\n fix?: boolean;\n quiet?: boolean;\n token?: boolean;\n}\n\nexport class Install extends Command<Args> {\n static readonly description = 'Install project dependencies';\n static readonly options = {\n fix: { boolean: true, describe: 'Update and dedupe package-lock.json', hidden: true },\n quiet: { boolean: true, describe: 'Suppress output', hidden: true },\n token: { boolean: true, describe: 'Configure npm token' },\n };\n\n @logErrors\n async execute() {\n if (!this.args.quiet) {\n log.info(`startup cli v${getStartupVersion()}`);\n }\n\n const options = [\n this.args.fix ? '--fix' : '',\n this.args.quiet ? '--quiet' : '',\n this.args.token === true ? '--token' : '',\n this.args.token === false ? '--no-token' : '',\n ].filter(option => !!option);\n\n const command = `npx @servicetitan/install ${options.join(' ')}`.trim();\n\n log.debug('install', command);\n\n execSync(command, { stdio: 'inherit' });\n\n return Promise.resolve(); // stops \"async method has no 'await' expression\" lint error\n }\n}\n"],"names":["Install","Command","execute","args","quiet","log","info","getStartupVersion","options","fix","token","filter","option","command","join","trim","debug","execSync","stdio","Promise","resolve","description","boolean","describe","hidden"],"mappings":";;;;+BASaA;;;eAAAA;;;+BATY;uBACyB;uBACb;;;;;;;;;;;;;;;;;;;;;;;AAO9B,MAAMA,gBAAgBC,cAAO;IAQhC,MACMC,UAAU;QACZ,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,EAAE;YAClBC,UAAG,CAACC,IAAI,CAAC,CAAC,aAAa,EAAEC,IAAAA,wBAAiB,KAAI;QAClD;QAEA,MAAMC,UAAU;YACZ,IAAI,CAACL,IAAI,CAACM,GAAG,GAAG,UAAU;YAC1B,IAAI,CAACN,IAAI,CAACC,KAAK,GAAG,YAAY;YAC9B,IAAI,CAACD,IAAI,CAACO,KAAK,KAAK,OAAO,YAAY;YACvC,IAAI,CAACP,IAAI,CAACO,KAAK,KAAK,QAAQ,eAAe;SAC9C,CAACC,MAAM,CAACC,CAAAA,SAAU,CAAC,CAACA;QAErB,MAAMC,UAAU,CAAC,0BAA0B,EAAEL,QAAQM,IAAI,CAAC,MAAM,CAACC,IAAI;QAErEV,UAAG,CAACW,KAAK,CAAC,WAAWH;QAErBI,IAAAA,uBAAQ,EAACJ,SAAS;YAAEK,OAAO;QAAU;QAErC,OAAOC,QAAQC,OAAO,IAAI,4DAA4D;IAC1F;AACJ;AA5BI,iBADSpB,SACOqB,eAAc;AAC9B,iBAFSrB,SAEOQ,WAAU;IACtBC,KAAK;QAAEa,SAAS;QAAMC,UAAU;QAAuCC,QAAQ;IAAK;IACpFpB,OAAO;QAAEkB,SAAS;QAAMC,UAAU;QAAmBC,QAAQ;IAAK;IAClEd,OAAO;QAAEY,SAAS;QAAMC,UAAU;IAAsB;AAC5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/lint.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,IAAK,SAAQ,OAAO,CAAC,IAAI,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,WAAW,8BAA8B;IACzD,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;MAMrB;IAEI,OAAO;YAOC,MAAM;YAoBN,SAAS;YA6CT,WAAW;IAYzB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,KAAK,KAAK,GAGhB;CACJ"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/lint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,IAAK,SAAQ,OAAO,CAAC,IAAI,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,WAAW,8BAA8B;IACzD,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;MAMrB;IAEI,OAAO;YAOC,MAAM;YAoBN,SAAS;YAMT,WAAW;IAYzB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,KAAK,KAAK,GAGhB;CACJ"}
@@ -8,11 +8,10 @@ Object.defineProperty(exports, "Lint", {
8
8
  return Lint;
9
9
  }
10
10
  });
11
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
- const _stylelint = /*#__PURE__*/ _interop_require_default(require("stylelint"));
13
11
  const _utils = require("../../utils");
14
12
  const _types = require("./types");
15
13
  const _utils1 = require("../utils");
14
+ const _stylelint = require("../utils/stylelint");
16
15
  function _define_property(obj, key, value) {
17
16
  if (key in obj) {
18
17
  Object.defineProperty(obj, key, {
@@ -26,11 +25,6 @@ function _define_property(obj, key, value) {
26
25
  }
27
26
  return obj;
28
27
  }
29
- function _interop_require_default(obj) {
30
- return obj && obj.__esModule ? obj : {
31
- default: obj
32
- };
33
- }
34
28
  function _ts_decorate(decorators, target, key, desc) {
35
29
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36
30
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -71,60 +65,21 @@ class Lint extends _types.Command {
71
65
  });
72
66
  }
73
67
  async stylelint() {
74
- const { disabled, ...config } = (0, _utils.getStylelintConfiguration)();
75
- if (disabled) {
76
- return;
77
- }
78
- const { fix } = this.args;
79
- const { paths } = this;
80
68
  _utils.log.info('Running stylelint...');
81
- const allowedExtensions = [
82
- 'css',
83
- 'scss',
84
- 'less'
85
- ];
86
- const glob = `**/*.{${allowedExtensions.join(',')}}`;
87
- let files = paths.reduce((result, path)=>{
88
- const extension = path.split('.').pop();
89
- if (extension) {
90
- if (allowedExtensions.includes(extension.toLowerCase())) {
91
- result.push(path);
92
- }
93
- } else {
94
- result.push(pathUniJoin(path, glob));
95
- }
96
- return result;
97
- }, new Array());
98
- if (!files.length) {
99
- files = [
100
- glob
101
- ];
102
- }
103
- const { report, errored } = await _stylelint.default.lint({
104
- files,
105
- ignorePattern: [
106
- 'node_modules',
107
- ...(0, _utils.getDestinationFolders)()
108
- ],
109
- formatter: 'string',
110
- fix,
111
- quietDeprecationWarnings: true,
112
- ...config
69
+ await (0, _stylelint.stylelint)({
70
+ fix: this.args.fix,
71
+ paths: this.paths
113
72
  });
114
- process.stdout.write(report);
115
- if (errored) {
116
- process.exitCode = 1;
117
- }
118
73
  }
119
74
  async checkStyles() {
120
75
  const { ignore, scope } = this.args;
121
- const packages = (0, _utils.getPackages)({
76
+ const packages = ignore || scope ? (0, _utils.getPackages)({
122
77
  ignore,
123
78
  scope
124
- });
79
+ }) : undefined;
125
80
  await (0, _utils1.lernaExec)({
126
81
  cmd: 'startup styles-check',
127
- scope: packages.map(({ name })=>name),
82
+ scope: packages === null || packages === void 0 ? void 0 : packages.map(({ name })=>name),
128
83
  stream: true
129
84
  });
130
85
  }
@@ -185,8 +140,5 @@ _ts_decorate([
185
140
  _ts_metadata("design:paramtypes", []),
186
141
  _ts_metadata("design:returntype", Promise)
187
142
  ], Lint.prototype, "checkStyles", null);
188
- function pathUniJoin(...chunks) {
189
- return _path.default.join(...chunks).replace(/\\/g, '/');
190
- }
191
143
 
192
144
  //# sourceMappingURL=lint.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/lint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport path from 'path';\n\nimport stylelint from 'stylelint';\n\nimport {\n getDestinationFolders,\n getPackages,\n getStylelintConfiguration,\n log,\n logErrors,\n} from '../../utils';\nimport { Command, CommandArgs } from './types';\nimport { eslint, lernaExec } from '../utils';\n\ninterface Args extends CommandArgs {\n _: string[];\n fix?: boolean;\n scope?: string | string[];\n ignore?: string | string[];\n parallel?: boolean;\n paths?: string[];\n}\n\nexport class Lint extends Command<Args> {\n static readonly description = 'Run eslint and stylelint';\n static readonly greedy = true;\n static readonly options = {\n _: { description: '[paths...]' },\n fix: { boolean: true, description: 'Apply fixes for issues?' },\n scope: { array: true, hidden: true, description: 'Packages to lint' },\n ignore: { array: true, hidden: true, description: 'Packages to skip' },\n parallel: { boolean: true, hidden: true, description: 'Lint each package separately' },\n };\n\n async execute() {\n await this.checkStyles();\n await this.eslint();\n await this.stylelint();\n }\n\n @logErrors\n private async eslint() {\n if (this.useParallelESLint()) {\n const { fix, ignore, scope } = this.args;\n const packages = getPackages({ scope, ignore });\n const args = fix ? ['--fix'] : [];\n\n await lernaExec({\n 'cmd': 'startup eslint',\n 'scope': packages.map(({ name }) => name),\n 'bail': false,\n '--': args,\n });\n return;\n }\n\n log.info('Running eslint...');\n await eslint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async stylelint() {\n const { disabled, ...config } = getStylelintConfiguration();\n if (disabled) {\n return;\n }\n\n const { fix } = this.args;\n const { paths } = this;\n\n log.info('Running stylelint...');\n const allowedExtensions = ['css', 'scss', 'less'];\n const glob = `**/*.{${allowedExtensions.join(',')}}`;\n let files = paths.reduce((result, path) => {\n const extension = path.split('.').pop();\n if (extension) {\n if (allowedExtensions.includes(extension.toLowerCase())) {\n result.push(path);\n }\n } else {\n result.push(pathUniJoin(path, glob));\n }\n return result;\n }, new Array<string>());\n\n if (!files.length) {\n files = [glob];\n }\n\n const { report, errored } = await stylelint.lint({\n files,\n ignorePattern: ['node_modules', ...getDestinationFolders()],\n formatter: 'string',\n fix,\n quietDeprecationWarnings: true,\n ...config,\n });\n\n process.stdout.write(report);\n\n if (errored) {\n process.exitCode = 1;\n }\n }\n\n @logErrors\n private async checkStyles() {\n const { ignore, scope } = this.args;\n\n const packages = getPackages({ ignore, scope });\n\n await lernaExec({\n cmd: 'startup styles-check',\n scope: packages.map(({ name }) => name),\n stream: true,\n });\n }\n\n private useParallelESLint() {\n const { parallel, scope, ignore } = this.args;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return !this.paths.length && (parallel || scope?.length || ignore?.length);\n }\n\n private get paths() {\n const { _, paths = [] } = this.args;\n return [..._, ...paths];\n }\n}\n\nfunction pathUniJoin(...chunks: string[]) {\n return path.join(...chunks).replace(/\\\\/g, '/');\n}\n"],"names":["Lint","Command","execute","checkStyles","eslint","stylelint","useParallelESLint","fix","ignore","scope","args","packages","getPackages","lernaExec","map","name","log","info","paths","disabled","config","getStylelintConfiguration","allowedExtensions","glob","join","files","reduce","result","path","extension","split","pop","includes","toLowerCase","push","pathUniJoin","Array","length","report","errored","lint","ignorePattern","getDestinationFolders","formatter","quietDeprecationWarnings","process","stdout","write","exitCode","cmd","stream","parallel","_","description","greedy","options","boolean","array","hidden","chunks","replace"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/lint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { getPackages, log, logErrors } from '../../utils';\nimport { Command, CommandArgs } from './types';\nimport { eslint, lernaExec } from '../utils';\nimport { stylelint } from '../utils/stylelint';\n\ninterface Args extends CommandArgs {\n _: string[];\n fix?: boolean;\n scope?: string | string[];\n ignore?: string | string[];\n parallel?: boolean;\n paths?: string[];\n}\n\nexport class Lint extends Command<Args> {\n static readonly description = 'Run eslint and stylelint';\n static readonly greedy = true;\n static readonly options = {\n _: { description: '[paths...]' },\n fix: { boolean: true, description: 'Apply fixes for issues?' },\n scope: { array: true, hidden: true, description: 'Packages to lint' },\n ignore: { array: true, hidden: true, description: 'Packages to skip' },\n parallel: { boolean: true, hidden: true, description: 'Lint each package separately' },\n };\n\n async execute() {\n await this.checkStyles();\n await this.eslint();\n await this.stylelint();\n }\n\n @logErrors\n private async eslint() {\n if (this.useParallelESLint()) {\n const { fix, ignore, scope } = this.args;\n const packages = getPackages({ scope, ignore });\n const args = fix ? ['--fix'] : [];\n\n await lernaExec({\n 'cmd': 'startup eslint',\n 'scope': packages.map(({ name }) => name),\n 'bail': false,\n '--': args,\n });\n return;\n }\n\n log.info('Running eslint...');\n await eslint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async stylelint() {\n log.info('Running stylelint...');\n await stylelint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async checkStyles() {\n const { ignore, scope } = this.args;\n\n const packages = ignore || scope ? getPackages({ ignore, scope }) : undefined;\n\n await lernaExec({\n cmd: 'startup styles-check',\n scope: packages?.map(({ name }) => name),\n stream: true,\n });\n }\n\n private useParallelESLint() {\n const { parallel, scope, ignore } = this.args;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return !this.paths.length && (parallel || scope?.length || ignore?.length);\n }\n\n private get paths() {\n const { _, paths = [] } = this.args;\n return [..._, ...paths];\n }\n}\n"],"names":["Lint","Command","execute","checkStyles","eslint","stylelint","useParallelESLint","fix","ignore","scope","args","packages","getPackages","lernaExec","map","name","log","info","paths","undefined","cmd","stream","parallel","length","_","description","greedy","options","boolean","array","hidden"],"mappings":"AAAA,uDAAuD;;;;+BAe1CA;;;eAAAA;;;uBAd+B;uBACP;wBACH;2BACR;;;;;;;;;;;;;;;;;;;;;;;AAWnB,MAAMA,aAAaC,cAAO;IAW7B,MAAMC,UAAU;QACZ,MAAM,IAAI,CAACC,WAAW;QACtB,MAAM,IAAI,CAACC,MAAM;QACjB,MAAM,IAAI,CAACC,SAAS;IACxB;IAEA,MACcD,SAAS;QACnB,IAAI,IAAI,CAACE,iBAAiB,IAAI;YAC1B,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG,IAAI,CAACC,IAAI;YACxC,MAAMC,WAAWC,IAAAA,kBAAW,EAAC;gBAAEH;gBAAOD;YAAO;YAC7C,MAAME,OAAOH,MAAM;gBAAC;aAAQ,GAAG,EAAE;YAEjC,MAAMM,IAAAA,iBAAS,EAAC;gBACZ,OAAO;gBACP,SAASF,SAASG,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;gBACpC,QAAQ;gBACR,MAAML;YACV;YACA;QACJ;QAEAM,UAAG,CAACC,IAAI,CAAC;QACT,MAAMb,IAAAA,cAAM,EAAC;YAAEG,KAAK,IAAI,CAACG,IAAI,CAACH,GAAG;YAAEW,OAAO,IAAI,CAACA,KAAK;QAAC;IACzD;IAEA,MACcb,YAAY;QACtBW,UAAG,CAACC,IAAI,CAAC;QACT,MAAMZ,IAAAA,oBAAS,EAAC;YAAEE,KAAK,IAAI,CAACG,IAAI,CAACH,GAAG;YAAEW,OAAO,IAAI,CAACA,KAAK;QAAC;IAC5D;IAEA,MACcf,cAAc;QACxB,MAAM,EAAEK,MAAM,EAAEC,KAAK,EAAE,GAAG,IAAI,CAACC,IAAI;QAEnC,MAAMC,WAAWH,UAAUC,QAAQG,IAAAA,kBAAW,EAAC;YAAEJ;YAAQC;QAAM,KAAKU;QAEpE,MAAMN,IAAAA,iBAAS,EAAC;YACZO,KAAK;YACLX,KAAK,EAAEE,qBAAAA,+BAAAA,SAAUG,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;YACnCM,QAAQ;QACZ;IACJ;IAEQf,oBAAoB;QACxB,MAAM,EAAEgB,QAAQ,EAAEb,KAAK,EAAED,MAAM,EAAE,GAAG,IAAI,CAACE,IAAI;QAC7C,wEAAwE;QACxE,OAAO,CAAC,IAAI,CAACQ,KAAK,CAACK,MAAM,IAAKD,CAAAA,aAAYb,kBAAAA,4BAAAA,MAAOc,MAAM,MAAIf,mBAAAA,6BAAAA,OAAQe,MAAM,CAAD;IAC5E;IAEA,IAAYL,QAAQ;QAChB,MAAM,EAAEM,CAAC,EAAEN,QAAQ,EAAE,EAAE,GAAG,IAAI,CAACR,IAAI;QACnC,OAAO;eAAIc;eAAMN;SAAM;IAC3B;AACJ;AAjEI,iBADSlB,MACOyB,eAAc;AAC9B,iBAFSzB,MAEO0B,UAAS;AACzB,iBAHS1B,MAGO2B,WAAU;IACtBH,GAAG;QAAEC,aAAa;IAAa;IAC/BlB,KAAK;QAAEqB,SAAS;QAAMH,aAAa;IAA0B;IAC7DhB,OAAO;QAAEoB,OAAO;QAAMC,QAAQ;QAAML,aAAa;IAAmB;IACpEjB,QAAQ;QAAEqB,OAAO;QAAMC,QAAQ;QAAML,aAAa;IAAmB;IACrEH,UAAU;QAAEM,SAAS;QAAME,QAAQ;QAAML,aAAa;IAA+B;AACzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"mfe-list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-list.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,qBAAa,OAAQ,SAAQ,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,iCAAiC;IAC5D,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;MAYrB;IAGI,OAAO;IAmBb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,cAAc;YAWR,GAAG;YAOH,KAAK;IAoBnB,OAAO,KAAK,KAAK,GAKhB;IAED,OAAO,KAAK,YAAY,GAUvB;IAED,OAAO,KAAK,QAAQ,GAEnB;CACJ"}
1
+ {"version":3,"file":"mfe-list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-list.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,qBAAa,OAAQ,SAAQ,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,iCAAiC;IAC5D,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;MAYrB;IAGI,OAAO;IAmBb,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,cAAc;YAWR,GAAG;YAOH,KAAK;IAoBnB,OAAO,KAAK,KAAK,GAKhB;IAED,OAAO,KAAK,YAAY,GAUvB;IAED,OAAO,KAAK,QAAQ,GAEnB;CACJ"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "MFEList", {
8
8
  return MFEList;
9
9
  }
10
10
  });
11
+ const _install = require("@servicetitan/install");
11
12
  const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
12
13
  const _clitable3 = /*#__PURE__*/ _interop_require_default(require("cli-table3"));
13
14
  const _promises = /*#__PURE__*/ _interop_require_default(require("readline/promises"));
@@ -127,7 +128,7 @@ class MFEList extends _types.Command {
127
128
  return answer.trim().toLowerCase();
128
129
  }
129
130
  async login() {
130
- if (this.registry !== VERDACCIO || (0, _utils1.npmWhoAmI)({
131
+ if (this.registry !== VERDACCIO || (0, _install.npmWhoAmI)({
131
132
  registry: this.registry
132
133
  }) !== undefined) {
133
134
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/mfe-list.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport readline from 'readline/promises';\nimport {\n formatRelativeDate,\n getPackages,\n isWebComponent,\n log,\n logErrors,\n PackageType,\n} from '../../utils';\nimport { Command, CommandArgs } from './types';\nimport { isTTY, NPMPackageInfo, npmView, npmWhoAmI, runCommand } from '../utils';\n\ninterface Args extends CommandArgs {\n _: string[];\n all?: boolean;\n ignore?: string | string[];\n limit?: number;\n packageNames?: string[];\n registry?: string;\n tagged?: boolean;\n}\n\nconst collator = new Intl.Collator();\n\nconst VERDACCIO = 'https://verdaccio.servicetitan.com';\n\nexport class MFEList extends Command<Args> {\n static readonly description = 'List published MFE packages';\n static readonly options = {\n _: { description: '[packageNames...]' },\n all: { boolean: true, description: 'List all published versions ' },\n ignore: {\n array: true,\n description: 'Exclude MFEs with names matching specified glob pattern ',\n },\n limit: {\n number: true,\n description: 'List only the specified number of published versions',\n },\n tagged: { boolean: true, description: 'List only tagged versions' },\n };\n\n @logErrors\n async execute() {\n await this.login();\n\n this.packageNames.forEach((name, index) => {\n const info = npmView({ packageName: name, registry: this.registry });\n if (info) {\n if (index > 0) {\n process.stdout.write('\\n');\n }\n\n process.stdout.write(this.getCaption(info) + '\\n');\n const table = this.getTable(info);\n if (table) {\n process.stdout.write(table + '\\n');\n }\n }\n });\n }\n\n private getCaption(info: NPMPackageInfo) {\n return [\n chalk.bold.cyan(info.name),\n info.version && `version: ${info.version}`,\n `versions: ${Object.keys(this.getTime(info)).length}`,\n ]\n .filter(el => !!el)\n .join(' | ');\n }\n\n private getTable(info: NPMPackageInfo) {\n const times = Object.entries(this.getTime(info)).sort(\n ([, a], [, b]) => -1 * collator.compare(a, b)\n );\n const versionTags = this.getVersionTags(info);\n const versions = this.args.tagged\n ? times.filter(([version]) => !!versionTags[version])\n : times.slice(0, this.limit);\n\n /* istanbul ignore next: debug only */\n log.debug('mfe-list', () =>\n JSON.stringify({ name: info.name, versionTags, versions }, null, 2)\n );\n\n if (versions.length === 0) {\n return '';\n }\n\n const table = new Table({\n head: ['Version', 'Tag', 'When'].map(title => chalk.bold.cyan(title)),\n style: { head: [] },\n });\n\n versions.forEach(([version, timestamp]) => {\n const when = formatRelativeDate(new Date(timestamp));\n const tag = (versionTags[version] ?? []).join(', ');\n table.push([version, chalk.bold.cyan(tag), when]);\n });\n\n return table.toString();\n }\n\n private getTime(info: NPMPackageInfo) {\n const { time: { created, modified, ...time } = {} } = info;\n return time;\n }\n\n private getVersionTags({ 'dist-tags': distTags = {} }: NPMPackageInfo) {\n return Object.entries(distTags).reduce<Record<string, string[]>>(\n (result, [name, version]) => {\n result[version] ??= [];\n result[version].push(name);\n return result;\n },\n {}\n );\n }\n\n private async ask(question: string) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n const answer = await rl.question(question);\n rl.close();\n return answer.trim().toLowerCase();\n }\n\n private async login() {\n if (this.registry !== VERDACCIO || npmWhoAmI({ registry: this.registry }) !== undefined) {\n return;\n }\n\n const message = `This machine is not authorized to access ${this.registry}.`;\n if (!isTTY()) {\n throw new Error(message);\n }\n\n const answer = await this.ask(chalk.bold.cyan(`${message} Authorize? [Y/n] `));\n if (answer && answer !== 'y') {\n throw new Error('Not authorized');\n }\n\n await runCommand(`npx --yes verdaccio-okta-oauth@latest --registry=${this.registry}`, {\n quiet: true,\n });\n }\n\n private get limit() {\n if (this.args.all) {\n return Number.MAX_SAFE_INTEGER;\n }\n return this.args.limit && this.args.limit > 0 ? this.args.limit : 20;\n }\n\n private get packageNames() {\n const { _, packageNames = [] } = this.args;\n if (_.length || packageNames.length) {\n return [..._, ...packageNames];\n }\n\n return getPackages({ ignore: this.args.ignore, type: PackageType.Webpack })\n .filter(isWebComponent)\n .map(({ name }) => name)\n .sort((a, b) => collator.compare(a, b));\n }\n\n private get registry() {\n return this.args.registry ?? VERDACCIO;\n }\n}\n"],"names":["MFEList","collator","Intl","Collator","VERDACCIO","Command","execute","login","packageNames","forEach","name","index","info","npmView","packageName","registry","process","stdout","write","getCaption","table","getTable","chalk","bold","cyan","version","Object","keys","getTime","length","filter","el","join","times","entries","sort","a","b","compare","versionTags","getVersionTags","versions","args","tagged","slice","limit","log","debug","JSON","stringify","Table","head","map","title","style","timestamp","when","formatRelativeDate","Date","tag","push","toString","time","created","modified","distTags","reduce","result","ask","question","rl","readline","createInterface","input","stdin","output","answer","close","trim","toLowerCase","npmWhoAmI","undefined","message","isTTY","Error","runCommand","quiet","all","Number","MAX_SAFE_INTEGER","_","getPackages","ignore","type","PackageType","Webpack","isWebComponent","description","options","boolean","array","number"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-list.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { npmWhoAmI } from '@servicetitan/install';\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport readline from 'readline/promises';\nimport {\n formatRelativeDate,\n getPackages,\n isWebComponent,\n log,\n logErrors,\n PackageType,\n} from '../../utils';\nimport { Command, CommandArgs } from './types';\nimport { isTTY, NPMPackageInfo, npmView, runCommand } from '../utils';\n\ninterface Args extends CommandArgs {\n _: string[];\n all?: boolean;\n ignore?: string | string[];\n limit?: number;\n packageNames?: string[];\n registry?: string;\n tagged?: boolean;\n}\n\nconst collator = new Intl.Collator();\n\nconst VERDACCIO = 'https://verdaccio.servicetitan.com';\n\nexport class MFEList extends Command<Args> {\n static readonly description = 'List published MFE packages';\n static readonly options = {\n _: { description: '[packageNames...]' },\n all: { boolean: true, description: 'List all published versions ' },\n ignore: {\n array: true,\n description: 'Exclude MFEs with names matching specified glob pattern ',\n },\n limit: {\n number: true,\n description: 'List only the specified number of published versions',\n },\n tagged: { boolean: true, description: 'List only tagged versions' },\n };\n\n @logErrors\n async execute() {\n await this.login();\n\n this.packageNames.forEach((name, index) => {\n const info = npmView({ packageName: name, registry: this.registry });\n if (info) {\n if (index > 0) {\n process.stdout.write('\\n');\n }\n\n process.stdout.write(this.getCaption(info) + '\\n');\n const table = this.getTable(info);\n if (table) {\n process.stdout.write(table + '\\n');\n }\n }\n });\n }\n\n private getCaption(info: NPMPackageInfo) {\n return [\n chalk.bold.cyan(info.name),\n info.version && `version: ${info.version}`,\n `versions: ${Object.keys(this.getTime(info)).length}`,\n ]\n .filter(el => !!el)\n .join(' | ');\n }\n\n private getTable(info: NPMPackageInfo) {\n const times = Object.entries(this.getTime(info)).sort(\n ([, a], [, b]) => -1 * collator.compare(a, b)\n );\n const versionTags = this.getVersionTags(info);\n const versions = this.args.tagged\n ? times.filter(([version]) => !!versionTags[version])\n : times.slice(0, this.limit);\n\n /* istanbul ignore next: debug only */\n log.debug('mfe-list', () =>\n JSON.stringify({ name: info.name, versionTags, versions }, null, 2)\n );\n\n if (versions.length === 0) {\n return '';\n }\n\n const table = new Table({\n head: ['Version', 'Tag', 'When'].map(title => chalk.bold.cyan(title)),\n style: { head: [] },\n });\n\n versions.forEach(([version, timestamp]) => {\n const when = formatRelativeDate(new Date(timestamp));\n const tag = (versionTags[version] ?? []).join(', ');\n table.push([version, chalk.bold.cyan(tag), when]);\n });\n\n return table.toString();\n }\n\n private getTime(info: NPMPackageInfo) {\n const { time: { created, modified, ...time } = {} } = info;\n return time;\n }\n\n private getVersionTags({ 'dist-tags': distTags = {} }: NPMPackageInfo) {\n return Object.entries(distTags).reduce<Record<string, string[]>>(\n (result, [name, version]) => {\n result[version] ??= [];\n result[version].push(name);\n return result;\n },\n {}\n );\n }\n\n private async ask(question: string) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n const answer = await rl.question(question);\n rl.close();\n return answer.trim().toLowerCase();\n }\n\n private async login() {\n if (this.registry !== VERDACCIO || npmWhoAmI({ registry: this.registry }) !== undefined) {\n return;\n }\n\n const message = `This machine is not authorized to access ${this.registry}.`;\n if (!isTTY()) {\n throw new Error(message);\n }\n\n const answer = await this.ask(chalk.bold.cyan(`${message} Authorize? [Y/n] `));\n if (answer && answer !== 'y') {\n throw new Error('Not authorized');\n }\n\n await runCommand(`npx --yes verdaccio-okta-oauth@latest --registry=${this.registry}`, {\n quiet: true,\n });\n }\n\n private get limit() {\n if (this.args.all) {\n return Number.MAX_SAFE_INTEGER;\n }\n return this.args.limit && this.args.limit > 0 ? this.args.limit : 20;\n }\n\n private get packageNames() {\n const { _, packageNames = [] } = this.args;\n if (_.length || packageNames.length) {\n return [..._, ...packageNames];\n }\n\n return getPackages({ ignore: this.args.ignore, type: PackageType.Webpack })\n .filter(isWebComponent)\n .map(({ name }) => name)\n .sort((a, b) => collator.compare(a, b));\n }\n\n private get registry() {\n return this.args.registry ?? VERDACCIO;\n }\n}\n"],"names":["MFEList","collator","Intl","Collator","VERDACCIO","Command","execute","login","packageNames","forEach","name","index","info","npmView","packageName","registry","process","stdout","write","getCaption","table","getTable","chalk","bold","cyan","version","Object","keys","getTime","length","filter","el","join","times","entries","sort","a","b","compare","versionTags","getVersionTags","versions","args","tagged","slice","limit","log","debug","JSON","stringify","Table","head","map","title","style","timestamp","when","formatRelativeDate","Date","tag","push","toString","time","created","modified","distTags","reduce","result","ask","question","rl","readline","createInterface","input","stdin","output","answer","close","trim","toLowerCase","npmWhoAmI","undefined","message","isTTY","Error","runCommand","quiet","all","Number","MAX_SAFE_INTEGER","_","getPackages","ignore","type","PackageType","Webpack","isWebComponent","description","options","boolean","array","number"],"mappings":"AAAA,uDAAuD;;;;+BA8B1CA;;;eAAAA;;;yBA7Ba;8DACR;kEACA;iEACG;uBAQd;uBAC8B;wBACsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAY3D,MAAMC,WAAW,IAAIC,KAAKC,QAAQ;AAElC,MAAMC,YAAY;AAEX,MAAMJ,gBAAgBK,cAAO;IAgBhC,MACMC,UAAU;QACZ,MAAM,IAAI,CAACC,KAAK;QAEhB,IAAI,CAACC,YAAY,CAACC,OAAO,CAAC,CAACC,MAAMC;YAC7B,MAAMC,OAAOC,IAAAA,eAAO,EAAC;gBAAEC,aAAaJ;gBAAMK,UAAU,IAAI,CAACA,QAAQ;YAAC;YAClE,IAAIH,MAAM;gBACN,IAAID,QAAQ,GAAG;oBACXK,QAAQC,MAAM,CAACC,KAAK,CAAC;gBACzB;gBAEAF,QAAQC,MAAM,CAACC,KAAK,CAAC,IAAI,CAACC,UAAU,CAACP,QAAQ;gBAC7C,MAAMQ,QAAQ,IAAI,CAACC,QAAQ,CAACT;gBAC5B,IAAIQ,OAAO;oBACPJ,QAAQC,MAAM,CAACC,KAAK,CAACE,QAAQ;gBACjC;YACJ;QACJ;IACJ;IAEQD,WAAWP,IAAoB,EAAE;QACrC,OAAO;YACHU,cAAK,CAACC,IAAI,CAACC,IAAI,CAACZ,KAAKF,IAAI;YACzBE,KAAKa,OAAO,IAAI,CAAC,SAAS,EAAEb,KAAKa,OAAO,EAAE;YAC1C,CAAC,UAAU,EAAEC,OAAOC,IAAI,CAAC,IAAI,CAACC,OAAO,CAAChB,OAAOiB,MAAM,EAAE;SACxD,CACIC,MAAM,CAACC,CAAAA,KAAM,CAAC,CAACA,IACfC,IAAI,CAAC;IACd;IAEQX,SAAST,IAAoB,EAAE;QACnC,MAAMqB,QAAQP,OAAOQ,OAAO,CAAC,IAAI,CAACN,OAAO,CAAChB,OAAOuB,IAAI,CACjD,CAAC,GAAGC,EAAE,EAAE,GAAGC,EAAE,GAAK,CAAC,IAAIpC,SAASqC,OAAO,CAACF,GAAGC;QAE/C,MAAME,cAAc,IAAI,CAACC,cAAc,CAAC5B;QACxC,MAAM6B,WAAW,IAAI,CAACC,IAAI,CAACC,MAAM,GAC3BV,MAAMH,MAAM,CAAC,CAAC,CAACL,QAAQ,GAAK,CAAC,CAACc,WAAW,CAACd,QAAQ,IAClDQ,MAAMW,KAAK,CAAC,GAAG,IAAI,CAACC,KAAK;QAE/B,oCAAoC,GACpCC,UAAG,CAACC,KAAK,CAAC,YAAY,IAClBC,KAAKC,SAAS,CAAC;gBAAEvC,MAAME,KAAKF,IAAI;gBAAE6B;gBAAaE;YAAS,GAAG,MAAM;QAGrE,IAAIA,SAASZ,MAAM,KAAK,GAAG;YACvB,OAAO;QACX;QAEA,MAAMT,QAAQ,IAAI8B,kBAAK,CAAC;YACpBC,MAAM;gBAAC;gBAAW;gBAAO;aAAO,CAACC,GAAG,CAACC,CAAAA,QAAS/B,cAAK,CAACC,IAAI,CAACC,IAAI,CAAC6B;YAC9DC,OAAO;gBAAEH,MAAM,EAAE;YAAC;QACtB;QAEAV,SAAShC,OAAO,CAAC,CAAC,CAACgB,SAAS8B,UAAU;YAClC,MAAMC,OAAOC,IAAAA,yBAAkB,EAAC,IAAIC,KAAKH;gBAC5BhB;YAAb,MAAMoB,MAAM,AAACpB,CAAAA,CAAAA,uBAAAA,WAAW,CAACd,QAAQ,cAApBc,kCAAAA,uBAAwB,EAAE,AAAD,EAAGP,IAAI,CAAC;YAC9CZ,MAAMwC,IAAI,CAAC;gBAACnC;gBAASH,cAAK,CAACC,IAAI,CAACC,IAAI,CAACmC;gBAAMH;aAAK;QACpD;QAEA,OAAOpC,MAAMyC,QAAQ;IACzB;IAEQjC,QAAQhB,IAAoB,EAAE;QAClC,MAAM,EAAEkD,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAE,GAAGF,MAAM,GAAG,CAAC,CAAC,EAAE,GAAGlD;QACtD,OAAOkD;IACX;IAEQtB,eAAe,EAAE,aAAayB,WAAW,CAAC,CAAC,EAAkB,EAAE;QACnE,OAAOvC,OAAOQ,OAAO,CAAC+B,UAAUC,MAAM,CAClC,CAACC,QAAQ,CAACzD,MAAMe,QAAQ;gBACpB0C,SAAO1C;;YAAP0C,MAAAA,UAAAA,OAAM,CAAC1C,WAAAA,QAAQ,iCAAf0C,OAAM,CAAC1C,SAAQ,GAAK,EAAE;YACtB0C,MAAM,CAAC1C,QAAQ,CAACmC,IAAI,CAAClD;YACrB,OAAOyD;QACX,GACA,CAAC;IAET;IAEA,MAAcC,IAAIC,QAAgB,EAAE;QAChC,MAAMC,KAAKC,iBAAQ,CAACC,eAAe,CAAC;YAAEC,OAAOzD,QAAQ0D,KAAK;YAAEC,QAAQ3D,QAAQC,MAAM;QAAC;QACnF,MAAM2D,SAAS,MAAMN,GAAGD,QAAQ,CAACA;QACjCC,GAAGO,KAAK;QACR,OAAOD,OAAOE,IAAI,GAAGC,WAAW;IACpC;IAEA,MAAcxE,QAAQ;QAClB,IAAI,IAAI,CAACQ,QAAQ,KAAKX,aAAa4E,IAAAA,kBAAS,EAAC;YAAEjE,UAAU,IAAI,CAACA,QAAQ;QAAC,OAAOkE,WAAW;YACrF;QACJ;QAEA,MAAMC,UAAU,CAAC,yCAAyC,EAAE,IAAI,CAACnE,QAAQ,CAAC,CAAC,CAAC;QAC5E,IAAI,CAACoE,IAAAA,aAAK,KAAI;YACV,MAAM,IAAIC,MAAMF;QACpB;QAEA,MAAMN,SAAS,MAAM,IAAI,CAACR,GAAG,CAAC9C,cAAK,CAACC,IAAI,CAACC,IAAI,CAAC,GAAG0D,QAAQ,kBAAkB,CAAC;QAC5E,IAAIN,UAAUA,WAAW,KAAK;YAC1B,MAAM,IAAIQ,MAAM;QACpB;QAEA,MAAMC,IAAAA,kBAAU,EAAC,CAAC,iDAAiD,EAAE,IAAI,CAACtE,QAAQ,EAAE,EAAE;YAClFuE,OAAO;QACX;IACJ;IAEA,IAAYzC,QAAQ;QAChB,IAAI,IAAI,CAACH,IAAI,CAAC6C,GAAG,EAAE;YACf,OAAOC,OAAOC,gBAAgB;QAClC;QACA,OAAO,IAAI,CAAC/C,IAAI,CAACG,KAAK,IAAI,IAAI,CAACH,IAAI,CAACG,KAAK,GAAG,IAAI,IAAI,CAACH,IAAI,CAACG,KAAK,GAAG;IACtE;IAEA,IAAYrC,eAAe;QACvB,MAAM,EAAEkF,CAAC,EAAElF,eAAe,EAAE,EAAE,GAAG,IAAI,CAACkC,IAAI;QAC1C,IAAIgD,EAAE7D,MAAM,IAAIrB,aAAaqB,MAAM,EAAE;YACjC,OAAO;mBAAI6D;mBAAMlF;aAAa;QAClC;QAEA,OAAOmF,IAAAA,kBAAW,EAAC;YAAEC,QAAQ,IAAI,CAAClD,IAAI,CAACkD,MAAM;YAAEC,MAAMC,kBAAW,CAACC,OAAO;QAAC,GACpEjE,MAAM,CAACkE,qBAAc,EACrB5C,GAAG,CAAC,CAAC,EAAE1C,IAAI,EAAE,GAAKA,MAClByB,IAAI,CAAC,CAACC,GAAGC,IAAMpC,SAASqC,OAAO,CAACF,GAAGC;IAC5C;IAEA,IAAYtB,WAAW;YACZ;QAAP,OAAO,CAAA,sBAAA,IAAI,CAAC2B,IAAI,CAAC3B,QAAQ,cAAlB,iCAAA,sBAAsBX;IACjC;AACJ;AA9II,iBADSJ,SACOiG,eAAc;AAC9B,iBAFSjG,SAEOkG,WAAU;IACtBR,GAAG;QAAEO,aAAa;IAAoB;IACtCV,KAAK;QAAEY,SAAS;QAAMF,aAAa;IAA+B;IAClEL,QAAQ;QACJQ,OAAO;QACPH,aAAa;IACjB;IACApD,OAAO;QACHwD,QAAQ;QACRJ,aAAa;IACjB;IACAtD,QAAQ;QAAEwD,SAAS;QAAMF,aAAa;IAA4B;AACtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/review/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAgBvC,eAAO,MAAM,KAAK,EAAE,WAAW,EAe9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/review/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAiBvC,eAAO,MAAM,KAAK,EAAE,WAAW,EAgB9B,CAAC"}
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "rules", {
9
9
  }
10
10
  });
11
11
  const _nodeprecatedcontentbase = require("./no-deprecated-content-base");
12
+ const _nodeprecatedstartupinstall = require("./no-deprecated-startup-install");
12
13
  const _nodirectpeerdependencies = require("./no-direct-peer-dependencies");
13
14
  const _notypescriptentrypoint = require("./no-typescript-entry-point");
14
15
  const _preferopenendedpeerdependencies = require("./prefer-open-ended-peer-dependencies");
@@ -32,6 +33,7 @@ const rules = [
32
33
  new _requirecompatiblelaunchdarklysdk.RequireCompatibleLaunchDarklySdk(),
33
34
  new _nodeprecatedcontentbase.NoDeprecatedContentBase(),
34
35
  new _nodirectpeerdependencies.NoDirectPeerDependencies(),
36
+ new _nodeprecatedstartupinstall.NoDeprecatedStartupInstall(),
35
37
  new _notypescriptentrypoint.NoTypescriptEntryPoint(),
36
38
  new _preferopenendedpeerdependencies.PreferOpenEndedPeerDependencies(),
37
39
  new _requireservicetitanscope.RequireServiceTitanScope(),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/index.ts"],"sourcesContent":["import { PackageRule } from '../types';\nimport { NoDeprecatedContentBase } from './no-deprecated-content-base';\nimport { NoDirectPeerDependencies } from './no-direct-peer-dependencies';\nimport { NoTypescriptEntryPoint } from './no-typescript-entry-point';\nimport { PreferOpenEndedPeerDependencies } from './prefer-open-ended-peer-dependencies';\nimport { RequireAllReactDependencies } from './require-all-react-dependencies';\nimport { RequireCompatibleLaunchDarklySdk } from './require-compatible-launch-darkly-sdk';\nimport { RequireExplicitSideEffects } from './require-explicit-side-effects';\nimport { RequireNpmrc } from './require-npmrc';\nimport { RequireOneAnvilUikitContribVersion } from './require-one-anvil-uikit-contrib-version';\nimport { RequireOnePackageVersion } from './require-one-package-version';\nimport { RequireOneReactVersion } from './require-one-react-version';\nimport { RequireOneUikitVersion } from './require-one-uikit-version';\nimport { RequireProjectVersionInRootNodeModules } from './require-project-version-in-root-node-modules';\nimport { RequireServiceTitanScope } from './require-servicetitan-scope';\n\nexport const rules: PackageRule[] = [\n new RequireAllReactDependencies(),\n new RequireOneAnvilUikitContribVersion(),\n new RequireOnePackageVersion(),\n new RequireOneReactVersion(),\n new RequireOneUikitVersion(),\n new RequireProjectVersionInRootNodeModules(),\n new RequireCompatibleLaunchDarklySdk(),\n new NoDeprecatedContentBase(),\n new NoDirectPeerDependencies(),\n new NoTypescriptEntryPoint(),\n new PreferOpenEndedPeerDependencies(),\n new RequireServiceTitanScope(),\n new RequireExplicitSideEffects(),\n new RequireNpmrc(),\n];\n"],"names":["rules","RequireAllReactDependencies","RequireOneAnvilUikitContribVersion","RequireOnePackageVersion","RequireOneReactVersion","RequireOneUikitVersion","RequireProjectVersionInRootNodeModules","RequireCompatibleLaunchDarklySdk","NoDeprecatedContentBase","NoDirectPeerDependencies","NoTypescriptEntryPoint","PreferOpenEndedPeerDependencies","RequireServiceTitanScope","RequireExplicitSideEffects","RequireNpmrc"],"mappings":";;;;+BAgBaA;;;eAAAA;;;yCAf2B;0CACC;wCACF;iDACS;6CACJ;kDACK;4CACN;8BACd;oDACsB;0CACV;wCACF;wCACA;wDACgB;0CACd;AAElC,MAAMA,QAAuB;IAChC,IAAIC,wDAA2B;IAC/B,IAAIC,sEAAkC;IACtC,IAAIC,kDAAwB;IAC5B,IAAIC,8CAAsB;IAC1B,IAAIC,8CAAsB;IAC1B,IAAIC,8EAAsC;IAC1C,IAAIC,kEAAgC;IACpC,IAAIC,gDAAuB;IAC3B,IAAIC,kDAAwB;IAC5B,IAAIC,8CAAsB;IAC1B,IAAIC,gEAA+B;IACnC,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,0BAAY;CACnB"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/index.ts"],"sourcesContent":["import { PackageRule } from '../types';\nimport { NoDeprecatedContentBase } from './no-deprecated-content-base';\nimport { NoDeprecatedStartupInstall } from './no-deprecated-startup-install';\nimport { NoDirectPeerDependencies } from './no-direct-peer-dependencies';\nimport { NoTypescriptEntryPoint } from './no-typescript-entry-point';\nimport { PreferOpenEndedPeerDependencies } from './prefer-open-ended-peer-dependencies';\nimport { RequireAllReactDependencies } from './require-all-react-dependencies';\nimport { RequireCompatibleLaunchDarklySdk } from './require-compatible-launch-darkly-sdk';\nimport { RequireExplicitSideEffects } from './require-explicit-side-effects';\nimport { RequireNpmrc } from './require-npmrc';\nimport { RequireOneAnvilUikitContribVersion } from './require-one-anvil-uikit-contrib-version';\nimport { RequireOnePackageVersion } from './require-one-package-version';\nimport { RequireOneReactVersion } from './require-one-react-version';\nimport { RequireOneUikitVersion } from './require-one-uikit-version';\nimport { RequireProjectVersionInRootNodeModules } from './require-project-version-in-root-node-modules';\nimport { RequireServiceTitanScope } from './require-servicetitan-scope';\n\nexport const rules: PackageRule[] = [\n new RequireAllReactDependencies(),\n new RequireOneAnvilUikitContribVersion(),\n new RequireOnePackageVersion(),\n new RequireOneReactVersion(),\n new RequireOneUikitVersion(),\n new RequireProjectVersionInRootNodeModules(),\n new RequireCompatibleLaunchDarklySdk(),\n new NoDeprecatedContentBase(),\n new NoDirectPeerDependencies(),\n new NoDeprecatedStartupInstall(),\n new NoTypescriptEntryPoint(),\n new PreferOpenEndedPeerDependencies(),\n new RequireServiceTitanScope(),\n new RequireExplicitSideEffects(),\n new RequireNpmrc(),\n];\n"],"names":["rules","RequireAllReactDependencies","RequireOneAnvilUikitContribVersion","RequireOnePackageVersion","RequireOneReactVersion","RequireOneUikitVersion","RequireProjectVersionInRootNodeModules","RequireCompatibleLaunchDarklySdk","NoDeprecatedContentBase","NoDirectPeerDependencies","NoDeprecatedStartupInstall","NoTypescriptEntryPoint","PreferOpenEndedPeerDependencies","RequireServiceTitanScope","RequireExplicitSideEffects","RequireNpmrc"],"mappings":";;;;+BAiBaA;;;eAAAA;;;yCAhB2B;4CACG;0CACF;wCACF;iDACS;6CACJ;kDACK;4CACN;8BACd;oDACsB;0CACV;wCACF;wCACA;wDACgB;0CACd;AAElC,MAAMA,QAAuB;IAChC,IAAIC,wDAA2B;IAC/B,IAAIC,sEAAkC;IACtC,IAAIC,kDAAwB;IAC5B,IAAIC,8CAAsB;IAC1B,IAAIC,8CAAsB;IAC1B,IAAIC,8EAAsC;IAC1C,IAAIC,kEAAgC;IACpC,IAAIC,gDAAuB;IAC3B,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,8CAAsB;IAC1B,IAAIC,gEAA+B;IACnC,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,0BAAY;CACnB"}