@css-modules-kit/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/checker.d.ts +7 -0
- package/dist/checker.d.ts.map +1 -0
- package/dist/checker.js +46 -0
- package/dist/checker.js.map +1 -0
- package/dist/config.d.ts +101 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +200 -0
- package/dist/config.js.map +1 -0
- package/dist/diagnostic.d.ts +34 -0
- package/dist/diagnostic.d.ts.map +1 -0
- package/dist/diagnostic.js +3 -0
- package/dist/diagnostic.js.map +1 -0
- package/dist/dts-creator.d.ts +56 -0
- package/dist/dts-creator.d.ts.map +1 -0
- package/dist/dts-creator.js +95 -0
- package/dist/dts-creator.js.map +1 -0
- package/dist/error.d.ts +8 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +18 -0
- package/dist/error.js.map +1 -0
- package/dist/export-builder.d.ts +23 -0
- package/dist/export-builder.d.ts.map +1 -0
- package/dist/export-builder.js +34 -0
- package/dist/export-builder.js.map +1 -0
- package/dist/external-file.d.ts +2 -0
- package/dist/external-file.d.ts.map +1 -0
- package/dist/external-file.js +3 -0
- package/dist/external-file.js.map +1 -0
- package/dist/file.d.ts +28 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +73 -0
- package/dist/file.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/language-plugin.d.ts +23 -0
- package/dist/language-plugin.d.ts.map +1 -0
- package/dist/language-plugin.js +73 -0
- package/dist/language-plugin.js.map +1 -0
- package/dist/parser/at-import-parser.d.ts +14 -0
- package/dist/parser/at-import-parser.d.ts.map +1 -0
- package/dist/parser/at-import-parser.js +47 -0
- package/dist/parser/at-import-parser.js.map +1 -0
- package/dist/parser/at-value-parser.d.ts +44 -0
- package/dist/parser/at-value-parser.d.ts.map +1 -0
- package/dist/parser/at-value-parser.js +147 -0
- package/dist/parser/at-value-parser.js.map +1 -0
- package/dist/parser/css-module-parser.d.ts +93 -0
- package/dist/parser/css-module-parser.d.ts.map +1 -0
- package/dist/parser/css-module-parser.js +96 -0
- package/dist/parser/css-module-parser.js.map +1 -0
- package/dist/parser/diagnostic.d.ts +34 -0
- package/dist/parser/diagnostic.d.ts.map +1 -0
- package/dist/parser/diagnostic.js +3 -0
- package/dist/parser/diagnostic.js.map +1 -0
- package/dist/parser/location.d.ts +34 -0
- package/dist/parser/location.d.ts.map +1 -0
- package/dist/parser/location.js +9 -0
- package/dist/parser/location.js.map +1 -0
- package/dist/parser/rule-parser.d.ts +19 -0
- package/dist/parser/rule-parser.d.ts.map +1 -0
- package/dist/parser/rule-parser.js +122 -0
- package/dist/parser/rule-parser.js.map +1 -0
- package/dist/path.d.ts +11 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +43 -0
- package/dist/path.js.map +1 -0
- package/dist/resolver.d.ts +13 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +50 -0
- package/dist/resolver.js.map +1 -0
- package/dist/semantic-builder.d.ts +23 -0
- package/dist/semantic-builder.d.ts.map +1 -0
- package/dist/semantic-builder.js +33 -0
- package/dist/semantic-builder.js.map +1 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +7 -0
- package/dist/util.js.map +1 -0
- package/package.json +54 -0
- package/src/checker.ts +66 -0
- package/src/config.ts +285 -0
- package/src/diagnostic.ts +37 -0
- package/src/dts-creator.ts +128 -0
- package/src/error.ts +13 -0
- package/src/export-builder.ts +51 -0
- package/src/file.ts +83 -0
- package/src/index.ts +38 -0
- package/src/parser/at-import-parser.ts +47 -0
- package/src/parser/at-value-parser.ts +177 -0
- package/src/parser/css-module-parser.ts +193 -0
- package/src/parser/location.ts +43 -0
- package/src/parser/rule-parser.ts +140 -0
- package/src/path.ts +40 -0
- package/src/resolver.ts +57 -0
- package/src/typing/typescript.d.ts +19 -0
- package/src/util.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAS;IACb,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAND,kCAMC;AAED,MAAa,yBAA0B,SAAQ,WAAW;IACxD;QACE,KAAK,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;IAC1D,CAAC;CACF;AAJD,8DAIC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { MatchesPattern } from './file.js';
|
|
2
|
+
import type { CSSModule } from './parser/css-module-parser.js';
|
|
3
|
+
import type { Resolver } from './resolver.js';
|
|
4
|
+
export interface ExportBuilderHost {
|
|
5
|
+
matchesPattern: MatchesPattern;
|
|
6
|
+
getCSSModule: (path: string) => CSSModule | undefined;
|
|
7
|
+
resolver: Resolver;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The export token record of a CSS module.
|
|
11
|
+
*/
|
|
12
|
+
export interface ExportRecord {
|
|
13
|
+
/** The all exported tokens of the CSS module. */
|
|
14
|
+
allTokens: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface ExportBuilder {
|
|
17
|
+
build(cssModule: CSSModule): ExportRecord;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A builder for exported token records of CSS modules.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createExportBuilder(host: ExportBuilderHost): ExportBuilder;
|
|
23
|
+
//# sourceMappingURL=export-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-builder.d.ts","sourceRoot":"","sources":["../src/export-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IACtD,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC;CAC3C;AAED;;GAEG;AAIH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa,CAsB1E"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createExportBuilder = createExportBuilder;
|
|
4
|
+
/**
|
|
5
|
+
* A builder for exported token records of CSS modules.
|
|
6
|
+
*/
|
|
7
|
+
// TODO: Add cache
|
|
8
|
+
// TODO: Add support for circular dependencies
|
|
9
|
+
// TODO: Handle same token name from different modules
|
|
10
|
+
function createExportBuilder(host) {
|
|
11
|
+
function build(cssModule) {
|
|
12
|
+
const result = { allTokens: [...cssModule.localTokens.map((t) => t.name)] };
|
|
13
|
+
for (const tokenImporter of cssModule.tokenImporters) {
|
|
14
|
+
const from = host.resolver(tokenImporter.from, { request: cssModule.fileName });
|
|
15
|
+
if (!from || !host.matchesPattern(from))
|
|
16
|
+
continue;
|
|
17
|
+
const imported = host.getCSSModule(from);
|
|
18
|
+
if (!imported)
|
|
19
|
+
continue;
|
|
20
|
+
const importedResult = build(imported);
|
|
21
|
+
if (tokenImporter.type === 'import') {
|
|
22
|
+
result.allTokens.push(...importedResult.allTokens);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
for (const value of tokenImporter.values) {
|
|
26
|
+
result.allTokens.push(value.name);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
return { build };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=export-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-builder.js","sourceRoot":"","sources":["../src/export-builder.ts"],"names":[],"mappings":";;AA4BA,kDAsBC;AA5BD;;GAEG;AACH,kBAAkB;AAClB,8CAA8C;AAC9C,sDAAsD;AACtD,SAAgB,mBAAmB,CAAC,IAAuB;IACzD,SAAS,KAAK,CAAC,SAAoB;QACjC,MAAM,MAAM,GAAiB,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE1F,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;oBACzC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-file.d.ts","sourceRoot":"","sources":["../src/external-file.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-file.js","sourceRoot":"","sources":["../src/external-file.ts"],"names":[],"mappings":""}
|
package/dist/file.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const CSS_MODULE_EXTENSION = ".module.css";
|
|
2
|
+
export declare function isCSSModuleFile(fileName: string): boolean;
|
|
3
|
+
export declare function getCssModuleFileName(tsFileName: string): string;
|
|
4
|
+
export declare function isComponentFileName(fileName: string): boolean;
|
|
5
|
+
export declare function findComponentFile(cssModuleFileName: string, readFile: (path: string) => Promise<string>): Promise<{
|
|
6
|
+
fileName: string;
|
|
7
|
+
text: string;
|
|
8
|
+
} | undefined>;
|
|
9
|
+
export type MatchesPattern = (fileName: string) => boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Create a function that checks whether the given file name matches the pattern.
|
|
12
|
+
* This does not access the file system.
|
|
13
|
+
* @param options
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare function createMatchesPattern(options: {
|
|
17
|
+
includes: string[];
|
|
18
|
+
excludes: string[];
|
|
19
|
+
}): MatchesPattern;
|
|
20
|
+
/**
|
|
21
|
+
* Get files matched by the pattern.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getFileNamesByPattern(options: {
|
|
24
|
+
basePath: string;
|
|
25
|
+
includes: string[];
|
|
26
|
+
excludes: string[];
|
|
27
|
+
}): string[];
|
|
28
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAGlD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,wBAAsB,iBAAiB,CACrC,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC1C,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAazD;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,cAAc,CAwBxG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAOrH"}
|
package/dist/file.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CSS_MODULE_EXTENSION = void 0;
|
|
7
|
+
exports.isCSSModuleFile = isCSSModuleFile;
|
|
8
|
+
exports.getCssModuleFileName = getCssModuleFileName;
|
|
9
|
+
exports.isComponentFileName = isComponentFileName;
|
|
10
|
+
exports.findComponentFile = findComponentFile;
|
|
11
|
+
exports.createMatchesPattern = createMatchesPattern;
|
|
12
|
+
exports.getFileNamesByPattern = getFileNamesByPattern;
|
|
13
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
14
|
+
const path_js_1 = require("./path.js");
|
|
15
|
+
exports.CSS_MODULE_EXTENSION = '.module.css';
|
|
16
|
+
const COMPONENT_EXTENSIONS = ['.tsx', '.jsx'];
|
|
17
|
+
function isCSSModuleFile(fileName) {
|
|
18
|
+
return fileName.endsWith(exports.CSS_MODULE_EXTENSION);
|
|
19
|
+
}
|
|
20
|
+
function getCssModuleFileName(tsFileName) {
|
|
21
|
+
const { dir, name } = (0, path_js_1.parse)(tsFileName);
|
|
22
|
+
return (0, path_js_1.join)(dir, `${name}${exports.CSS_MODULE_EXTENSION}`);
|
|
23
|
+
}
|
|
24
|
+
function isComponentFileName(fileName) {
|
|
25
|
+
// NOTE: Do not check whether it is an upper camel case or not, since lower camel case (e.g. `page.tsx`) is used in Next.js.
|
|
26
|
+
return COMPONENT_EXTENSIONS.some((ext) => fileName.endsWith(ext));
|
|
27
|
+
}
|
|
28
|
+
async function findComponentFile(cssModuleFileName, readFile) {
|
|
29
|
+
const pathWithoutExtension = cssModuleFileName.slice(0, -exports.CSS_MODULE_EXTENSION.length);
|
|
30
|
+
for (const path of COMPONENT_EXTENSIONS.map((ext) => pathWithoutExtension + ext)) {
|
|
31
|
+
try {
|
|
32
|
+
// TODO: Cache the result of readFile
|
|
33
|
+
// eslint-disable-next-line no-await-in-loop
|
|
34
|
+
const text = await readFile(path);
|
|
35
|
+
return { fileName: path, text };
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a function that checks whether the given file name matches the pattern.
|
|
45
|
+
* This does not access the file system.
|
|
46
|
+
* @param options
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
function createMatchesPattern(options) {
|
|
50
|
+
// Setup utilities to check for pattern matches without accessing the file system
|
|
51
|
+
const realpath = (path) => path;
|
|
52
|
+
const getFileSystemEntries = (path) => {
|
|
53
|
+
return {
|
|
54
|
+
files: [path],
|
|
55
|
+
directories: [],
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
return (fileName) => {
|
|
59
|
+
const matchedFileNames = typescript_1.default.matchFiles(fileName, [exports.CSS_MODULE_EXTENSION], options.excludes, options.includes, typescript_1.default.sys.useCaseSensitiveFileNames, '', // `fileName`, `includes`, and `excludes` are absolute paths, so `currentDirectory` is not needed.
|
|
60
|
+
undefined, getFileSystemEntries, realpath);
|
|
61
|
+
return matchedFileNames.length > 0;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get files matched by the pattern.
|
|
66
|
+
*/
|
|
67
|
+
function getFileNamesByPattern(options) {
|
|
68
|
+
// ref: https://github.com/microsoft/TypeScript/blob/caf1aee269d1660b4d2a8b555c2d602c97cb28d7/src/compiler/commandLineParser.ts#L3929
|
|
69
|
+
// MEMO: `ts.sys.readDirectory` catch errors internally. So we don't need to wrap with try-catch.
|
|
70
|
+
// https://github.com/microsoft/TypeScript/blob/caf1aee269d1660b4d2a8b555c2d602c97cb28d7/src/compiler/sys.ts#L1877-L1879
|
|
71
|
+
return typescript_1.default.sys.readDirectory(options.basePath, [exports.CSS_MODULE_EXTENSION], options.excludes, options.includes);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=file.js.map
|
package/dist/file.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":";;;;;;AAMA,0CAEC;AAED,oDAGC;AAED,kDAGC;AAED,8CAgBC;AAUD,oDAwBC;AAKD,sDAOC;AAlFD,4DAA4B;AAC5B,uCAAwC;AAE3B,QAAA,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,QAAQ,CAAC,QAAQ,CAAC,4BAAoB,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,oBAAoB,CAAC,UAAkB;IACrD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAA,eAAK,EAAC,UAAU,CAAC,CAAC;IACxC,OAAO,IAAA,cAAI,EAAC,GAAG,EAAE,GAAG,IAAI,GAAG,4BAAoB,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,4HAA4H;IAC5H,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,iBAAyB,EACzB,QAA2C;IAE3C,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,4BAAoB,CAAC,MAAM,CAAC,CAAC;IACtF,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC;YACH,qCAAqC;YACrC,4CAA4C;YAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAID;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,OAAmD;IACtF,iFAAiF;IACjF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC;IACxC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAwB,EAAE;QAClE,OAAO;YACL,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CAAC,QAAgB,EAAE,EAAE;QAC1B,MAAM,gBAAgB,GAAG,oBAAE,CAAC,UAAU,CACpC,QAAQ,EACR,CAAC,4BAAoB,CAAC,EACtB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,QAAQ,EAChB,oBAAE,CAAC,GAAG,CAAC,yBAAyB,EAChC,EAAE,EAAE,kGAAkG;QACtG,SAAS,EACT,oBAAoB,EACpB,QAAQ,CACT,CAAC;QACF,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAqE;IACzG,qIAAqI;IAErI,iGAAiG;IACjG,wHAAwH;IAExH,OAAO,oBAAE,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,4BAAoB,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5G,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type { CMKConfig } from './config.js';
|
|
2
|
+
export { readConfigFile } from './config.js';
|
|
3
|
+
export { TsConfigFileNotFoundError, SystemError } from './error.js';
|
|
4
|
+
export { parseCSSModule, type ParseCSSModuleOptions, type CSSModule, type Token, type AtImportTokenImporter, type TokenImporter, type AtValueTokenImporter, type AtValueTokenImporterValue, type ParseCSSModuleResult, } from './parser/css-module-parser.js';
|
|
5
|
+
export { type Location, type Position } from './parser/location.js';
|
|
6
|
+
export { parseRule } from './parser/rule-parser.js';
|
|
7
|
+
export { type Diagnostic, type SemanticDiagnostic, type SyntacticDiagnostic, type DiagnosticCategory, type DiagnosticPosition, } from './diagnostic.js';
|
|
8
|
+
export { type CreateDtsOptions, createDts, STYLES_EXPORT_NAME } from './dts-creator.js';
|
|
9
|
+
export { createResolver, type Resolver } from './resolver.js';
|
|
10
|
+
export { CSS_MODULE_EXTENSION, getCssModuleFileName, isComponentFileName, isCSSModuleFile, findComponentFile, type MatchesPattern, createMatchesPattern, getFileNamesByPattern, } from './file.js';
|
|
11
|
+
export { checkCSSModule } from './checker.js';
|
|
12
|
+
export { type ExportBuilder, createExportBuilder } from './export-builder.js';
|
|
13
|
+
export { join, resolve, relative, dirname, basename, parse, matchesGlob, isAbsolute } from './path.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,KAAK,cAAc,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAbsolute = exports.matchesGlob = exports.parse = exports.basename = exports.dirname = exports.relative = exports.resolve = exports.join = exports.createExportBuilder = exports.checkCSSModule = exports.getFileNamesByPattern = exports.createMatchesPattern = exports.findComponentFile = exports.isCSSModuleFile = exports.isComponentFileName = exports.getCssModuleFileName = exports.CSS_MODULE_EXTENSION = exports.createResolver = exports.STYLES_EXPORT_NAME = exports.createDts = exports.parseRule = exports.parseCSSModule = exports.SystemError = exports.TsConfigFileNotFoundError = exports.readConfigFile = void 0;
|
|
4
|
+
var config_js_1 = require("./config.js");
|
|
5
|
+
Object.defineProperty(exports, "readConfigFile", { enumerable: true, get: function () { return config_js_1.readConfigFile; } });
|
|
6
|
+
var error_js_1 = require("./error.js");
|
|
7
|
+
Object.defineProperty(exports, "TsConfigFileNotFoundError", { enumerable: true, get: function () { return error_js_1.TsConfigFileNotFoundError; } });
|
|
8
|
+
Object.defineProperty(exports, "SystemError", { enumerable: true, get: function () { return error_js_1.SystemError; } });
|
|
9
|
+
var css_module_parser_js_1 = require("./parser/css-module-parser.js");
|
|
10
|
+
Object.defineProperty(exports, "parseCSSModule", { enumerable: true, get: function () { return css_module_parser_js_1.parseCSSModule; } });
|
|
11
|
+
var rule_parser_js_1 = require("./parser/rule-parser.js");
|
|
12
|
+
Object.defineProperty(exports, "parseRule", { enumerable: true, get: function () { return rule_parser_js_1.parseRule; } });
|
|
13
|
+
var dts_creator_js_1 = require("./dts-creator.js");
|
|
14
|
+
Object.defineProperty(exports, "createDts", { enumerable: true, get: function () { return dts_creator_js_1.createDts; } });
|
|
15
|
+
Object.defineProperty(exports, "STYLES_EXPORT_NAME", { enumerable: true, get: function () { return dts_creator_js_1.STYLES_EXPORT_NAME; } });
|
|
16
|
+
var resolver_js_1 = require("./resolver.js");
|
|
17
|
+
Object.defineProperty(exports, "createResolver", { enumerable: true, get: function () { return resolver_js_1.createResolver; } });
|
|
18
|
+
var file_js_1 = require("./file.js");
|
|
19
|
+
Object.defineProperty(exports, "CSS_MODULE_EXTENSION", { enumerable: true, get: function () { return file_js_1.CSS_MODULE_EXTENSION; } });
|
|
20
|
+
Object.defineProperty(exports, "getCssModuleFileName", { enumerable: true, get: function () { return file_js_1.getCssModuleFileName; } });
|
|
21
|
+
Object.defineProperty(exports, "isComponentFileName", { enumerable: true, get: function () { return file_js_1.isComponentFileName; } });
|
|
22
|
+
Object.defineProperty(exports, "isCSSModuleFile", { enumerable: true, get: function () { return file_js_1.isCSSModuleFile; } });
|
|
23
|
+
Object.defineProperty(exports, "findComponentFile", { enumerable: true, get: function () { return file_js_1.findComponentFile; } });
|
|
24
|
+
Object.defineProperty(exports, "createMatchesPattern", { enumerable: true, get: function () { return file_js_1.createMatchesPattern; } });
|
|
25
|
+
Object.defineProperty(exports, "getFileNamesByPattern", { enumerable: true, get: function () { return file_js_1.getFileNamesByPattern; } });
|
|
26
|
+
var checker_js_1 = require("./checker.js");
|
|
27
|
+
Object.defineProperty(exports, "checkCSSModule", { enumerable: true, get: function () { return checker_js_1.checkCSSModule; } });
|
|
28
|
+
var export_builder_js_1 = require("./export-builder.js");
|
|
29
|
+
Object.defineProperty(exports, "createExportBuilder", { enumerable: true, get: function () { return export_builder_js_1.createExportBuilder; } });
|
|
30
|
+
var path_js_1 = require("./path.js");
|
|
31
|
+
Object.defineProperty(exports, "join", { enumerable: true, get: function () { return path_js_1.join; } });
|
|
32
|
+
Object.defineProperty(exports, "resolve", { enumerable: true, get: function () { return path_js_1.resolve; } });
|
|
33
|
+
Object.defineProperty(exports, "relative", { enumerable: true, get: function () { return path_js_1.relative; } });
|
|
34
|
+
Object.defineProperty(exports, "dirname", { enumerable: true, get: function () { return path_js_1.dirname; } });
|
|
35
|
+
Object.defineProperty(exports, "basename", { enumerable: true, get: function () { return path_js_1.basename; } });
|
|
36
|
+
Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return path_js_1.parse; } });
|
|
37
|
+
Object.defineProperty(exports, "matchesGlob", { enumerable: true, get: function () { return path_js_1.matchesGlob; } });
|
|
38
|
+
Object.defineProperty(exports, "isAbsolute", { enumerable: true, get: function () { return path_js_1.isAbsolute; } });
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,uCAAoE;AAA3D,qHAAA,yBAAyB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAC/C,sEAUuC;AATrC,sHAAA,cAAc,OAAA;AAWhB,0DAAoD;AAA3C,2GAAA,SAAS,OAAA;AAQlB,mDAAwF;AAAxD,2GAAA,SAAS,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAC7D,6CAA8D;AAArD,6GAAA,cAAc,OAAA;AACvB,qCASmB;AARjB,+GAAA,oBAAoB,OAAA;AACpB,+GAAA,oBAAoB,OAAA;AACpB,8GAAA,mBAAmB,OAAA;AACnB,0GAAA,eAAe,OAAA;AACf,4GAAA,iBAAiB,OAAA;AAEjB,+GAAA,oBAAoB,OAAA;AACpB,gHAAA,qBAAqB,OAAA;AAEvB,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AACvB,yDAA8E;AAAjD,wHAAA,mBAAmB,OAAA;AAChD,qCAAuG;AAA9F,+FAAA,IAAI,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,gGAAA,KAAK,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,qGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { LanguagePlugin, SourceScript, VirtualCode } from '@volar/language-core';
|
|
2
|
+
import type { HCMConfig } from './config.js';
|
|
3
|
+
import type { SyntacticDiagnostic } from './diagnostic.js';
|
|
4
|
+
import type { MatchesPattern } from './file.js';
|
|
5
|
+
import type { CSSModule } from './parser/css-module-parser.js';
|
|
6
|
+
import type { Resolver } from './resolver.js';
|
|
7
|
+
export declare const LANGUAGE_ID = "css-module";
|
|
8
|
+
export declare const HCM_DATA_KEY: unique symbol;
|
|
9
|
+
interface CSSModuleVirtualCode extends VirtualCode {
|
|
10
|
+
[HCM_DATA_KEY]: {
|
|
11
|
+
cssModule: CSSModule;
|
|
12
|
+
diagnostics: SyntacticDiagnostic[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface CSSModuleScript<T> extends SourceScript<T> {
|
|
16
|
+
generated: SourceScript<T>['generated'] & {
|
|
17
|
+
root: CSSModuleVirtualCode;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function createCSSModuleLanguagePlugin<T>(config: HCMConfig, resolver: Resolver, matchesPattern: MatchesPattern, asFileName: (scriptId: T) => string): LanguagePlugin<T, VirtualCode>;
|
|
21
|
+
export declare function isCSSModuleScript<T>(script: SourceScript<T> | undefined): script is CSSModuleScript<T>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=language-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-plugin.d.ts","sourceRoot":"","sources":["../src/language-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAO,MAAM,WAAW,eAAe,CAAC;AAExC,eAAO,MAAM,YAAY,eAAmC,CAAC;AAE7D,UAAU,oBAAqB,SAAQ,WAAW;IAChD,CAAC,YAAY,CAAC,EAAE;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACzD,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG;QACxC,IAAI,EAAE,oBAAoB,CAAC;KAC5B,CAAC;CACH;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAC7C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,MAAM,GAClC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAsDhC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAItG"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HCM_DATA_KEY = exports.LANGUAGE_ID = void 0;
|
|
7
|
+
exports.createCSSModuleLanguagePlugin = createCSSModuleLanguagePlugin;
|
|
8
|
+
exports.isCSSModuleScript = isCSSModuleScript;
|
|
9
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
10
|
+
const dts_creator_js_1 = require("./dts-creator.js");
|
|
11
|
+
const css_module_parser_js_1 = require("./parser/css-module-parser.js");
|
|
12
|
+
exports.LANGUAGE_ID = 'css-module';
|
|
13
|
+
exports.HCM_DATA_KEY = Symbol('honey-css-modules-data');
|
|
14
|
+
function createCSSModuleLanguagePlugin(config, resolver, matchesPattern, asFileName) {
|
|
15
|
+
return {
|
|
16
|
+
getLanguageId(scriptId) {
|
|
17
|
+
if (!matchesPattern(asFileName(scriptId)))
|
|
18
|
+
return undefined;
|
|
19
|
+
return exports.LANGUAGE_ID;
|
|
20
|
+
},
|
|
21
|
+
createVirtualCode(scriptId, languageId, snapshot) {
|
|
22
|
+
if (languageId !== exports.LANGUAGE_ID)
|
|
23
|
+
return undefined;
|
|
24
|
+
const length = snapshot.getLength();
|
|
25
|
+
const cssModuleCode = snapshot.getText(0, length);
|
|
26
|
+
const { cssModule, diagnostics } = (0, css_module_parser_js_1.parseCSSModule)(cssModuleCode, {
|
|
27
|
+
fileName: asFileName(scriptId),
|
|
28
|
+
dashedIdents: config.dashedIdents,
|
|
29
|
+
// The CSS in the process of being written in an editor often contains invalid syntax.
|
|
30
|
+
// So, ts-plugin uses a fault-tolerant Parser to parse CSS.
|
|
31
|
+
safe: true,
|
|
32
|
+
});
|
|
33
|
+
const { text, mapping, linkedCodeMapping } = (0, dts_creator_js_1.createDts)(cssModule, { resolver, matchesPattern });
|
|
34
|
+
return {
|
|
35
|
+
id: 'main',
|
|
36
|
+
languageId: exports.LANGUAGE_ID,
|
|
37
|
+
snapshot: {
|
|
38
|
+
getText: (start, end) => text.slice(start, end),
|
|
39
|
+
getLength: () => text.length,
|
|
40
|
+
getChangeRange: () => undefined,
|
|
41
|
+
},
|
|
42
|
+
// `mappings` are required to support "Go to Definition" and renaming
|
|
43
|
+
mappings: [{ ...mapping, data: { navigation: true } }],
|
|
44
|
+
// `linkedCodeMappings` are required to support "Go to Definition" and renaming for the imported tokens
|
|
45
|
+
linkedCodeMappings: [{ ...linkedCodeMapping, data: undefined }],
|
|
46
|
+
[exports.HCM_DATA_KEY]: {
|
|
47
|
+
cssModule,
|
|
48
|
+
diagnostics,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
typescript: {
|
|
53
|
+
extraFileExtensions: [
|
|
54
|
+
{
|
|
55
|
+
extension: 'css',
|
|
56
|
+
isMixedContent: true,
|
|
57
|
+
scriptKind: typescript_1.default.ScriptKind.TS,
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
getServiceScript(root) {
|
|
61
|
+
return {
|
|
62
|
+
code: root,
|
|
63
|
+
extension: typescript_1.default.Extension.Ts,
|
|
64
|
+
scriptKind: typescript_1.default.ScriptKind.TS,
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function isCSSModuleScript(script) {
|
|
71
|
+
return (!!script && script.languageId === exports.LANGUAGE_ID && !!script.generated?.root && exports.HCM_DATA_KEY in script.generated.root);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=language-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-plugin.js","sourceRoot":"","sources":["../src/language-plugin.ts"],"names":[],"mappings":";;;;;;AA4BA,sEA2DC;AAED,8CAIC;AA3FD,4DAA4B;AAG5B,qDAA6C;AAG7C,wEAA+D;AAGlD,QAAA,WAAW,GAAG,YAAY,CAAC;AAE3B,QAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAe7D,SAAgB,6BAA6B,CAC3C,MAAiB,EACjB,QAAkB,EAClB,cAA8B,EAC9B,UAAmC;IAEnC,OAAO;QACL,aAAa,CAAC,QAAQ;YACpB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC5D,OAAO,mBAAW,CAAC;QACrB,CAAC;QACD,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ;YAC9C,IAAI,UAAU,KAAK,mBAAW;gBAAE,OAAO,SAAS,CAAC;YAEjD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,qCAAc,EAAC,aAAa,EAAE;gBAC/D,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;gBAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,sFAAsF;gBACtF,2DAA2D;gBAC3D,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAA,0BAAS,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;YAChG,OAAO;gBACL,EAAE,EAAE,MAAM;gBACV,UAAU,EAAE,mBAAW;gBACvB,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;oBAC/C,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM;oBAC5B,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS;iBAChC;gBACD,qEAAqE;gBACrE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;gBACtD,uGAAuG;gBACvG,kBAAkB,EAAE,CAAC,EAAE,GAAG,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC/D,CAAC,oBAAY,CAAC,EAAE;oBACd,SAAS;oBACT,WAAW;iBACZ;aACF,CAAC;QACJ,CAAC;QACD,UAAU,EAAE;YACV,mBAAmB,EAAE;gBACnB;oBACE,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;oBACpB,UAAU,EAAE,oBAAE,CAAC,UAAU,CAAC,EAAE;iBAC7B;aACF;YACD,gBAAgB,CAAC,IAAI;gBACnB,OAAO;oBACL,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,oBAAE,CAAC,SAAS,CAAC,EAAE;oBAC1B,UAAU,EAAE,oBAAE,CAAC,UAAU,CAAC,EAAE;iBAC7B,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAI,MAAmC;IACtE,OAAO,CACL,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,mBAAW,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,oBAAY,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CACnH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AtRule } from 'postcss';
|
|
2
|
+
import type { Location } from './location.js';
|
|
3
|
+
interface ParsedAtImport {
|
|
4
|
+
from: string;
|
|
5
|
+
fromLoc: Location;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parse the `@import` rule.
|
|
9
|
+
* @param atImport The `@import` rule to parse.
|
|
10
|
+
* @returns The specifier of the imported file.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseAtImport(atImport: AtRule): ParsedAtImport | undefined;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=at-import-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"at-import-parser.d.ts","sourceRoot":"","sources":["../../src/parser/at-import-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAU1E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseAtImport = parseAtImport;
|
|
7
|
+
const postcss_value_parser_1 = __importDefault(require("postcss-value-parser"));
|
|
8
|
+
/**
|
|
9
|
+
* Parse the `@import` rule.
|
|
10
|
+
* @param atImport The `@import` rule to parse.
|
|
11
|
+
* @returns The specifier of the imported file.
|
|
12
|
+
*/
|
|
13
|
+
function parseAtImport(atImport) {
|
|
14
|
+
const firstNode = (0, postcss_value_parser_1.default)(atImport.params).nodes[0];
|
|
15
|
+
if (firstNode === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
if (firstNode.type === 'string')
|
|
18
|
+
return convertParsedAtImport(atImport, firstNode);
|
|
19
|
+
if (firstNode.type === 'function' && firstNode.value === 'url') {
|
|
20
|
+
if (firstNode.nodes[0] === undefined)
|
|
21
|
+
return undefined;
|
|
22
|
+
if (firstNode.nodes[0].type === 'string')
|
|
23
|
+
return convertParsedAtImport(atImport, firstNode.nodes[0]);
|
|
24
|
+
if (firstNode.nodes[0].type === 'word')
|
|
25
|
+
return convertParsedAtImport(atImport, firstNode.nodes[0]);
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
function convertParsedAtImport(atImport, node) {
|
|
30
|
+
// The length of the `@import ` part in `@import '...'`
|
|
31
|
+
const baseLength = 7 + (atImport.raws.afterName?.length ?? 0);
|
|
32
|
+
const start = {
|
|
33
|
+
line: atImport.source.start.line,
|
|
34
|
+
column: atImport.source.start.column + baseLength + node.sourceIndex + (node.type === 'string' ? 1 : 0),
|
|
35
|
+
offset: atImport.source.start.offset + baseLength + node.sourceIndex + (node.type === 'string' ? 1 : 0),
|
|
36
|
+
};
|
|
37
|
+
const end = {
|
|
38
|
+
line: start.line,
|
|
39
|
+
column: start.column + node.value.length,
|
|
40
|
+
offset: start.offset + node.value.length,
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
from: node.value,
|
|
44
|
+
fromLoc: { start, end },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=at-import-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"at-import-parser.js","sourceRoot":"","sources":["../../src/parser/at-import-parser.ts"],"names":[],"mappings":";;;;;AAcA,sCAUC;AAvBD,gFAAsD;AAQtD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,MAAM,SAAS,GAAG,IAAA,8BAAkB,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnF,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC/D,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACvD,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,IAAiE;IAEjE,yDAAyD;IACzD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,QAAQ,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;QAClC,MAAM,EAAE,QAAQ,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,EAAE,QAAQ,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1G,CAAC;IACF,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;QACxC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;KACzC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AtRule } from 'postcss';
|
|
2
|
+
import type { SyntacticDiagnostic } from '../diagnostic.js';
|
|
3
|
+
import type { Location } from './location.js';
|
|
4
|
+
interface ValueDeclaration {
|
|
5
|
+
type: 'valueDeclaration';
|
|
6
|
+
name: string;
|
|
7
|
+
loc: Location;
|
|
8
|
+
}
|
|
9
|
+
interface ValueImportDeclaration {
|
|
10
|
+
type: 'valueImportDeclaration';
|
|
11
|
+
values: {
|
|
12
|
+
name: string;
|
|
13
|
+
loc: Location;
|
|
14
|
+
localName?: string;
|
|
15
|
+
localLoc?: Location;
|
|
16
|
+
}[];
|
|
17
|
+
from: string;
|
|
18
|
+
fromLoc: Location;
|
|
19
|
+
}
|
|
20
|
+
type ParsedAtValue = ValueDeclaration | ValueImportDeclaration;
|
|
21
|
+
interface ParseAtValueResult {
|
|
22
|
+
atValue?: ParsedAtValue;
|
|
23
|
+
diagnostics: SyntacticDiagnostic[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse the `@value` rule.
|
|
27
|
+
* Forked from https://github.com/css-modules/postcss-modules-values/blob/v4.0.0/src/index.js.
|
|
28
|
+
*
|
|
29
|
+
* @license
|
|
30
|
+
* ISC License (ISC)
|
|
31
|
+
* Copyright (c) 2015, Glen Maddern
|
|
32
|
+
*
|
|
33
|
+
* Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,
|
|
34
|
+
* provided that the above copyright notice and this permission notice appear in all copies.
|
|
35
|
+
*
|
|
36
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING
|
|
37
|
+
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
38
|
+
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
39
|
+
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
|
40
|
+
* THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
41
|
+
*/
|
|
42
|
+
export declare function parseAtValue(atValue: AtRule): ParseAtValueResult;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=at-value-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"at-value-parser.d.ts","sourceRoot":"","sources":["../../src/parser/at-value-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,gBAAgB;IACxB,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,wBAAwB,CAAC;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,QAAQ,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;KACrB,EAAE,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,KAAK,aAAa,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAE/D,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAMD;;;;;;;;;;;;;;;;GAgBG;AAGH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA2HhE"}
|