@servicetitan/startup 28.3.0 → 28.3.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cli-os.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,iCAAiC,EAEjC,wBAAwB,EAC3B,MAAM,eAAe,CAAC;AAGvB,KAAK,iBAAiB,GAAG,wBAAwB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE,eAAO,MAAM,UAAU,YACV,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,+BACR,iBAAiB,KAC9C,OAAO,CAAC,IAAI,CAwCd,CAAC;AAEF,KAAK,uBAAuB,GAAG,iCAAiC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,eAAO,MAAM,gBAAgB,YAChB,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,kCACL,uBAAuB,KACvD,MA2BF,CAAC"}
1
+ {"version":3,"file":"cli-os.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,iCAAiC,EAEjC,wBAAwB,EAC3B,MAAM,eAAe,CAAC;AAGvB,KAAK,iBAAiB,GAAG,wBAAwB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE,eAAO,MAAM,UAAU,YACV,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,+BACR,iBAAiB,KAC9C,OAAO,CAAC,IAAI,CA2Cd,CAAC;AAEF,KAAK,uBAAuB,GAAG,iCAAiC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvF,eAAO,MAAM,gBAAgB,YAChB,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,kCACL,uBAAuB,KACvD,MA2BF,CAAC"}
@@ -21,7 +21,10 @@ const runCommand = (command, { quiet, ...spawnOptions } = {}) => {
21
21
  if (!quiet) {
22
22
  utils_1.log.info(`run command ${fullCommand}`);
23
23
  }
24
- const proc = (0, child_process_1.spawn)(commandName, commandArray, spawnOptions);
24
+ const proc = (0, child_process_1.spawn)(commandName, commandArray, {
25
+ shell: process.platform === 'win32',
26
+ ...spawnOptions,
27
+ });
25
28
  proc.stdout.pipe(process.stdout);
26
29
  proc.stderr.pipe(process.stderr);
27
30
  proc.on('exit', function (code) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-os.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-os.js","sourceRoot":"","sources":["../../../src/cli/utils/cli-os.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tcm.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/tcm.ts"],"names":[],"mappings":"AA0DA,wBAAsB,GAAG,kBAIxB;AAED,wBAAsB,QAAQ,kBAE7B"}
1
+ {"version":3,"file":"tcm.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/tcm.ts"],"names":[],"mappings":"AAmEA,wBAAsB,GAAG,kBAIxB;AAED,wBAAsB,QAAQ,kBAE7B"}
@@ -19,8 +19,8 @@ async function compile(filePath) {
19
19
  }
20
20
  }
21
21
  async function run({ watch } = {}) {
22
- const { source } = (0, utils_1.getFolders)();
23
- const filesPattern = `${source}/**/*.module.{${_1.styleExtensions.join()}}`.replace(/\\/g, '/');
22
+ const source = (0, utils_1.getFolders)().source.replace(/\\/g, '/');
23
+ const filesPattern = `${source}/**/*.module.{${_1.styleExtensions.join()}}`;
24
24
  const creator = new typed_css_modules_1.default({
25
25
  camelCase: true,
26
26
  namedExports: true,
@@ -38,15 +38,23 @@ async function run({ watch } = {}) {
38
38
  if (!watch) {
39
39
  const files = await (0, glob_1.glob)(filesPattern);
40
40
  await Promise.all(files.map(writeFile));
41
+ return;
41
42
  }
42
- else {
43
- utils_1.log.info('Watch ' + filesPattern + '...');
44
- const watcher = chokidar_1.default.watch([filesPattern], { ignoreInitial: true });
45
- watcher.on('add', writeFile);
46
- watcher.on('change', writeFile);
47
- if (process.env.NODE_ENV !== 'test') {
48
- await new Promise(() => { });
49
- }
43
+ utils_1.log.info('Watch ' + filesPattern + '...');
44
+ const stylesRegex = new RegExp(`\\.module\\.(${_1.styleExtensions.join('|')})$`);
45
+ const watcher = chokidar_1.default.watch(source, {
46
+ ignored: (path, stats) => !!(stats === null || stats === void 0 ? void 0 : stats.isFile()) && !stylesRegex.test(path),
47
+ ignoreInitial: true,
48
+ });
49
+ const callback = async (path) => {
50
+ utils_1.log.debug('tcm', `Compiling ${path}`);
51
+ await writeFile(path);
52
+ };
53
+ watcher.on('add', callback);
54
+ watcher.on('change', callback);
55
+ /* istanbul ignore next: not executed in test environment */
56
+ if (process.env.NODE_ENV !== 'test') {
57
+ await new Promise(() => { });
50
58
  }
51
59
  }
52
60
  async function tcm() {
@@ -1 +1 @@
1
- {"version":3,"file":"tcm.js","sourceRoot":"","sources":["../../../src/cli/utils/tcm.ts"],"names":[],"mappings":";;;;;AA0DA,kBAIC;AAED,4BAEC;AAlED,+BAA4B;AAC5B,wDAAgC;AAEhC,0EAA2C;AAE3C,uCAA8C;AAC9C,wBAA8D;AAM9D,KAAK,UAAU,OAAO,CAAC,QAAgB;IACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,cAAW,EAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,cAAW,EAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,EAAE,KAAK,KAAiB,EAAE;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAEhC,MAAM,YAAY,GAAG,GAAG,MAAM,iBAAiB,kBAAe,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE7F,MAAM,OAAO,GAAG,IAAI,2BAAU,CAAC;QAC3B,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzC,IAAI,CAAC;YACD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,WAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACJ,WAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,kBAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAClC,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,GAAG;IACrB,WAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAExE,MAAM,GAAG,EAAE,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,QAAQ;IAC1B,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"tcm.js","sourceRoot":"","sources":["../../../src/cli/utils/tcm.ts"],"names":[],"mappings":";;;;;AAmEA,kBAIC;AAED,4BAEC;AA3ED,+BAA4B;AAC5B,wDAAgC;AAEhC,0EAA2C;AAE3C,uCAA8C;AAC9C,wBAA8D;AAM9D,KAAK,UAAU,OAAO,CAAC,QAAgB;IACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,cAAW,EAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,cAAW,EAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,EAAE,KAAK,KAAiB,EAAE;IACzC,MAAM,MAAM,GAAG,IAAA,kBAAU,GAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,GAAG,MAAM,iBAAiB,kBAAe,CAAC,IAAI,EAAE,GAAG,CAAC;IAEzE,MAAM,OAAO,GAAG,IAAI,2BAAU,CAAC;QAC3B,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QACzC,IAAI,CAAC;YACD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,WAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,YAAY,CAAC,CAAC;QACvC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,OAAO;IACX,CAAC;IAED,WAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,gBAAgB,kBAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,kBAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;QACnC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE,CAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE,aAAa,EAAE,IAAI;KACtB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACpC,WAAG,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/B,4DAA4D;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,GAAG;IACrB,WAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAExE,MAAM,GAAG,EAAE,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,QAAQ;IAC1B,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "28.3.0",
3
+ "version": "28.3.2",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/startup",
6
6
  "repository": {
@@ -32,14 +32,14 @@
32
32
  "@jest/core": "~29.7.0",
33
33
  "@jest/types": "~29.6.3",
34
34
  "@jsdevtools/coverage-istanbul-loader": "^3.0.5",
35
- "@servicetitan/eslint-config": "28.3.0",
36
- "@servicetitan/stylelint-config": "28.3.0",
35
+ "@servicetitan/eslint-config": "28.3.2",
36
+ "@servicetitan/stylelint-config": "28.3.2",
37
37
  "@svgr/webpack": "^8.1.0",
38
- "@swc/core": "1.10.1",
38
+ "@swc/core": "1.10.4",
39
39
  "@types/debug": "^4.1.12",
40
40
  "@types/jest": "~29.5.12",
41
41
  "chalk": "~4.1.2",
42
- "chokidar": "~3.6.0",
42
+ "chokidar": "~4.0.3",
43
43
  "cpx2": "7.0.1",
44
44
  "css-loader": "~7.1.2",
45
45
  "css-minimizer-webpack-plugin": "^7.0.0",
@@ -61,7 +61,7 @@
61
61
  "less-loader": "~12.2.0",
62
62
  "less-plugin-npm-import": "~2.1.0",
63
63
  "lodash.memoize": "^4.1.2",
64
- "memfs": "~4.15.0",
64
+ "memfs": "~4.15.3",
65
65
  "mini-css-extract-plugin": "~2.9.2",
66
66
  "moment": "^2.30.1",
67
67
  "moment-locales-webpack-plugin": "~1.2.0",
@@ -72,7 +72,6 @@
72
72
  "sass": "~1.83.0",
73
73
  "sass-loader": "~16.0.4",
74
74
  "source-map-loader": "~5.0.0",
75
- "string-width": "<5.0.0",
76
75
  "style-loader": "~4.0.0",
77
76
  "stylelint": "~16.12.0",
78
77
  "swc-loader": "0.2.6",
@@ -95,7 +94,6 @@
95
94
  "yargs": "~17.7.2"
96
95
  },
97
96
  "DEVELOPER_NOTES": {
98
- "string-width": "Fixes lerna issue when running build. Can be removed when lerna adds string-width as a direct dependency.",
99
97
  "cpx2": "Must use 7.0.1 because later versions require glob 11.x which does not support Node 18"
100
98
  },
101
99
  "publishConfig": {
@@ -104,5 +102,5 @@
104
102
  "cli": {
105
103
  "webpack": false
106
104
  },
107
- "gitHead": "63ce3ca18966fc5522a3b61df5e4c55f82b4272e"
105
+ "gitHead": "5d08d5e03bad6ad8aed0a1b0c92952b3b29a930b"
108
106
  }
@@ -8,6 +8,7 @@ jest.mock('../../../utils', () => ({ log: { info: jest.fn() } })); // suppress l
8
8
 
9
9
  describe('[startup] Cli Utils (OS)', () => {
10
10
  describe(`${runCommand.name}`, () => {
11
+ const defaultSpawnOptions = { shell: process.platform === 'win32' };
11
12
  let exitCode: number;
12
13
  let childProcess: ReturnType<typeof spawn>;
13
14
 
@@ -27,19 +28,22 @@ describe('[startup] Cli Utils (OS)', () => {
27
28
  test('runs command', () => {
28
29
  expect(subject('foo bar')).resolves.toBe(undefined);
29
30
 
30
- expect(spawn).toHaveBeenCalledWith('foo', ['bar'], {});
31
+ expect(spawn).toHaveBeenCalledWith('foo', ['bar'], defaultSpawnOptions);
31
32
  });
32
33
 
33
34
  test('runs command with options', async () => {
34
35
  await subject('foo', { timeout: 10000 });
35
36
 
36
- expect(spawn).toHaveBeenCalledWith('foo', [], { timeout: 10000 });
37
+ expect(spawn).toHaveBeenCalledWith('foo', [], {
38
+ ...defaultSpawnOptions,
39
+ timeout: 10000,
40
+ });
37
41
  });
38
42
 
39
43
  test('runs command array', async () => {
40
44
  await subject(['foo', 'bar', '--baz']);
41
45
 
42
- expect(spawn).toHaveBeenCalledWith('foo', ['bar', '--baz'], {});
46
+ expect(spawn).toHaveBeenCalledWith('foo', ['bar', '--baz'], defaultSpawnOptions);
43
47
  });
44
48
 
45
49
  test("pipes stdout and stderr to parent's streams", async () => {
@@ -2,7 +2,7 @@
2
2
  * @jest-environment node
3
3
  */
4
4
  import chokidar from 'chokidar';
5
- import fs from 'fs';
5
+ import fs, { Stats } from 'fs';
6
6
 
7
7
  import { getFolders, log } from '../../../utils';
8
8
  import * as sassModule from '../compile-sass';
@@ -13,7 +13,7 @@ import { tcm, tcmWatch } from '../tcm';
13
13
  jest.mock('../../../utils', () => ({
14
14
  ...jest.requireActual('../../../utils'),
15
15
  getFolders: jest.fn(),
16
- log: { error: jest.fn(), info: jest.fn() }, // suppress test output
16
+ log: { debug: jest.fn(), error: jest.fn(), info: jest.fn() }, // suppress test output
17
17
  }));
18
18
 
19
19
  /**
@@ -80,10 +80,6 @@ describe('[startup] Cli Utils', () => {
80
80
  let watchSpy: jest.SpyInstance;
81
81
  let fsWatcher: Partial<ReturnType<typeof chokidar.watch>>;
82
82
 
83
- beforeAll(() => {
84
- process.env.NODE_ENV ??= 'test'; // workaround issue with Jest not setting NODE_ENV=test
85
- });
86
-
87
83
  beforeEach(() => {
88
84
  fsWatcher = { on: jest.fn() };
89
85
  watchSpy = jest.spyOn(chokidar, 'watch').mockReturnValue(fsWatcher as any);
@@ -95,10 +91,10 @@ describe('[startup] Cli Utils', () => {
95
91
  test('watches for new and changed style modules', async () => {
96
92
  await subject();
97
93
 
98
- expect(watchSpy).toHaveBeenCalledWith(
99
- [`${source}/**/*.module.{${styleExtensions.join()}}`],
100
- { ignoreInitial: true }
101
- );
94
+ expect(watchSpy).toHaveBeenCalledWith(source, {
95
+ ignored: expect.any(Function),
96
+ ignoreInitial: true,
97
+ });
102
98
  expect(fsWatcher.on).toHaveBeenCalledWith('add', expect.any(Function));
103
99
  expect(fsWatcher.on).toHaveBeenCalledWith('change', expect.any(Function));
104
100
  });
@@ -108,6 +104,56 @@ describe('[startup] Cli Utils', () => {
108
104
  return calls.find(([event]) => event === name)![1] as Listener;
109
105
  }
110
106
 
107
+ describe('"ignored" filter', () => {
108
+ const styleExtensions = ['.module.css', '.module.scss', '.module.less'];
109
+ let ignored: (path: string, stats?: Partial<Stats>) => boolean;
110
+ let filePath: string;
111
+ let stats: Partial<Stats> | undefined;
112
+
113
+ beforeEach(async () => {
114
+ await tcmWatch();
115
+ const { calls } = watchSpy.mock;
116
+ ignored = calls[0][1].ignored;
117
+ stats = { isFile: () => true };
118
+ });
119
+
120
+ const subject = () => ignored(filePath, stats);
121
+
122
+ function itReturns(value: boolean) {
123
+ test(`returns ${value}`, () => expect(subject()).toBe(value));
124
+ }
125
+
126
+ describe.each(styleExtensions)('when path ends with %s', ext => {
127
+ beforeEach(() => (filePath = `foo${ext}`));
128
+
129
+ itReturns(false);
130
+ });
131
+
132
+ describe.each(styleExtensions)('when path contains %s', ext => {
133
+ beforeEach(() => (filePath = `foo${ext}.d.ts`));
134
+
135
+ itReturns(true);
136
+ });
137
+
138
+ describe.each(['', '.scss', '.tsx'])('when path ends with "%s"', ext => {
139
+ beforeEach(() => (filePath = `foo${ext}`));
140
+
141
+ itReturns(true);
142
+
143
+ describe('when stats is undefined', () => {
144
+ beforeEach(() => (stats = undefined));
145
+
146
+ itReturns(false);
147
+ });
148
+
149
+ describe('when stats.isFile returns false', () => {
150
+ beforeEach(() => (stats = { isFile: () => false }));
151
+
152
+ itReturns(false);
153
+ });
154
+ });
155
+ });
156
+
111
157
  describe('when module is added', () => {
112
158
  const module = 'bar.module.scss';
113
159
 
@@ -34,7 +34,10 @@ export const runCommand = (
34
34
  log.info(`run command ${fullCommand}`);
35
35
  }
36
36
 
37
- const proc = spawn(commandName, commandArray, spawnOptions);
37
+ const proc = spawn(commandName, commandArray, {
38
+ shell: process.platform === 'win32',
39
+ ...spawnOptions,
40
+ });
38
41
 
39
42
  proc.stdout.pipe(process.stdout);
40
43
  proc.stderr.pipe(process.stderr);
@@ -20,9 +20,8 @@ async function compile(filePath: string) {
20
20
  }
21
21
 
22
22
  async function run({ watch }: RunOptions = {}) {
23
- const { source } = getFolders();
24
-
25
- const filesPattern = `${source}/**/*.module.{${styleExtensions.join()}}`.replace(/\\/g, '/');
23
+ const source = getFolders().source.replace(/\\/g, '/');
24
+ const filesPattern = `${source}/**/*.module.{${styleExtensions.join()}}`;
26
25
 
27
26
  const creator = new DtsCreator({
28
27
  camelCase: true,
@@ -41,18 +40,28 @@ async function run({ watch }: RunOptions = {}) {
41
40
 
42
41
  if (!watch) {
43
42
  const files = await glob(filesPattern);
44
-
45
43
  await Promise.all(files.map(writeFile));
46
- } else {
47
- log.info('Watch ' + filesPattern + '...');
44
+ return;
45
+ }
48
46
 
49
- const watcher = chokidar.watch([filesPattern], { ignoreInitial: true });
50
- watcher.on('add', writeFile);
51
- watcher.on('change', writeFile);
47
+ log.info('Watch ' + filesPattern + '...');
52
48
 
53
- if (process.env.NODE_ENV !== 'test') {
54
- await new Promise<void>(() => {});
55
- }
49
+ const stylesRegex = new RegExp(`\\.module\\.(${styleExtensions.join('|')})$`);
50
+ const watcher = chokidar.watch(source, {
51
+ ignored: (path, stats) => !!stats?.isFile() && !stylesRegex.test(path),
52
+ ignoreInitial: true,
53
+ });
54
+ const callback = async (path: string) => {
55
+ log.debug('tcm', `Compiling ${path}`);
56
+ await writeFile(path);
57
+ };
58
+
59
+ watcher.on('add', callback);
60
+ watcher.on('change', callback);
61
+
62
+ /* istanbul ignore next: not executed in test environment */
63
+ if (process.env.NODE_ENV !== 'test') {
64
+ await new Promise<void>(() => {});
56
65
  }
57
66
  }
58
67