unplugin-inline-css-modules 0.1.2 → 0.1.4
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/dist/astro.d.mts +3 -3
- package/dist/astro.d.ts +3 -3
- package/dist/astro.js +6 -4
- package/dist/astro.js.map +1 -1
- package/dist/astro.mjs +6 -4
- package/dist/astro.mjs.map +1 -1
- package/dist/bun.d.mts +2 -2
- package/dist/bun.d.ts +2 -2
- package/dist/bun.js +4 -2
- package/dist/bun.js.map +1 -1
- package/dist/bun.mjs +4 -2
- package/dist/bun.mjs.map +1 -1
- package/dist/esbuild.d.mts +2 -2
- package/dist/esbuild.d.ts +2 -2
- package/dist/esbuild.js +4 -2
- package/dist/esbuild.js.map +1 -1
- package/dist/esbuild.mjs +4 -2
- package/dist/esbuild.mjs.map +1 -1
- package/dist/farm.d.mts +1 -2
- package/dist/farm.d.ts +1 -2
- package/dist/farm.js +4 -2
- package/dist/farm.js.map +1 -1
- package/dist/farm.mjs +4 -2
- package/dist/farm.mjs.map +1 -1
- package/dist/index.d.mts +1 -14
- package/dist/index.d.ts +1 -14
- package/dist/index.js +2 -128
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -115
- package/dist/index.mjs.map +1 -1
- package/dist/next.d.mts +2 -2
- package/dist/next.d.ts +2 -2
- package/dist/next.js +4 -2
- package/dist/next.js.map +1 -1
- package/dist/next.mjs +4 -2
- package/dist/next.mjs.map +1 -1
- package/dist/nuxt.d.mts +2 -2
- package/dist/nuxt.d.ts +2 -2
- package/dist/nuxt.js +4 -2
- package/dist/nuxt.js.map +1 -1
- package/dist/nuxt.mjs +4 -2
- package/dist/nuxt.mjs.map +1 -1
- package/dist/plugin.d.mts +15 -0
- package/dist/plugin.d.ts +15 -0
- package/dist/plugin.js +154 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +118 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/rolldown.d.mts +2 -2
- package/dist/rolldown.d.ts +2 -2
- package/dist/rolldown.js +4 -2
- package/dist/rolldown.js.map +1 -1
- package/dist/rolldown.mjs +4 -2
- package/dist/rolldown.mjs.map +1 -1
- package/dist/rollup.d.mts +2 -2
- package/dist/rollup.d.ts +2 -2
- package/dist/rollup.js +4 -2
- package/dist/rollup.js.map +1 -1
- package/dist/rollup.mjs +4 -2
- package/dist/rollup.mjs.map +1 -1
- package/dist/rspack.d.mts +2 -2
- package/dist/rspack.d.ts +2 -2
- package/dist/rspack.js +4 -2
- package/dist/rspack.js.map +1 -1
- package/dist/rspack.mjs +4 -2
- package/dist/rspack.mjs.map +1 -1
- package/dist/vite.d.mts +2 -2
- package/dist/vite.d.ts +2 -2
- package/dist/vite.js +4 -2
- package/dist/vite.js.map +1 -1
- package/dist/vite.mjs +4 -2
- package/dist/vite.mjs.map +1 -1
- package/dist/webpack.d.mts +2 -2
- package/dist/webpack.d.ts +2 -2
- package/dist/webpack.js +4 -2
- package/dist/webpack.js.map +1 -1
- package/dist/webpack.mjs +4 -2
- package/dist/webpack.mjs.map +1 -1
- package/package.json +2 -11
package/dist/nuxt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/nuxt.ts","../src/index.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport
|
|
1
|
+
{"version":3,"sources":["../src/nuxt.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport { unpluginFactory, PluginConfig } from './plugin'\n\nexport default function (options: PluginConfig = {}) {\n return createWebpackPlugin(unpluginFactory)(options)\n}\n\nexport { css } from './index'\n","import type { UnpluginFactory } from 'unplugin'\nimport { createUnplugin } from 'unplugin'\nimport { createHash } from 'crypto'\nimport { mkdirSync, writeFileSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport MagicString from 'magic-string'\n\ntype SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less'\n\nexport type PluginConfig = {\n fileMatch?: RegExp\n tagName?: string\n extension?: SupportedExtension\n inlineImport?: boolean\n moduleStrategy?: 'virtual' | 'filesystem'\n}\n\nconst matchInlineCssModules =\n /(?:const|var|let)\\s*(\\w+)(?:\\s*:.*)?\\s*=\\s*(\\w+)\\s*`([\\s\\S]*?)`/gm\n\nconst virtualModuleId = 'virtual:inline-css-modules'\nconst webpackModuleId = 'inline-css-modules/virtual'\nconst resolvedVirtualModuleId = '\\0' + virtualModuleId\nconst resolvedWebpackModuleId = '\\0inline-css-modules/virtual'\n\nlet cssModules: Record<string, string> = {}\n\nconst getCacheDir = () =>\n join(process.cwd(), 'node_modules', '.cache', 'inline-css-modules')\nconst getCachePath = (hash: string) => join(getCacheDir(), `${hash}.module.css`)\n\nfunction ensureCacheDir() {\n const dir = getCacheDir()\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\nfunction hashCss(css: string): string {\n return createHash('md5').update(css).digest('hex')\n}\n\nfunction writeToCache(hash: string, css: string): void {\n ensureCacheDir()\n writeFileSync(getCachePath(hash), css)\n}\n\nexport const unpluginFactory: UnpluginFactory<PluginConfig | undefined> = (\n config = {},\n meta\n) => {\n const fileMatch = config.fileMatch ?? /\\.(tsx|jsx|js|vue|svelte)$/\n const tagName = config.tagName ?? 'css'\n const preprocessor = config.extension ?? 'css'\n const useFilesystem = config.moduleStrategy === 'filesystem'\n const moduleId = useFilesystem ? webpackModuleId : virtualModuleId\n const resolvedId = useFilesystem\n ? resolvedWebpackModuleId\n : resolvedVirtualModuleId\n\n return {\n name: 'inline-css-modules',\n enforce: 'pre',\n resolveId(id) {\n if (id === moduleId || id.startsWith(moduleId + '/')) {\n return resolvedId + id.slice(moduleId.length)\n }\n return undefined\n },\n loadInclude(id) {\n return id.startsWith(resolvedId)\n },\n load(id) {\n if (!id.startsWith(resolvedId + '/')) return undefined\n\n const file = id.slice(resolvedId.length + 1).replace(/\\?used$/, '')\n const css = cssModules[file]\n\n if (!css) return undefined\n\n return {\n code: css,\n map: null,\n }\n },\n transform: {\n filter: {\n id: fileMatch,\n },\n handler(src, id) {\n const s = new MagicString(src)\n const imports: string[] = []\n let hasChanges = false\n\n let match: RegExpExecArray | null\n const importRegex =\n /import\\s*{\\s*(?:css|inlineCss)\\s*(?:as\\s*\\w+\\s*)?}\\s*from\\s*('|\"|`)unplugin-inline-css-modules\\1;?/gm\n while ((match = importRegex.exec(src)) !== null) {\n s.remove(match.index, match.index + match[0].length)\n hasChanges = true\n }\n\n matchInlineCssModules.lastIndex = 0\n while ((match = matchInlineCssModules.exec(src)) !== null) {\n const [fullMatch, variableName, tag, css] = match\n if (tag !== tagName) continue\n\n const hash = hashCss(css)\n const filename = `${hash}.module.${preprocessor}`\n cssModules[filename] = css\n\n let importStatement: string\n if (useFilesystem) {\n writeToCache(hash, css)\n importStatement = `import ${variableName} from \"${getCachePath(hash)}\"`\n } else {\n importStatement = `import ${variableName} from \"${moduleId}/${filename}\"`\n }\n\n if (config.inlineImport === false) {\n imports.push(importStatement)\n s.overwrite(match.index, match.index + fullMatch.length, '')\n } else {\n s.overwrite(\n match.index,\n match.index + fullMatch.length,\n importStatement\n )\n }\n hasChanges = true\n }\n\n if (imports.length) {\n s.prepend(imports.join('\\n') + '\\n')\n }\n\n if (!hasChanges) {\n return null\n }\n\n return {\n code: s.toString(),\n map: s.generateMap({ source: id, includeContent: true }),\n }\n },\n },\n }\n}\n\nexport const unplugin = createUnplugin(unpluginFactory)\n\nexport default unplugin\n","export const css = (_: TemplateStringsArray): Record<string, string> => ({})\n"],"mappings":"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","names":["import_unplugin","css","MagicString"]}
|
package/dist/nuxt.mjs
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
// src/nuxt.ts
|
|
2
2
|
import { createWebpackPlugin } from "unplugin";
|
|
3
3
|
|
|
4
|
-
// src/
|
|
4
|
+
// src/plugin.ts
|
|
5
5
|
import { createUnplugin } from "unplugin";
|
|
6
6
|
import { createHash } from "crypto";
|
|
7
7
|
import { mkdirSync, writeFileSync, existsSync } from "fs";
|
|
8
8
|
import { join } from "path";
|
|
9
9
|
import MagicString from "magic-string";
|
|
10
10
|
var matchInlineCssModules = /(?:const|var|let)\s*(\w+)(?:\s*:.*)?\s*=\s*(\w+)\s*`([\s\S]*?)`/gm;
|
|
11
|
-
var css = (_) => ({});
|
|
12
11
|
var virtualModuleId = "virtual:inline-css-modules";
|
|
13
12
|
var webpackModuleId = "inline-css-modules/virtual";
|
|
14
13
|
var resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
@@ -114,6 +113,9 @@ var unpluginFactory = (config = {}, meta) => {
|
|
|
114
113
|
};
|
|
115
114
|
var unplugin = createUnplugin(unpluginFactory);
|
|
116
115
|
|
|
116
|
+
// src/index.ts
|
|
117
|
+
var css = (_) => ({});
|
|
118
|
+
|
|
117
119
|
// src/nuxt.ts
|
|
118
120
|
function nuxt_default(options = {}) {
|
|
119
121
|
return createWebpackPlugin(unpluginFactory)(options);
|
package/dist/nuxt.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/nuxt.ts","../src/index.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport
|
|
1
|
+
{"version":3,"sources":["../src/nuxt.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { createWebpackPlugin } from 'unplugin'\nimport { unpluginFactory, PluginConfig } from './plugin'\n\nexport default function (options: PluginConfig = {}) {\n return createWebpackPlugin(unpluginFactory)(options)\n}\n\nexport { css } from './index'\n","import type { UnpluginFactory } from 'unplugin'\nimport { createUnplugin } from 'unplugin'\nimport { createHash } from 'crypto'\nimport { mkdirSync, writeFileSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport MagicString from 'magic-string'\n\ntype SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less'\n\nexport type PluginConfig = {\n fileMatch?: RegExp\n tagName?: string\n extension?: SupportedExtension\n inlineImport?: boolean\n moduleStrategy?: 'virtual' | 'filesystem'\n}\n\nconst matchInlineCssModules =\n /(?:const|var|let)\\s*(\\w+)(?:\\s*:.*)?\\s*=\\s*(\\w+)\\s*`([\\s\\S]*?)`/gm\n\nconst virtualModuleId = 'virtual:inline-css-modules'\nconst webpackModuleId = 'inline-css-modules/virtual'\nconst resolvedVirtualModuleId = '\\0' + virtualModuleId\nconst resolvedWebpackModuleId = '\\0inline-css-modules/virtual'\n\nlet cssModules: Record<string, string> = {}\n\nconst getCacheDir = () =>\n join(process.cwd(), 'node_modules', '.cache', 'inline-css-modules')\nconst getCachePath = (hash: string) => join(getCacheDir(), `${hash}.module.css`)\n\nfunction ensureCacheDir() {\n const dir = getCacheDir()\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\nfunction hashCss(css: string): string {\n return createHash('md5').update(css).digest('hex')\n}\n\nfunction writeToCache(hash: string, css: string): void {\n ensureCacheDir()\n writeFileSync(getCachePath(hash), css)\n}\n\nexport const unpluginFactory: UnpluginFactory<PluginConfig | undefined> = (\n config = {},\n meta\n) => {\n const fileMatch = config.fileMatch ?? /\\.(tsx|jsx|js|vue|svelte)$/\n const tagName = config.tagName ?? 'css'\n const preprocessor = config.extension ?? 'css'\n const useFilesystem = config.moduleStrategy === 'filesystem'\n const moduleId = useFilesystem ? webpackModuleId : virtualModuleId\n const resolvedId = useFilesystem\n ? resolvedWebpackModuleId\n : resolvedVirtualModuleId\n\n return {\n name: 'inline-css-modules',\n enforce: 'pre',\n resolveId(id) {\n if (id === moduleId || id.startsWith(moduleId + '/')) {\n return resolvedId + id.slice(moduleId.length)\n }\n return undefined\n },\n loadInclude(id) {\n return id.startsWith(resolvedId)\n },\n load(id) {\n if (!id.startsWith(resolvedId + '/')) return undefined\n\n const file = id.slice(resolvedId.length + 1).replace(/\\?used$/, '')\n const css = cssModules[file]\n\n if (!css) return undefined\n\n return {\n code: css,\n map: null,\n }\n },\n transform: {\n filter: {\n id: fileMatch,\n },\n handler(src, id) {\n const s = new MagicString(src)\n const imports: string[] = []\n let hasChanges = false\n\n let match: RegExpExecArray | null\n const importRegex =\n /import\\s*{\\s*(?:css|inlineCss)\\s*(?:as\\s*\\w+\\s*)?}\\s*from\\s*('|\"|`)unplugin-inline-css-modules\\1;?/gm\n while ((match = importRegex.exec(src)) !== null) {\n s.remove(match.index, match.index + match[0].length)\n hasChanges = true\n }\n\n matchInlineCssModules.lastIndex = 0\n while ((match = matchInlineCssModules.exec(src)) !== null) {\n const [fullMatch, variableName, tag, css] = match\n if (tag !== tagName) continue\n\n const hash = hashCss(css)\n const filename = `${hash}.module.${preprocessor}`\n cssModules[filename] = css\n\n let importStatement: string\n if (useFilesystem) {\n writeToCache(hash, css)\n importStatement = `import ${variableName} from \"${getCachePath(hash)}\"`\n } else {\n importStatement = `import ${variableName} from \"${moduleId}/${filename}\"`\n }\n\n if (config.inlineImport === false) {\n imports.push(importStatement)\n s.overwrite(match.index, match.index + fullMatch.length, '')\n } else {\n s.overwrite(\n match.index,\n match.index + fullMatch.length,\n importStatement\n )\n }\n hasChanges = true\n }\n\n if (imports.length) {\n s.prepend(imports.join('\\n') + '\\n')\n }\n\n if (!hasChanges) {\n return null\n }\n\n return {\n code: s.toString(),\n map: s.generateMap({ source: id, includeContent: true }),\n }\n },\n },\n }\n}\n\nexport const unplugin = createUnplugin(unpluginFactory)\n\nexport default unplugin\n","export const css = (_: TemplateStringsArray): Record<string, string> => ({})\n"],"mappings":"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","names":["css"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as unplugin$1 from 'unplugin';
|
|
2
|
+
import { UnpluginFactory } from 'unplugin';
|
|
3
|
+
|
|
4
|
+
type SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less';
|
|
5
|
+
type PluginConfig = {
|
|
6
|
+
fileMatch?: RegExp;
|
|
7
|
+
tagName?: string;
|
|
8
|
+
extension?: SupportedExtension;
|
|
9
|
+
inlineImport?: boolean;
|
|
10
|
+
moduleStrategy?: 'virtual' | 'filesystem';
|
|
11
|
+
};
|
|
12
|
+
declare const unpluginFactory: UnpluginFactory<PluginConfig | undefined>;
|
|
13
|
+
declare const unplugin: unplugin$1.UnpluginInstance<PluginConfig | undefined, boolean>;
|
|
14
|
+
|
|
15
|
+
export { type PluginConfig, unplugin as default, unplugin, unpluginFactory };
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as unplugin$1 from 'unplugin';
|
|
2
|
+
import { UnpluginFactory } from 'unplugin';
|
|
3
|
+
|
|
4
|
+
type SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less';
|
|
5
|
+
type PluginConfig = {
|
|
6
|
+
fileMatch?: RegExp;
|
|
7
|
+
tagName?: string;
|
|
8
|
+
extension?: SupportedExtension;
|
|
9
|
+
inlineImport?: boolean;
|
|
10
|
+
moduleStrategy?: 'virtual' | 'filesystem';
|
|
11
|
+
};
|
|
12
|
+
declare const unpluginFactory: UnpluginFactory<PluginConfig | undefined>;
|
|
13
|
+
declare const unplugin: unplugin$1.UnpluginInstance<PluginConfig | undefined, boolean>;
|
|
14
|
+
|
|
15
|
+
export { type PluginConfig, unplugin as default, unplugin, unpluginFactory };
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/plugin.ts
|
|
31
|
+
var plugin_exports = {};
|
|
32
|
+
__export(plugin_exports, {
|
|
33
|
+
default: () => plugin_default,
|
|
34
|
+
unplugin: () => unplugin,
|
|
35
|
+
unpluginFactory: () => unpluginFactory
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(plugin_exports);
|
|
38
|
+
var import_unplugin = require("unplugin");
|
|
39
|
+
var import_crypto = require("crypto");
|
|
40
|
+
var import_fs = require("fs");
|
|
41
|
+
var import_path = require("path");
|
|
42
|
+
var import_magic_string = __toESM(require("magic-string"));
|
|
43
|
+
var matchInlineCssModules = /(?:const|var|let)\s*(\w+)(?:\s*:.*)?\s*=\s*(\w+)\s*`([\s\S]*?)`/gm;
|
|
44
|
+
var virtualModuleId = "virtual:inline-css-modules";
|
|
45
|
+
var webpackModuleId = "inline-css-modules/virtual";
|
|
46
|
+
var resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
47
|
+
var resolvedWebpackModuleId = "\0inline-css-modules/virtual";
|
|
48
|
+
var cssModules = {};
|
|
49
|
+
var getCacheDir = () => (0, import_path.join)(process.cwd(), "node_modules", ".cache", "inline-css-modules");
|
|
50
|
+
var getCachePath = (hash) => (0, import_path.join)(getCacheDir(), `${hash}.module.css`);
|
|
51
|
+
function ensureCacheDir() {
|
|
52
|
+
const dir = getCacheDir();
|
|
53
|
+
if (!(0, import_fs.existsSync)(dir)) {
|
|
54
|
+
(0, import_fs.mkdirSync)(dir, { recursive: true });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function hashCss(css) {
|
|
58
|
+
return (0, import_crypto.createHash)("md5").update(css).digest("hex");
|
|
59
|
+
}
|
|
60
|
+
function writeToCache(hash, css) {
|
|
61
|
+
ensureCacheDir();
|
|
62
|
+
(0, import_fs.writeFileSync)(getCachePath(hash), css);
|
|
63
|
+
}
|
|
64
|
+
var unpluginFactory = (config = {}, meta) => {
|
|
65
|
+
const fileMatch = config.fileMatch ?? /\.(tsx|jsx|js|vue|svelte)$/;
|
|
66
|
+
const tagName = config.tagName ?? "css";
|
|
67
|
+
const preprocessor = config.extension ?? "css";
|
|
68
|
+
const useFilesystem = config.moduleStrategy === "filesystem";
|
|
69
|
+
const moduleId = useFilesystem ? webpackModuleId : virtualModuleId;
|
|
70
|
+
const resolvedId = useFilesystem ? resolvedWebpackModuleId : resolvedVirtualModuleId;
|
|
71
|
+
return {
|
|
72
|
+
name: "inline-css-modules",
|
|
73
|
+
enforce: "pre",
|
|
74
|
+
resolveId(id) {
|
|
75
|
+
if (id === moduleId || id.startsWith(moduleId + "/")) {
|
|
76
|
+
return resolvedId + id.slice(moduleId.length);
|
|
77
|
+
}
|
|
78
|
+
return void 0;
|
|
79
|
+
},
|
|
80
|
+
loadInclude(id) {
|
|
81
|
+
return id.startsWith(resolvedId);
|
|
82
|
+
},
|
|
83
|
+
load(id) {
|
|
84
|
+
if (!id.startsWith(resolvedId + "/")) return void 0;
|
|
85
|
+
const file = id.slice(resolvedId.length + 1).replace(/\?used$/, "");
|
|
86
|
+
const css = cssModules[file];
|
|
87
|
+
if (!css) return void 0;
|
|
88
|
+
return {
|
|
89
|
+
code: css,
|
|
90
|
+
map: null
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
transform: {
|
|
94
|
+
filter: {
|
|
95
|
+
id: fileMatch
|
|
96
|
+
},
|
|
97
|
+
handler(src, id) {
|
|
98
|
+
const s = new import_magic_string.default(src);
|
|
99
|
+
const imports = [];
|
|
100
|
+
let hasChanges = false;
|
|
101
|
+
let match;
|
|
102
|
+
const importRegex = /import\s*{\s*(?:css|inlineCss)\s*(?:as\s*\w+\s*)?}\s*from\s*('|"|`)unplugin-inline-css-modules\1;?/gm;
|
|
103
|
+
while ((match = importRegex.exec(src)) !== null) {
|
|
104
|
+
s.remove(match.index, match.index + match[0].length);
|
|
105
|
+
hasChanges = true;
|
|
106
|
+
}
|
|
107
|
+
matchInlineCssModules.lastIndex = 0;
|
|
108
|
+
while ((match = matchInlineCssModules.exec(src)) !== null) {
|
|
109
|
+
const [fullMatch, variableName, tag, css] = match;
|
|
110
|
+
if (tag !== tagName) continue;
|
|
111
|
+
const hash = hashCss(css);
|
|
112
|
+
const filename = `${hash}.module.${preprocessor}`;
|
|
113
|
+
cssModules[filename] = css;
|
|
114
|
+
let importStatement;
|
|
115
|
+
if (useFilesystem) {
|
|
116
|
+
writeToCache(hash, css);
|
|
117
|
+
importStatement = `import ${variableName} from "${getCachePath(hash)}"`;
|
|
118
|
+
} else {
|
|
119
|
+
importStatement = `import ${variableName} from "${moduleId}/${filename}"`;
|
|
120
|
+
}
|
|
121
|
+
if (config.inlineImport === false) {
|
|
122
|
+
imports.push(importStatement);
|
|
123
|
+
s.overwrite(match.index, match.index + fullMatch.length, "");
|
|
124
|
+
} else {
|
|
125
|
+
s.overwrite(
|
|
126
|
+
match.index,
|
|
127
|
+
match.index + fullMatch.length,
|
|
128
|
+
importStatement
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
hasChanges = true;
|
|
132
|
+
}
|
|
133
|
+
if (imports.length) {
|
|
134
|
+
s.prepend(imports.join("\n") + "\n");
|
|
135
|
+
}
|
|
136
|
+
if (!hasChanges) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
code: s.toString(),
|
|
141
|
+
map: s.generateMap({ source: id, includeContent: true })
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
var unplugin = (0, import_unplugin.createUnplugin)(unpluginFactory);
|
|
148
|
+
var plugin_default = unplugin;
|
|
149
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
150
|
+
0 && (module.exports = {
|
|
151
|
+
unplugin,
|
|
152
|
+
unpluginFactory
|
|
153
|
+
});
|
|
154
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { UnpluginFactory } from 'unplugin'\nimport { createUnplugin } from 'unplugin'\nimport { createHash } from 'crypto'\nimport { mkdirSync, writeFileSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport MagicString from 'magic-string'\n\ntype SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less'\n\nexport type PluginConfig = {\n fileMatch?: RegExp\n tagName?: string\n extension?: SupportedExtension\n inlineImport?: boolean\n moduleStrategy?: 'virtual' | 'filesystem'\n}\n\nconst matchInlineCssModules =\n /(?:const|var|let)\\s*(\\w+)(?:\\s*:.*)?\\s*=\\s*(\\w+)\\s*`([\\s\\S]*?)`/gm\n\nconst virtualModuleId = 'virtual:inline-css-modules'\nconst webpackModuleId = 'inline-css-modules/virtual'\nconst resolvedVirtualModuleId = '\\0' + virtualModuleId\nconst resolvedWebpackModuleId = '\\0inline-css-modules/virtual'\n\nlet cssModules: Record<string, string> = {}\n\nconst getCacheDir = () =>\n join(process.cwd(), 'node_modules', '.cache', 'inline-css-modules')\nconst getCachePath = (hash: string) => join(getCacheDir(), `${hash}.module.css`)\n\nfunction ensureCacheDir() {\n const dir = getCacheDir()\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\nfunction hashCss(css: string): string {\n return createHash('md5').update(css).digest('hex')\n}\n\nfunction writeToCache(hash: string, css: string): void {\n ensureCacheDir()\n writeFileSync(getCachePath(hash), css)\n}\n\nexport const unpluginFactory: UnpluginFactory<PluginConfig | undefined> = (\n config = {},\n meta\n) => {\n const fileMatch = config.fileMatch ?? /\\.(tsx|jsx|js|vue|svelte)$/\n const tagName = config.tagName ?? 'css'\n const preprocessor = config.extension ?? 'css'\n const useFilesystem = config.moduleStrategy === 'filesystem'\n const moduleId = useFilesystem ? webpackModuleId : virtualModuleId\n const resolvedId = useFilesystem\n ? resolvedWebpackModuleId\n : resolvedVirtualModuleId\n\n return {\n name: 'inline-css-modules',\n enforce: 'pre',\n resolveId(id) {\n if (id === moduleId || id.startsWith(moduleId + '/')) {\n return resolvedId + id.slice(moduleId.length)\n }\n return undefined\n },\n loadInclude(id) {\n return id.startsWith(resolvedId)\n },\n load(id) {\n if (!id.startsWith(resolvedId + '/')) return undefined\n\n const file = id.slice(resolvedId.length + 1).replace(/\\?used$/, '')\n const css = cssModules[file]\n\n if (!css) return undefined\n\n return {\n code: css,\n map: null,\n }\n },\n transform: {\n filter: {\n id: fileMatch,\n },\n handler(src, id) {\n const s = new MagicString(src)\n const imports: string[] = []\n let hasChanges = false\n\n let match: RegExpExecArray | null\n const importRegex =\n /import\\s*{\\s*(?:css|inlineCss)\\s*(?:as\\s*\\w+\\s*)?}\\s*from\\s*('|\"|`)unplugin-inline-css-modules\\1;?/gm\n while ((match = importRegex.exec(src)) !== null) {\n s.remove(match.index, match.index + match[0].length)\n hasChanges = true\n }\n\n matchInlineCssModules.lastIndex = 0\n while ((match = matchInlineCssModules.exec(src)) !== null) {\n const [fullMatch, variableName, tag, css] = match\n if (tag !== tagName) continue\n\n const hash = hashCss(css)\n const filename = `${hash}.module.${preprocessor}`\n cssModules[filename] = css\n\n let importStatement: string\n if (useFilesystem) {\n writeToCache(hash, css)\n importStatement = `import ${variableName} from \"${getCachePath(hash)}\"`\n } else {\n importStatement = `import ${variableName} from \"${moduleId}/${filename}\"`\n }\n\n if (config.inlineImport === false) {\n imports.push(importStatement)\n s.overwrite(match.index, match.index + fullMatch.length, '')\n } else {\n s.overwrite(\n match.index,\n match.index + fullMatch.length,\n importStatement\n )\n }\n hasChanges = true\n }\n\n if (imports.length) {\n s.prepend(imports.join('\\n') + '\\n')\n }\n\n if (!hasChanges) {\n return null\n }\n\n return {\n code: s.toString(),\n map: s.generateMap({ source: id, includeContent: true }),\n }\n },\n },\n }\n}\n\nexport const unplugin = createUnplugin(unpluginFactory)\n\nexport default unplugin\n"],"mappings":"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","names":["MagicString"]}
|
package/dist/plugin.mjs
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// src/plugin.ts
|
|
2
|
+
import { createUnplugin } from "unplugin";
|
|
3
|
+
import { createHash } from "crypto";
|
|
4
|
+
import { mkdirSync, writeFileSync, existsSync } from "fs";
|
|
5
|
+
import { join } from "path";
|
|
6
|
+
import MagicString from "magic-string";
|
|
7
|
+
var matchInlineCssModules = /(?:const|var|let)\s*(\w+)(?:\s*:.*)?\s*=\s*(\w+)\s*`([\s\S]*?)`/gm;
|
|
8
|
+
var virtualModuleId = "virtual:inline-css-modules";
|
|
9
|
+
var webpackModuleId = "inline-css-modules/virtual";
|
|
10
|
+
var resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
11
|
+
var resolvedWebpackModuleId = "\0inline-css-modules/virtual";
|
|
12
|
+
var cssModules = {};
|
|
13
|
+
var getCacheDir = () => join(process.cwd(), "node_modules", ".cache", "inline-css-modules");
|
|
14
|
+
var getCachePath = (hash) => join(getCacheDir(), `${hash}.module.css`);
|
|
15
|
+
function ensureCacheDir() {
|
|
16
|
+
const dir = getCacheDir();
|
|
17
|
+
if (!existsSync(dir)) {
|
|
18
|
+
mkdirSync(dir, { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function hashCss(css) {
|
|
22
|
+
return createHash("md5").update(css).digest("hex");
|
|
23
|
+
}
|
|
24
|
+
function writeToCache(hash, css) {
|
|
25
|
+
ensureCacheDir();
|
|
26
|
+
writeFileSync(getCachePath(hash), css);
|
|
27
|
+
}
|
|
28
|
+
var unpluginFactory = (config = {}, meta) => {
|
|
29
|
+
const fileMatch = config.fileMatch ?? /\.(tsx|jsx|js|vue|svelte)$/;
|
|
30
|
+
const tagName = config.tagName ?? "css";
|
|
31
|
+
const preprocessor = config.extension ?? "css";
|
|
32
|
+
const useFilesystem = config.moduleStrategy === "filesystem";
|
|
33
|
+
const moduleId = useFilesystem ? webpackModuleId : virtualModuleId;
|
|
34
|
+
const resolvedId = useFilesystem ? resolvedWebpackModuleId : resolvedVirtualModuleId;
|
|
35
|
+
return {
|
|
36
|
+
name: "inline-css-modules",
|
|
37
|
+
enforce: "pre",
|
|
38
|
+
resolveId(id) {
|
|
39
|
+
if (id === moduleId || id.startsWith(moduleId + "/")) {
|
|
40
|
+
return resolvedId + id.slice(moduleId.length);
|
|
41
|
+
}
|
|
42
|
+
return void 0;
|
|
43
|
+
},
|
|
44
|
+
loadInclude(id) {
|
|
45
|
+
return id.startsWith(resolvedId);
|
|
46
|
+
},
|
|
47
|
+
load(id) {
|
|
48
|
+
if (!id.startsWith(resolvedId + "/")) return void 0;
|
|
49
|
+
const file = id.slice(resolvedId.length + 1).replace(/\?used$/, "");
|
|
50
|
+
const css = cssModules[file];
|
|
51
|
+
if (!css) return void 0;
|
|
52
|
+
return {
|
|
53
|
+
code: css,
|
|
54
|
+
map: null
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
transform: {
|
|
58
|
+
filter: {
|
|
59
|
+
id: fileMatch
|
|
60
|
+
},
|
|
61
|
+
handler(src, id) {
|
|
62
|
+
const s = new MagicString(src);
|
|
63
|
+
const imports = [];
|
|
64
|
+
let hasChanges = false;
|
|
65
|
+
let match;
|
|
66
|
+
const importRegex = /import\s*{\s*(?:css|inlineCss)\s*(?:as\s*\w+\s*)?}\s*from\s*('|"|`)unplugin-inline-css-modules\1;?/gm;
|
|
67
|
+
while ((match = importRegex.exec(src)) !== null) {
|
|
68
|
+
s.remove(match.index, match.index + match[0].length);
|
|
69
|
+
hasChanges = true;
|
|
70
|
+
}
|
|
71
|
+
matchInlineCssModules.lastIndex = 0;
|
|
72
|
+
while ((match = matchInlineCssModules.exec(src)) !== null) {
|
|
73
|
+
const [fullMatch, variableName, tag, css] = match;
|
|
74
|
+
if (tag !== tagName) continue;
|
|
75
|
+
const hash = hashCss(css);
|
|
76
|
+
const filename = `${hash}.module.${preprocessor}`;
|
|
77
|
+
cssModules[filename] = css;
|
|
78
|
+
let importStatement;
|
|
79
|
+
if (useFilesystem) {
|
|
80
|
+
writeToCache(hash, css);
|
|
81
|
+
importStatement = `import ${variableName} from "${getCachePath(hash)}"`;
|
|
82
|
+
} else {
|
|
83
|
+
importStatement = `import ${variableName} from "${moduleId}/${filename}"`;
|
|
84
|
+
}
|
|
85
|
+
if (config.inlineImport === false) {
|
|
86
|
+
imports.push(importStatement);
|
|
87
|
+
s.overwrite(match.index, match.index + fullMatch.length, "");
|
|
88
|
+
} else {
|
|
89
|
+
s.overwrite(
|
|
90
|
+
match.index,
|
|
91
|
+
match.index + fullMatch.length,
|
|
92
|
+
importStatement
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
hasChanges = true;
|
|
96
|
+
}
|
|
97
|
+
if (imports.length) {
|
|
98
|
+
s.prepend(imports.join("\n") + "\n");
|
|
99
|
+
}
|
|
100
|
+
if (!hasChanges) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
code: s.toString(),
|
|
105
|
+
map: s.generateMap({ source: id, includeContent: true })
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
var unplugin = createUnplugin(unpluginFactory);
|
|
112
|
+
var plugin_default = unplugin;
|
|
113
|
+
export {
|
|
114
|
+
plugin_default as default,
|
|
115
|
+
unplugin,
|
|
116
|
+
unpluginFactory
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=plugin.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts"],"sourcesContent":["import type { UnpluginFactory } from 'unplugin'\nimport { createUnplugin } from 'unplugin'\nimport { createHash } from 'crypto'\nimport { mkdirSync, writeFileSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport MagicString from 'magic-string'\n\ntype SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less'\n\nexport type PluginConfig = {\n fileMatch?: RegExp\n tagName?: string\n extension?: SupportedExtension\n inlineImport?: boolean\n moduleStrategy?: 'virtual' | 'filesystem'\n}\n\nconst matchInlineCssModules =\n /(?:const|var|let)\\s*(\\w+)(?:\\s*:.*)?\\s*=\\s*(\\w+)\\s*`([\\s\\S]*?)`/gm\n\nconst virtualModuleId = 'virtual:inline-css-modules'\nconst webpackModuleId = 'inline-css-modules/virtual'\nconst resolvedVirtualModuleId = '\\0' + virtualModuleId\nconst resolvedWebpackModuleId = '\\0inline-css-modules/virtual'\n\nlet cssModules: Record<string, string> = {}\n\nconst getCacheDir = () =>\n join(process.cwd(), 'node_modules', '.cache', 'inline-css-modules')\nconst getCachePath = (hash: string) => join(getCacheDir(), `${hash}.module.css`)\n\nfunction ensureCacheDir() {\n const dir = getCacheDir()\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\nfunction hashCss(css: string): string {\n return createHash('md5').update(css).digest('hex')\n}\n\nfunction writeToCache(hash: string, css: string): void {\n ensureCacheDir()\n writeFileSync(getCachePath(hash), css)\n}\n\nexport const unpluginFactory: UnpluginFactory<PluginConfig | undefined> = (\n config = {},\n meta\n) => {\n const fileMatch = config.fileMatch ?? /\\.(tsx|jsx|js|vue|svelte)$/\n const tagName = config.tagName ?? 'css'\n const preprocessor = config.extension ?? 'css'\n const useFilesystem = config.moduleStrategy === 'filesystem'\n const moduleId = useFilesystem ? webpackModuleId : virtualModuleId\n const resolvedId = useFilesystem\n ? resolvedWebpackModuleId\n : resolvedVirtualModuleId\n\n return {\n name: 'inline-css-modules',\n enforce: 'pre',\n resolveId(id) {\n if (id === moduleId || id.startsWith(moduleId + '/')) {\n return resolvedId + id.slice(moduleId.length)\n }\n return undefined\n },\n loadInclude(id) {\n return id.startsWith(resolvedId)\n },\n load(id) {\n if (!id.startsWith(resolvedId + '/')) return undefined\n\n const file = id.slice(resolvedId.length + 1).replace(/\\?used$/, '')\n const css = cssModules[file]\n\n if (!css) return undefined\n\n return {\n code: css,\n map: null,\n }\n },\n transform: {\n filter: {\n id: fileMatch,\n },\n handler(src, id) {\n const s = new MagicString(src)\n const imports: string[] = []\n let hasChanges = false\n\n let match: RegExpExecArray | null\n const importRegex =\n /import\\s*{\\s*(?:css|inlineCss)\\s*(?:as\\s*\\w+\\s*)?}\\s*from\\s*('|\"|`)unplugin-inline-css-modules\\1;?/gm\n while ((match = importRegex.exec(src)) !== null) {\n s.remove(match.index, match.index + match[0].length)\n hasChanges = true\n }\n\n matchInlineCssModules.lastIndex = 0\n while ((match = matchInlineCssModules.exec(src)) !== null) {\n const [fullMatch, variableName, tag, css] = match\n if (tag !== tagName) continue\n\n const hash = hashCss(css)\n const filename = `${hash}.module.${preprocessor}`\n cssModules[filename] = css\n\n let importStatement: string\n if (useFilesystem) {\n writeToCache(hash, css)\n importStatement = `import ${variableName} from \"${getCachePath(hash)}\"`\n } else {\n importStatement = `import ${variableName} from \"${moduleId}/${filename}\"`\n }\n\n if (config.inlineImport === false) {\n imports.push(importStatement)\n s.overwrite(match.index, match.index + fullMatch.length, '')\n } else {\n s.overwrite(\n match.index,\n match.index + fullMatch.length,\n importStatement\n )\n }\n hasChanges = true\n }\n\n if (imports.length) {\n s.prepend(imports.join('\\n') + '\\n')\n }\n\n if (!hasChanges) {\n return null\n }\n\n return {\n code: s.toString(),\n map: s.generateMap({ source: id, includeContent: true }),\n }\n },\n },\n }\n}\n\nexport const unplugin = createUnplugin(unpluginFactory)\n\nexport default unplugin\n"],"mappings":"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","names":[]}
|
package/dist/rolldown.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as rolldown from 'rolldown';
|
|
2
|
-
import { PluginConfig } from './
|
|
2
|
+
import { PluginConfig } from './plugin.mjs';
|
|
3
3
|
export { css } from './index.mjs';
|
|
4
4
|
import 'unplugin';
|
|
5
5
|
|
|
6
6
|
declare const _default: (options?: PluginConfig | undefined) => rolldown.Plugin<any> | rolldown.Plugin<any>[];
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { _default as default };
|
package/dist/rolldown.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as rolldown from 'rolldown';
|
|
2
|
-
import { PluginConfig } from './
|
|
2
|
+
import { PluginConfig } from './plugin.js';
|
|
3
3
|
export { css } from './index.js';
|
|
4
4
|
import 'unplugin';
|
|
5
5
|
|
|
6
6
|
declare const _default: (options?: PluginConfig | undefined) => rolldown.Plugin<any> | rolldown.Plugin<any>[];
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { _default as default };
|
package/dist/rolldown.js
CHANGED
|
@@ -36,14 +36,13 @@ __export(rolldown_exports, {
|
|
|
36
36
|
module.exports = __toCommonJS(rolldown_exports);
|
|
37
37
|
var import_unplugin2 = require("unplugin");
|
|
38
38
|
|
|
39
|
-
// src/
|
|
39
|
+
// src/plugin.ts
|
|
40
40
|
var import_unplugin = require("unplugin");
|
|
41
41
|
var import_crypto = require("crypto");
|
|
42
42
|
var import_fs = require("fs");
|
|
43
43
|
var import_path = require("path");
|
|
44
44
|
var import_magic_string = __toESM(require("magic-string"));
|
|
45
45
|
var matchInlineCssModules = /(?:const|var|let)\s*(\w+)(?:\s*:.*)?\s*=\s*(\w+)\s*`([\s\S]*?)`/gm;
|
|
46
|
-
var css = (_) => ({});
|
|
47
46
|
var virtualModuleId = "virtual:inline-css-modules";
|
|
48
47
|
var webpackModuleId = "inline-css-modules/virtual";
|
|
49
48
|
var resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
@@ -149,6 +148,9 @@ var unpluginFactory = (config = {}, meta) => {
|
|
|
149
148
|
};
|
|
150
149
|
var unplugin = (0, import_unplugin.createUnplugin)(unpluginFactory);
|
|
151
150
|
|
|
151
|
+
// src/index.ts
|
|
152
|
+
var css = (_) => ({});
|
|
153
|
+
|
|
152
154
|
// src/rolldown.ts
|
|
153
155
|
var rolldown_default = (0, import_unplugin2.createRolldownPlugin)(unpluginFactory);
|
|
154
156
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/rolldown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rolldown.ts","../src/index.ts"],"sourcesContent":["import { createRolldownPlugin } from 'unplugin'\nimport { unpluginFactory } from './
|
|
1
|
+
{"version":3,"sources":["../src/rolldown.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { createRolldownPlugin } from 'unplugin'\nimport { unpluginFactory } from './plugin'\n\nexport default createRolldownPlugin(unpluginFactory)\nexport { css } from './index'\n","import type { UnpluginFactory } from 'unplugin'\nimport { createUnplugin } from 'unplugin'\nimport { createHash } from 'crypto'\nimport { mkdirSync, writeFileSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport MagicString from 'magic-string'\n\ntype SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less'\n\nexport type PluginConfig = {\n fileMatch?: RegExp\n tagName?: string\n extension?: SupportedExtension\n inlineImport?: boolean\n moduleStrategy?: 'virtual' | 'filesystem'\n}\n\nconst matchInlineCssModules =\n /(?:const|var|let)\\s*(\\w+)(?:\\s*:.*)?\\s*=\\s*(\\w+)\\s*`([\\s\\S]*?)`/gm\n\nconst virtualModuleId = 'virtual:inline-css-modules'\nconst webpackModuleId = 'inline-css-modules/virtual'\nconst resolvedVirtualModuleId = '\\0' + virtualModuleId\nconst resolvedWebpackModuleId = '\\0inline-css-modules/virtual'\n\nlet cssModules: Record<string, string> = {}\n\nconst getCacheDir = () =>\n join(process.cwd(), 'node_modules', '.cache', 'inline-css-modules')\nconst getCachePath = (hash: string) => join(getCacheDir(), `${hash}.module.css`)\n\nfunction ensureCacheDir() {\n const dir = getCacheDir()\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\nfunction hashCss(css: string): string {\n return createHash('md5').update(css).digest('hex')\n}\n\nfunction writeToCache(hash: string, css: string): void {\n ensureCacheDir()\n writeFileSync(getCachePath(hash), css)\n}\n\nexport const unpluginFactory: UnpluginFactory<PluginConfig | undefined> = (\n config = {},\n meta\n) => {\n const fileMatch = config.fileMatch ?? /\\.(tsx|jsx|js|vue|svelte)$/\n const tagName = config.tagName ?? 'css'\n const preprocessor = config.extension ?? 'css'\n const useFilesystem = config.moduleStrategy === 'filesystem'\n const moduleId = useFilesystem ? webpackModuleId : virtualModuleId\n const resolvedId = useFilesystem\n ? resolvedWebpackModuleId\n : resolvedVirtualModuleId\n\n return {\n name: 'inline-css-modules',\n enforce: 'pre',\n resolveId(id) {\n if (id === moduleId || id.startsWith(moduleId + '/')) {\n return resolvedId + id.slice(moduleId.length)\n }\n return undefined\n },\n loadInclude(id) {\n return id.startsWith(resolvedId)\n },\n load(id) {\n if (!id.startsWith(resolvedId + '/')) return undefined\n\n const file = id.slice(resolvedId.length + 1).replace(/\\?used$/, '')\n const css = cssModules[file]\n\n if (!css) return undefined\n\n return {\n code: css,\n map: null,\n }\n },\n transform: {\n filter: {\n id: fileMatch,\n },\n handler(src, id) {\n const s = new MagicString(src)\n const imports: string[] = []\n let hasChanges = false\n\n let match: RegExpExecArray | null\n const importRegex =\n /import\\s*{\\s*(?:css|inlineCss)\\s*(?:as\\s*\\w+\\s*)?}\\s*from\\s*('|\"|`)unplugin-inline-css-modules\\1;?/gm\n while ((match = importRegex.exec(src)) !== null) {\n s.remove(match.index, match.index + match[0].length)\n hasChanges = true\n }\n\n matchInlineCssModules.lastIndex = 0\n while ((match = matchInlineCssModules.exec(src)) !== null) {\n const [fullMatch, variableName, tag, css] = match\n if (tag !== tagName) continue\n\n const hash = hashCss(css)\n const filename = `${hash}.module.${preprocessor}`\n cssModules[filename] = css\n\n let importStatement: string\n if (useFilesystem) {\n writeToCache(hash, css)\n importStatement = `import ${variableName} from \"${getCachePath(hash)}\"`\n } else {\n importStatement = `import ${variableName} from \"${moduleId}/${filename}\"`\n }\n\n if (config.inlineImport === false) {\n imports.push(importStatement)\n s.overwrite(match.index, match.index + fullMatch.length, '')\n } else {\n s.overwrite(\n match.index,\n match.index + fullMatch.length,\n importStatement\n )\n }\n hasChanges = true\n }\n\n if (imports.length) {\n s.prepend(imports.join('\\n') + '\\n')\n }\n\n if (!hasChanges) {\n return null\n }\n\n return {\n code: s.toString(),\n map: s.generateMap({ source: id, includeContent: true }),\n }\n },\n },\n }\n}\n\nexport const unplugin = createUnplugin(unpluginFactory)\n\nexport default unplugin\n","export const css = (_: TemplateStringsArray): Record<string, string> => ({})\n"],"mappings":"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","names":["import_unplugin","css","MagicString"]}
|
package/dist/rolldown.mjs
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
// src/rolldown.ts
|
|
2
2
|
import { createRolldownPlugin } from "unplugin";
|
|
3
3
|
|
|
4
|
-
// src/
|
|
4
|
+
// src/plugin.ts
|
|
5
5
|
import { createUnplugin } from "unplugin";
|
|
6
6
|
import { createHash } from "crypto";
|
|
7
7
|
import { mkdirSync, writeFileSync, existsSync } from "fs";
|
|
8
8
|
import { join } from "path";
|
|
9
9
|
import MagicString from "magic-string";
|
|
10
10
|
var matchInlineCssModules = /(?:const|var|let)\s*(\w+)(?:\s*:.*)?\s*=\s*(\w+)\s*`([\s\S]*?)`/gm;
|
|
11
|
-
var css = (_) => ({});
|
|
12
11
|
var virtualModuleId = "virtual:inline-css-modules";
|
|
13
12
|
var webpackModuleId = "inline-css-modules/virtual";
|
|
14
13
|
var resolvedVirtualModuleId = "\0" + virtualModuleId;
|
|
@@ -114,6 +113,9 @@ var unpluginFactory = (config = {}, meta) => {
|
|
|
114
113
|
};
|
|
115
114
|
var unplugin = createUnplugin(unpluginFactory);
|
|
116
115
|
|
|
116
|
+
// src/index.ts
|
|
117
|
+
var css = (_) => ({});
|
|
118
|
+
|
|
117
119
|
// src/rolldown.ts
|
|
118
120
|
var rolldown_default = createRolldownPlugin(unpluginFactory);
|
|
119
121
|
export {
|
package/dist/rolldown.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rolldown.ts","../src/index.ts"],"sourcesContent":["import { createRolldownPlugin } from 'unplugin'\nimport { unpluginFactory } from './
|
|
1
|
+
{"version":3,"sources":["../src/rolldown.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { createRolldownPlugin } from 'unplugin'\nimport { unpluginFactory } from './plugin'\n\nexport default createRolldownPlugin(unpluginFactory)\nexport { css } from './index'\n","import type { UnpluginFactory } from 'unplugin'\nimport { createUnplugin } from 'unplugin'\nimport { createHash } from 'crypto'\nimport { mkdirSync, writeFileSync, existsSync } from 'fs'\nimport { join } from 'path'\nimport MagicString from 'magic-string'\n\ntype SupportedExtension = 'css' | 'scss' | 'sass' | 'styl' | 'less'\n\nexport type PluginConfig = {\n fileMatch?: RegExp\n tagName?: string\n extension?: SupportedExtension\n inlineImport?: boolean\n moduleStrategy?: 'virtual' | 'filesystem'\n}\n\nconst matchInlineCssModules =\n /(?:const|var|let)\\s*(\\w+)(?:\\s*:.*)?\\s*=\\s*(\\w+)\\s*`([\\s\\S]*?)`/gm\n\nconst virtualModuleId = 'virtual:inline-css-modules'\nconst webpackModuleId = 'inline-css-modules/virtual'\nconst resolvedVirtualModuleId = '\\0' + virtualModuleId\nconst resolvedWebpackModuleId = '\\0inline-css-modules/virtual'\n\nlet cssModules: Record<string, string> = {}\n\nconst getCacheDir = () =>\n join(process.cwd(), 'node_modules', '.cache', 'inline-css-modules')\nconst getCachePath = (hash: string) => join(getCacheDir(), `${hash}.module.css`)\n\nfunction ensureCacheDir() {\n const dir = getCacheDir()\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true })\n }\n}\n\nfunction hashCss(css: string): string {\n return createHash('md5').update(css).digest('hex')\n}\n\nfunction writeToCache(hash: string, css: string): void {\n ensureCacheDir()\n writeFileSync(getCachePath(hash), css)\n}\n\nexport const unpluginFactory: UnpluginFactory<PluginConfig | undefined> = (\n config = {},\n meta\n) => {\n const fileMatch = config.fileMatch ?? /\\.(tsx|jsx|js|vue|svelte)$/\n const tagName = config.tagName ?? 'css'\n const preprocessor = config.extension ?? 'css'\n const useFilesystem = config.moduleStrategy === 'filesystem'\n const moduleId = useFilesystem ? webpackModuleId : virtualModuleId\n const resolvedId = useFilesystem\n ? resolvedWebpackModuleId\n : resolvedVirtualModuleId\n\n return {\n name: 'inline-css-modules',\n enforce: 'pre',\n resolveId(id) {\n if (id === moduleId || id.startsWith(moduleId + '/')) {\n return resolvedId + id.slice(moduleId.length)\n }\n return undefined\n },\n loadInclude(id) {\n return id.startsWith(resolvedId)\n },\n load(id) {\n if (!id.startsWith(resolvedId + '/')) return undefined\n\n const file = id.slice(resolvedId.length + 1).replace(/\\?used$/, '')\n const css = cssModules[file]\n\n if (!css) return undefined\n\n return {\n code: css,\n map: null,\n }\n },\n transform: {\n filter: {\n id: fileMatch,\n },\n handler(src, id) {\n const s = new MagicString(src)\n const imports: string[] = []\n let hasChanges = false\n\n let match: RegExpExecArray | null\n const importRegex =\n /import\\s*{\\s*(?:css|inlineCss)\\s*(?:as\\s*\\w+\\s*)?}\\s*from\\s*('|\"|`)unplugin-inline-css-modules\\1;?/gm\n while ((match = importRegex.exec(src)) !== null) {\n s.remove(match.index, match.index + match[0].length)\n hasChanges = true\n }\n\n matchInlineCssModules.lastIndex = 0\n while ((match = matchInlineCssModules.exec(src)) !== null) {\n const [fullMatch, variableName, tag, css] = match\n if (tag !== tagName) continue\n\n const hash = hashCss(css)\n const filename = `${hash}.module.${preprocessor}`\n cssModules[filename] = css\n\n let importStatement: string\n if (useFilesystem) {\n writeToCache(hash, css)\n importStatement = `import ${variableName} from \"${getCachePath(hash)}\"`\n } else {\n importStatement = `import ${variableName} from \"${moduleId}/${filename}\"`\n }\n\n if (config.inlineImport === false) {\n imports.push(importStatement)\n s.overwrite(match.index, match.index + fullMatch.length, '')\n } else {\n s.overwrite(\n match.index,\n match.index + fullMatch.length,\n importStatement\n )\n }\n hasChanges = true\n }\n\n if (imports.length) {\n s.prepend(imports.join('\\n') + '\\n')\n }\n\n if (!hasChanges) {\n return null\n }\n\n return {\n code: s.toString(),\n map: s.generateMap({ source: id, includeContent: true }),\n }\n },\n },\n }\n}\n\nexport const unplugin = createUnplugin(unpluginFactory)\n\nexport default unplugin\n","export const css = (_: TemplateStringsArray): Record<string, string> => ({})\n"],"mappings":"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","names":["css"]}
|
package/dist/rollup.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as rollup from 'rollup';
|
|
2
|
-
import { PluginConfig } from './
|
|
2
|
+
import { PluginConfig } from './plugin.mjs';
|
|
3
3
|
export { css } from './index.mjs';
|
|
4
4
|
import 'unplugin';
|
|
5
5
|
|
|
6
6
|
declare const _default: (options?: PluginConfig | undefined) => rollup.Plugin<any> | rollup.Plugin<any>[];
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { _default as default };
|
package/dist/rollup.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as rollup from 'rollup';
|
|
2
|
-
import { PluginConfig } from './
|
|
2
|
+
import { PluginConfig } from './plugin.js';
|
|
3
3
|
export { css } from './index.js';
|
|
4
4
|
import 'unplugin';
|
|
5
5
|
|
|
6
6
|
declare const _default: (options?: PluginConfig | undefined) => rollup.Plugin<any> | rollup.Plugin<any>[];
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { _default as default };
|