happy-css-modules 3.0.1 → 3.1.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 (141) hide show
  1. package/package.json +1 -1
  2. package/src/emitter/dts.test.ts +3 -3
  3. package/src/emitter/dts.ts +59 -37
  4. package/src/emitter/index.test.ts +3 -3
  5. package/src/locator/index.test.ts +143 -48
  6. package/src/locator/index.ts +51 -23
  7. package/src/locator/postcss.test.ts +135 -26
  8. package/src/locator/postcss.ts +120 -36
  9. package/src/test-util/util.ts +23 -18
  10. package/src/transformer/less-transformer.test.ts +25 -15
  11. package/src/transformer/postcss-transformer.test.ts +5 -3
  12. package/src/transformer/scss-transformer.test.ts +38 -19
  13. package/dist/cli.d.ts +0 -6
  14. package/dist/cli.js +0 -121
  15. package/dist/cli.js.map +0 -1
  16. package/dist/cli.test.d.ts +0 -1
  17. package/dist/cli.test.js +0 -66
  18. package/dist/cli.test.js.map +0 -1
  19. package/dist/config.d.ts +0 -1
  20. package/dist/config.js +0 -2
  21. package/dist/config.js.map +0 -1
  22. package/dist/emitter/dts.d.ts +0 -14
  23. package/dist/emitter/dts.js +0 -111
  24. package/dist/emitter/dts.js.map +0 -1
  25. package/dist/emitter/dts.test.d.ts +0 -1
  26. package/dist/emitter/dts.test.js +0 -205
  27. package/dist/emitter/dts.test.js.map +0 -1
  28. package/dist/emitter/file-system.d.ts +0 -6
  29. package/dist/emitter/file-system.js +0 -26
  30. package/dist/emitter/file-system.js.map +0 -1
  31. package/dist/emitter/file-system.test.d.ts +0 -1
  32. package/dist/emitter/file-system.test.js +0 -34
  33. package/dist/emitter/file-system.test.js.map +0 -1
  34. package/dist/emitter/index.d.ts +0 -34
  35. package/dist/emitter/index.js +0 -49
  36. package/dist/emitter/index.js.map +0 -1
  37. package/dist/emitter/index.test.d.ts +0 -1
  38. package/dist/emitter/index.test.js +0 -68
  39. package/dist/emitter/index.test.js.map +0 -1
  40. package/dist/emitter/source-map.d.ts +0 -8
  41. package/dist/emitter/source-map.js +0 -16
  42. package/dist/emitter/source-map.js.map +0 -1
  43. package/dist/emitter/source-map.test.d.ts +0 -1
  44. package/dist/emitter/source-map.test.js +0 -13
  45. package/dist/emitter/source-map.test.js.map +0 -1
  46. package/dist/index.d.ts +0 -5
  47. package/dist/index.js +0 -6
  48. package/dist/index.js.map +0 -1
  49. package/dist/integration-test/go-to-definition.test.d.ts +0 -1
  50. package/dist/integration-test/go-to-definition.test.js +0 -334
  51. package/dist/integration-test/go-to-definition.test.js.map +0 -1
  52. package/dist/library/source-map/index.d.ts +0 -8
  53. package/dist/library/source-map/index.js +0 -5
  54. package/dist/library/source-map/index.js.map +0 -1
  55. package/dist/locator/index.d.ts +0 -44
  56. package/dist/locator/index.js +0 -147
  57. package/dist/locator/index.js.map +0 -1
  58. package/dist/locator/index.test.d.ts +0 -1
  59. package/dist/locator/index.test.js +0 -299
  60. package/dist/locator/index.test.js.map +0 -1
  61. package/dist/locator/postcss.d.ts +0 -53
  62. package/dist/locator/postcss.js +0 -169
  63. package/dist/locator/postcss.js.map +0 -1
  64. package/dist/locator/postcss.test.d.ts +0 -1
  65. package/dist/locator/postcss.test.js +0 -196
  66. package/dist/locator/postcss.test.js.map +0 -1
  67. package/dist/logger.d.ts +0 -9
  68. package/dist/logger.js +0 -28
  69. package/dist/logger.js.map +0 -1
  70. package/dist/regression-test/issue-168.test.d.ts +0 -1
  71. package/dist/regression-test/issue-168.test.js +0 -30
  72. package/dist/regression-test/issue-168.test.js.map +0 -1
  73. package/dist/resolver/index.d.ts +0 -22
  74. package/dist/resolver/index.js +0 -44
  75. package/dist/resolver/index.js.map +0 -1
  76. package/dist/resolver/index.test.d.ts +0 -1
  77. package/dist/resolver/index.test.js +0 -16
  78. package/dist/resolver/index.test.js.map +0 -1
  79. package/dist/resolver/node-resolver.d.ts +0 -2
  80. package/dist/resolver/node-resolver.js +0 -6
  81. package/dist/resolver/node-resolver.js.map +0 -1
  82. package/dist/resolver/node-resolver.test.d.ts +0 -1
  83. package/dist/resolver/node-resolver.test.js +0 -25
  84. package/dist/resolver/node-resolver.test.js.map +0 -1
  85. package/dist/resolver/relative-resolver.d.ts +0 -2
  86. package/dist/resolver/relative-resolver.js +0 -5
  87. package/dist/resolver/relative-resolver.js.map +0 -1
  88. package/dist/resolver/relative-resolver.test.d.ts +0 -1
  89. package/dist/resolver/relative-resolver.test.js +0 -12
  90. package/dist/resolver/relative-resolver.test.js.map +0 -1
  91. package/dist/resolver/webpack-resolver.d.ts +0 -24
  92. package/dist/resolver/webpack-resolver.js +0 -91
  93. package/dist/resolver/webpack-resolver.js.map +0 -1
  94. package/dist/resolver/webpack-resolver.test.d.ts +0 -1
  95. package/dist/resolver/webpack-resolver.test.js +0 -89
  96. package/dist/resolver/webpack-resolver.test.js.map +0 -1
  97. package/dist/runner.d.ts +0 -76
  98. package/dist/runner.js +0 -120
  99. package/dist/runner.js.map +0 -1
  100. package/dist/runner.test.d.ts +0 -1
  101. package/dist/runner.test.js +0 -287
  102. package/dist/runner.test.js.map +0 -1
  103. package/dist/test-util/jest/resolver.cjs +0 -31
  104. package/dist/test-util/jest/resolver.cjs.map +0 -1
  105. package/dist/test-util/jest/resolver.d.cts +0 -16
  106. package/dist/test-util/tsserver.d.ts +0 -31
  107. package/dist/test-util/tsserver.js +0 -112
  108. package/dist/test-util/tsserver.js.map +0 -1
  109. package/dist/test-util/util.d.ts +0 -28
  110. package/dist/test-util/util.js +0 -81
  111. package/dist/test-util/util.js.map +0 -1
  112. package/dist/transformer/index.d.ts +0 -30
  113. package/dist/transformer/index.js +0 -25
  114. package/dist/transformer/index.js.map +0 -1
  115. package/dist/transformer/index.test.d.ts +0 -1
  116. package/dist/transformer/index.test.js +0 -66
  117. package/dist/transformer/index.test.js.map +0 -1
  118. package/dist/transformer/less-transformer.d.ts +0 -2
  119. package/dist/transformer/less-transformer.js +0 -45
  120. package/dist/transformer/less-transformer.js.map +0 -1
  121. package/dist/transformer/less-transformer.test.d.ts +0 -1
  122. package/dist/transformer/less-transformer.test.js +0 -124
  123. package/dist/transformer/less-transformer.test.js.map +0 -1
  124. package/dist/transformer/postcss-transformer.d.ts +0 -12
  125. package/dist/transformer/postcss-transformer.js +0 -32
  126. package/dist/transformer/postcss-transformer.js.map +0 -1
  127. package/dist/transformer/postcss-transformer.test.d.ts +0 -1
  128. package/dist/transformer/postcss-transformer.test.js +0 -176
  129. package/dist/transformer/postcss-transformer.test.js.map +0 -1
  130. package/dist/transformer/scss-transformer.d.ts +0 -2
  131. package/dist/transformer/scss-transformer.js +0 -40
  132. package/dist/transformer/scss-transformer.js.map +0 -1
  133. package/dist/transformer/scss-transformer.test.d.ts +0 -1
  134. package/dist/transformer/scss-transformer.test.js +0 -130
  135. package/dist/transformer/scss-transformer.test.js.map +0 -1
  136. package/dist/util.d.ts +0 -21
  137. package/dist/util.js +0 -72
  138. package/dist/util.js.map +0 -1
  139. package/dist/util.test.d.ts +0 -1
  140. package/dist/util.test.js +0 -74
  141. package/dist/util.test.js.map +0 -1
@@ -1,89 +0,0 @@
1
- import { createFixtures, getFixturePath } from '../test-util/util.js';
2
- import { createWebpackResolver } from './webpack-resolver.js';
3
- test('resolves specifier with css-loader mechanism', async () => {
4
- const webpackResolver = createWebpackResolver({
5
- cwd: getFixturePath('/'),
6
- webpackResolveAlias: {
7
- '@relative': 'test/alias-relative',
8
- '@absolute': getFixturePath('/test/alias-absolute'),
9
- },
10
- });
11
- const request = getFixturePath('/test/1.css');
12
- createFixtures({
13
- '/node_modules/package-1/index.css': `.a {}`,
14
- '/node_modules/package-2/index.css': `.a {}`,
15
- '/node_modules/package-3/index.css': `.a {}`,
16
- '/node_modules/package-4/package.json': `{ "style": "./style.css" }`,
17
- '/node_modules/package-4/style.css': `.a {}`,
18
- '/node_modules/@scoped/package-5/index.css': `.a {}`,
19
- '/node_modules/package-6/index.css': `.a {}`,
20
- '/test/alias-relative/alias.css': `.a {}`,
21
- '/test/alias-absolute/alias.css': `.a {}`,
22
- });
23
- expect(await webpackResolver('~package-1/index.css', { request })).toBe(getFixturePath('/node_modules/package-1/index.css'));
24
- expect(await webpackResolver('~package-2', { request })).toBe(getFixturePath('/node_modules/package-2/index.css'));
25
- expect(await webpackResolver('~package-3/', { request })).toBe(getFixturePath('/node_modules/package-3/index.css'));
26
- expect(await webpackResolver('~package-4', { request })).toBe(getFixturePath('/node_modules/package-4/style.css'));
27
- expect(await webpackResolver('~@scoped/package-5/index.css', { request })).toBe(getFixturePath('/node_modules/@scoped/package-5/index.css'));
28
- expect(await webpackResolver('package-6/index.css', { request })).toBe(getFixturePath('/node_modules/package-6/index.css'));
29
- expect(await webpackResolver('@relative/alias.css', { request })).toBe(getFixturePath('/test/alias-relative/alias.css'));
30
- expect(await webpackResolver('@absolute/alias.css', { request })).toBe(getFixturePath('/test/alias-absolute/alias.css'));
31
- });
32
- test('resolves specifier with sass-loader mechanism', async () => {
33
- const webpackResolver = createWebpackResolver({
34
- cwd: getFixturePath('/'),
35
- sassLoadPaths: ['test/load-paths-relative', getFixturePath('/test/load-paths-absolute')],
36
- webpackResolveAlias: {
37
- '@relative': 'test/alias-relative',
38
- '@absolute': getFixturePath('/test/alias-absolute'),
39
- },
40
- });
41
- const request = getFixturePath('/test/1.scss');
42
- createFixtures({
43
- '/node_modules/package-1/index.scss': `.a {}`,
44
- '/test/load-paths-relative/load-paths-relative.scss': `.a {}`,
45
- '/test/load-paths-absolute/load-paths-absolute.scss': `.a {}`,
46
- '/test/_partial-import.scss': `.a {}`,
47
- '/test/alias-relative/alias.scss': `.a {}`,
48
- '/test/alias-absolute/alias.scss': `.a {}`,
49
- });
50
- expect(await webpackResolver('~package-1/index.scss', { request })).toBe(getFixturePath('/node_modules/package-1/index.scss'));
51
- expect(await webpackResolver('~package-1', { request })).toBe(getFixturePath('/node_modules/package-1/index.scss'));
52
- // ref: https://github.com/webpack-contrib/sass-loader/blob/bed9fb5799a90020d43f705ea405f85b368621d7/test/scss/import-include-paths.scss#L1
53
- expect(await webpackResolver('load-paths-relative', { request })).toBe(getFixturePath('/test/load-paths-relative/load-paths-relative.scss'));
54
- expect(await webpackResolver('load-paths-absolute', { request })).toBe(getFixturePath('/test/load-paths-absolute/load-paths-absolute.scss'));
55
- // https://sass-lang.com/documentation/at-rules/import#partials
56
- // https://github.com/webpack-contrib/sass-loader/blob/0e9494074f69a6b6d47efea6c083a02a31a5ae84/test/sass/import-with-underscore.sass
57
- expect(await webpackResolver('partial-import', { request: getFixturePath('/test/1.scss') })).toBe(getFixturePath('/test/_partial-import.scss'));
58
- expect(await webpackResolver('test/partial-import', { request: getFixturePath('/test') })).toBe(getFixturePath('/test/_partial-import.scss'));
59
- expect(await webpackResolver('@relative/alias.scss', { request })).toBe(getFixturePath('/test/alias-relative/alias.scss'));
60
- expect(await webpackResolver('@absolute/alias.scss', { request })).toBe(getFixturePath('/test/alias-absolute/alias.scss'));
61
- });
62
- test('resolves specifier with less-loader mechanism', async () => {
63
- const webpackResolver = createWebpackResolver({
64
- cwd: getFixturePath('/'),
65
- lessIncludePaths: ['test/include-paths-relative', getFixturePath('/test/include-paths-absolute')],
66
- webpackResolveAlias: {
67
- '@relative': 'test/alias-relative',
68
- '@absolute': getFixturePath('/test/alias-absolute'),
69
- },
70
- });
71
- const request = getFixturePath('/test/1.less');
72
- createFixtures({
73
- '/node_modules/package-1/index.less': `.a {}`,
74
- '/test/include-paths-relative/include-paths-relative.less': `.a {}`,
75
- '/test/include-paths-absolute/include-paths-absolute.less': `.a {}`,
76
- '/test/alias-relative/alias.less': `.a {}`,
77
- '/test/alias-absolute/alias.less': `.a {}`,
78
- });
79
- expect(await webpackResolver('~package-1/index.less', { request })).toBe(getFixturePath('/node_modules/package-1/index.less'));
80
- expect(await webpackResolver('~package-1', { request })).toBe(getFixturePath('/node_modules/package-1/index.less'));
81
- // ref: https://github.com/webpack-contrib/less-loader/blob/81a0d27eb6d18e5dc550a60fc1007fdc77305b78/test/loader.test.js#L248-L253
82
- // ref: https://github.com/webpack-contrib/less-loader/blob/393147064672ace986ec84aca21f69f0ab819a9c/test/fixtures/import-paths.less#L1
83
- // ref: https://github.com/webpack-contrib/less-loader/blob/99d80bd290dae50375db6e17c5f56ec33754e258/test/helpers/getCodeFromLess.js#L47-L54
84
- expect(await webpackResolver('include-paths-relative', { request })).toBe(getFixturePath('/test/include-paths-relative/include-paths-relative.less'));
85
- expect(await webpackResolver('include-paths-absolute', { request })).toBe(getFixturePath('/test/include-paths-absolute/include-paths-absolute.less'));
86
- expect(await webpackResolver('@relative/alias.less', { request })).toBe(getFixturePath('/test/alias-relative/alias.less'));
87
- expect(await webpackResolver('@absolute/alias.less', { request })).toBe(getFixturePath('/test/alias-absolute/alias.less'));
88
- });
89
- //# sourceMappingURL=webpack-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack-resolver.test.js","sourceRoot":"","sources":["../../src/resolver/webpack-resolver.test.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import type { Resolver } from './resolver/index.js';
2
- import { type Transformer } from './transformer/index.js';
3
- export type Watcher = {
4
- close: () => Promise<void>;
5
- };
6
- export type LocalsConvention = 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly' | undefined;
7
- export interface RunnerOptions {
8
- pattern: string;
9
- watch?: boolean | undefined;
10
- /**
11
- * Style of exported class names.
12
- * @default undefined
13
- */
14
- localsConvention?: LocalsConvention | undefined;
15
- declarationMap?: boolean | undefined;
16
- transformer?: Transformer | undefined;
17
- resolver?: Resolver | undefined;
18
- /**
19
- * The option compatible with sass's `--load-path`. It is an array of relative or absolute paths.
20
- * @example ['src/styles']
21
- * @example ['/home/user/repository/src/styles']
22
- */
23
- sassLoadPaths?: string[] | undefined;
24
- /**
25
- * The option compatible with less's `--include-path`. It is an array of relative or absolute paths.
26
- * @example ['src/styles']
27
- * @example ['/home/user/repository/src/styles']
28
- */
29
- lessIncludePaths?: string[] | undefined;
30
- /**
31
- * The option compatible with webpack's `resolve.alias`. It is an object consisting of a pair of alias names and relative or absolute paths.
32
- * @example { style: 'src/styles', '@': 'src' }
33
- * @example { style: '/home/user/repository/src/styles', '@': '/home/user/repository/src' }
34
- */
35
- webpackResolveAlias?: Record<string, string> | undefined;
36
- /**
37
- * The option compatible with postcss's `--config`. It is a relative or absolute path.
38
- * @example '.'
39
- * @example 'postcss.config.js'
40
- * @example '/home/user/repository/src'
41
- */
42
- postcssConfig?: string | undefined;
43
- /**
44
- * Generate `.d.css.ts` instead of `.css.d.ts`.
45
- * @default false
46
- */
47
- arbitraryExtensions?: boolean | undefined;
48
- /**
49
- * Only generate .d.ts and .d.ts.map for changed files.
50
- * @default true
51
- */
52
- cache?: boolean | undefined;
53
- /**
54
- * Strategy for the cache to use for detecting changed files.
55
- * @default 'content'
56
- */
57
- cacheStrategy?: 'content' | 'metadata' | undefined;
58
- /**
59
- * What level of logs to report.
60
- * @default 'info'
61
- */
62
- logLevel?: 'debug' | 'info' | 'silent' | undefined;
63
- /** Working directory path. */
64
- cwd?: string | undefined;
65
- }
66
- type OverrideProp<T, K extends keyof T, V extends T[K]> = Omit<T, K> & {
67
- [P in K]: V;
68
- };
69
- /**
70
- * Run typed-css-module.
71
- * @param options Runner options.
72
- * @returns Returns `Promise<Watcher>` if `options.watch` is `true`, `Promise<void>` if `false`.
73
- */
74
- export declare function run(options: OverrideProp<RunnerOptions, 'watch', true>): Promise<Watcher>;
75
- export declare function run(options: RunnerOptions): Promise<void>;
76
- export {};
package/dist/runner.js DELETED
@@ -1,120 +0,0 @@
1
- import { resolve, relative } from 'path';
2
- import * as process from 'process';
3
- import { createCache } from '@file-cache/core';
4
- import { createNpmPackageKey } from '@file-cache/npm';
5
- import AwaitLock from 'await-lock';
6
- import chalk from 'chalk';
7
- import * as chokidar from 'chokidar';
8
- import { glob } from 'glob';
9
- import { DEFAULT_ARBITRARY_EXTENSIONS } from './config.js';
10
- import { isGeneratedFilesExist, emitGeneratedFiles } from './emitter/index.js';
11
- import { Locator } from './locator/index.js';
12
- import { Logger } from './logger.js';
13
- import { createDefaultResolver } from './resolver/index.js';
14
- import { createDefaultTransformer } from './transformer/index.js';
15
- import { getInstalledPeerDependencies, isMatchByGlob } from './util.js';
16
- export async function run(options) {
17
- // eslint-disable-next-line new-cap
18
- const lock = new AwaitLock.default();
19
- const logger = new Logger(options.logLevel ?? 'info');
20
- const cwd = options.cwd ?? process.cwd();
21
- const resolver = options.resolver ??
22
- createDefaultResolver({
23
- cwd,
24
- sassLoadPaths: options.sassLoadPaths,
25
- lessIncludePaths: options.lessIncludePaths,
26
- webpackResolveAlias: options.webpackResolveAlias,
27
- });
28
- const transformer = options.transformer ?? createDefaultTransformer({ cwd, postcssConfig: options.postcssConfig });
29
- const installedPeerDependencies = getInstalledPeerDependencies();
30
- const cache = await createCache({
31
- name: 'happy-css-modules',
32
- mode: options.cacheStrategy ?? 'content',
33
- keys: [
34
- () => createNpmPackageKey(['happy-css-modules', ...installedPeerDependencies]),
35
- () => {
36
- return JSON.stringify(options);
37
- },
38
- ],
39
- noCache: !(options.cache ?? true),
40
- });
41
- const locator = new Locator({ transformer, resolver });
42
- const isExternalFile = (filePath) => {
43
- return !isMatchByGlob(filePath, options.pattern, { cwd });
44
- };
45
- async function processFile(filePath) {
46
- async function isChangedFile(filePath) {
47
- const result = await cache.getAndUpdateCache(filePath);
48
- // eslint-disable-next-line @typescript-eslint/no-throw-literal
49
- if (result.error)
50
- throw result.error;
51
- return result.changed;
52
- }
53
- // Locator#load cannot be called concurrently. Therefore, it takes a lock and waits.
54
- await lock.acquireAsync();
55
- try {
56
- const _isGeneratedFilesExist = await isGeneratedFilesExist(filePath, options.declarationMap, options.arbitraryExtensions ?? DEFAULT_ARBITRARY_EXTENSIONS);
57
- const _isChangedFile = await isChangedFile(filePath);
58
- // Generate .d.ts and .d.ts.map only when the file has been updated.
59
- // However, if .d.ts or .d.ts.map has not yet been generated, always generate.
60
- if (_isGeneratedFilesExist && !_isChangedFile) {
61
- logger.debug(chalk.gray(`${relative(cwd, filePath)} (skipped)`));
62
- return;
63
- }
64
- const result = await locator.load(filePath);
65
- await emitGeneratedFiles({
66
- filePath,
67
- tokens: result.tokens,
68
- emitDeclarationMap: options.declarationMap,
69
- dtsFormatOptions: {
70
- localsConvention: options.localsConvention,
71
- arbitraryExtensions: options.arbitraryExtensions,
72
- },
73
- isExternalFile,
74
- });
75
- logger.info(chalk.green(`${relative(cwd, filePath)} (generated)`));
76
- await cache.reconcile(); // Update cache for the file
77
- }
78
- finally {
79
- lock.release();
80
- }
81
- }
82
- async function processAllFiles() {
83
- const filePaths = (await glob(options.pattern, { dot: true, cwd }))
84
- // convert relative path to absolute path
85
- .map((file) => resolve(cwd, file));
86
- const errors = [];
87
- for (const filePath of filePaths) {
88
- // eslint-disable-next-line no-await-in-loop
89
- await processFile(filePath).catch((e) => errors.push(e));
90
- }
91
- if (errors.length > 0) {
92
- throw new AggregateError(errors, 'Failed to process files');
93
- }
94
- }
95
- if (!options.watch) {
96
- logger.info(`Generate .d.ts for ${options.pattern}...`);
97
- await processAllFiles();
98
- // Write cache state to file for persistence
99
- }
100
- else {
101
- // First, watch files.
102
- logger.info(`Watch ${options.pattern}...`);
103
- const watcher = chokidar.watch([options.pattern.replace(/\\/gu, '/')], { cwd });
104
- watcher.on('all', (eventName, relativeFilePath) => {
105
- const filePath = resolve(cwd, relativeFilePath);
106
- // There is a bug in chokidar that matches symlinks that do not match the pattern.
107
- // ref: https://github.com/paulmillr/chokidar/issues/967
108
- if (isExternalFile(filePath))
109
- return;
110
- if (eventName !== 'add' && eventName !== 'change')
111
- return;
112
- processFile(filePath).catch((e) => {
113
- logger.error(e);
114
- // TODO: Emit a error by `Watcher#onerror`
115
- });
116
- });
117
- return { close: async () => watcher.close() };
118
- }
119
- }
120
- //# sourceMappingURL=runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,287 +0,0 @@
1
- import { readFile, rm, symlink, writeFile } from 'fs/promises';
2
- import { randomUUID } from 'node:crypto';
3
- import { createRequire } from 'node:module';
4
- import { dirname, join, resolve } from 'path';
5
- import { fileURLToPath } from 'url';
6
- import * as fileCacheCore from '@file-cache/core';
7
- import { jest } from '@jest/globals';
8
- import dedent from 'dedent';
9
- import { createFixtures, exists, getFixturePath, waitForAsyncTask } from './test-util/util.js';
10
- const require = createRequire(import.meta.url);
11
- const uuid = randomUUID();
12
- jest.unstable_mockModule('@file-cache/core', () => ({
13
- ...fileCacheCore, // Inherit native functions
14
- createCache: async (options) => {
15
- options.keys.push(() => uuid); // Add a random key to avoid cache collision
16
- return fileCacheCore.createCache(options);
17
- },
18
- }));
19
- const { run } = await import('./runner.js');
20
- // eslint-disable-next-line @typescript-eslint/no-empty-function
21
- const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
22
- // eslint-disable-next-line @typescript-eslint/no-empty-function
23
- const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
24
- const defaultOptions = {
25
- pattern: 'test/**/*.{css,scss}',
26
- declarationMap: true,
27
- logLevel: 'silent',
28
- cwd: getFixturePath('/'),
29
- cache: false,
30
- };
31
- const dir = join(dirname(fileURLToPath(import.meta.url)));
32
- beforeEach(async () => {
33
- consoleLogSpy.mockClear();
34
- consoleErrorSpy.mockClear();
35
- await rm(resolve(dir, '../node_modules/.cache/happy-css-modules'), { recursive: true, force: true }); // clear cache
36
- });
37
- // Exit the watcher even if the test fails
38
- let watcher;
39
- afterEach(async () => {
40
- if (watcher) {
41
- await watcher.close();
42
- }
43
- });
44
- test('generates .d.ts and .d.ts.map', async () => {
45
- createFixtures({
46
- '/test/1.css': '.a {}',
47
- '/test/2.css': '.b {}',
48
- });
49
- await run({ ...defaultOptions });
50
- expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatchSnapshot();
51
- expect(await readFile(getFixturePath('/test/1.css.d.ts.map'), 'utf8')).toMatchSnapshot();
52
- expect(await readFile(getFixturePath('/test/2.css.d.ts'), 'utf8')).toMatchSnapshot();
53
- expect(await readFile(getFixturePath('/test/2.css.d.ts.map'), 'utf8')).toMatchSnapshot();
54
- });
55
- test('uses cache in non-watch mode', async () => {
56
- createFixtures({
57
- '/test/1.css': '.a {}',
58
- });
59
- await run({ ...defaultOptions, declarationMap: true, logLevel: 'debug', cache: true });
60
- expect(consoleLogSpy).toBeCalledTimes(2);
61
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Generate .d.ts for'));
62
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('generated'));
63
- consoleLogSpy.mockClear();
64
- // Skip generation
65
- await run({ ...defaultOptions, declarationMap: true, logLevel: 'debug', cache: true });
66
- expect(consoleLogSpy).toBeCalledTimes(2);
67
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Generate .d.ts for'));
68
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('skipped'));
69
- consoleLogSpy.mockClear();
70
- // Generates if generated files are missing
71
- await rm(getFixturePath('/test/1.css.d.ts'));
72
- await run({ ...defaultOptions, declarationMap: true, logLevel: 'debug', cache: true });
73
- expect(consoleLogSpy).toBeCalledTimes(2);
74
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Generate .d.ts for'));
75
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('generated'));
76
- consoleLogSpy.mockClear();
77
- // Generates if options are changed
78
- await run({ ...defaultOptions, declarationMap: false, logLevel: 'debug', cache: true });
79
- expect(consoleLogSpy).toBeCalledTimes(2);
80
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Generate .d.ts for'));
81
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('generated'));
82
- consoleLogSpy.mockClear();
83
- });
84
- test('uses cache in watch mode', async () => {
85
- createFixtures({
86
- '/test/1.css': '.a-1 {}',
87
- '/test/2.css': '.b-1 {}',
88
- });
89
- // At first, process all files
90
- watcher = await run({ ...defaultOptions, declarationMap: true, logLevel: 'debug', cache: true, watch: true });
91
- await waitForAsyncTask(1000); // Wait until the watcher is ready
92
- expect(consoleLogSpy).toBeCalledTimes(3);
93
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Watch test/**/*.{css,scss}...'));
94
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('test/1.css (generated)'));
95
- expect(consoleLogSpy).toHaveBeenNthCalledWith(3, expect.anything(), expect.stringContaining('test/2.css (generated)'));
96
- consoleLogSpy.mockClear();
97
- // Updating 1.css, it will only be processed
98
- await writeFile(getFixturePath('/test/1.css'), '.a-2 {}');
99
- await waitForAsyncTask(500); // Wait until the file is written
100
- expect(consoleLogSpy).toBeCalledTimes(1);
101
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('test/1.css (generated)'));
102
- // Close the watcher
103
- await watcher.close();
104
- consoleLogSpy.mockClear();
105
- // Update 1.css
106
- await writeFile(getFixturePath('/test/1.css'), '.a-1 {}');
107
- await waitForAsyncTask(500); // Wait until the file is written
108
- // The updated 1.css will be processed, and the non-updated 2.css will be skipped.
109
- // eslint-disable-next-line require-atomic-updates
110
- watcher = await run({ ...defaultOptions, declarationMap: true, logLevel: 'debug', cache: true, watch: true });
111
- await waitForAsyncTask(1000); // Wait until the watcher is ready
112
- expect(consoleLogSpy).toBeCalledTimes(3);
113
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Watch test/**/*.{css,scss}...'));
114
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('test/1.css (generated)'));
115
- expect(consoleLogSpy).toHaveBeenNthCalledWith(3, expect.anything(), expect.stringContaining('test/2.css (skipped)'));
116
- });
117
- test('outputs logs', async () => {
118
- createFixtures({
119
- '/test/1.css': '.a {}',
120
- });
121
- await run({ ...defaultOptions, logLevel: 'debug', cache: true });
122
- expect(consoleLogSpy).toBeCalledTimes(2);
123
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Generate .d.ts for'));
124
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('test/1.css (generated)'));
125
- consoleLogSpy.mockClear();
126
- await run({ ...defaultOptions, logLevel: 'debug', cache: true });
127
- expect(consoleLogSpy).toBeCalledTimes(2);
128
- expect(consoleLogSpy).toHaveBeenNthCalledWith(1, expect.anything(), expect.stringContaining('Generate .d.ts for'));
129
- expect(consoleLogSpy).toHaveBeenNthCalledWith(2, expect.anything(), expect.stringContaining('test/1.css (skipped)'));
130
- });
131
- test.todo('changes dts format with localsConvention options');
132
- test('does not emit declaration map if declarationMap is false', async () => {
133
- createFixtures({
134
- '/test/1.css': '.a {}',
135
- });
136
- await run({ ...defaultOptions, declarationMap: false });
137
- await expect(readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).resolves.not.toThrow();
138
- await expect(readFile(getFixturePath('/test/1.css.d.ts.map'), 'utf8')).rejects.toThrow(/ENOENT/u);
139
- });
140
- test('supports transformer', async () => {
141
- createFixtures({
142
- '/test/1.scss': `.a { dummy: ''; }`,
143
- });
144
- await run({ ...defaultOptions });
145
- expect(await readFile(getFixturePath('/test/1.scss.d.ts'), 'utf8')).toMatchSnapshot();
146
- expect(await readFile(getFixturePath('/test/1.scss.d.ts.map'), 'utf8')).toMatchSnapshot();
147
- });
148
- test('watches for changes in files', async () => {
149
- createFixtures({
150
- '/test': {}, // empty directory
151
- });
152
- watcher = await run({ ...defaultOptions, watch: true });
153
- await writeFile(getFixturePath('/test/1.css'), '.a-1 {}');
154
- await waitForAsyncTask(500); // Wait until the file is written
155
- expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatch(/a-1/u);
156
- await writeFile(getFixturePath('/test/1.css'), '.a-2 {}');
157
- await waitForAsyncTask(500); // Wait until the file is written
158
- expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatch(/a-2/u);
159
- await writeFile(getFixturePath('/test/2.css'), '.b {}');
160
- await writeFile(getFixturePath('/test/3.css'), '.c {}');
161
- await waitForAsyncTask(500); // Wait until the file is written
162
- expect(await readFile(getFixturePath('/test/2.css.d.ts'), 'utf8')).toMatch(/b/u);
163
- expect(await readFile(getFixturePath('/test/3.css.d.ts'), 'utf8')).toMatch(/c/u);
164
- });
165
- test('returns an error if the file fails to process in non-watch mode', async () => {
166
- createFixtures({
167
- '/test/1.css': '.a {}',
168
- '/test/2.css': 'INVALID SYNTAX',
169
- '/test/3.css': 'INVALID SYNTAX',
170
- });
171
- const maybeError = await run({ ...defaultOptions, watch: false }).catch((e) => e);
172
- // The errors are aggregated into AggregateError.
173
- expect(maybeError).toBeInstanceOf(AggregateError);
174
- const error = maybeError;
175
- expect(error.message).toMatchInlineSnapshot(`"Failed to process files"`);
176
- expect(error.errors).toHaveLength(2);
177
- expect(error.errors[0]).toMatchInlineSnapshot(`<fixtures>/test/3.css:1:1: Unknown word`);
178
- expect(error.errors[1]).toMatchInlineSnapshot(`<fixtures>/test/2.css:1:1: Unknown word`);
179
- // The valid files are emitted.
180
- expect(await exists(getFixturePath('/test/1.css.d.ts'))).toBe(true);
181
- expect(await exists(getFixturePath('/test/1.css.d.ts.map'))).toBe(true);
182
- });
183
- describe('handles external files', () => {
184
- beforeEach(() => {
185
- createFixtures({
186
- '/test/1.css': dedent `
187
- @import './2.css';
188
- @import 'external-library';
189
- .a {}
190
- `,
191
- '/test/2.css': `.b {}`,
192
- '/node_modules/external-library/index.css': `.c {}`,
193
- });
194
- });
195
- test('do not emit .dts for external files', async () => {
196
- await run({ ...defaultOptions });
197
- expect(await exists(getFixturePath('/test/1.css.d.ts'))).toBe(true);
198
- expect(await exists(getFixturePath('/test/2.css.d.ts'))).toBe(true);
199
- expect(await exists(getFixturePath('/node_modules/external-library/index.css.d.ts'))).toBe(false);
200
- });
201
- test('treats imported tokens from external files the same as local tokens', async () => {
202
- await run({ ...defaultOptions });
203
- expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatchInlineSnapshot(`
204
- "declare const styles:
205
- & Readonly<Pick<(typeof import("./2.css"))["default"], "b">>
206
- & Readonly<{ "c": string }>
207
- & Readonly<{ "a": string }>
208
- ;
209
- export default styles;
210
- //# sourceMappingURL=./1.css.d.ts.map
211
- "
212
- `);
213
- });
214
- });
215
- test('sassLoadPaths', async () => {
216
- const sassLoadPaths = ['test/relative'];
217
- createFixtures({
218
- '/test/1.scss': dedent `
219
- @import '2.scss';
220
- `,
221
- '/test/relative/2.scss': `.a { dummy: ''; }`,
222
- });
223
- await run({ ...defaultOptions, sassLoadPaths }); // not throw
224
- });
225
- test('lessIncludePaths', async () => {
226
- const lessIncludePaths = ['test/relative'];
227
- createFixtures({
228
- '/test/1.less': dedent `
229
- @import '2.less';
230
- `,
231
- '/test/relative/2.less': `.a { dummy: ''; }`,
232
- });
233
- await run({ ...defaultOptions, lessIncludePaths }); // not throw
234
- });
235
- test('webpackResolveAlias', async () => {
236
- const webpackResolveAlias = { '@relative': 'test/relative' };
237
- createFixtures({
238
- '/test/1.less': dedent `
239
- @import '@relative/2.less';
240
- `,
241
- '/test/relative/2.less': `.a { dummy: ''; }`,
242
- });
243
- await run({ ...defaultOptions, webpackResolveAlias }); // not throw
244
- });
245
- test('postcssConfig', async () => {
246
- const uuid = randomUUID();
247
- const postcssConfig = `${uuid}/postcss.config.js`;
248
- createFixtures({
249
- [`/${uuid}/postcss.config.js`]: dedent `
250
- module.exports = {
251
- plugins: [
252
- require('${require.resolve('postcss-simple-vars')}'),
253
- ],
254
- };
255
- `,
256
- '/test/1.css': dedent `
257
- $prefix: foo;
258
- .$(prefix)_bar {}
259
- `,
260
- });
261
- await run({ ...defaultOptions, postcssConfig }); // not throw
262
- });
263
- test('support symlink', async () => {
264
- createFixtures({
265
- '/external/1.css': '.a {}',
266
- '/external/2.css': '.b {}',
267
- '/test': {}, // empty directory
268
- });
269
- await symlink(getFixturePath('/external/1.css'), getFixturePath('/test/1.css'));
270
- await symlink(getFixturePath('/external/2.css'), getFixturePath('/test/2.txt'));
271
- await run({ ...defaultOptions, watch: false });
272
- // Symlinks that do not match the pattern are not processed.
273
- expect(await exists(getFixturePath('/test/1.css.d.ts'))).toBe(true);
274
- expect(await exists(getFixturePath('/test/2.css.d.ts'))).toBe(false);
275
- expect(await exists(getFixturePath('/test/2.txt.d.ts'))).toBe(false);
276
- // The path referred to by sourceMappingURL or sources field is the path before symlink resolution.
277
- expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatchInlineSnapshot(`
278
- "declare const styles:
279
- & Readonly<{ "a": string }>
280
- ;
281
- export default styles;
282
- //# sourceMappingURL=./1.css.d.ts.map
283
- "
284
- `);
285
- expect(await readFile(getFixturePath('/test/1.css.d.ts.map'), 'utf8')).toMatchInlineSnapshot(`"{"version":3,"sources":["./1.css"],"names":["a"],"mappings":"AAAA;AAAA,E,aAAAA,G,WAAA;AAAA;AAAA","file":"1.css.d.ts","sourceRoot":""}"`);
286
- });
287
- //# sourceMappingURL=runner.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../src/runner.test.ts"],"names":[],"mappings":"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"}