happy-css-modules 0.5.0 → 0.6.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 (85) hide show
  1. package/README.md +78 -9
  2. package/dist/cli.js +17 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/cli.test.js +9 -4
  5. package/dist/cli.test.js.map +1 -1
  6. package/dist/emitter/dts.d.ts +3 -4
  7. package/dist/emitter/dts.js +4 -14
  8. package/dist/emitter/dts.js.map +1 -1
  9. package/dist/emitter/dts.test.js +7 -10
  10. package/dist/emitter/dts.test.js.map +1 -1
  11. package/dist/emitter/index.d.ts +6 -15
  12. package/dist/emitter/index.js +18 -13
  13. package/dist/emitter/index.js.map +1 -1
  14. package/dist/emitter/index.test.js +0 -50
  15. package/dist/emitter/index.test.js.map +1 -1
  16. package/dist/emitter/source-map.d.ts +1 -3
  17. package/dist/emitter/source-map.js +2 -3
  18. package/dist/emitter/source-map.js.map +1 -1
  19. package/dist/emitter/source-map.test.js +1 -4
  20. package/dist/emitter/source-map.test.js.map +1 -1
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/integration-test/go-to-definition.test.js +1 -0
  25. package/dist/integration-test/go-to-definition.test.js.map +1 -1
  26. package/dist/{loader → locator}/index.d.ts +6 -4
  27. package/dist/{loader → locator}/index.js +13 -5
  28. package/dist/locator/index.js.map +1 -0
  29. package/dist/{loader → locator}/index.test.d.ts +0 -0
  30. package/dist/{loader → locator}/index.test.js +25 -17
  31. package/dist/locator/index.test.js.map +1 -0
  32. package/dist/{loader → locator}/postcss.d.ts +0 -0
  33. package/dist/{loader → locator}/postcss.js +0 -0
  34. package/dist/locator/postcss.js.map +1 -0
  35. package/dist/{loader → locator}/postcss.test.d.ts +0 -0
  36. package/dist/{loader → locator}/postcss.test.js +0 -0
  37. package/dist/locator/postcss.test.js.map +1 -0
  38. package/dist/runner.d.ts +10 -1
  39. package/dist/runner.js +45 -18
  40. package/dist/runner.js.map +1 -1
  41. package/dist/runner.test.js +55 -3
  42. package/dist/runner.test.js.map +1 -1
  43. package/dist/test/util.d.ts +1 -1
  44. package/dist/test/util.js +1 -1
  45. package/dist/test/util.js.map +1 -1
  46. package/dist/transformer/index.d.ts +1 -1
  47. package/dist/transformer/index.test.js +8 -8
  48. package/dist/transformer/index.test.js.map +1 -1
  49. package/dist/transformer/less-transformer.test.js +8 -8
  50. package/dist/transformer/less-transformer.test.js.map +1 -1
  51. package/dist/transformer/postcss-transformer.test.js +13 -13
  52. package/dist/transformer/postcss-transformer.test.js.map +1 -1
  53. package/dist/transformer/scss-transformer.test.js +8 -8
  54. package/dist/transformer/scss-transformer.test.js.map +1 -1
  55. package/dist/util.d.ts +2 -0
  56. package/dist/util.js +19 -2
  57. package/dist/util.js.map +1 -1
  58. package/package.json +5 -7
  59. package/src/cli.test.ts +9 -4
  60. package/src/cli.ts +17 -11
  61. package/src/emitter/dts.test.ts +7 -12
  62. package/src/emitter/dts.ts +5 -14
  63. package/src/emitter/index.test.ts +0 -52
  64. package/src/emitter/index.ts +22 -29
  65. package/src/emitter/source-map.test.ts +1 -6
  66. package/src/emitter/source-map.ts +3 -4
  67. package/src/index.ts +1 -0
  68. package/src/integration-test/go-to-definition.test.ts +1 -0
  69. package/src/{loader → locator}/index.test.ts +26 -17
  70. package/src/{loader → locator}/index.ts +16 -8
  71. package/src/{loader → locator}/postcss.test.ts +0 -0
  72. package/src/{loader → locator}/postcss.ts +0 -0
  73. package/src/runner.test.ts +65 -3
  74. package/src/runner.ts +53 -19
  75. package/src/test/util.ts +1 -1
  76. package/src/transformer/index.test.ts +8 -8
  77. package/src/transformer/index.ts +1 -1
  78. package/src/transformer/less-transformer.test.ts +8 -8
  79. package/src/transformer/postcss-transformer.test.ts +13 -13
  80. package/src/transformer/scss-transformer.test.ts +8 -8
  81. package/src/util.ts +21 -2
  82. package/dist/loader/index.js.map +0 -1
  83. package/dist/loader/index.test.js.map +0 -1
  84. package/dist/loader/postcss.js.map +0 -1
  85. package/dist/loader/postcss.test.js.map +0 -1
@@ -1,16 +1,26 @@
1
- import { readFile, writeFile } from 'fs/promises';
1
+ import { readFile, rm, writeFile } from 'fs/promises';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { createRequire } from 'node:module';
4
+ import { dirname, join, resolve } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import * as fileCacheNpm from '@file-cache/npm';
4
7
  import { jest } from '@jest/globals';
5
8
  import chalk from 'chalk';
6
9
  import dedent from 'dedent';
7
- import AggregateError from 'es-aggregate-error';
8
10
  import type { Watcher } from './runner.js';
9
- import { run } from './runner.js';
10
11
  import { createFixtures, exists, getFixturePath, waitForAsyncTask } from './test/util.js';
11
12
 
12
13
  const require = createRequire(import.meta.url);
13
14
 
15
+ jest.unstable_mockModule('@file-cache/npm', () => ({
16
+ ...fileCacheNpm, // Inherit native functions
17
+ createNpmPackageKey: () => 'mocked-key',
18
+ }));
19
+
20
+ const { run } = await import('./runner.js');
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
23
+ const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
14
24
  // eslint-disable-next-line @typescript-eslint/no-empty-function
15
25
  const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
16
26
 
@@ -19,8 +29,17 @@ const defaultOptions = {
19
29
  declarationMap: true,
20
30
  silent: true,
21
31
  cwd: getFixturePath('/'),
32
+ cache: false,
22
33
  };
23
34
 
35
+ const dir = join(dirname(fileURLToPath(import.meta.url)));
36
+
37
+ beforeEach(async () => {
38
+ consoleLogSpy.mockClear();
39
+ consoleErrorSpy.mockClear();
40
+ await rm(resolve(dir, '../node_modules/.cache/happy-css-modules'), { recursive: true, force: true }); // clear cache
41
+ });
42
+
24
43
  // Exit the watcher even if the test fails
25
44
  let watcher: Watcher | undefined;
26
45
  afterEach(async () => {
@@ -41,6 +60,49 @@ test('generates .d.ts and .d.ts.map', async () => {
41
60
  expect(await readFile(getFixturePath('/test/2.css.d.ts.map'), 'utf8')).toMatchSnapshot();
42
61
  });
43
62
 
63
+ test('uses cache', async () => {
64
+ createFixtures({
65
+ '/test/1.css': '.a {}',
66
+ });
67
+ await run({ ...defaultOptions, declarationMap: true, silent: false, cache: true });
68
+ expect(consoleLogSpy).toBeCalledTimes(1);
69
+ expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.stringContaining('generated'));
70
+ consoleLogSpy.mockClear();
71
+
72
+ // Skip generation
73
+ await run({ ...defaultOptions, declarationMap: true, silent: false, cache: true });
74
+ expect(consoleLogSpy).toBeCalledTimes(1);
75
+ expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.stringContaining('skipped'));
76
+ consoleLogSpy.mockClear();
77
+
78
+ // Generates if generated files are missing
79
+ await rm(getFixturePath('/test/1.css.d.ts'));
80
+ await run({ ...defaultOptions, declarationMap: true, silent: false, cache: true });
81
+ expect(consoleLogSpy).toBeCalledTimes(1);
82
+ expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.stringContaining('generated'));
83
+ consoleLogSpy.mockClear();
84
+
85
+ // Generates if options are changed
86
+ await run({ ...defaultOptions, declarationMap: false, silent: false, cache: true });
87
+ expect(consoleLogSpy).toBeCalledTimes(1);
88
+ expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.stringContaining('generated'));
89
+ consoleLogSpy.mockClear();
90
+ });
91
+
92
+ test('outputs logs', async () => {
93
+ createFixtures({
94
+ '/test/1.css': '.a {}',
95
+ });
96
+ await run({ ...defaultOptions, silent: false, cache: true });
97
+ expect(consoleLogSpy).toBeCalledTimes(1);
98
+ expect(consoleLogSpy).toHaveBeenNthCalledWith(1, `${chalk.green('test/1.css')} (generated)`);
99
+ consoleLogSpy.mockClear();
100
+
101
+ await run({ ...defaultOptions, silent: false, cache: true });
102
+ expect(consoleLogSpy).toBeCalledTimes(1);
103
+ expect(consoleLogSpy).toHaveBeenNthCalledWith(1, `${chalk.gray('test/1.css (skipped)')}`);
104
+ });
105
+
44
106
  test.todo('changes dts format with localsConvention options');
45
107
  test('does not emit declaration map if declarationMap is false', async () => {
46
108
  createFixtures({
package/src/runner.ts CHANGED
@@ -1,16 +1,17 @@
1
- import { resolve } from 'path';
1
+ import { resolve, relative } from 'path';
2
2
  import * as process from 'process';
3
3
  import * as util from 'util';
4
+ import { createCache } from '@file-cache/core';
5
+ import { createNpmPackageKey } from '@file-cache/npm';
4
6
  import chalk from 'chalk';
5
7
  import * as chokidar from 'chokidar';
6
- import AggregateError from 'es-aggregate-error';
7
8
  import _glob from 'glob';
8
- import { emitGeneratedFiles } from './emitter/index.js';
9
- import { Loader } from './loader/index.js';
9
+ import { isGeneratedFilesExist, emitGeneratedFiles } from './emitter/index.js';
10
+ import { Locator } from './locator/index.js';
10
11
  import type { Resolver } from './resolver/index.js';
11
12
  import { createDefaultResolver } from './resolver/index.js';
12
13
  import { createDefaultTransformer, type Transformer } from './transformer/index.js';
13
- import { isMatchByGlob } from './util.js';
14
+ import { getInstalledPeerDependencies, isMatchByGlob } from './util.js';
14
15
 
15
16
  const glob = util.promisify(_glob);
16
17
 
@@ -22,7 +23,6 @@ export type LocalsConvention = 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashe
22
23
 
23
24
  export interface RunnerOptions {
24
25
  pattern: string;
25
- outDir?: string | undefined;
26
26
  watch?: boolean | undefined;
27
27
  localsConvention?: LocalsConvention | undefined;
28
28
  declarationMap?: boolean | undefined;
@@ -53,6 +53,16 @@ export interface RunnerOptions {
53
53
  * @example '/home/user/repository/src'
54
54
  */
55
55
  postcssConfig?: string | undefined;
56
+ /**
57
+ * Only generate .d.ts and .d.ts.map for changed files.
58
+ * @default true
59
+ */
60
+ cache?: boolean | undefined;
61
+ /**
62
+ * Strategy for the cache to use for detecting changed files.
63
+ * @default 'content'
64
+ */
65
+ cacheStrategy?: 'content' | 'metadata' | undefined;
56
66
  /**
57
67
  * Silent output. Do not show "files written" messages.
58
68
  * @default false
@@ -83,33 +93,37 @@ export async function run(options: RunnerOptions): Promise<Watcher | void> {
83
93
  webpackResolveAlias: options.webpackResolveAlias,
84
94
  });
85
95
  const transformer = options.transformer ?? createDefaultTransformer({ cwd, postcssConfig: options.postcssConfig });
86
- const distOptions = options.outDir
87
- ? {
88
- rootDir: cwd, // TODO: support `--rootDir` option
89
- outDir: options.outDir,
90
- }
91
- : undefined;
92
96
 
93
- const loader = new Loader({ transformer, resolver });
97
+ const installedPeerDependencies = await getInstalledPeerDependencies();
98
+ const cache = await createCache({
99
+ mode: options.cacheStrategy ?? 'content',
100
+ keys: [
101
+ () => createNpmPackageKey(['happy-css-modules', ...installedPeerDependencies]),
102
+ () => {
103
+ return JSON.stringify(options);
104
+ },
105
+ ],
106
+ noCache: !(options.cache ?? true),
107
+ });
108
+
109
+ const locator = new Locator({ transformer, resolver });
94
110
  const isExternalFile = (filePath: string) => {
95
111
  return !isMatchByGlob(filePath, options.pattern, { cwd });
96
112
  };
97
113
 
98
114
  async function processFile(filePath: string) {
99
115
  try {
100
- const result = await loader.load(filePath);
116
+ const result = await locator.load(filePath);
101
117
  await emitGeneratedFiles({
102
118
  filePath,
103
119
  tokens: result.tokens,
104
- distOptions,
105
120
  emitDeclarationMap: options.declarationMap,
106
121
  dtsFormatOptions: {
107
122
  localsConvention: options.localsConvention,
108
123
  },
109
- silent,
110
- cwd,
111
124
  isExternalFile,
112
125
  });
126
+ if (!silent) console.log(`${chalk.green(relative(cwd, filePath))} (generated)`);
113
127
  } catch (error) {
114
128
  if (error instanceof Error) {
115
129
  // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
@@ -122,6 +136,12 @@ export async function run(options: RunnerOptions): Promise<Watcher | void> {
122
136
  }
123
137
  }
124
138
 
139
+ async function isChangedFile(filePath: string) {
140
+ const result = await cache.getAndUpdateCache(filePath);
141
+ if (result.error) throw result.error;
142
+ return result.changed;
143
+ }
144
+
125
145
  if (options.watch) {
126
146
  if (!silent) console.log('Watch ' + options.pattern + '...');
127
147
  const watcher = chokidar.watch([options.pattern.replace(/\\/g, '/')], { cwd });
@@ -138,11 +158,25 @@ export async function run(options: RunnerOptions): Promise<Watcher | void> {
138
158
  // convert relative path to absolute path
139
159
  .map((file) => resolve(cwd, file));
140
160
 
141
- // TODO: Use `@file-cache/core` to process only files that have changed
142
161
  const errors: unknown[] = [];
143
162
  for (const filePath of filePaths) {
144
- await processFile(filePath).catch((e: unknown) => errors.push(e));
163
+ try {
164
+ const _isGeneratedFilesExist = await isGeneratedFilesExist(filePath, options.declarationMap);
165
+ const _isChangedFile = await isChangedFile(filePath);
166
+ // Generate .d.ts and .d.ts.map only when the file has been updated.
167
+ // However, if .d.ts or .d.ts.map has not yet been generated, always generate.
168
+ if (!_isGeneratedFilesExist || _isChangedFile) {
169
+ await processFile(filePath);
170
+ } else {
171
+ if (!silent) console.log(chalk.gray(`${relative(cwd, filePath)} (skipped)`));
172
+ }
173
+ } catch (e: unknown) {
174
+ errors.push(e);
175
+ }
145
176
  }
146
177
  if (errors.length > 0) throw new AggregateError(errors, 'Failed to process files');
147
178
  }
179
+
180
+ // Write cache state to file for persistence
181
+ await cache.reconcile();
148
182
  }
package/src/test/util.ts CHANGED
@@ -4,7 +4,7 @@ import { tmpdir } from 'os';
4
4
  import { dirname, join, resolve } from 'path';
5
5
  import postcss, { type Root, type Rule, type AtRule, type Declaration } from 'postcss';
6
6
  import { type ClassName } from 'postcss-selector-parser';
7
- import { type Token, collectNodes, type Location } from '../loader/index.js';
7
+ import { type Token, collectNodes, type Location } from '../locator/index.js';
8
8
  import { sleepSync } from '../util.js';
9
9
 
10
10
  export const FIXTURE_DIR_PATH = resolve(
@@ -1,14 +1,14 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { createRequire } from 'node:module';
3
3
  import dedent from 'dedent';
4
- import { Loader } from '../loader/index.js';
4
+ import { Locator } from '../locator/index.js';
5
5
  import { createFixtures, getFixturePath } from '../test/util.js';
6
6
  import { createDefaultTransformer } from './index.js';
7
7
 
8
8
  const require = createRequire(import.meta.url);
9
9
 
10
10
  const cwd = getFixturePath('/');
11
- const loader = new Loader({ transformer: createDefaultTransformer({ cwd }) });
11
+ const locator = new Locator({ transformer: createDefaultTransformer({ cwd }) });
12
12
 
13
13
  test('processes .scss with scss transformer', async () => {
14
14
  createFixtures({
@@ -19,7 +19,7 @@ test('processes .scss with scss transformer', async () => {
19
19
  }
20
20
  `,
21
21
  });
22
- const result = await loader.load(getFixturePath('/test/1.scss'));
22
+ const result = await locator.load(getFixturePath('/test/1.scss'));
23
23
  expect(result.tokens.map((token) => token.name)).toStrictEqual(['a', 'a_1']);
24
24
  });
25
25
 
@@ -32,25 +32,25 @@ test('processes .less with less transformer', async () => {
32
32
  }
33
33
  `,
34
34
  });
35
- const result = await loader.load(getFixturePath('/test/1.less'));
35
+ const result = await locator.load(getFixturePath('/test/1.less'));
36
36
  expect(result.tokens.map((token) => token.name)).toStrictEqual(['a', 'a_1']);
37
37
  });
38
38
 
39
39
  test('processes .css with postcss transformer if postcssrc is found', async () => {
40
40
  // if postcssrc is not found
41
- const loader1 = new Loader({ transformer: createDefaultTransformer() });
41
+ const locator1 = new Locator({ transformer: createDefaultTransformer() });
42
42
  createFixtures({
43
43
  '/test/1.css': dedent`
44
44
  $prefix: foo;
45
45
  .$(prefix)_bar {}
46
46
  `,
47
47
  });
48
- const result1 = await loader1.load(getFixturePath('/test/1.css'));
48
+ const result1 = await locator1.load(getFixturePath('/test/1.css'));
49
49
  expect(result1.tokens.map((token) => token.name)).toStrictEqual(['$(prefix)']);
50
50
 
51
51
  // if postcssrc is found
52
52
  const uuid = randomUUID();
53
- const loader2 = new Loader({
53
+ const locator2 = new Locator({
54
54
  transformer: createDefaultTransformer({ cwd, postcssConfig: `${uuid}/postcss.config.js` }),
55
55
  });
56
56
  createFixtures({
@@ -66,6 +66,6 @@ test('processes .css with postcss transformer if postcssrc is found', async () =
66
66
  .$(prefix)_bar {}
67
67
  `,
68
68
  });
69
- const result2 = await loader2.load(getFixturePath('/test/1.css'));
69
+ const result2 = await locator2.load(getFixturePath('/test/1.css'));
70
70
  expect(result2.tokens.map((token) => token.name)).toStrictEqual(['foo_bar']);
71
71
  });
@@ -1,4 +1,4 @@
1
- import type { StrictlyResolver } from '../loader/index.js';
1
+ import type { StrictlyResolver } from '../locator/index.js';
2
2
  import { createLessTransformer } from './less-transformer.js';
3
3
  import type { PostcssTransformerOptions } from './postcss-transformer.js';
4
4
  import { createPostcssTransformer } from './postcss-transformer.js';
@@ -1,11 +1,11 @@
1
1
  import { jest } from '@jest/globals';
2
2
  import dedent from 'dedent';
3
- import { Loader } from '../loader/index.js';
3
+ import { Locator } from '../locator/index.js';
4
4
  import { createFixtures, getFixturePath } from '../test/util.js';
5
5
  import { createLessTransformer } from './less-transformer.js';
6
6
 
7
- const loader = new Loader({ transformer: createLessTransformer() });
8
- const loadSpy = jest.spyOn(loader, 'load');
7
+ const locator = new Locator({ transformer: createLessTransformer() });
8
+ const loadSpy = jest.spyOn(locator, 'load');
9
9
 
10
10
  afterEach(() => {
11
11
  loadSpy.mockClear();
@@ -35,7 +35,7 @@ test('handles less features', async () => {
35
35
  .c { dummy: ''; }
36
36
  `,
37
37
  });
38
- const result = await loader.load(getFixturePath('/test/1.less'));
38
+ const result = await locator.load(getFixturePath('/test/1.less'));
39
39
 
40
40
  // FIXME: The end position of 'a_2_2' is incorrect.
41
41
  expect(result).toMatchInlineSnapshot(`
@@ -97,10 +97,10 @@ test('tracks dependencies that have been pre-bundled by less compiler', async ()
97
97
  '/test/4.less': dedent`
98
98
  `,
99
99
  });
100
- const result = await loader.load(getFixturePath('/test/1.less'));
100
+ const result = await locator.load(getFixturePath('/test/1.less'));
101
101
 
102
102
  // The files imported using @import are pre-bundled by the compiler.
103
- // Therefore, `Loader#load` is not called to process other files.
103
+ // Therefore, `Locator#load` is not called to process other files.
104
104
  expect(loadSpy).toBeCalledTimes(1);
105
105
  expect(loadSpy).toHaveBeenNthCalledWith(1, getFixturePath('/test/1.less'));
106
106
 
@@ -121,7 +121,7 @@ test('resolves specifier using resolver', async () => {
121
121
  '/node_modules/package-1/index.css': `.a {}`,
122
122
  '/node_modules/package-2/index.less': `.a {}`,
123
123
  });
124
- const result = await loader.load(getFixturePath('/test/1.less'));
124
+ const result = await locator.load(getFixturePath('/test/1.less'));
125
125
  // eslint-disable-next-line @typescript-eslint/require-array-sort-compare
126
126
  expect(result.dependencies.sort()).toStrictEqual(
127
127
  // eslint-disable-next-line @typescript-eslint/require-array-sort-compare
@@ -137,6 +137,6 @@ test('ignores http(s) protocol file', async () => {
137
137
  @import 'https://example.com/path/less.less';
138
138
  `,
139
139
  });
140
- const result = await loader.load(getFixturePath('/test/1.less'));
140
+ const result = await locator.load(getFixturePath('/test/1.less'));
141
141
  expect(result.dependencies).toStrictEqual([]);
142
142
  });
@@ -2,7 +2,7 @@ import { randomUUID } from 'node:crypto';
2
2
  import { createRequire } from 'node:module';
3
3
  import { jest } from '@jest/globals';
4
4
  import dedent from 'dedent';
5
- import { Loader } from '../loader/index.js';
5
+ import { Locator } from '../locator/index.js';
6
6
  import { createFixtures, getFixturePath } from '../test/util.js';
7
7
  import { createPostcssTransformer } from './postcss-transformer.js';
8
8
 
@@ -14,7 +14,7 @@ const require = createRequire(import.meta.url);
14
14
 
15
15
  test('handles postcss features', async () => {
16
16
  const uuid = randomUUID();
17
- const loader = new Loader({
17
+ const locator = new Locator({
18
18
  transformer: createPostcssTransformer({
19
19
  cwd,
20
20
  postcssConfig: `${uuid}/postcss.config.js`,
@@ -33,7 +33,7 @@ test('handles postcss features', async () => {
33
33
  .$(prefix)_bar {}
34
34
  `,
35
35
  });
36
- const result = await loader.load(getFixturePath('/test/1.css'));
36
+ const result = await locator.load(getFixturePath('/test/1.css'));
37
37
 
38
38
  expect(result).toMatchInlineSnapshot(`
39
39
  {
@@ -52,13 +52,13 @@ test('handles postcss features', async () => {
52
52
 
53
53
  test('tracks dependencies that have been pre-bundled by postcss compiler', async () => {
54
54
  const uuid = randomUUID();
55
- const loader = new Loader({
55
+ const locator = new Locator({
56
56
  transformer: createPostcssTransformer({
57
57
  cwd,
58
58
  postcssConfig: `${uuid}/postcss.config.js`,
59
59
  }),
60
60
  });
61
- const loadSpy = jest.spyOn(loader, 'load');
61
+ const loadSpy = jest.spyOn(locator, 'load');
62
62
  createFixtures({
63
63
  [`/${uuid}/postcss.config.js`]: dedent`
64
64
  module.exports = {
@@ -75,10 +75,10 @@ test('tracks dependencies that have been pre-bundled by postcss compiler', async
75
75
  '/test/3.css': `@import './4.css'`,
76
76
  '/test/4.css': ``,
77
77
  });
78
- const result = await loader.load(getFixturePath('/test/1.css'));
78
+ const result = await locator.load(getFixturePath('/test/1.css'));
79
79
 
80
80
  // The files imported using @import are pre-bundled by the compiler.
81
- // Therefore, `Loader#load` is not called to process other files.
81
+ // Therefore, `Locator#load` is not called to process other files.
82
82
  expect(loadSpy).toBeCalledTimes(1);
83
83
  expect(loadSpy).toHaveBeenNthCalledWith(1, getFixturePath('/test/1.css'));
84
84
 
@@ -88,7 +88,7 @@ test('tracks dependencies that have been pre-bundled by postcss compiler', async
88
88
 
89
89
  test('resolves specifier using resolver', async () => {
90
90
  const uuid = randomUUID();
91
- const loader = new Loader({
91
+ const locator = new Locator({
92
92
  transformer: createPostcssTransformer({
93
93
  cwd,
94
94
  postcssConfig: `${uuid}/postcss.config.js`,
@@ -109,13 +109,13 @@ test('resolves specifier using resolver', async () => {
109
109
  `,
110
110
  '/node_modules/package/index.css': `.a {}`,
111
111
  });
112
- const result = await loader.load(getFixturePath('/test/1.css'));
112
+ const result = await locator.load(getFixturePath('/test/1.css'));
113
113
  expect(result.dependencies).toStrictEqual(['/node_modules/package/index.css'].map(getFixturePath));
114
114
  });
115
115
 
116
116
  test('ignores http(s) protocol file', async () => {
117
117
  const uuid = randomUUID();
118
- const loader = new Loader({
118
+ const locator = new Locator({
119
119
  transformer: createPostcssTransformer({
120
120
  cwd,
121
121
  postcssConfig: `${uuid}/postcss.config.js`,
@@ -136,7 +136,7 @@ test('ignores http(s) protocol file', async () => {
136
136
  @import 'https://example.com/path/https.css';
137
137
  `,
138
138
  });
139
- const result = await loader.load(getFixturePath('/test/1.css'));
139
+ const result = await locator.load(getFixturePath('/test/1.css'));
140
140
  expect(result.dependencies).toStrictEqual([]);
141
141
  });
142
142
 
@@ -165,7 +165,7 @@ test('returns false if postcssrc is not found', async () => {
165
165
  test('searches config from cwd if postcssConfig option is missing', async () => {
166
166
  const uuid = randomUUID();
167
167
  const cwd = `/${uuid}`;
168
- const loader = new Loader({
168
+ const locator = new Locator({
169
169
  transformer: createPostcssTransformer({
170
170
  cwd: getFixturePath(cwd),
171
171
  }),
@@ -183,6 +183,6 @@ test('searches config from cwd if postcssConfig option is missing', async () =>
183
183
  .$(prefix)_bar {}
184
184
  `,
185
185
  });
186
- const result = await loader.load(getFixturePath('/test/1.css'));
186
+ const result = await locator.load(getFixturePath('/test/1.css'));
187
187
  expect(result.tokens.map((token) => token.name)).toStrictEqual(['foo_bar']);
188
188
  });
@@ -1,11 +1,11 @@
1
1
  import { jest } from '@jest/globals';
2
2
  import dedent from 'dedent';
3
- import { Loader } from '../loader/index.js';
3
+ import { Locator } from '../locator/index.js';
4
4
  import { createFixtures, getFixturePath } from '../test/util.js';
5
5
  import { createScssTransformer } from './scss-transformer.js';
6
6
 
7
- const loader = new Loader({ transformer: createScssTransformer() });
8
- const loadSpy = jest.spyOn(loader, 'load');
7
+ const locator = new Locator({ transformer: createScssTransformer() });
8
+ const loadSpy = jest.spyOn(locator, 'load');
9
9
 
10
10
  afterEach(() => {
11
11
  loadSpy.mockClear();
@@ -37,7 +37,7 @@ test('handles sass features', async () => {
37
37
  .d { dummy: ''; }
38
38
  `,
39
39
  });
40
- const result = await loader.load(getFixturePath('/test/1.scss'));
40
+ const result = await locator.load(getFixturePath('/test/1.scss'));
41
41
 
42
42
  // NOTE: There should be only one originalLocations for 'a_2', but there are multiple.
43
43
  // This is probably due to an incorrect sourcemap output by the sass compiler.
@@ -110,10 +110,10 @@ test('tracks dependencies that have been pre-bundled by sass compiler', async ()
110
110
  '/test/4.scss': dedent`
111
111
  `,
112
112
  });
113
- const result = await loader.load(getFixturePath('/test/1.scss'));
113
+ const result = await locator.load(getFixturePath('/test/1.scss'));
114
114
 
115
115
  // The files imported using @import are pre-bundled by the compiler.
116
- // Therefore, `Loader#load` is not called to process other files.
116
+ // Therefore, `Locator#load` is not called to process other files.
117
117
  expect(loadSpy).toBeCalledTimes(1);
118
118
  expect(loadSpy).toHaveBeenNthCalledWith(1, getFixturePath('/test/1.scss'));
119
119
 
@@ -130,7 +130,7 @@ test('resolves specifier using resolver', async () => {
130
130
  '/node_modules/package-1/index.css': `.a {}`,
131
131
  '/node_modules/package-2/index.scss': `.a {}`,
132
132
  });
133
- const result = await loader.load(getFixturePath('/test/1.scss'));
133
+ const result = await locator.load(getFixturePath('/test/1.scss'));
134
134
  expect(result.dependencies).toStrictEqual(
135
135
  ['/node_modules/package-1/index.css', '/node_modules/package-2/index.scss'].map(getFixturePath),
136
136
  );
@@ -144,6 +144,6 @@ test('ignores http(s) protocol file', async () => {
144
144
  @import 'https://example.com/path/scss.scss';
145
145
  `,
146
146
  });
147
- const result = await loader.load(getFixturePath('/test/1.scss'));
147
+ const result = await locator.load(getFixturePath('/test/1.scss'));
148
148
  expect(result.dependencies).toStrictEqual([]);
149
149
  });
package/src/util.ts CHANGED
@@ -1,7 +1,10 @@
1
- import { constants } from 'fs';
1
+ import { constants, readFileSync } from 'fs';
2
2
  import { access } from 'fs/promises';
3
- import { join } from 'path';
3
+ import { join, dirname, resolve } from 'path';
4
+ import { fileURLToPath } from 'url';
5
+ import { resolve as importMetaResolve } from 'import-meta-resolve';
4
6
  import minimatch from 'minimatch';
7
+
5
8
  /**
6
9
  * The SystemError type of Node.js.
7
10
  * @see https://nodejs.org/api/errors.html#class-systemerror
@@ -65,3 +68,19 @@ export async function exists(path: string): Promise<boolean> {
65
68
  export function isMatchByGlob(filePath: string, pattern: string, options: { cwd: string }): boolean {
66
69
  return minimatch(filePath, join(options.cwd, pattern));
67
70
  }
71
+
72
+ export function getPackageJson() {
73
+ return JSON.parse(readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), '../package.json'), 'utf-8'));
74
+ }
75
+
76
+ export async function getInstalledPeerDependencies(): Promise<string[]> {
77
+ const pkgJson = getPackageJson();
78
+ const result = [];
79
+ for (const deps of Object.keys(pkgJson.peerDependencies)) {
80
+ const isInstalled = await importMetaResolve(deps, import.meta.url)
81
+ .then(() => true)
82
+ .catch(() => false);
83
+ if (isInstalled) result.push(deps);
84
+ }
85
+ return result;
86
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/loader/index.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"postcss.js","sourceRoot":"","sources":["../../src/loader/postcss.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"postcss.test.js","sourceRoot":"","sources":["../../src/loader/postcss.test.ts"],"names":[],"mappings":"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"}