happy-css-modules 3.0.0 → 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 (143) 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/integration-test/go-to-definition.test.ts +0 -35
  6. package/src/locator/index.test.ts +152 -158
  7. package/src/locator/index.ts +44 -37
  8. package/src/locator/postcss.test.ts +118 -76
  9. package/src/locator/postcss.ts +116 -73
  10. package/src/test-util/util.ts +24 -23
  11. package/src/transformer/less-transformer.test.ts +26 -24
  12. package/src/transformer/postcss-transformer.test.ts +5 -3
  13. package/src/transformer/scss-transformer.test.ts +39 -28
  14. package/src/util.ts +1 -1
  15. package/dist/cli.d.ts +0 -6
  16. package/dist/cli.js +0 -121
  17. package/dist/cli.js.map +0 -1
  18. package/dist/cli.test.d.ts +0 -1
  19. package/dist/cli.test.js +0 -66
  20. package/dist/cli.test.js.map +0 -1
  21. package/dist/config.d.ts +0 -1
  22. package/dist/config.js +0 -2
  23. package/dist/config.js.map +0 -1
  24. package/dist/emitter/dts.d.ts +0 -14
  25. package/dist/emitter/dts.js +0 -111
  26. package/dist/emitter/dts.js.map +0 -1
  27. package/dist/emitter/dts.test.d.ts +0 -1
  28. package/dist/emitter/dts.test.js +0 -205
  29. package/dist/emitter/dts.test.js.map +0 -1
  30. package/dist/emitter/file-system.d.ts +0 -6
  31. package/dist/emitter/file-system.js +0 -26
  32. package/dist/emitter/file-system.js.map +0 -1
  33. package/dist/emitter/file-system.test.d.ts +0 -1
  34. package/dist/emitter/file-system.test.js +0 -34
  35. package/dist/emitter/file-system.test.js.map +0 -1
  36. package/dist/emitter/index.d.ts +0 -34
  37. package/dist/emitter/index.js +0 -49
  38. package/dist/emitter/index.js.map +0 -1
  39. package/dist/emitter/index.test.d.ts +0 -1
  40. package/dist/emitter/index.test.js +0 -68
  41. package/dist/emitter/index.test.js.map +0 -1
  42. package/dist/emitter/source-map.d.ts +0 -8
  43. package/dist/emitter/source-map.js +0 -16
  44. package/dist/emitter/source-map.js.map +0 -1
  45. package/dist/emitter/source-map.test.d.ts +0 -1
  46. package/dist/emitter/source-map.test.js +0 -13
  47. package/dist/emitter/source-map.test.js.map +0 -1
  48. package/dist/index.d.ts +0 -5
  49. package/dist/index.js +0 -6
  50. package/dist/index.js.map +0 -1
  51. package/dist/integration-test/go-to-definition.test.d.ts +0 -1
  52. package/dist/integration-test/go-to-definition.test.js +0 -369
  53. package/dist/integration-test/go-to-definition.test.js.map +0 -1
  54. package/dist/library/source-map/index.d.ts +0 -8
  55. package/dist/library/source-map/index.js +0 -5
  56. package/dist/library/source-map/index.js.map +0 -1
  57. package/dist/locator/index.d.ts +0 -44
  58. package/dist/locator/index.js +0 -162
  59. package/dist/locator/index.js.map +0 -1
  60. package/dist/locator/index.test.d.ts +0 -1
  61. package/dist/locator/index.test.js +0 -395
  62. package/dist/locator/index.test.js.map +0 -1
  63. package/dist/locator/postcss.d.ts +0 -64
  64. package/dist/locator/postcss.js +0 -208
  65. package/dist/locator/postcss.js.map +0 -1
  66. package/dist/locator/postcss.test.d.ts +0 -1
  67. package/dist/locator/postcss.test.js +0 -242
  68. package/dist/locator/postcss.test.js.map +0 -1
  69. package/dist/logger.d.ts +0 -9
  70. package/dist/logger.js +0 -28
  71. package/dist/logger.js.map +0 -1
  72. package/dist/regression-test/issue-168.test.d.ts +0 -1
  73. package/dist/regression-test/issue-168.test.js +0 -30
  74. package/dist/regression-test/issue-168.test.js.map +0 -1
  75. package/dist/resolver/index.d.ts +0 -22
  76. package/dist/resolver/index.js +0 -44
  77. package/dist/resolver/index.js.map +0 -1
  78. package/dist/resolver/index.test.d.ts +0 -1
  79. package/dist/resolver/index.test.js +0 -16
  80. package/dist/resolver/index.test.js.map +0 -1
  81. package/dist/resolver/node-resolver.d.ts +0 -2
  82. package/dist/resolver/node-resolver.js +0 -6
  83. package/dist/resolver/node-resolver.js.map +0 -1
  84. package/dist/resolver/node-resolver.test.d.ts +0 -1
  85. package/dist/resolver/node-resolver.test.js +0 -25
  86. package/dist/resolver/node-resolver.test.js.map +0 -1
  87. package/dist/resolver/relative-resolver.d.ts +0 -2
  88. package/dist/resolver/relative-resolver.js +0 -5
  89. package/dist/resolver/relative-resolver.js.map +0 -1
  90. package/dist/resolver/relative-resolver.test.d.ts +0 -1
  91. package/dist/resolver/relative-resolver.test.js +0 -12
  92. package/dist/resolver/relative-resolver.test.js.map +0 -1
  93. package/dist/resolver/webpack-resolver.d.ts +0 -24
  94. package/dist/resolver/webpack-resolver.js +0 -91
  95. package/dist/resolver/webpack-resolver.js.map +0 -1
  96. package/dist/resolver/webpack-resolver.test.d.ts +0 -1
  97. package/dist/resolver/webpack-resolver.test.js +0 -89
  98. package/dist/resolver/webpack-resolver.test.js.map +0 -1
  99. package/dist/runner.d.ts +0 -76
  100. package/dist/runner.js +0 -120
  101. package/dist/runner.js.map +0 -1
  102. package/dist/runner.test.d.ts +0 -1
  103. package/dist/runner.test.js +0 -287
  104. package/dist/runner.test.js.map +0 -1
  105. package/dist/test-util/jest/resolver.cjs +0 -31
  106. package/dist/test-util/jest/resolver.cjs.map +0 -1
  107. package/dist/test-util/jest/resolver.d.cts +0 -16
  108. package/dist/test-util/tsserver.d.ts +0 -31
  109. package/dist/test-util/tsserver.js +0 -112
  110. package/dist/test-util/tsserver.js.map +0 -1
  111. package/dist/test-util/util.d.ts +0 -29
  112. package/dist/test-util/util.js +0 -84
  113. package/dist/test-util/util.js.map +0 -1
  114. package/dist/transformer/index.d.ts +0 -30
  115. package/dist/transformer/index.js +0 -25
  116. package/dist/transformer/index.js.map +0 -1
  117. package/dist/transformer/index.test.d.ts +0 -1
  118. package/dist/transformer/index.test.js +0 -66
  119. package/dist/transformer/index.test.js.map +0 -1
  120. package/dist/transformer/less-transformer.d.ts +0 -2
  121. package/dist/transformer/less-transformer.js +0 -45
  122. package/dist/transformer/less-transformer.js.map +0 -1
  123. package/dist/transformer/less-transformer.test.d.ts +0 -1
  124. package/dist/transformer/less-transformer.test.js +0 -132
  125. package/dist/transformer/less-transformer.test.js.map +0 -1
  126. package/dist/transformer/postcss-transformer.d.ts +0 -12
  127. package/dist/transformer/postcss-transformer.js +0 -32
  128. package/dist/transformer/postcss-transformer.js.map +0 -1
  129. package/dist/transformer/postcss-transformer.test.d.ts +0 -1
  130. package/dist/transformer/postcss-transformer.test.js +0 -176
  131. package/dist/transformer/postcss-transformer.test.js.map +0 -1
  132. package/dist/transformer/scss-transformer.d.ts +0 -2
  133. package/dist/transformer/scss-transformer.js +0 -40
  134. package/dist/transformer/scss-transformer.js.map +0 -1
  135. package/dist/transformer/scss-transformer.test.d.ts +0 -1
  136. package/dist/transformer/scss-transformer.test.js +0 -138
  137. package/dist/transformer/scss-transformer.test.js.map +0 -1
  138. package/dist/util.d.ts +0 -21
  139. package/dist/util.js +0 -72
  140. package/dist/util.js.map +0 -1
  141. package/dist/util.test.d.ts +0 -1
  142. package/dist/util.test.js +0 -74
  143. package/dist/util.test.js.map +0 -1
@@ -1,91 +0,0 @@
1
- import { basename, dirname, join, resolve } from 'path';
2
- import enhancedResolve from 'enhanced-resolve';
3
- import { exists } from '../util.js';
4
- // TODO: Support `resolve.alias` for Node.js API
5
- export const createWebpackResolver = (webpackResolverOptions) => {
6
- const cwd = webpackResolverOptions?.cwd ?? process.cwd();
7
- const sassLoadPaths = webpackResolverOptions?.sassLoadPaths?.map((path) => resolve(cwd, path));
8
- const lessIncludePaths = webpackResolverOptions?.lessIncludePaths?.map((path) => resolve(cwd, path));
9
- const webpackResolveAlias = webpackResolverOptions?.webpackResolveAlias
10
- ? Object.fromEntries(Object.entries(webpackResolverOptions?.webpackResolveAlias).map(([key, value]) => [key, resolve(cwd, value)]))
11
- : undefined;
12
- /**
13
- * A resolver compatible with css-loader.
14
- *
15
- * @see https://github.com/webpack-contrib/css-loader/blob/897e7dd250ccdb0d31e6c66d4cd0d009f2022a85/src/plugins/postcss-import-parser.js#L228-L235
16
- */
17
- const cssLoaderResolver = enhancedResolve.create.sync({
18
- conditionNames: ['style'],
19
- // We are not sure how "..." affects behavior...
20
- mainFields: ['css', 'style', 'main', '...'],
21
- mainFiles: ['index', '...'],
22
- extensions: ['.css', '...'],
23
- preferRelative: true,
24
- alias: webpackResolveAlias ?? {},
25
- });
26
- /**
27
- * A resolver compatible with sass-loader.
28
- *
29
- * @see https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L531-L539
30
- */
31
- const sassLoaderResolver = enhancedResolve.create.sync({
32
- conditionNames: ['sass', 'style'],
33
- mainFields: ['sass', 'style', 'main', '...'],
34
- mainFiles: ['_index', 'index', '...'],
35
- extensions: ['.sass', '.scss', '.css'],
36
- restrictions: [/\.((sa|sc|c)ss)$/iu],
37
- preferRelative: true,
38
- alias: webpackResolveAlias ?? {},
39
- modules: ['node_modules', ...(sassLoadPaths ?? [])],
40
- });
41
- /**
42
- * A resolver compatible with less-loader.
43
- *
44
- * @see https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L35-L42
45
- */
46
- const lessLoaderResolver = enhancedResolve.create.sync({
47
- conditionNames: ['less', 'style'],
48
- mainFields: ['less', 'style', 'main', '...'],
49
- mainFiles: ['index', '...'],
50
- extensions: ['.less', '.css'],
51
- preferRelative: true,
52
- alias: webpackResolveAlias ?? {},
53
- modules: ['node_modules', ...(lessIncludePaths ?? [])],
54
- });
55
- // NOTE: In theory, `sassLoaderResolver` should only be used when the resolver is called from `sassTransformer`.
56
- // However, we do not implement such behavior because it is cumbersome. If someone wants it, we will implement it.
57
- const resolvers = [cssLoaderResolver, sassLoaderResolver, lessLoaderResolver];
58
- return async (specifier, options) => {
59
- // `~` prefix is optional.
60
- // ref: https://github.com/webpack-contrib/css-loader/blob/5e6cf91fd3f0c8b5fb4b91197b98dc56abdef4bf/src/utils.js#L92-L95
61
- // ref: https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L368-L370
62
- // ref: https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L72-L75
63
- // eslint-disable-next-line no-param-reassign
64
- if (specifier.startsWith('~'))
65
- specifier = specifier.slice(1);
66
- for (const resolver of resolvers) {
67
- const specifierVariants = resolver === sassLoaderResolver
68
- ? // Support partial import for sass
69
- // https://sass-lang.com/documentation/at-rules/import#partials
70
- // https://github.com/webpack-contrib/sass-loader/blob/0e9494074f69a6b6d47efea6c083a02a31a5ae84/test/sass/import-with-underscore.sass
71
- [join(dirname(specifier), `_${basename(specifier)}`), specifier]
72
- : [specifier];
73
- for (const specifierVariant of specifierVariants) {
74
- try {
75
- const resolved = resolver(dirname(options.request), specifierVariant);
76
- if (resolved !== false) {
77
- // eslint-disable-next-line no-await-in-loop
78
- const isExists = await exists(resolved);
79
- if (isExists)
80
- return resolved;
81
- }
82
- }
83
- catch (e) {
84
- // noop
85
- }
86
- }
87
- }
88
- return false;
89
- };
90
- };
91
- //# sourceMappingURL=webpack-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack-resolver.js","sourceRoot":"","sources":["../../src/resolver/webpack-resolver.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -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 {};