happy-css-modules 2.1.2 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +5 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/emitter/dts.js +8 -7
  4. package/dist/emitter/dts.js.map +1 -1
  5. package/dist/emitter/dts.test.js +1 -1
  6. package/dist/emitter/dts.test.js.map +1 -1
  7. package/dist/emitter/file-system.js.map +1 -1
  8. package/dist/emitter/index.js +1 -1
  9. package/dist/emitter/index.js.map +1 -1
  10. package/dist/emitter/source-map.js +2 -2
  11. package/dist/emitter/source-map.js.map +1 -1
  12. package/dist/emitter/source-map.test.js +2 -2
  13. package/dist/emitter/source-map.test.js.map +1 -1
  14. package/dist/integration-test/go-to-definition.test.js +1 -36
  15. package/dist/integration-test/go-to-definition.test.js.map +1 -1
  16. package/dist/locator/index.d.ts +1 -1
  17. package/dist/locator/index.js +6 -16
  18. package/dist/locator/index.js.map +1 -1
  19. package/dist/locator/index.test.js +23 -119
  20. package/dist/locator/index.test.js.map +1 -1
  21. package/dist/locator/postcss.d.ts +1 -12
  22. package/dist/locator/postcss.js +3 -42
  23. package/dist/locator/postcss.js.map +1 -1
  24. package/dist/locator/postcss.test.js +7 -53
  25. package/dist/locator/postcss.test.js.map +1 -1
  26. package/dist/logger.js.map +1 -1
  27. package/dist/regression-test/issue-168.test.js.map +1 -1
  28. package/dist/resolver/index.d.ts +1 -1
  29. package/dist/resolver/index.js +2 -0
  30. package/dist/resolver/index.js.map +1 -1
  31. package/dist/resolver/node-resolver.js +2 -2
  32. package/dist/resolver/node-resolver.js.map +1 -1
  33. package/dist/resolver/webpack-resolver.js +7 -8
  34. package/dist/resolver/webpack-resolver.js.map +1 -1
  35. package/dist/runner.js +9 -7
  36. package/dist/runner.js.map +1 -1
  37. package/dist/runner.test.js +16 -15
  38. package/dist/runner.test.js.map +1 -1
  39. package/dist/test-util/jest/resolver.cjs +3 -2
  40. package/dist/test-util/jest/resolver.cjs.map +1 -1
  41. package/dist/test-util/tsserver.d.ts +2 -2
  42. package/dist/test-util/tsserver.js +6 -7
  43. package/dist/test-util/tsserver.js.map +1 -1
  44. package/dist/test-util/util.d.ts +1 -2
  45. package/dist/test-util/util.js +3 -4
  46. package/dist/test-util/util.js.map +1 -1
  47. package/dist/transformer/index.d.ts +1 -1
  48. package/dist/transformer/index.js.map +1 -1
  49. package/dist/transformer/less-transformer.js +1 -0
  50. package/dist/transformer/less-transformer.js.map +1 -1
  51. package/dist/transformer/less-transformer.test.js +1 -9
  52. package/dist/transformer/less-transformer.test.js.map +1 -1
  53. package/dist/transformer/scss-transformer.js +3 -3
  54. package/dist/transformer/scss-transformer.js.map +1 -1
  55. package/dist/transformer/scss-transformer.test.js +1 -9
  56. package/dist/transformer/scss-transformer.test.js.map +1 -1
  57. package/dist/util.d.ts +1 -1
  58. package/dist/util.js +10 -7
  59. package/dist/util.js.map +1 -1
  60. package/package.json +17 -17
  61. package/src/emitter/dts.test.ts +1 -1
  62. package/src/emitter/dts.ts +10 -9
  63. package/src/emitter/index.ts +1 -1
  64. package/src/emitter/source-map.test.ts +2 -2
  65. package/src/emitter/source-map.ts +2 -2
  66. package/src/integration-test/go-to-definition.test.ts +1 -36
  67. package/src/locator/index.test.ts +23 -124
  68. package/src/locator/index.ts +7 -23
  69. package/src/locator/postcss.test.ts +7 -74
  70. package/src/locator/postcss.ts +3 -44
  71. package/src/resolver/index.ts +3 -1
  72. package/src/resolver/node-resolver.ts +2 -2
  73. package/src/resolver/webpack-resolver.ts +7 -8
  74. package/src/runner.test.ts +17 -17
  75. package/src/runner.ts +9 -8
  76. package/src/test-util/jest/resolver.cjs +3 -2
  77. package/src/test-util/tsserver.ts +7 -11
  78. package/src/test-util/util.ts +4 -6
  79. package/src/transformer/index.ts +1 -1
  80. package/src/transformer/less-transformer.test.ts +1 -9
  81. package/src/transformer/less-transformer.ts +1 -0
  82. package/src/transformer/postcss-transformer.ts +1 -1
  83. package/src/transformer/scss-transformer.test.ts +1 -9
  84. package/src/transformer/scss-transformer.ts +2 -2
  85. package/src/util.ts +10 -7
@@ -23,8 +23,6 @@ test('handles less features', async () => {
23
23
  &_2 { dummy: ''; }
24
24
  .b_1();
25
25
  .b_2();
26
- composes: a_1; // css module feature test (composes)
27
- composes: c from './3.less'; // css module feature test (composes from other file)
28
26
  }
29
27
  `,
30
28
  '/test/2.less': dedent`
@@ -40,7 +38,7 @@ test('handles less features', async () => {
40
38
  // FIXME: The end position of 'a_2_2' is incorrect.
41
39
  expect(result).toMatchInlineSnapshot(`
42
40
  {
43
- dependencies: ["<fixtures>/test/2.less", "<fixtures>/test/3.less"],
41
+ dependencies: ["<fixtures>/test/2.less"],
44
42
  tokens: [
45
43
  {
46
44
  name: "b_1",
@@ -72,12 +70,6 @@ test('handles less features', async () => {
72
70
  { filePath: "<fixtures>/test/1.less", start: { line: 7, column: 3 }, end: { line: 7, column: 8 } },
73
71
  ],
74
72
  },
75
- {
76
- name: "c",
77
- originalLocations: [
78
- { filePath: "<fixtures>/test/3.less", start: { line: 1, column: 1 }, end: { line: 1, column: 2 } },
79
- ],
80
- },
81
73
  ],
82
74
  }
83
75
  `);
@@ -44,6 +44,7 @@ function createLessPluginResolver(Less: typeof import('less'), options: Transfor
44
44
  export const createLessTransformer: () => Transformer = () => {
45
45
  let less: typeof import('less');
46
46
  return async (source, options) => {
47
+ // eslint-disable-next-line require-atomic-updates
47
48
  less ??= (await import('less').catch(handleImportError('less'))).default;
48
49
  const result = await less.render(source, {
49
50
  filename: options.from,
@@ -8,7 +8,7 @@ const require = createRequire(import.meta.url);
8
8
 
9
9
  const postcssrc: typeof import('postcss-load-config') = require('postcss-load-config');
10
10
 
11
- //ref: https://github.com/postcss/postcss-import#dependency-message-support
11
+ // ref: https://github.com/postcss/postcss-import#dependency-message-support
12
12
  interface DependencyMessage extends Message {
13
13
  type: 'dependency';
14
14
  file: string;
@@ -22,8 +22,6 @@ test('handles sass features', async () => {
22
22
  // sass feature test (nesting)
23
23
  .a_2_1 { dummy: ''; }
24
24
  &_2 { dummy: ''; }
25
- composes: a_1; // css module feature test (composes)
26
- composes: d from './4.scss'; // css module feature test (composes from other file)
27
25
  }
28
26
  `,
29
27
  '/test/2.scss': dedent`
@@ -46,7 +44,7 @@ test('handles sass features', async () => {
46
44
  // FIXME: The end position of 'a_2_2' is incorrect.
47
45
  expect(result).toMatchInlineSnapshot(`
48
46
  {
49
- dependencies: ["<fixtures>/test/2.scss", "<fixtures>/test/3.scss", "<fixtures>/test/4.scss"],
47
+ dependencies: ["<fixtures>/test/2.scss", "<fixtures>/test/3.scss"],
50
48
  tokens: [
51
49
  {
52
50
  name: "b_1",
@@ -85,12 +83,6 @@ test('handles sass features', async () => {
85
83
  { filePath: "<fixtures>/test/1.scss", start: { line: 8, column: 3 }, end: { line: 8, column: 8 } },
86
84
  ],
87
85
  },
88
- {
89
- name: "d",
90
- originalLocations: [
91
- { filePath: "<fixtures>/test/4.scss", start: { line: 1, column: 1 }, end: { line: 1, column: 2 } },
92
- ],
93
- },
94
86
  ],
95
87
  }
96
88
  `);
@@ -22,8 +22,8 @@ function promisifySassRender(sass: typeof import('sass')) {
22
22
  export const createScssTransformer: () => Transformer = () => {
23
23
  let sass: typeof import('sass');
24
24
  return async (source, options) => {
25
- const sassModule = await import('sass').catch(handleImportError('sass'));
26
- sass ??= sassModule.default ?? sassModule;
25
+ // eslint-disable-next-line require-atomic-updates
26
+ sass ??= await import('sass').catch(handleImportError('sass'));
27
27
  const render = promisifySassRender(sass);
28
28
  const result = await render({
29
29
  data: source,
package/src/util.ts CHANGED
@@ -3,7 +3,7 @@ import { access } from 'fs/promises';
3
3
  import { join, dirname, resolve } from 'path';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { resolve as importMetaResolve } from 'import-meta-resolve';
6
- import minimatch from 'minimatch';
6
+ import { minimatch } from 'minimatch';
7
7
 
8
8
  /**
9
9
  * The SystemError type of Node.js.
@@ -66,21 +66,24 @@ export async function exists(path: string): Promise<boolean> {
66
66
  }
67
67
 
68
68
  export function isMatchByGlob(filePath: string, pattern: string, options: { cwd: string }): boolean {
69
- return minimatch(filePath, join(options.cwd, pattern));
69
+ return minimatch(filePath, join(options.cwd, pattern), { windowsPathsNoEscape: true });
70
70
  }
71
71
 
72
72
  export function getPackageJson() {
73
73
  return JSON.parse(readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), '../package.json'), 'utf-8'));
74
74
  }
75
75
 
76
- export async function getInstalledPeerDependencies(): Promise<string[]> {
76
+ export function getInstalledPeerDependencies(): string[] {
77
77
  const pkgJson = getPackageJson();
78
78
  const result = [];
79
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);
80
+ try {
81
+ importMetaResolve(deps, import.meta.url);
82
+ // If the package is installed, push it to the result array.
83
+ result.push(deps);
84
+ } catch {
85
+ // If the package is not installed, do nothing.
86
+ }
84
87
  }
85
88
  return result;
86
89
  }