@servicetitan/startup 32.3.1 → 32.4.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 (36) hide show
  1. package/dist/cli/commands/eslint.d.ts +7 -0
  2. package/dist/cli/commands/eslint.d.ts.map +1 -1
  3. package/dist/cli/commands/eslint.js +28 -4
  4. package/dist/cli/commands/eslint.js.map +1 -1
  5. package/dist/cli/commands/get-command.d.ts.map +1 -1
  6. package/dist/cli/commands/get-command.js +2 -0
  7. package/dist/cli/commands/get-command.js.map +1 -1
  8. package/dist/cli/commands/lint.d.ts.map +1 -1
  9. package/dist/cli/commands/lint.js +7 -55
  10. package/dist/cli/commands/lint.js.map +1 -1
  11. package/dist/cli/commands/stylelint.d.ts +17 -0
  12. package/dist/cli/commands/stylelint.d.ts.map +1 -0
  13. package/dist/cli/commands/stylelint.js +63 -0
  14. package/dist/cli/commands/stylelint.js.map +1 -0
  15. package/dist/cli/utils/index.d.ts.map +1 -1
  16. package/dist/cli/utils/index.js.map +1 -1
  17. package/dist/cli/utils/stylelint.d.ts +8 -0
  18. package/dist/cli/utils/stylelint.d.ts.map +1 -0
  19. package/dist/cli/utils/stylelint.js +67 -0
  20. package/dist/cli/utils/stylelint.js.map +1 -0
  21. package/dist/utils/get-configuration.d.ts +1 -0
  22. package/dist/utils/get-configuration.d.ts.map +1 -1
  23. package/dist/utils/get-configuration.js +1 -0
  24. package/dist/utils/get-configuration.js.map +1 -1
  25. package/package.json +9 -7
  26. package/src/cli/commands/__tests__/eslint.test.ts +13 -0
  27. package/src/cli/commands/__tests__/lint.test.ts +52 -10
  28. package/src/cli/commands/__tests__/stylelint.test.ts +32 -0
  29. package/src/cli/commands/eslint.ts +12 -3
  30. package/src/cli/commands/get-command.ts +2 -0
  31. package/src/cli/commands/lint.ts +5 -57
  32. package/src/cli/commands/stylelint.ts +26 -0
  33. package/src/cli/utils/__tests__/stylelint.test.ts +164 -0
  34. package/src/cli/utils/index.ts +1 -0
  35. package/src/cli/utils/stylelint.ts +55 -0
  36. package/src/utils/get-configuration.ts +1 -0
@@ -2,9 +2,16 @@ import { Command, CommandArgs } from './types';
2
2
  interface Args extends CommandArgs {
3
3
  _: string[];
4
4
  fix?: boolean;
5
+ paths?: string[];
5
6
  }
6
7
  export declare class ESLintCommand extends Command<Args> {
8
+ static readonly options: {
9
+ _: {
10
+ description: string;
11
+ };
12
+ };
7
13
  execute(): Promise<void>;
14
+ private get paths();
8
15
  }
9
16
  export {};
10
17
  //# sourceMappingURL=eslint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eslint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAE9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,aAAc,SAAQ,OAAO,CAAC,IAAI,CAAC;IAEtC,OAAO;CAIhB"}
1
+ {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eslint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,aAAc,SAAQ,OAAO,CAAC,IAAI,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;MAErB;IAGI,OAAO;IAIb,OAAO,KAAK,KAAK,GAGhB;CACJ"}
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ /* eslint-disable @typescript-eslint/naming-convention */ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
@@ -11,6 +11,19 @@ Object.defineProperty(exports, "ESLintCommand", {
11
11
  const _utils = require("../../utils");
12
12
  const _utils1 = require("../utils");
13
13
  const _types = require("./types");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
14
27
  function _ts_decorate(decorators, target, key, desc) {
15
28
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
29
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -22,13 +35,24 @@ function _ts_metadata(k, v) {
22
35
  }
23
36
  class ESLintCommand extends _types.Command {
24
37
  async execute() {
25
- const { _: paths, fix } = this.args;
26
38
  await (0, _utils1.eslint)({
27
- fix,
28
- paths
39
+ fix: this.args.fix,
40
+ paths: this.paths
29
41
  });
30
42
  }
43
+ get paths() {
44
+ const { _, paths = [] } = this.args;
45
+ return [
46
+ ..._,
47
+ ...paths
48
+ ];
49
+ }
31
50
  }
51
+ _define_property(ESLintCommand, "options", {
52
+ _: {
53
+ description: '[paths...]'
54
+ }
55
+ });
32
56
  _ts_decorate([
33
57
  _utils.logErrors,
34
58
  _ts_metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/eslint.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { eslint } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n _: string[];\n fix?: boolean;\n}\n\nexport class ESLintCommand extends Command<Args> {\n @logErrors\n async execute() {\n const { _: paths, fix } = this.args;\n await eslint({ fix, paths });\n }\n}\n"],"names":["ESLintCommand","Command","execute","_","paths","fix","args","eslint"],"mappings":";;;;+BAUaA;;;eAAAA;;;uBAVa;wBACH;uBACc;;;;;;;;;;AAQ9B,MAAMA,sBAAsBC,cAAO;IACtC,MACMC,UAAU;QACZ,MAAM,EAAEC,GAAGC,KAAK,EAAEC,GAAG,EAAE,GAAG,IAAI,CAACC,IAAI;QACnC,MAAMC,IAAAA,cAAM,EAAC;YAAEF;YAAKD;QAAM;IAC9B;AACJ"}
1
+ {"version":3,"sources":["../../../src/cli/commands/eslint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { logErrors } from '../../utils';\nimport { eslint } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n _: string[];\n fix?: boolean;\n paths?: string[];\n}\n\nexport class ESLintCommand extends Command<Args> {\n static readonly options = {\n _: { description: '[paths...]' },\n };\n\n @logErrors\n async execute() {\n await eslint({ fix: this.args.fix, paths: this.paths });\n }\n\n private get paths() {\n const { _, paths = [] } = this.args;\n return [..._, ...paths];\n }\n}\n"],"names":["ESLintCommand","Command","execute","eslint","fix","args","paths","_","options","description"],"mappings":"AAAA,uDAAuD;;;;+BAW1CA;;;eAAAA;;;uBAVa;wBACH;uBACc;;;;;;;;;;;;;;;;;;;;;;;AAQ9B,MAAMA,sBAAsBC,cAAO;IAKtC,MACMC,UAAU;QACZ,MAAMC,IAAAA,cAAM,EAAC;YAAEC,KAAK,IAAI,CAACC,IAAI,CAACD,GAAG;YAAEE,OAAO,IAAI,CAACA,KAAK;QAAC;IACzD;IAEA,IAAYA,QAAQ;QAChB,MAAM,EAAEC,CAAC,EAAED,QAAQ,EAAE,EAAE,GAAG,IAAI,CAACD,IAAI;QACnC,OAAO;eAAIE;eAAMD;SAAM;IAC3B;AACJ;AAbI,iBADSN,eACOQ,WAAU;IACtBD,GAAG;QAAEE,aAAa;IAAa;AACnC"}
@@ -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"}
@@ -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"}
@@ -0,0 +1,17 @@
1
+ import { Command, CommandArgs } from './types';
2
+ interface Args extends CommandArgs {
3
+ _: string[];
4
+ fix?: boolean;
5
+ paths?: string[];
6
+ }
7
+ export declare class Stylelint extends Command<Args> {
8
+ static readonly options: {
9
+ _: {
10
+ description: string;
11
+ };
12
+ };
13
+ execute(): Promise<void>;
14
+ private get paths();
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=stylelint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/stylelint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,SAAU,SAAQ,OAAO,CAAC,IAAI,CAAC;IACxC,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;MAErB;IAGI,OAAO;IAIb,OAAO,KAAK,KAAK,GAGhB;CACJ"}
@@ -0,0 +1,63 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Stylelint", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Stylelint;
9
+ }
10
+ });
11
+ const _utils = require("../../utils");
12
+ const _stylelint = require("../utils/stylelint");
13
+ const _types = require("./types");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
27
+ function _ts_decorate(decorators, target, key, desc) {
28
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
31
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
32
+ }
33
+ function _ts_metadata(k, v) {
34
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
+ }
36
+ class Stylelint extends _types.Command {
37
+ async execute() {
38
+ await (0, _stylelint.stylelint)({
39
+ fix: this.args.fix,
40
+ paths: this.paths
41
+ });
42
+ }
43
+ get paths() {
44
+ const { _, paths = [] } = this.args;
45
+ return [
46
+ ..._,
47
+ ...paths
48
+ ];
49
+ }
50
+ }
51
+ _define_property(Stylelint, "options", {
52
+ _: {
53
+ description: '[paths...]'
54
+ }
55
+ });
56
+ _ts_decorate([
57
+ _utils.logErrors,
58
+ _ts_metadata("design:type", Function),
59
+ _ts_metadata("design:paramtypes", []),
60
+ _ts_metadata("design:returntype", Promise)
61
+ ], Stylelint.prototype, "execute", null);
62
+
63
+ //# sourceMappingURL=stylelint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/commands/stylelint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { logErrors } from '../../utils';\nimport { stylelint } from '../utils/stylelint';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n _: string[];\n fix?: boolean;\n paths?: string[];\n}\n\nexport class Stylelint extends Command<Args> {\n static readonly options = {\n _: { description: '[paths...]' },\n };\n\n @logErrors\n async execute() {\n await stylelint({ fix: this.args.fix, paths: this.paths });\n }\n\n private get paths() {\n const { _, paths = [] } = this.args;\n return [..._, ...paths];\n }\n}\n"],"names":["Stylelint","Command","execute","stylelint","fix","args","paths","_","options","description"],"mappings":"AAAA,uDAAuD;;;;+BAW1CA;;;eAAAA;;;uBAVa;2BACA;uBACW;;;;;;;;;;;;;;;;;;;;;;;AAQ9B,MAAMA,kBAAkBC,cAAO;IAKlC,MACMC,UAAU;QACZ,MAAMC,IAAAA,oBAAS,EAAC;YAAEC,KAAK,IAAI,CAACC,IAAI,CAACD,GAAG;YAAEE,OAAO,IAAI,CAACA,KAAK;QAAC;IAC5D;IAEA,IAAYA,QAAQ;QAChB,MAAM,EAAEC,CAAC,EAAED,QAAQ,EAAE,EAAE,GAAG,IAAI,CAACD,IAAI;QACnC,OAAO;eAAIE;eAAMD;SAAM;IAC3B;AACJ;AAbI,iBADSN,WACOQ,WAAU;IACtBD,GAAG;QAAEE,aAAa;IAAa;AACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/utils/index.ts"],"sourcesContent":["export * from './bundle';\nexport * from './check-args';\nexport * from './cli-git';\nexport * from './cli-npm';\nexport * from './cli-os';\nexport * from './compile';\nexport * from './compile-less';\nexport * from './compile-sass';\nexport * from './copy-files';\nexport * from './eslint';\nexport * from './get-module-type';\nexport * from './is-ci';\nexport * from './is-module-installed';\nexport * from './is-tty';\nexport * from './lerna-exec';\nexport * from './maybe-create-git-folder';\nexport * from './pipe-stdout';\nexport * from './process-tree';\nexport * from './publish';\nexport * from './set-node-options';\nexport * from './ts-config';\nexport * from './type-check';\nexport * from './watch-stdout';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA"}
1
+ {"version":3,"sources":["../../../src/cli/utils/index.ts"],"sourcesContent":["export * from './bundle';\nexport * from './check-args';\nexport * from './cli-git';\nexport * from './cli-npm';\nexport * from './cli-os';\nexport * from './compile';\nexport * from './compile-less';\nexport * from './compile-sass';\nexport * from './copy-files';\nexport * from './eslint';\nexport * from './get-module-type';\nexport * from './is-ci';\nexport * from './is-module-installed';\nexport * from './is-tty';\nexport * from './lerna-exec';\nexport * from './maybe-create-git-folder';\nexport * from './pipe-stdout';\nexport * from './process-tree';\nexport * from './publish';\nexport * from './set-node-options';\n// Don't export ./stylelint, it breaks tests using the default \"jsdom\" environment\nexport * from './ts-config';\nexport * from './type-check';\nexport * from './watch-stdout';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBAEA;qBACA;qBACA"}
@@ -0,0 +1,8 @@
1
+ import { CommandArgs } from '../commands';
2
+ interface Args extends CommandArgs {
3
+ fix?: boolean;
4
+ paths?: string[];
5
+ }
6
+ export declare function stylelint({ fix, paths }: Args): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=stylelint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/stylelint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,UAAU,IAAK,SAAQ,WAAW;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,wBAAsB,SAAS,CAAC,EAAE,GAAG,EAAE,KAAU,EAAE,EAAE,IAAI,iBAqCxD"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "stylelint", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return stylelint;
9
+ }
10
+ });
11
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
+ const _stylelint = require("stylelint");
13
+ const _utils = require("../../utils");
14
+ function _interop_require_default(obj) {
15
+ return obj && obj.__esModule ? obj : {
16
+ default: obj
17
+ };
18
+ }
19
+ const allowedExtensions = [
20
+ 'css',
21
+ 'scss',
22
+ 'less'
23
+ ];
24
+ const glob = `**/*.{${allowedExtensions.join(',')}}`;
25
+ async function stylelint({ fix, paths = [] }) {
26
+ const { disabled, ...config } = (0, _utils.getStylelintConfiguration)();
27
+ if (disabled) {
28
+ return;
29
+ }
30
+ const files = paths.reduce((result, file)=>{
31
+ const extension = _path.default.parse(file).ext.slice(1); // drop leading dot
32
+ if (extension) {
33
+ if (allowedExtensions.includes(extension.toLowerCase())) {
34
+ result.push(file);
35
+ } else {
36
+ _utils.log.debug('stylelint', `ignoring ${file}`);
37
+ }
38
+ } else {
39
+ result.push(pathUniJoin(file, glob));
40
+ }
41
+ return result;
42
+ }, []);
43
+ const options = {
44
+ files: files.length ? files : [
45
+ glob
46
+ ],
47
+ ignorePattern: [
48
+ 'node_modules',
49
+ ...(0, _utils.getDestinationFolders)()
50
+ ],
51
+ formatter: 'string',
52
+ fix,
53
+ quietDeprecationWarnings: true,
54
+ ...config
55
+ };
56
+ /* istanbul ignore next: debug only */ _utils.log.debug('stylelint', ()=>JSON.stringify(options, null, 2));
57
+ const { report, errored } = await (0, _stylelint.lint)(options);
58
+ process.stdout.write(report);
59
+ if (errored) {
60
+ process.exitCode = 1;
61
+ }
62
+ }
63
+ function pathUniJoin(...chunks) {
64
+ return _path.default.join(...chunks).replace(/\\/g, '/');
65
+ }
66
+
67
+ //# sourceMappingURL=stylelint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/utils/stylelint.ts"],"sourcesContent":["import path from 'path';\nimport { lint } from 'stylelint';\nimport { CommandArgs } from '../commands';\nimport { getDestinationFolders, getStylelintConfiguration, log } from '../../utils';\n\ninterface Args extends CommandArgs {\n fix?: boolean;\n paths?: string[];\n}\n\nconst allowedExtensions = ['css', 'scss', 'less'];\nconst glob = `**/*.{${allowedExtensions.join(',')}}`;\n\nexport async function stylelint({ fix, paths = [] }: Args) {\n const { disabled, ...config } = getStylelintConfiguration();\n if (disabled) {\n return;\n }\n\n const files = paths.reduce<string[]>((result, file) => {\n const extension = path.parse(file).ext.slice(1); // drop leading dot\n if (extension) {\n if (allowedExtensions.includes(extension.toLowerCase())) {\n result.push(file);\n } else {\n log.debug('stylelint', `ignoring ${file}`);\n }\n } else {\n result.push(pathUniJoin(file, glob));\n }\n return result;\n }, []);\n\n const options: Parameters<typeof lint>[0] = {\n files: files.length ? files : [glob],\n ignorePattern: ['node_modules', ...getDestinationFolders()],\n formatter: 'string',\n fix,\n quietDeprecationWarnings: true,\n ...config,\n };\n\n /* istanbul ignore next: debug only */\n log.debug('stylelint', () => JSON.stringify(options, null, 2));\n\n const { report, errored } = await lint(options);\n process.stdout.write(report);\n if (errored) {\n process.exitCode = 1;\n }\n}\n\nfunction pathUniJoin(...chunks: string[]) {\n return path.join(...chunks).replace(/\\\\/g, '/');\n}\n"],"names":["stylelint","allowedExtensions","glob","join","fix","paths","disabled","config","getStylelintConfiguration","files","reduce","result","file","extension","path","parse","ext","slice","includes","toLowerCase","push","log","debug","pathUniJoin","options","length","ignorePattern","getDestinationFolders","formatter","quietDeprecationWarnings","JSON","stringify","report","errored","lint","process","stdout","write","exitCode","chunks","replace"],"mappings":";;;;+BAasBA;;;eAAAA;;;6DAbL;2BACI;uBAEiD;;;;;;AAOtE,MAAMC,oBAAoB;IAAC;IAAO;IAAQ;CAAO;AACjD,MAAMC,OAAO,CAAC,MAAM,EAAED,kBAAkBE,IAAI,CAAC,KAAK,CAAC,CAAC;AAE7C,eAAeH,UAAU,EAAEI,GAAG,EAAEC,QAAQ,EAAE,EAAQ;IACrD,MAAM,EAAEC,QAAQ,EAAE,GAAGC,QAAQ,GAAGC,IAAAA,gCAAyB;IACzD,IAAIF,UAAU;QACV;IACJ;IAEA,MAAMG,QAAQJ,MAAMK,MAAM,CAAW,CAACC,QAAQC;QAC1C,MAAMC,YAAYC,aAAI,CAACC,KAAK,CAACH,MAAMI,GAAG,CAACC,KAAK,CAAC,IAAI,mBAAmB;QACpE,IAAIJ,WAAW;YACX,IAAIZ,kBAAkBiB,QAAQ,CAACL,UAAUM,WAAW,KAAK;gBACrDR,OAAOS,IAAI,CAACR;YAChB,OAAO;gBACHS,UAAG,CAACC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAEV,MAAM;YAC7C;QACJ,OAAO;YACHD,OAAOS,IAAI,CAACG,YAAYX,MAAMV;QAClC;QACA,OAAOS;IACX,GAAG,EAAE;IAEL,MAAMa,UAAsC;QACxCf,OAAOA,MAAMgB,MAAM,GAAGhB,QAAQ;YAACP;SAAK;QACpCwB,eAAe;YAAC;eAAmBC,IAAAA,4BAAqB;SAAG;QAC3DC,WAAW;QACXxB;QACAyB,0BAA0B;QAC1B,GAAGtB,MAAM;IACb;IAEA,oCAAoC,GACpCc,UAAG,CAACC,KAAK,CAAC,aAAa,IAAMQ,KAAKC,SAAS,CAACP,SAAS,MAAM;IAE3D,MAAM,EAAEQ,MAAM,EAAEC,OAAO,EAAE,GAAG,MAAMC,IAAAA,eAAI,EAACV;IACvCW,QAAQC,MAAM,CAACC,KAAK,CAACL;IACrB,IAAIC,SAAS;QACTE,QAAQG,QAAQ,GAAG;IACvB;AACJ;AAEA,SAASf,YAAY,GAAGgB,MAAgB;IACpC,OAAOzB,aAAI,CAACX,IAAI,IAAIoC,QAAQC,OAAO,CAAC,OAAO;AAC/C"}
@@ -56,6 +56,7 @@ export declare enum CommandName {
56
56
  'prepare-package' = "prepare-package",
57
57
  'review' = "review",
58
58
  'start' = "start",
59
+ 'stylelint' = "stylelint",
59
60
  'styles-check' = "styles-check",
60
61
  'test' = "test",
61
62
  'task' = "task",
@@ -1 +1 @@
1
- {"version":3,"file":"get-configuration.d.ts","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-configuration.d.ts","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,7 @@ var CommandName = /*#__PURE__*/ function(CommandName) {
109
109
  CommandName["prepare-package"] = "prepare-package";
110
110
  CommandName["review"] = "review";
111
111
  CommandName["start"] = "start";
112
+ CommandName["stylelint"] = "stylelint";
112
113
  CommandName["styles-check"] = "styles-check";
113
114
  CommandName["test"] = "test";
114
115
  CommandName["task"] = "task";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/get-configuration.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { swcDir } from '@swc/cli';\nimport { ESLint } from 'eslint';\nimport fs from 'fs';\nimport path from 'path';\nimport { LinterOptions } from 'stylelint';\nimport { ViteUserConfig } from 'vitest/config';\nimport { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server';\n\nimport { ReviewConfiguration } from '../cli/commands/review';\nimport { log } from './log';\nimport { getFolders } from './get-folders';\nimport { readJson, readJsonSafe } from './read-json';\n\nexport const allowedWebpackDevServerOptions = ['headers', 'port', 'proxy', 'static'] as const;\n\ntype ElementType<T> = T extends readonly (infer ElementType)[] ? ElementType : never;\n\nexport interface MinifyJSOptions {\n compress?: boolean;\n mangle?: boolean;\n}\n\nexport interface MinifyCssOptions {}\n\nexport interface MinifyOptions {\n css?: boolean | MinifyCssOptions;\n js?: boolean | MinifyJSOptions;\n}\n\nexport interface WebpackConfiguration\n extends Omit<\n Pick<WebpackDevServerConfiguration, ElementType<typeof allowedWebpackDevServerOptions>>,\n 'proxy'\n > {\n 'contentBase'?: boolean | string | string[] | number; // deprecated 2024-07\n 'custom-style-rules'?: boolean;\n 'expose-shared-dependencies'?: boolean;\n 'devServer'?: false | WebpackDevServerConfiguration;\n 'disable-style-check'?: boolean;\n 'minify'?: MinifyOptions;\n 'proxy'?: WebpackDevServerConfiguration['proxy'] | string;\n}\n\nexport interface ESLintConfiguration extends ESLint.Options {\n disabled?: boolean;\n}\n\nexport interface StylelintConfiguration extends Partial<LinterOptions> {\n ignorePattern?: string[];\n disabled?: boolean;\n}\n\nexport interface JestConfiguration extends Omit<Config.Argv, '_' | '$0'> {\n omitDefault?: string[];\n}\n\nexport interface NodeConfiguration {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n NODE_OPTIONS?: string[];\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum CommandName {\n 'build' = 'build',\n 'bundle-package' = 'bundle-package',\n 'clean' = 'clean',\n 'convert-eslint-config' = 'convert-eslint-config',\n 'eslint' = 'eslint',\n 'init' = 'init',\n 'install' = 'install',\n 'kendo-ui-license' = 'kendo-ui-license',\n 'lint' = 'lint',\n 'mfe-list' = 'mfe-list',\n 'mfe-package-clean' = 'mfe-package-clean',\n 'mfe-package-publish' = 'mfe-package-publish',\n 'mfe-publish' = 'mfe-publish',\n 'prepare-package' = 'prepare-package',\n 'review' = 'review',\n 'start' = 'start',\n 'styles-check' = 'styles-check',\n 'test' = 'test',\n 'task' = 'task',\n 'upload-sourcemaps' = 'upload-sourcemaps',\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport type VitestConfiguration = ViteUserConfig['test'] & {\n omitDefault?: string[];\n};\n\nexport interface WebComponentBranchConfigs {\n publishTag?: string;\n uploadSourcemaps?: boolean;\n}\n\ninterface WebComponentOptions {\n legacyRoot?: boolean;\n /**\n * mapping of git branches to configs.\n * Used to separate configs (ex publish tag) depending on current branch\n */\n branches?: Record<string, WebComponentBranchConfigs>;\n}\n\ntype Configuration = {\n 'jest'?: JestConfiguration;\n 'legacy'?: boolean;\n 'lint'?: { eslint: ESLintConfiguration; stylelint: StylelintConfiguration };\n 'review'?: ReviewConfiguration;\n 'swc-compile-package'?: Parameters<typeof swcDir>[0];\n 'test'?: JestConfiguration; // for backward-compatibility\n 'testRunner'?: string;\n 'vitest'?: VitestConfiguration;\n 'web-component'?: boolean | string | WebComponentOptions;\n 'webpack'?: false | WebpackConfiguration;\n} & {\n [key in CommandName]?: NodeConfiguration;\n} & NodeConfiguration;\n\ntype LocationOrJson = string | Record<string, any>;\n\nexport function getConfiguration(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJson(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getConfigurationSafe(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJsonSafe(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getESLintConfiguration() {\n return getConfiguration().lint?.eslint ?? {};\n}\n\nexport function getJestConfiguration() {\n const configuration = getConfiguration();\n return configuration.jest ?? configuration.test ?? {};\n}\n\nexport function getReviewConfiguration() {\n return getConfiguration().review ?? {};\n}\n\nexport function getStylelintConfiguration() {\n return getConfiguration().lint?.stylelint ?? {};\n}\n\nexport function getVitestConfiguration() {\n return getConfiguration().vitest ?? {};\n}\n\nexport function getWebpackConfiguration(locationOrJson?: LocationOrJson) {\n const { webpack } = getConfiguration(locationOrJson);\n return typeof webpack === 'object' ? webpack : {};\n}\n\nexport function getWebComponentConfiguration(\n locationOrJson: LocationOrJson = './'\n): WebComponentOptions | undefined {\n const config = getConfigurationSafe(locationOrJson)['web-component'];\n\n if (config === true) {\n return {};\n }\n\n if (typeof config === 'object') {\n return config;\n }\n\n if (typeof config === 'string') {\n const configPath = path.resolve(\n typeof locationOrJson === 'string' ? path.join(locationOrJson, config) : config\n );\n if (fs.existsSync(configPath)) {\n return require(path.resolve(configPath));\n }\n log.warning(`could not find web-component configuration: \"${config}\"`);\n\n return undefined;\n }\n}\n\nexport function getWebComponentBranchConfigs(locationOrJson: LocationOrJson = './') {\n const config = getWebComponentConfiguration(locationOrJson);\n\n return config?.branches;\n}\n\nexport function hasHeadlessBundle() {\n let source: string;\n try {\n source = getFolders().source;\n } catch {\n return false;\n }\n const headlessPath = path.join(source, 'headless.ts');\n return fs.existsSync(headlessPath);\n}\n\nexport function getSwcCompilePackageConfiguration() {\n return getConfiguration()['swc-compile-package'] ?? {};\n}\n\nexport function isBundle(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).webpack !== false;\n}\n\nexport function isCustomStyleRules() {\n return getWebpackConfiguration()['custom-style-rules'] === true;\n}\n\nexport function isDevServerDisabled() {\n const webpackConfiguration = getWebpackConfiguration();\n return webpackConfiguration.devServer === false;\n}\n\nexport function isExposeSharedDependencies() {\n return getWebpackConfiguration()['expose-shared-dependencies'] === true;\n}\n\nexport function isLegacy(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).legacy === true;\n}\n\nexport function isLegacyRoot() {\n return getWebComponentConfiguration()?.legacyRoot === true;\n}\n\nexport function isStyleCheckDisabled() {\n return getWebpackConfiguration()['disable-style-check'] === true;\n}\n\nexport function isWebComponent(locationOrJson: LocationOrJson = './') {\n return !!getWebComponentConfiguration(locationOrJson);\n}\n"],"names":["CommandName","allowedWebpackDevServerOptions","getConfiguration","getConfigurationSafe","getESLintConfiguration","getJestConfiguration","getReviewConfiguration","getStylelintConfiguration","getSwcCompilePackageConfiguration","getVitestConfiguration","getWebComponentBranchConfigs","getWebComponentConfiguration","getWebpackConfiguration","hasHeadlessBundle","isBundle","isCustomStyleRules","isDevServerDisabled","isExposeSharedDependencies","isLegacy","isLegacyRoot","isStyleCheckDisabled","isWebComponent","locationOrJson","json","readJson","path","join","cli","readJsonSafe","lint","eslint","configuration","jest","test","review","stylelint","vitest","webpack","config","configPath","resolve","fs","existsSync","require","log","warning","undefined","branches","source","getFolders","headlessPath","webpackConfiguration","devServer","legacy","legacyRoot"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/get-configuration.ts"],"sourcesContent":["import { Config } from '@jest/types';\nimport { swcDir } from '@swc/cli';\nimport { ESLint } from 'eslint';\nimport fs from 'fs';\nimport path from 'path';\nimport { LinterOptions } from 'stylelint';\nimport { ViteUserConfig } from 'vitest/config';\nimport { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server';\n\nimport { ReviewConfiguration } from '../cli/commands/review';\nimport { log } from './log';\nimport { getFolders } from './get-folders';\nimport { readJson, readJsonSafe } from './read-json';\n\nexport const allowedWebpackDevServerOptions = ['headers', 'port', 'proxy', 'static'] as const;\n\ntype ElementType<T> = T extends readonly (infer ElementType)[] ? ElementType : never;\n\nexport interface MinifyJSOptions {\n compress?: boolean;\n mangle?: boolean;\n}\n\nexport interface MinifyCssOptions {}\n\nexport interface MinifyOptions {\n css?: boolean | MinifyCssOptions;\n js?: boolean | MinifyJSOptions;\n}\n\nexport interface WebpackConfiguration\n extends Omit<\n Pick<WebpackDevServerConfiguration, ElementType<typeof allowedWebpackDevServerOptions>>,\n 'proxy'\n > {\n 'contentBase'?: boolean | string | string[] | number; // deprecated 2024-07\n 'custom-style-rules'?: boolean;\n 'expose-shared-dependencies'?: boolean;\n 'devServer'?: false | WebpackDevServerConfiguration;\n 'disable-style-check'?: boolean;\n 'minify'?: MinifyOptions;\n 'proxy'?: WebpackDevServerConfiguration['proxy'] | string;\n}\n\nexport interface ESLintConfiguration extends ESLint.Options {\n disabled?: boolean;\n}\n\nexport interface StylelintConfiguration extends Partial<LinterOptions> {\n ignorePattern?: string[];\n disabled?: boolean;\n}\n\nexport interface JestConfiguration extends Omit<Config.Argv, '_' | '$0'> {\n omitDefault?: string[];\n}\n\nexport interface NodeConfiguration {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n NODE_OPTIONS?: string[];\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum CommandName {\n 'build' = 'build',\n 'bundle-package' = 'bundle-package',\n 'clean' = 'clean',\n 'convert-eslint-config' = 'convert-eslint-config',\n 'eslint' = 'eslint',\n 'init' = 'init',\n 'install' = 'install',\n 'kendo-ui-license' = 'kendo-ui-license',\n 'lint' = 'lint',\n 'mfe-list' = 'mfe-list',\n 'mfe-package-clean' = 'mfe-package-clean',\n 'mfe-package-publish' = 'mfe-package-publish',\n 'mfe-publish' = 'mfe-publish',\n 'prepare-package' = 'prepare-package',\n 'review' = 'review',\n 'start' = 'start',\n 'stylelint' = 'stylelint',\n 'styles-check' = 'styles-check',\n 'test' = 'test',\n 'task' = 'task',\n 'upload-sourcemaps' = 'upload-sourcemaps',\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport type VitestConfiguration = ViteUserConfig['test'] & {\n omitDefault?: string[];\n};\n\nexport interface WebComponentBranchConfigs {\n publishTag?: string;\n uploadSourcemaps?: boolean;\n}\n\ninterface WebComponentOptions {\n legacyRoot?: boolean;\n /**\n * mapping of git branches to configs.\n * Used to separate configs (ex publish tag) depending on current branch\n */\n branches?: Record<string, WebComponentBranchConfigs>;\n}\n\ntype Configuration = {\n 'jest'?: JestConfiguration;\n 'legacy'?: boolean;\n 'lint'?: { eslint: ESLintConfiguration; stylelint: StylelintConfiguration };\n 'review'?: ReviewConfiguration;\n 'swc-compile-package'?: Parameters<typeof swcDir>[0];\n 'test'?: JestConfiguration; // for backward-compatibility\n 'testRunner'?: string;\n 'vitest'?: VitestConfiguration;\n 'web-component'?: boolean | string | WebComponentOptions;\n 'webpack'?: false | WebpackConfiguration;\n} & {\n [key in CommandName]?: NodeConfiguration;\n} & NodeConfiguration;\n\ntype LocationOrJson = string | Record<string, any>;\n\nexport function getConfiguration(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJson(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getConfigurationSafe(locationOrJson: LocationOrJson = './'): Configuration {\n const json =\n typeof locationOrJson === 'string'\n ? readJsonSafe(path.join(locationOrJson, 'package.json'))\n : locationOrJson;\n return json?.cli ?? {};\n}\n\nexport function getESLintConfiguration() {\n return getConfiguration().lint?.eslint ?? {};\n}\n\nexport function getJestConfiguration() {\n const configuration = getConfiguration();\n return configuration.jest ?? configuration.test ?? {};\n}\n\nexport function getReviewConfiguration() {\n return getConfiguration().review ?? {};\n}\n\nexport function getStylelintConfiguration() {\n return getConfiguration().lint?.stylelint ?? {};\n}\n\nexport function getVitestConfiguration() {\n return getConfiguration().vitest ?? {};\n}\n\nexport function getWebpackConfiguration(locationOrJson?: LocationOrJson) {\n const { webpack } = getConfiguration(locationOrJson);\n return typeof webpack === 'object' ? webpack : {};\n}\n\nexport function getWebComponentConfiguration(\n locationOrJson: LocationOrJson = './'\n): WebComponentOptions | undefined {\n const config = getConfigurationSafe(locationOrJson)['web-component'];\n\n if (config === true) {\n return {};\n }\n\n if (typeof config === 'object') {\n return config;\n }\n\n if (typeof config === 'string') {\n const configPath = path.resolve(\n typeof locationOrJson === 'string' ? path.join(locationOrJson, config) : config\n );\n if (fs.existsSync(configPath)) {\n return require(path.resolve(configPath));\n }\n log.warning(`could not find web-component configuration: \"${config}\"`);\n\n return undefined;\n }\n}\n\nexport function getWebComponentBranchConfigs(locationOrJson: LocationOrJson = './') {\n const config = getWebComponentConfiguration(locationOrJson);\n\n return config?.branches;\n}\n\nexport function hasHeadlessBundle() {\n let source: string;\n try {\n source = getFolders().source;\n } catch {\n return false;\n }\n const headlessPath = path.join(source, 'headless.ts');\n return fs.existsSync(headlessPath);\n}\n\nexport function getSwcCompilePackageConfiguration() {\n return getConfiguration()['swc-compile-package'] ?? {};\n}\n\nexport function isBundle(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).webpack !== false;\n}\n\nexport function isCustomStyleRules() {\n return getWebpackConfiguration()['custom-style-rules'] === true;\n}\n\nexport function isDevServerDisabled() {\n const webpackConfiguration = getWebpackConfiguration();\n return webpackConfiguration.devServer === false;\n}\n\nexport function isExposeSharedDependencies() {\n return getWebpackConfiguration()['expose-shared-dependencies'] === true;\n}\n\nexport function isLegacy(locationOrJson?: LocationOrJson) {\n return getConfiguration(locationOrJson).legacy === true;\n}\n\nexport function isLegacyRoot() {\n return getWebComponentConfiguration()?.legacyRoot === true;\n}\n\nexport function isStyleCheckDisabled() {\n return getWebpackConfiguration()['disable-style-check'] === true;\n}\n\nexport function isWebComponent(locationOrJson: LocationOrJson = './') {\n return !!getWebComponentConfiguration(locationOrJson);\n}\n"],"names":["CommandName","allowedWebpackDevServerOptions","getConfiguration","getConfigurationSafe","getESLintConfiguration","getJestConfiguration","getReviewConfiguration","getStylelintConfiguration","getSwcCompilePackageConfiguration","getVitestConfiguration","getWebComponentBranchConfigs","getWebComponentConfiguration","getWebpackConfiguration","hasHeadlessBundle","isBundle","isCustomStyleRules","isDevServerDisabled","isExposeSharedDependencies","isLegacy","isLegacyRoot","isStyleCheckDisabled","isWebComponent","locationOrJson","json","readJson","path","join","cli","readJsonSafe","lint","eslint","configuration","jest","test","review","stylelint","vitest","webpack","config","configPath","resolve","fs","existsSync","require","log","warning","undefined","branches","source","getFolders","headlessPath","webpackConfiguration","devServer","legacy","legacyRoot"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "32.3.1",
3
+ "version": "32.4.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/startup",
6
6
  "repository": {
@@ -38,8 +38,8 @@
38
38
  "@jest/core": "~29.7.0",
39
39
  "@jest/types": "~29.6.3",
40
40
  "@jsdevtools/coverage-istanbul-loader": "^3.0.5",
41
- "@servicetitan/eslint-config": "32.3.1",
42
- "@servicetitan/stylelint-config": "32.3.1",
41
+ "@servicetitan/eslint-config": "32.4.0",
42
+ "@servicetitan/stylelint-config": "32.4.0",
43
43
  "@svgr/webpack": "^8.1.0",
44
44
  "@swc/cli": "^0.5.0",
45
45
  "@swc/core": "1.13.5",
@@ -70,14 +70,15 @@
70
70
  "less-loader": "~12.3.0",
71
71
  "less-plugin-npm-import": "~2.1.0",
72
72
  "lodash.memoize": "^4.1.2",
73
- "memfs": "~4.49.0",
73
+ "memfs": "~4.50.0",
74
74
  "mini-css-extract-plugin": "~2.9.4",
75
75
  "moment-locales-webpack-plugin": "~1.2.0",
76
76
  "multimatch": "~5.0.0",
77
77
  "portfinder": "~1.0.38",
78
78
  "postcss": "~8.5.6",
79
79
  "prettier": "~3.6.2",
80
- "sass": "~1.93.2",
80
+ "rollup": "~4.49.0",
81
+ "sass": "~1.93.3",
81
82
  "sass-loader": "~16.0.6",
82
83
  "semver": "~7.7.3",
83
84
  "source-map-loader": "~5.0.0",
@@ -118,7 +119,8 @@
118
119
  "jwa": [
119
120
  "@progress/kendo-licensing@1.3.5 -> jsonwebtoken@9.0.2 -> jws@3.2.2 -> jwa@1.4.1",
120
121
  "Forcing ^1.4.2 to fix Node v25 incompatibility in 1.4.1 (see https://github.com/auth0/node-jsonwebtoken/issues/992)"
121
- ]
122
+ ],
123
+ "rollup": "Update/remove when https://github.com/rollup/rollup/issues/6168 is resolved"
122
124
  },
123
125
  "publishConfig": {
124
126
  "access": "public"
@@ -126,5 +128,5 @@
126
128
  "cli": {
127
129
  "webpack": false
128
130
  },
129
- "gitHead": "a2d0b80586285dbe4c657a4cf44b4c4fe69362c1"
131
+ "gitHead": "836bcc0dc0859bf1ac0d3c679996e7b753893674"
130
132
  }
@@ -16,4 +16,17 @@ describe(`[startup] ${ESLintCommand.name}`, () => {
16
16
 
17
17
  expect(eslint).toHaveBeenCalledWith({ fix: args.fix, paths: args._ });
18
18
  });
19
+
20
+ describe('with paths', () => {
21
+ beforeEach(() => (args.paths = ['bar.ts']));
22
+
23
+ test('appends paths to args', async () => {
24
+ await subject();
25
+
26
+ expect(eslint).toHaveBeenCalledWith({
27
+ fix: args.fix,
28
+ paths: [...args._, ...args.paths!],
29
+ });
30
+ });
31
+ });
19
32
  });
@@ -1,13 +1,14 @@
1
1
  import { Lint } from '../lint';
2
2
  import { eslint, lernaExec } from '../../utils';
3
3
  import { getPackages } from '../../../utils';
4
+ import { stylelint } from '../../utils/stylelint';
4
5
 
5
- jest.mock('execa');
6
- jest.mock('stylelint', () => ({ lint: jest.fn(() => ({ report: '' })) }));
6
+ jest.mock('stylelint', () => ({ lint: jest.fn() }));
7
7
 
8
8
  jest.mock('../../utils');
9
+ jest.mock('../../utils/stylelint');
9
10
  jest.mock('../../../utils', () => ({
10
- log: { info: jest.fn() },
11
+ log: { debug: jest.fn(), info: jest.fn() },
11
12
  getConfiguration: jest.fn(() => ({})),
12
13
  getDestinationFolders: jest.fn(() => []),
13
14
  getPackages: jest.fn(() => []),
@@ -22,7 +23,7 @@ describe(`[startup] ${Lint.name}`, () => {
22
23
  jest.clearAllMocks();
23
24
  // eslint-disable-next-line @typescript-eslint/naming-convention
24
25
  args = { _: [] };
25
- (getPackages as jest.Mock).mockReturnValue(packages.map(name => ({ name })));
26
+ jest.mocked(getPackages).mockReturnValue(packages.map(name => ({ name }) as any));
26
27
  });
27
28
 
28
29
  const subject = async () => new Lint(args).execute();
@@ -30,12 +31,41 @@ describe(`[startup] ${Lint.name}`, () => {
30
31
  test('runs styles-check', async () => {
31
32
  await subject();
32
33
 
33
- expect(lernaExec).toHaveBeenCalledWith(
34
- expect.objectContaining({
35
- cmd: 'startup styles-check',
36
- scope: packages,
37
- })
38
- );
34
+ expect(lernaExec).toHaveBeenCalledWith({ cmd: 'startup styles-check', stream: true });
35
+ });
36
+
37
+ describe('with "scope"', () => {
38
+ beforeEach(() => (args.scope = ['package-a']));
39
+
40
+ test('filters styles-check packages', async () => {
41
+ await subject();
42
+
43
+ expect(getPackages).toHaveBeenCalledWith({ scope: args.scope });
44
+
45
+ expect(lernaExec).toHaveBeenCalledWith(
46
+ expect.objectContaining({
47
+ cmd: 'startup styles-check',
48
+ scope: packages,
49
+ })
50
+ );
51
+ });
52
+ });
53
+
54
+ describe('with "ignore"', () => {
55
+ beforeEach(() => (args.ignore = ['package-a']));
56
+
57
+ test('filters styles-check packages', async () => {
58
+ await subject();
59
+
60
+ expect(getPackages).toHaveBeenCalledWith({ ignore: args.ignore });
61
+
62
+ expect(lernaExec).toHaveBeenCalledWith(
63
+ expect.objectContaining({
64
+ cmd: 'startup styles-check',
65
+ scope: packages,
66
+ })
67
+ );
68
+ });
39
69
  });
40
70
 
41
71
  test('command is greedy', () => {
@@ -48,6 +78,12 @@ describe(`[startup] ${Lint.name}`, () => {
48
78
  expect(eslint).toHaveBeenCalledWith({ paths: [] });
49
79
  });
50
80
 
81
+ test('runs stylelint', async () => {
82
+ await subject();
83
+
84
+ expect(stylelint).toHaveBeenCalledWith({ paths: [] });
85
+ });
86
+
51
87
  describe('when instructed to fix issues', () => {
52
88
  beforeEach(() => (args.fix = true));
53
89
 
@@ -56,6 +92,12 @@ describe(`[startup] ${Lint.name}`, () => {
56
92
 
57
93
  expect(eslint).toHaveBeenCalledWith({ fix: true, paths: [] });
58
94
  });
95
+
96
+ test('instructs stylelint to fix issues', async () => {
97
+ await subject();
98
+
99
+ expect(stylelint).toHaveBeenCalledWith({ fix: true, paths: [] });
100
+ });
59
101
  });
60
102
 
61
103
  function itRunsLernaExec() {
@@ -0,0 +1,32 @@
1
+ import { stylelint } from '../../utils/stylelint';
2
+ import { Stylelint } from '../stylelint';
3
+
4
+ jest.mock('../../utils/stylelint', () => ({ stylelint: jest.fn() }));
5
+
6
+ describe(`[startup] ${Stylelint.name}`, () => {
7
+ let args: ConstructorParameters<typeof Stylelint>[0];
8
+
9
+ // eslint-disable-next-line @typescript-eslint/naming-convention
10
+ beforeEach(() => (args = { _: ['foo'], fix: false }));
11
+
12
+ const subject = async () => new Stylelint(args).execute();
13
+
14
+ test('runs stylelint with specified args', async () => {
15
+ await subject();
16
+
17
+ expect(stylelint).toHaveBeenCalledWith({ fix: args.fix, paths: args._ });
18
+ });
19
+
20
+ describe('with paths', () => {
21
+ beforeEach(() => (args.paths = ['bar']));
22
+
23
+ test('appends paths to args', async () => {
24
+ await subject();
25
+
26
+ expect(stylelint).toHaveBeenCalledWith({
27
+ fix: args.fix,
28
+ paths: [...args._, ...args.paths!],
29
+ });
30
+ });
31
+ });
32
+ });
@@ -1,17 +1,26 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
1
2
  import { logErrors } from '../../utils';
2
3
  import { eslint } from '../utils';
3
4
  import { Command, CommandArgs } from './types';
4
5
 
5
6
  interface Args extends CommandArgs {
6
- // eslint-disable-next-line @typescript-eslint/naming-convention
7
7
  _: string[];
8
8
  fix?: boolean;
9
+ paths?: string[];
9
10
  }
10
11
 
11
12
  export class ESLintCommand extends Command<Args> {
13
+ static readonly options = {
14
+ _: { description: '[paths...]' },
15
+ };
16
+
12
17
  @logErrors
13
18
  async execute() {
14
- const { _: paths, fix } = this.args;
15
- await eslint({ fix, paths });
19
+ await eslint({ fix: this.args.fix, paths: this.paths });
20
+ }
21
+
22
+ private get paths() {
23
+ const { _, paths = [] } = this.args;
24
+ return [..._, ...paths];
16
25
  }
17
26
  }
@@ -17,6 +17,7 @@ import { PreparePackage } from './prepare-package';
17
17
  import { Review } from './review';
18
18
  import { RunTask } from './run-task';
19
19
  import { Start } from './start';
20
+ import { Stylelint } from './stylelint';
20
21
  import { StylesCheck } from './styles-check';
21
22
  import { Tests } from './test';
22
23
  import { Command, Newable } from './types';
@@ -39,6 +40,7 @@ const commands: Record<CommandName, Newable<Command>> = {
39
40
  [CommandName['prepare-package']]: PreparePackage,
40
41
  [CommandName.review]: Review,
41
42
  [CommandName.start]: Start,
43
+ [CommandName.stylelint]: Stylelint,
42
44
  [CommandName['styles-check']]: StylesCheck,
43
45
  [CommandName.test]: Tests,
44
46
  [CommandName.task]: RunTask,
@@ -1,17 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/naming-convention */
2
- import path from 'path';
3
-
4
- import stylelint from 'stylelint';
5
-
6
- import {
7
- getDestinationFolders,
8
- getPackages,
9
- getStylelintConfiguration,
10
- log,
11
- logErrors,
12
- } from '../../utils';
2
+ import { getPackages, log, logErrors } from '../../utils';
13
3
  import { Command, CommandArgs } from './types';
14
4
  import { eslint, lernaExec } from '../utils';
5
+ import { stylelint } from '../utils/stylelint';
15
6
 
16
7
  interface Args extends CommandArgs {
17
8
  _: string[];
@@ -61,58 +52,19 @@ export class Lint extends Command<Args> {
61
52
 
62
53
  @logErrors
63
54
  private async stylelint() {
64
- const { disabled, ...config } = getStylelintConfiguration();
65
- if (disabled) {
66
- return;
67
- }
68
-
69
- const { fix } = this.args;
70
- const { paths } = this;
71
-
72
55
  log.info('Running stylelint...');
73
- const allowedExtensions = ['css', 'scss', 'less'];
74
- const glob = `**/*.{${allowedExtensions.join(',')}}`;
75
- let files = paths.reduce((result, path) => {
76
- const extension = path.split('.').pop();
77
- if (extension) {
78
- if (allowedExtensions.includes(extension.toLowerCase())) {
79
- result.push(path);
80
- }
81
- } else {
82
- result.push(pathUniJoin(path, glob));
83
- }
84
- return result;
85
- }, new Array<string>());
86
-
87
- if (!files.length) {
88
- files = [glob];
89
- }
90
-
91
- const { report, errored } = await stylelint.lint({
92
- files,
93
- ignorePattern: ['node_modules', ...getDestinationFolders()],
94
- formatter: 'string',
95
- fix,
96
- quietDeprecationWarnings: true,
97
- ...config,
98
- });
99
-
100
- process.stdout.write(report);
101
-
102
- if (errored) {
103
- process.exitCode = 1;
104
- }
56
+ await stylelint({ fix: this.args.fix, paths: this.paths });
105
57
  }
106
58
 
107
59
  @logErrors
108
60
  private async checkStyles() {
109
61
  const { ignore, scope } = this.args;
110
62
 
111
- const packages = getPackages({ ignore, scope });
63
+ const packages = ignore || scope ? getPackages({ ignore, scope }) : undefined;
112
64
 
113
65
  await lernaExec({
114
66
  cmd: 'startup styles-check',
115
- scope: packages.map(({ name }) => name),
67
+ scope: packages?.map(({ name }) => name),
116
68
  stream: true,
117
69
  });
118
70
  }
@@ -128,7 +80,3 @@ export class Lint extends Command<Args> {
128
80
  return [..._, ...paths];
129
81
  }
130
82
  }
131
-
132
- function pathUniJoin(...chunks: string[]) {
133
- return path.join(...chunks).replace(/\\/g, '/');
134
- }
@@ -0,0 +1,26 @@
1
+ /* eslint-disable @typescript-eslint/naming-convention */
2
+ import { logErrors } from '../../utils';
3
+ import { stylelint } from '../utils/stylelint';
4
+ import { Command, CommandArgs } from './types';
5
+
6
+ interface Args extends CommandArgs {
7
+ _: string[];
8
+ fix?: boolean;
9
+ paths?: string[];
10
+ }
11
+
12
+ export class Stylelint extends Command<Args> {
13
+ static readonly options = {
14
+ _: { description: '[paths...]' },
15
+ };
16
+
17
+ @logErrors
18
+ async execute() {
19
+ await stylelint({ fix: this.args.fix, paths: this.paths });
20
+ }
21
+
22
+ private get paths() {
23
+ const { _, paths = [] } = this.args;
24
+ return [..._, ...paths];
25
+ }
26
+ }
@@ -0,0 +1,164 @@
1
+ import { lint } from 'stylelint';
2
+ import { stylelint } from '../stylelint';
3
+ import { getDestinationFolders, getStylelintConfiguration } from '../../../utils';
4
+
5
+ jest.mock('stylelint', () => ({ lint: jest.fn() }));
6
+
7
+ jest.mock('../../../utils', () => ({
8
+ ...jest.requireActual('../../../utils'),
9
+ getDestinationFolders: jest.fn(),
10
+ getStylelintConfiguration: jest.fn(),
11
+ }));
12
+
13
+ describe(`[startup] utils:${stylelint.name}`, () => {
14
+ const defaultFiles = '**/*.{css,scss,less}';
15
+ let args: Parameters<typeof stylelint>[0];
16
+ let linterResult: Partial<Awaited<ReturnType<typeof lint>>>;
17
+ let writeSpy: jest.SpyInstance;
18
+
19
+ beforeEach(() => {
20
+ args = {};
21
+ linterResult = { report: 'report' };
22
+
23
+ jest.clearAllMocks();
24
+ jest.mocked(getDestinationFolders).mockReturnValue([]);
25
+ jest.mocked(getStylelintConfiguration).mockReturnValue({});
26
+ jest.mocked(lint).mockImplementation(() => Promise.resolve(linterResult) as any);
27
+ writeSpy = jest.spyOn(process.stdout, 'write').mockImplementation(jest.fn());
28
+ });
29
+
30
+ const subject = async () => stylelint(args);
31
+
32
+ test('runs linter', async () => {
33
+ await subject();
34
+
35
+ expect(lint).toHaveBeenCalledWith(
36
+ expect.objectContaining({
37
+ files: [defaultFiles],
38
+ formatter: 'string',
39
+ ignorePattern: ['node_modules'],
40
+ })
41
+ );
42
+ });
43
+
44
+ test('outputs report', async () => {
45
+ await subject();
46
+
47
+ expect(writeSpy).toHaveBeenCalledWith(linterResult.report);
48
+ });
49
+
50
+ describe('with output folders', () => {
51
+ const outputFolders = ['../foo/out/', 'dist/', 'packages/bar/out/', 'packages/foo/dist/'];
52
+
53
+ beforeEach(() => jest.mocked(getDestinationFolders).mockReturnValue(outputFolders));
54
+
55
+ test('ignores output folders', async () => {
56
+ await subject();
57
+
58
+ expect(lint).toHaveBeenCalledWith(
59
+ expect.objectContaining({
60
+ ignorePattern: ['node_modules', ...outputFolders],
61
+ })
62
+ );
63
+ });
64
+ });
65
+
66
+ describe('with {fix: true}', () => {
67
+ beforeEach(() => (args.fix = true));
68
+
69
+ test('applies fixes', async () => {
70
+ await subject();
71
+
72
+ expect(lint).toHaveBeenCalledWith(expect.objectContaining({ fix: true }));
73
+ });
74
+ });
75
+
76
+ describe('with directory paths', () => {
77
+ beforeEach(() => (args.paths = ['packages/foo', 'packages/bar']));
78
+
79
+ test('appends glob pattern to path', async () => {
80
+ await subject();
81
+
82
+ expect(lint).toHaveBeenCalledWith(
83
+ expect.objectContaining({
84
+ files: args.paths!.map(path => `${path}/${defaultFiles}`),
85
+ })
86
+ );
87
+ });
88
+ });
89
+
90
+ describe('with file paths', () => {
91
+ const allowedPaths = ['foo.css', 'bar.scss', 'baz.less'];
92
+
93
+ beforeEach(() => (args.paths = allowedPaths));
94
+
95
+ test('passes paths to linter', async () => {
96
+ await subject();
97
+
98
+ expect(lint).toHaveBeenCalledWith(expect.objectContaining({ files: args.paths }));
99
+ });
100
+
101
+ describe('with disallowed paths', () => {
102
+ const disallowedPaths = ['foo.txt', 'bar.*'];
103
+
104
+ beforeEach(() => (args.paths = [...allowedPaths, ...disallowedPaths]));
105
+
106
+ test('ignores disallowed paths', async () => {
107
+ await subject();
108
+
109
+ expect(lint).toHaveBeenCalledWith(expect.objectContaining({ files: allowedPaths }));
110
+ });
111
+ describe('with only disallowed paths', () => {
112
+ beforeEach(() => (args.paths = disallowedPaths));
113
+
114
+ test('ignores paths', async () => {
115
+ await subject();
116
+
117
+ expect(lint).toHaveBeenCalledWith(
118
+ expect.objectContaining({ files: [defaultFiles] })
119
+ );
120
+ });
121
+ });
122
+ });
123
+ });
124
+
125
+ describe('when there are errors', () => {
126
+ const exitCode = process.exitCode;
127
+
128
+ beforeEach(() => (linterResult.errored = true));
129
+
130
+ afterAll(() => (process.exitCode = exitCode));
131
+
132
+ test('sets process.exitCode', async () => {
133
+ await subject();
134
+
135
+ expect(process.exitCode).toBeGreaterThan(0);
136
+ });
137
+ });
138
+
139
+ describe('when disabled', () => {
140
+ beforeEach(() => {
141
+ jest.mocked(getStylelintConfiguration).mockReturnValue({ disabled: true });
142
+ });
143
+
144
+ test('does nothing', async () => {
145
+ await subject();
146
+
147
+ expect(lint).not.toHaveBeenCalled();
148
+ });
149
+ });
150
+
151
+ describe('with custom config', () => {
152
+ const config: ReturnType<typeof getStylelintConfiguration> = { ignorePath: 'foo' };
153
+
154
+ beforeEach(() => {
155
+ jest.mocked(getStylelintConfiguration).mockReturnValue(config);
156
+ });
157
+
158
+ test('passes config to linter', async () => {
159
+ await subject();
160
+
161
+ expect(lint).toHaveBeenCalledWith(expect.objectContaining(config));
162
+ });
163
+ });
164
+ });
@@ -18,6 +18,7 @@ export * from './pipe-stdout';
18
18
  export * from './process-tree';
19
19
  export * from './publish';
20
20
  export * from './set-node-options';
21
+ // Don't export ./stylelint, it breaks tests using the default "jsdom" environment
21
22
  export * from './ts-config';
22
23
  export * from './type-check';
23
24
  export * from './watch-stdout';
@@ -0,0 +1,55 @@
1
+ import path from 'path';
2
+ import { lint } from 'stylelint';
3
+ import { CommandArgs } from '../commands';
4
+ import { getDestinationFolders, getStylelintConfiguration, log } from '../../utils';
5
+
6
+ interface Args extends CommandArgs {
7
+ fix?: boolean;
8
+ paths?: string[];
9
+ }
10
+
11
+ const allowedExtensions = ['css', 'scss', 'less'];
12
+ const glob = `**/*.{${allowedExtensions.join(',')}}`;
13
+
14
+ export async function stylelint({ fix, paths = [] }: Args) {
15
+ const { disabled, ...config } = getStylelintConfiguration();
16
+ if (disabled) {
17
+ return;
18
+ }
19
+
20
+ const files = paths.reduce<string[]>((result, file) => {
21
+ const extension = path.parse(file).ext.slice(1); // drop leading dot
22
+ if (extension) {
23
+ if (allowedExtensions.includes(extension.toLowerCase())) {
24
+ result.push(file);
25
+ } else {
26
+ log.debug('stylelint', `ignoring ${file}`);
27
+ }
28
+ } else {
29
+ result.push(pathUniJoin(file, glob));
30
+ }
31
+ return result;
32
+ }, []);
33
+
34
+ const options: Parameters<typeof lint>[0] = {
35
+ files: files.length ? files : [glob],
36
+ ignorePattern: ['node_modules', ...getDestinationFolders()],
37
+ formatter: 'string',
38
+ fix,
39
+ quietDeprecationWarnings: true,
40
+ ...config,
41
+ };
42
+
43
+ /* istanbul ignore next: debug only */
44
+ log.debug('stylelint', () => JSON.stringify(options, null, 2));
45
+
46
+ const { report, errored } = await lint(options);
47
+ process.stdout.write(report);
48
+ if (errored) {
49
+ process.exitCode = 1;
50
+ }
51
+ }
52
+
53
+ function pathUniJoin(...chunks: string[]) {
54
+ return path.join(...chunks).replace(/\\/g, '/');
55
+ }
@@ -78,6 +78,7 @@ export enum CommandName {
78
78
  'prepare-package' = 'prepare-package',
79
79
  'review' = 'review',
80
80
  'start' = 'start',
81
+ 'stylelint' = 'stylelint',
81
82
  'styles-check' = 'styles-check',
82
83
  'test' = 'test',
83
84
  'task' = 'task',