happy-css-modules 0.2.1 → 0.4.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 (58) hide show
  1. package/README.md +15 -18
  2. package/dist/cli.js +15 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/cli.test.js +10 -0
  5. package/dist/cli.test.js.map +1 -1
  6. package/dist/emitter/dts.js +3 -4
  7. package/dist/emitter/dts.js.map +1 -1
  8. package/dist/integration-test/go-to-definition.test.js +9 -8
  9. package/dist/integration-test/go-to-definition.test.js.map +1 -1
  10. package/dist/loader/index.js +6 -10
  11. package/dist/loader/index.js.map +1 -1
  12. package/dist/loader/index.test.js +22 -3
  13. package/dist/loader/index.test.js.map +1 -1
  14. package/dist/resolver/index.d.ts +3 -1
  15. package/dist/resolver/index.js +17 -14
  16. package/dist/resolver/index.js.map +1 -1
  17. package/dist/resolver/webpack-resolver.d.ts +13 -1
  18. package/dist/resolver/webpack-resolver.js +73 -59
  19. package/dist/resolver/webpack-resolver.js.map +1 -1
  20. package/dist/resolver/webpack-resolver.test.js +34 -7
  21. package/dist/resolver/webpack-resolver.test.js.map +1 -1
  22. package/dist/runner.d.ts +12 -0
  23. package/dist/runner.js +16 -14
  24. package/dist/runner.js.map +1 -1
  25. package/dist/runner.test.js +41 -11
  26. package/dist/runner.test.js.map +1 -1
  27. package/dist/test/tsserver.d.ts +10 -6
  28. package/dist/test/tsserver.js +94 -85
  29. package/dist/test/tsserver.js.map +1 -1
  30. package/dist/test/util.js +9 -12
  31. package/dist/test/util.js.map +1 -1
  32. package/dist/transformer/index.js +11 -9
  33. package/dist/transformer/index.js.map +1 -1
  34. package/dist/transformer/less-transformer.js +7 -5
  35. package/dist/transformer/less-transformer.js.map +1 -1
  36. package/dist/transformer/less-transformer.test.js +11 -6
  37. package/dist/transformer/less-transformer.test.js.map +1 -1
  38. package/dist/transformer/scss-transformer.js +1 -48
  39. package/dist/transformer/scss-transformer.js.map +1 -1
  40. package/dist/transformer/scss-transformer.test.js +11 -5
  41. package/dist/transformer/scss-transformer.test.js.map +1 -1
  42. package/package.json +3 -3
  43. package/src/cli.test.ts +14 -0
  44. package/src/cli.ts +15 -4
  45. package/src/integration-test/go-to-definition.test.ts +10 -8
  46. package/src/loader/index.test.ts +22 -3
  47. package/src/loader/index.ts +3 -4
  48. package/src/resolver/index.ts +21 -12
  49. package/src/resolver/webpack-resolver.test.ts +44 -8
  50. package/src/resolver/webpack-resolver.ts +90 -57
  51. package/src/runner.test.ts +45 -12
  52. package/src/runner.ts +29 -10
  53. package/src/test/tsserver.ts +106 -129
  54. package/src/transformer/index.ts +10 -8
  55. package/src/transformer/less-transformer.test.ts +12 -6
  56. package/src/transformer/less-transformer.ts +6 -4
  57. package/src/transformer/scss-transformer.test.ts +12 -5
  58. package/src/transformer/scss-transformer.ts +0 -51
@@ -1,69 +1,83 @@
1
- import { dirname } from 'path';
1
+ import { basename, dirname, join } from 'path';
2
2
  import enhancedResolve from 'enhanced-resolve';
3
3
  import { exists } from '../util.js';
4
- /**
5
- * A resolver compatible with css-loader.
6
- *
7
- * @see https://github.com/webpack-contrib/css-loader/blob/897e7dd250ccdb0d31e6c66d4cd0d009f2022a85/src/plugins/postcss-import-parser.js#L228-L235
8
- */
9
- const cssLoaderResolver = enhancedResolve.create.sync({
10
- dependencyType: 'css',
11
- conditionNames: ['style'],
12
- // We are not sure how "..." affects behavior...
13
- mainFields: ['css', 'style', 'main', '...'],
14
- mainFiles: ['index', '...'],
15
- extensions: ['.css', '...'],
16
- preferRelative: true,
17
- });
18
- /**
19
- * A resolver compatible with sass-loader.
20
- *
21
- * @see https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L531-L539
22
- */
23
- const sassLoaderResolver = enhancedResolve.create.sync({
24
- dependencyType: 'sass',
25
- conditionNames: ['sass', 'style'],
26
- mainFields: ['sass', 'style', 'main', '...'],
27
- mainFiles: ['_index', 'index', '...'],
28
- extensions: ['.sass', '.scss', '.css'],
29
- restrictions: [/\.((sa|sc|c)ss)$/i],
30
- preferRelative: true,
31
- });
32
- /**
33
- * A resolver compatible with less-loader.
34
- *
35
- * @see https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L35-L42
36
- */
37
- const lessLoaderResolver = enhancedResolve.create.sync({
38
- dependencyType: 'less',
39
- conditionNames: ['less', 'style'],
40
- mainFields: ['less', 'style', 'main', '...'],
41
- mainFiles: ['index', '...'],
42
- extensions: ['.less', '.css'],
43
- preferRelative: true,
44
- });
45
4
  // TODO: Support `resolve.alias` for Node.js API
46
- export const createWebpackResolver = () => async (specifier, options) => {
47
- // `~` prefix is optional.
48
- // ref: https://github.com/webpack-contrib/less-loader/tree/454e187f58046356c3d383d67fda763db8bfc528#webpack-resolver
49
- if (specifier.startsWith('~'))
50
- specifier = specifier.slice(1);
5
+ export const createWebpackResolver = (webpackResolverOptions) => {
6
+ /**
7
+ * A resolver compatible with css-loader.
8
+ *
9
+ * @see https://github.com/webpack-contrib/css-loader/blob/897e7dd250ccdb0d31e6c66d4cd0d009f2022a85/src/plugins/postcss-import-parser.js#L228-L235
10
+ */
11
+ const cssLoaderResolver = enhancedResolve.create.sync({
12
+ dependencyType: 'css',
13
+ conditionNames: ['style'],
14
+ // We are not sure how "..." affects behavior...
15
+ mainFields: ['css', 'style', 'main', '...'],
16
+ mainFiles: ['index', '...'],
17
+ extensions: ['.css', '...'],
18
+ preferRelative: true,
19
+ });
20
+ /**
21
+ * A resolver compatible with sass-loader.
22
+ *
23
+ * @see https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L531-L539
24
+ */
25
+ const sassLoaderResolver = enhancedResolve.create.sync({
26
+ dependencyType: 'sass',
27
+ conditionNames: ['sass', 'style'],
28
+ mainFields: ['sass', 'style', 'main', '...'],
29
+ mainFiles: ['_index', 'index', '...'],
30
+ extensions: ['.sass', '.scss', '.css'],
31
+ restrictions: [/\.((sa|sc|c)ss)$/i],
32
+ preferRelative: true,
33
+ modules: ['node_modules', ...(webpackResolverOptions?.sassLoadPaths ?? [])],
34
+ });
35
+ /**
36
+ * A resolver compatible with less-loader.
37
+ *
38
+ * @see https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L35-L42
39
+ */
40
+ const lessLoaderResolver = enhancedResolve.create.sync({
41
+ dependencyType: 'less',
42
+ conditionNames: ['less', 'style'],
43
+ mainFields: ['less', 'style', 'main', '...'],
44
+ mainFiles: ['index', '...'],
45
+ extensions: ['.less', '.css'],
46
+ preferRelative: true,
47
+ modules: ['node_modules', ...(webpackResolverOptions?.lessIncludePaths ?? [])],
48
+ });
51
49
  // NOTE: In theory, `sassLoaderResolver` should only be used when the resolver is called from `sassTransformer`.
52
50
  // However, we do not implement such behavior because it is cumbersome. If someone wants it, we will implement it.
53
51
  const resolvers = [cssLoaderResolver, sassLoaderResolver, lessLoaderResolver];
54
- for (const resolver of resolvers) {
55
- try {
56
- const resolved = resolver(dirname(options.request), specifier);
57
- if (resolved !== false) {
58
- const isExists = await exists(resolved);
59
- if (isExists)
60
- return resolved;
52
+ return async (specifier, options) => {
53
+ // `~` prefix is optional.
54
+ // ref: https://github.com/webpack-contrib/css-loader/blob/5e6cf91fd3f0c8b5fb4b91197b98dc56abdef4bf/src/utils.js#L92-L95
55
+ // ref: https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L368-L370
56
+ // ref: https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L72-L75
57
+ if (specifier.startsWith('~'))
58
+ specifier = specifier.slice(1);
59
+ for (const resolver of resolvers) {
60
+ const specifierVariants = resolver === sassLoaderResolver
61
+ ? // Support partial import for sass
62
+ // https://sass-lang.com/documentation/at-rules/import#partials
63
+ // https://github.com/webpack-contrib/sass-loader/blob/0e9494074f69a6b6d47efea6c083a02a31a5ae84/test/sass/import-with-underscore.sass
64
+ [join(dirname(specifier), '_' + basename(specifier)), specifier]
65
+ : [specifier];
66
+ for (const specifierVariant of specifierVariants) {
67
+ try {
68
+ const resolved = resolver(dirname(options.request), specifierVariant);
69
+ if (resolved !== false) {
70
+ const isExists = await exists(resolved);
71
+ if (isExists)
72
+ return resolved;
73
+ }
74
+ }
75
+ catch (e) {
76
+ // noop
77
+ }
61
78
  }
62
79
  }
63
- catch (e) {
64
- // noop
65
- }
66
- }
67
- return false;
80
+ return false;
81
+ };
68
82
  };
69
83
  //# sourceMappingURL=webpack-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webpack-resolver.js","sourceRoot":"","sources":["../../src/resolver/webpack-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;IACpD,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,gDAAgD;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;IAC3C,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IAC3B,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;IACrD,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;IAC5C,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;IACrC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IACtC,YAAY,EAAE,CAAC,mBAAmB,CAAC;IACnC,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;IACrD,cAAc,EAAE,MAAM;IACtB,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;IAC5C,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAmB,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACtF,0BAA0B;IAC1B,qHAAqH;IACrH,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9D,gHAAgH;IAChH,kHAAkH;IAClH,MAAM,SAAS,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAC9E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,IAAI;YACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;YAC/D,IAAI,QAAQ,KAAK,KAAK,EAAE;gBACtB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAC;aAC/B;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;SACR;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"webpack-resolver.js","sourceRoot":"","sources":["../../src/resolver/webpack-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { createFixtures, getFixturePath } from '../test/util.js';
2
2
  import { createWebpackResolver } from './webpack-resolver.js';
3
- const webpackResolver = createWebpackResolver();
4
- const request = getFixturePath('/test/1.css');
5
- test('resolves specifier with webpack mechanism', async () => {
3
+ test('resolves specifier with css-loader mechanism', async () => {
4
+ const webpackResolver = createWebpackResolver();
5
+ const request = getFixturePath('/test/1.css');
6
6
  createFixtures({
7
7
  '/node_modules/package-1/index.css': `.a {}`,
8
8
  '/node_modules/package-2/index.css': `.a {}`,
@@ -11,8 +11,6 @@ test('resolves specifier with webpack mechanism', async () => {
11
11
  '/node_modules/package-4/style.css': `.a {}`,
12
12
  '/node_modules/@scoped/package-5/index.css': `.a {}`,
13
13
  '/node_modules/package-6/index.css': `.a {}`,
14
- '/node_modules/package-7/index.scss': `.a { dummy: ''; }`,
15
- '/node_modules/package-8/index.less': `.a { dummy: ''; }`,
16
14
  });
17
15
  expect(await webpackResolver('~package-1/index.css', { request })).toBe(getFixturePath('/node_modules/package-1/index.css'));
18
16
  expect(await webpackResolver('~package-2', { request })).toBe(getFixturePath('/node_modules/package-2/index.css'));
@@ -20,7 +18,36 @@ test('resolves specifier with webpack mechanism', async () => {
20
18
  expect(await webpackResolver('~package-4', { request })).toBe(getFixturePath('/node_modules/package-4/style.css'));
21
19
  expect(await webpackResolver('~@scoped/package-5/index.css', { request })).toBe(getFixturePath('/node_modules/@scoped/package-5/index.css'));
22
20
  expect(await webpackResolver('package-6/index.css', { request })).toBe(getFixturePath('/node_modules/package-6/index.css'));
23
- expect(await webpackResolver('~package-7', { request })).toBe(getFixturePath('/node_modules/package-7/index.scss'));
24
- expect(await webpackResolver('~package-8', { request })).toBe(getFixturePath('/node_modules/package-8/index.less'));
21
+ });
22
+ test('resolves specifier with sass-loader mechanism', async () => {
23
+ const webpackResolver = createWebpackResolver({ sassLoadPaths: [getFixturePath('/test/styles')] });
24
+ const request = getFixturePath('/test/1.scss');
25
+ createFixtures({
26
+ '/node_modules/package-1/index.scss': `.a {}`,
27
+ '/test/styles/load-paths.scss': `.a {}`,
28
+ '/test/_partial-import.scss': `.a {}`,
29
+ });
30
+ expect(await webpackResolver('~package-1/index.scss', { request })).toBe(getFixturePath('/node_modules/package-1/index.scss'));
31
+ expect(await webpackResolver('~package-1', { request })).toBe(getFixturePath('/node_modules/package-1/index.scss'));
32
+ // ref: https://github.com/webpack-contrib/sass-loader/blob/bed9fb5799a90020d43f705ea405f85b368621d7/test/scss/import-include-paths.scss#L1
33
+ expect(await webpackResolver('load-paths', { request })).toBe(getFixturePath('/test/styles/load-paths.scss'));
34
+ // https://sass-lang.com/documentation/at-rules/import#partials
35
+ // https://github.com/webpack-contrib/sass-loader/blob/0e9494074f69a6b6d47efea6c083a02a31a5ae84/test/sass/import-with-underscore.sass
36
+ expect(await webpackResolver('partial-import', { request: getFixturePath('/test/1.scss') })).toBe(getFixturePath('/test/_partial-import.scss'));
37
+ expect(await webpackResolver('test/partial-import', { request: getFixturePath('/test') })).toBe(getFixturePath('/test/_partial-import.scss'));
38
+ });
39
+ test('resolves specifier with less-loader mechanism', async () => {
40
+ const webpackResolver = createWebpackResolver({ lessIncludePaths: [getFixturePath('/test/styles')] });
41
+ const request = getFixturePath('/test/1.less');
42
+ createFixtures({
43
+ '/node_modules/package-1/index.less': `.a {}`,
44
+ '/test/styles/include-paths.less': `.a {}`,
45
+ });
46
+ expect(await webpackResolver('~package-1/index.less', { request })).toBe(getFixturePath('/node_modules/package-1/index.less'));
47
+ expect(await webpackResolver('~package-1', { request })).toBe(getFixturePath('/node_modules/package-1/index.less'));
48
+ // ref: https://github.com/webpack-contrib/less-loader/blob/81a0d27eb6d18e5dc550a60fc1007fdc77305b78/test/loader.test.js#L248-L253
49
+ // ref: https://github.com/webpack-contrib/less-loader/blob/393147064672ace986ec84aca21f69f0ab819a9c/test/fixtures/import-paths.less#L1
50
+ // ref: https://github.com/webpack-contrib/less-loader/blob/99d80bd290dae50375db6e17c5f56ec33754e258/test/helpers/getCodeFromLess.js#L47-L54
51
+ expect(await webpackResolver('include-paths', { request })).toBe(getFixturePath('/test/styles/include-paths.less'));
25
52
  });
26
53
  //# sourceMappingURL=webpack-resolver.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webpack-resolver.test.js","sourceRoot":"","sources":["../../src/resolver/webpack-resolver.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAC;AAChD,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE9C,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;IAC3D,cAAc,CAAC;QACb,mCAAmC,EAAE,OAAO;QAC5C,mCAAmC,EAAE,OAAO;QAC5C,mCAAmC,EAAE,OAAO;QAC5C,sCAAsC,EAAE,4BAA4B;QACpE,mCAAmC,EAAE,OAAO;QAC5C,2CAA2C,EAAE,OAAO;QACpD,mCAAmC,EAAE,OAAO;QAC5C,oCAAoC,EAAE,mBAAmB;QACzD,oCAAoC,EAAE,mBAAmB;KAC1D,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,eAAe,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACrE,cAAc,CAAC,mCAAmC,CAAC,CACpD,CAAC;IACF,MAAM,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACnH,MAAM,CAAC,MAAM,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACpH,MAAM,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACnH,MAAM,CAAC,MAAM,eAAe,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAC7E,cAAc,CAAC,2CAA2C,CAAC,CAC5D,CAAC;IACF,MAAM,CAAC,MAAM,eAAe,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACpE,cAAc,CAAC,mCAAmC,CAAC,CACpD,CAAC;IACF,MAAM,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACpH,MAAM,CAAC,MAAM,eAAe,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,oCAAoC,CAAC,CAAC,CAAC;AACtH,CAAC,CAAC,CAAC"}
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 CHANGED
@@ -12,6 +12,18 @@ export interface RunnerOptions {
12
12
  declarationMap?: boolean | undefined;
13
13
  transformer?: Transformer | undefined;
14
14
  resolver?: Resolver | undefined;
15
+ /**
16
+ * The option compatible with sass's `--load-path`. It is an array of relative or absolute paths.
17
+ * @example ['src/styles']
18
+ * @example ['/home/user/repository/src/styles']
19
+ */
20
+ sassLoadPaths?: string[] | undefined;
21
+ /**
22
+ * The option compatible with less's `--include-path`. It is an array of relative or absolute paths.
23
+ * @example ['src/styles']
24
+ * @example ['/home/user/repository/src/styles']
25
+ */
26
+ lessIncludePaths?: string[] | undefined;
15
27
  /**
16
28
  * Silent output. Do not show "files written" messages.
17
29
  * @default false
package/dist/runner.js CHANGED
@@ -7,23 +7,26 @@ import AggregateError from 'es-aggregate-error';
7
7
  import _glob from 'glob';
8
8
  import { emitGeneratedFiles } from './emitter/index.js';
9
9
  import { Loader } from './loader/index.js';
10
+ import { createDefaultResolver } from './resolver/index.js';
10
11
  import { isMatchByGlob } from './util.js';
11
12
  const glob = util.promisify(_glob);
12
13
  export async function run(options) {
13
- var _a;
14
- const loader = new Loader({ transformer: options.transformer, resolver: options.resolver });
14
+ const cwd = options.cwd ?? process.cwd();
15
+ const silent = options.silent ?? false;
16
+ const sassLoadPaths = options.sassLoadPaths?.map((path) => resolve(cwd, path));
17
+ const lessIncludePaths = options.lessIncludePaths?.map((path) => resolve(cwd, path));
18
+ const resolver = options.resolver ?? createDefaultResolver({ sassLoadPaths, lessIncludePaths });
15
19
  const distOptions = options.outDir
16
20
  ? {
17
- rootDir: process.cwd(),
21
+ rootDir: cwd,
18
22
  outDir: options.outDir,
19
23
  }
20
24
  : undefined;
25
+ const loader = new Loader({ transformer: options.transformer, resolver });
21
26
  const isExternalFile = (filePath) => {
22
- var _a;
23
- return !isMatchByGlob(filePath, options.pattern, { cwd: (_a = options.cwd) !== null && _a !== void 0 ? _a : process.cwd() });
27
+ return !isMatchByGlob(filePath, options.pattern, { cwd });
24
28
  };
25
29
  async function processFile(filePath) {
26
- var _a, _b;
27
30
  try {
28
31
  const result = await loader.load(filePath);
29
32
  await emitGeneratedFiles({
@@ -34,8 +37,8 @@ export async function run(options) {
34
37
  dtsFormatOptions: {
35
38
  localsConvention: options.localsConvention,
36
39
  },
37
- silent: (_a = options.silent) !== null && _a !== void 0 ? _a : false,
38
- cwd: (_b = options.cwd) !== null && _b !== void 0 ? _b : process.cwd(),
40
+ silent,
41
+ cwd,
39
42
  isExternalFile,
40
43
  });
41
44
  }
@@ -46,13 +49,12 @@ export async function run(options) {
46
49
  }
47
50
  }
48
51
  if (options.watch) {
49
- if (!options.silent)
52
+ if (!silent)
50
53
  console.log('Watch ' + options.pattern + '...');
51
- const watcher = chokidar.watch([options.pattern.replace(/\\/g, '/')], options.cwd ? { cwd: options.cwd } : {});
54
+ const watcher = chokidar.watch([options.pattern.replace(/\\/g, '/')], { cwd });
52
55
  watcher.on('all', (eventName, filePath) => {
53
- var _a;
54
56
  if (eventName === 'add' || eventName === 'change') {
55
- processFile(resolve((_a = options.cwd) !== null && _a !== void 0 ? _a : process.cwd(), filePath)).catch(() => {
57
+ processFile(resolve(cwd, filePath)).catch(() => {
56
58
  // TODO: Emit a error by `Watcher#onerror`
57
59
  });
58
60
  }
@@ -60,9 +62,9 @@ export async function run(options) {
60
62
  return { close: async () => watcher.close() };
61
63
  }
62
64
  else {
63
- const filePaths = (await glob(options.pattern, { dot: true, cwd: (_a = options.cwd) !== null && _a !== void 0 ? _a : process.cwd() }))
65
+ const filePaths = (await glob(options.pattern, { dot: true, cwd }))
64
66
  // convert relative path to absolute path
65
- .map((file) => { var _a; return resolve((_a = options.cwd) !== null && _a !== void 0 ? _a : process.cwd(), file); });
67
+ .map((file) => resolve(cwd, file));
66
68
  // TODO: Use `@file-cache/core` to process only files that have changed
67
69
  const errors = [];
68
70
  for (const filePath of filePaths) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAkCnC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAsB;;IAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5F,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM;QAChC,CAAC,CAAC;YACE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB;QACH,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,EAAE;;QAC1C,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEF,KAAK,UAAU,WAAW,CAAC,QAAgB;;QACzC,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,kBAAkB,CAAC;gBACvB,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW;gBACX,kBAAkB,EAAE,OAAO,CAAC,cAAc;gBAC1C,gBAAgB,EAAE;oBAChB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;iBAC3C;gBACD,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK;gBAC/B,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE;gBACjC,cAAc;aACf,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,qEAAqE;YACrE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/G,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;;YACxC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,QAAQ,EAAE;gBACjD,WAAW,CAAC,OAAO,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACtE,0CAA0C;gBAC5C,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;KAC/C;SAAM;QACL,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/F,yCAAyC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,OAAO,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC;QAE9D,uEAAuE;QACvE,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;KACpF;AACH,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,13 @@ const defaultOptions = {
13
13
  silent: true,
14
14
  cwd: getFixturePath('/'),
15
15
  };
16
+ // Exit the watcher even if the test fails
17
+ let watcher;
18
+ afterEach(async () => {
19
+ if (watcher) {
20
+ await watcher.close();
21
+ }
22
+ });
16
23
  test('generates .d.ts and .d.ts.map', async () => {
17
24
  createFixtures({
18
25
  '/test/1.css': '.a {}',
@@ -45,14 +52,13 @@ test('watches for changes in files', async () => {
45
52
  createFixtures({
46
53
  '/test': {}, // empty directory
47
54
  });
48
- const watcher = await run({ ...defaultOptions, watch: true });
55
+ watcher = await run({ ...defaultOptions, watch: true });
49
56
  await writeFile(getFixturePath('/test/1.css'), '.a-1 {}');
50
57
  await waitForAsyncTask(500); // Wait until the file is written
51
58
  expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatch(/a-1/);
52
59
  await writeFile(getFixturePath('/test/1.css'), '.a-2 {}');
53
60
  await waitForAsyncTask(500); // Wait until the file is written
54
61
  expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatch(/a-2/);
55
- await watcher.close();
56
62
  });
57
63
  test('returns an error if the file fails to process in non-watch mode', async () => {
58
64
  createFixtures({
@@ -99,15 +105,39 @@ describe('handles external files', () => {
99
105
  test('treats imported tokens from external files the same as local tokens', async () => {
100
106
  await run({ ...defaultOptions });
101
107
  expect(await readFile(getFixturePath('/test/1.css.d.ts'), 'utf8')).toMatchInlineSnapshot(`
102
- "declare const styles:
103
- & Readonly<Pick<(typeof import("./2.css"))["default"], "b">>
104
- & Readonly<{ "c": string }>
105
- & Readonly<{ "a": string }>
106
- ;
107
- export default styles;
108
- //# sourceMappingURL=./1.css.d.ts.map
109
- "
110
- `);
108
+ "declare const styles:
109
+ & Readonly<Pick<(typeof import("./2.css"))["default"], "b">>
110
+ & Readonly<{ "c": string }>
111
+ & Readonly<{ "a": string }>
112
+ ;
113
+ export default styles;
114
+ //# sourceMappingURL=./1.css.d.ts.map
115
+ "
116
+ `);
117
+ });
118
+ });
119
+ test('sassLoadPaths', async () => {
120
+ const sassLoadPaths = ['test/relative', getFixturePath('/test/absolute')];
121
+ createFixtures({
122
+ '/test/1.scss': dedent `
123
+ @import '2.scss';
124
+ @import '3.scss';
125
+ `,
126
+ '/test/relative/2.scss': `.a { dummy: ''; }`,
127
+ '/test/absolute/3.scss': `.b { dummy: ''; }`,
128
+ });
129
+ await run({ ...defaultOptions, sassLoadPaths }); // not throw
130
+ });
131
+ test('lessIncludePaths', async () => {
132
+ const lessIncludePaths = ['test/relative', getFixturePath('/test/absolute')];
133
+ createFixtures({
134
+ '/test/1.less': dedent `
135
+ @import '2.less';
136
+ @import '3.less';
137
+ `,
138
+ '/test/relative/2.less': `.a { dummy: ''; }`,
139
+ '/test/absolute/3.less': `.b { dummy: ''; }`,
111
140
  });
141
+ await run({ ...defaultOptions, lessIncludePaths }); // not throw
112
142
  });
113
143
  //# sourceMappingURL=runner.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../src/runner.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../src/runner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,gEAAgE;AAChE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAElF,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,sBAAsB;IAC/B,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC;CACzB,CAAC;AAEF,0CAA0C;AAC1C,IAAI,OAA4B,CAAC;AACjC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,IAAI,OAAO,EAAE;QACX,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;KACvB;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;IAC/C,cAAc,CAAC;QACb,aAAa,EAAE,OAAO;QACtB,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACrF,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACzF,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACrF,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;AAC3F,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAC9D,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;IAC1E,cAAc,CAAC;QACb,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1F,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnG,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IACtC,cAAc,CAAC;QACb,cAAc,EAAE,mBAAmB;KACpC,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACtF,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;AAC5F,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;IAC9C,cAAc,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,kBAAkB;KAChC,CAAC,CAAC;IACH,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,MAAM,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;IAC9D,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAElF,MAAM,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;IAC9D,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;IACjF,cAAc,CAAC;QACb,aAAa,EAAE,OAAO;QACtB,aAAa,EAAE,gBAAgB;QAC/B,aAAa,EAAE,gBAAgB;KAChC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAElF,iDAAiD;IACjD,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,UAA4B,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,yCAAyC,CAAC,CAAC;IACzF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,yCAAyC,CAAC,CAAC;IAEzF,wCAAwC;IACxC,MAAM,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACjD,qEAAqE;IACrE,MAAM,CAAC,eAAe,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,qEAAqE;IACrE,MAAM,CAAC,eAAe,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,+BAA+B;IAC/B,MAAM,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AACH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,CAAC;YACb,aAAa,EAAE,MAAM,CAAA;;;;OAIpB;YACD,aAAa,EAAE,OAAO;YACtB,0CAA0C,EAAE,OAAO;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;OAStF,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAC/B,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1E,cAAc,CAAC;QACb,cAAc,EAAE,MAAM,CAAA;;;KAGrB;QACD,uBAAuB,EAAE,mBAAmB;QAC5C,uBAAuB,EAAE,mBAAmB;KAC7C,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,YAAY;AAC/D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;IAClC,MAAM,gBAAgB,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7E,cAAc,CAAC;QACb,cAAc,EAAE,MAAM,CAAA;;;KAGrB;QACD,uBAAuB,EAAE,mBAAmB;QAC5C,uBAAuB,EAAE,mBAAmB;KAC7C,CAAC,CAAC;IACH,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,YAAY;AAClE,CAAC,CAAC,CAAC"}
@@ -18,10 +18,14 @@ declare type Definition = {
18
18
  offset: number;
19
19
  };
20
20
  };
21
- export declare function getIdentifierDefinitions(filePath: string, identifier: string): Promise<Definition[]>;
22
- export declare function getMultipleIdentifierDefinitions(filePath: string, identifiers: string[]): Promise<{
23
- identifier: string;
24
- definitions: Definition[];
25
- }[]>;
26
- export declare function getModuleDefinitions(filePath: string): Promise<Definition[]>;
21
+ export declare function createTSServer(): Promise<{
22
+ getIdentifierDefinitions(filePath: string, identifier: string): Promise<Definition[]>;
23
+ getMultipleIdentifierDefinitions(filePath: string, identifiers: string[]): Promise<{
24
+ identifier: string;
25
+ definitions: Definition[];
26
+ }[]>;
27
+ getModuleDefinitions(filePath: string): Promise<Definition[]>;
28
+ refreshCache(): Promise<void>;
29
+ exit: () => Promise<void>;
30
+ }>;
27
31
  export {};