unplugin-essor 0.0.14 → 0.0.15-beta.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/README.md +37 -0
- package/dist/astro.cjs +12 -149
- package/dist/astro.cjs.map +1 -1
- package/dist/astro.d.cts +2 -7
- package/dist/astro.d.ts +1 -6
- package/dist/astro.js +6 -7
- package/dist/astro.js.map +1 -1
- package/dist/{chunk-VVPVCNL5.js → chunk-KCKAO6VH.js} +52 -46
- package/dist/chunk-KCKAO6VH.js.map +1 -0
- package/dist/chunk-KK7POSQ3.cjs +126 -0
- package/dist/chunk-KK7POSQ3.cjs.map +1 -0
- package/dist/esbuild.cjs +9 -124
- package/dist/esbuild.cjs.map +1 -1
- package/dist/esbuild.d.cts +1 -1
- package/dist/esbuild.js +1 -1
- package/dist/farm.cjs +13 -0
- package/dist/farm.cjs.map +1 -0
- package/dist/farm.d.cts +6 -0
- package/dist/farm.d.ts +6 -0
- package/dist/farm.js +11 -0
- package/dist/farm.js.map +1 -0
- package/dist/index.cjs +10 -130
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.js +3 -3
- package/dist/rolldown.cjs +13 -0
- package/dist/rolldown.cjs.map +1 -0
- package/dist/rolldown.d.cts +7 -0
- package/dist/rolldown.d.ts +7 -0
- package/dist/rolldown.js +11 -0
- package/dist/rolldown.js.map +1 -0
- package/dist/rollup.cjs +9 -124
- package/dist/rollup.cjs.map +1 -1
- package/dist/rollup.d.cts +1 -1
- package/dist/rollup.js +1 -1
- package/dist/rspack.cjs +9 -124
- package/dist/rspack.cjs.map +1 -1
- package/dist/rspack.d.cts +1 -1
- package/dist/rspack.js +1 -1
- package/dist/types.cjs +1 -19
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +2 -1
- package/dist/types.d.ts +2 -1
- package/dist/vite.cjs +9 -124
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.cts +1 -1
- package/dist/vite.js +1 -1
- package/dist/webpack.cjs +9 -124
- package/dist/webpack.cjs.map +1 -1
- package/dist/webpack.d.cts +1 -1
- package/dist/webpack.js +1 -1
- package/package.json +32 -13
- package/dist/chunk-VVPVCNL5.js.map +0 -1
package/README.md
CHANGED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# unplugin-essor
|
|
2
|
+
|
|
3
|
+
The unplugin wrapper for **Essor**. It allows you to use the Essor Babel plugin with various build tools like Vite, Webpack, Rollup, and more.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D unplugin-essor
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Vite
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
// vite.config.ts
|
|
17
|
+
import Essor from 'unplugin-essor/vite';
|
|
18
|
+
|
|
19
|
+
export default {
|
|
20
|
+
plugins: [Essor()],
|
|
21
|
+
};
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Webpack
|
|
25
|
+
|
|
26
|
+
```js
|
|
27
|
+
// webpack.config.js
|
|
28
|
+
const Essor = require('unplugin-essor/webpack');
|
|
29
|
+
|
|
30
|
+
module.exports = {
|
|
31
|
+
plugins: [Essor()],
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## License
|
|
36
|
+
|
|
37
|
+
MIT
|
package/dist/astro.cjs
CHANGED
|
@@ -1,159 +1,22 @@
|
|
|
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 __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
-
var __spreadValues = (a, b) => {
|
|
12
|
-
for (var prop in b || (b = {}))
|
|
13
|
-
if (__hasOwnProp.call(b, prop))
|
|
14
|
-
__defNormalProp(a, prop, b[prop]);
|
|
15
|
-
if (__getOwnPropSymbols)
|
|
16
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
-
if (__propIsEnum.call(b, prop))
|
|
18
|
-
__defNormalProp(a, prop, b[prop]);
|
|
19
|
-
}
|
|
20
|
-
return a;
|
|
21
|
-
};
|
|
22
|
-
var __export = (target, all) => {
|
|
23
|
-
for (var name in all)
|
|
24
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
25
|
-
};
|
|
26
|
-
var __copyProps = (to, from, except, desc) => {
|
|
27
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
28
|
-
for (let key of __getOwnPropNames(from))
|
|
29
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
30
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
31
|
-
}
|
|
32
|
-
return to;
|
|
33
|
-
};
|
|
34
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
35
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
36
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
37
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
38
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
39
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
40
|
-
mod
|
|
41
|
-
));
|
|
42
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
43
|
-
var __async = (__this, __arguments, generator) => {
|
|
44
|
-
return new Promise((resolve, reject) => {
|
|
45
|
-
var fulfilled = (value) => {
|
|
46
|
-
try {
|
|
47
|
-
step(generator.next(value));
|
|
48
|
-
} catch (e) {
|
|
49
|
-
reject(e);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
var rejected = (value) => {
|
|
53
|
-
try {
|
|
54
|
-
step(generator.throw(value));
|
|
55
|
-
} catch (e) {
|
|
56
|
-
reject(e);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
60
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
// src/astro.ts
|
|
65
|
-
var astro_exports = {};
|
|
66
|
-
__export(astro_exports, {
|
|
67
|
-
default: () => astro_default
|
|
68
|
-
});
|
|
69
|
-
module.exports = __toCommonJS(astro_exports);
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
70
2
|
|
|
71
|
-
|
|
72
|
-
var import_unplugin = require("unplugin");
|
|
73
|
-
var babel = __toESM(require("@babel/core"), 1);
|
|
74
|
-
var import_babel_plugin_essor = __toESM(require("babel-plugin-essor"), 1);
|
|
75
|
-
var import_vite = require("vite");
|
|
76
|
-
var CSS_EXTENSIONS = [".css", ".scss", ".sass"];
|
|
77
|
-
var DEFAULT_OPTIONS = {
|
|
78
|
-
symbol: "$",
|
|
79
|
-
props: true,
|
|
80
|
-
server: false
|
|
81
|
-
};
|
|
82
|
-
var unpluginFactory = (options = {}) => {
|
|
83
|
-
const filter = (0, import_vite.createFilter)(options.include, options.exclude);
|
|
84
|
-
return {
|
|
85
|
-
name: "unplugin-essor",
|
|
86
|
-
// enforce: 'pre',
|
|
87
|
-
config() {
|
|
88
|
-
return {
|
|
89
|
-
esbuild: {
|
|
90
|
-
jsx: "preserve"
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
},
|
|
94
|
-
transform(code, id) {
|
|
95
|
-
if (["node_modules", "dist", "public"].some((p) => id.includes(p))) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
if (!filter(id) || !/.[cm]?[jt]sx?$/i.test(id)) {
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
const result = babel.transformSync(code, {
|
|
102
|
-
filename: id,
|
|
103
|
-
sourceMaps: true,
|
|
104
|
-
sourceType: "module",
|
|
105
|
-
plugins: [[import_babel_plugin_essor.default, __spreadValues(__spreadValues({}, DEFAULT_OPTIONS), options)]]
|
|
106
|
-
});
|
|
107
|
-
if (result == null ? void 0 : result.code) {
|
|
108
|
-
return {
|
|
109
|
-
code: result.code,
|
|
110
|
-
map: result.map
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
return code;
|
|
114
|
-
},
|
|
115
|
-
handleHotUpdate(ctx) {
|
|
116
|
-
var _a, _b;
|
|
117
|
-
for (const mod of ctx.modules) {
|
|
118
|
-
const deps = (_b = (_a = mod.info) == null ? void 0 : _a.meta) == null ? void 0 : _b.deps;
|
|
119
|
-
if (deps && deps.length > 0) {
|
|
120
|
-
for (const dep of deps) {
|
|
121
|
-
const mod2 = ctx.server.moduleGraph.getModuleById(dep);
|
|
122
|
-
if (mod2) {
|
|
123
|
-
ctx.server.moduleGraph.invalidateModule(mod2);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
} else if (mod.type === "js" && Array.from(mod.importers).every(
|
|
127
|
-
(m) => m.type === "css" || CSS_EXTENSIONS.some((ext) => {
|
|
128
|
-
var _a2;
|
|
129
|
-
return (_a2 = m.file) == null ? void 0 : _a2.endsWith(ext);
|
|
130
|
-
})
|
|
131
|
-
)) {
|
|
132
|
-
ctx.server.moduleGraph.invalidateAll();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
if (CSS_EXTENSIONS.some((ext) => ctx.file.endsWith(ext))) {
|
|
136
|
-
ctx.server.ws.send({
|
|
137
|
-
type: "full-reload"
|
|
138
|
-
});
|
|
139
|
-
return [];
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
};
|
|
144
|
-
var unplugin = /* @__PURE__ */ (0, import_unplugin.createUnplugin)(unpluginFactory);
|
|
145
|
-
var src_default = unplugin;
|
|
3
|
+
var _chunkKK7POSQ3cjs = require('./chunk-KK7POSQ3.cjs');
|
|
146
4
|
|
|
147
5
|
// src/astro.ts
|
|
148
6
|
var astro_default = (options) => ({
|
|
149
|
-
name: "unplugin-
|
|
7
|
+
name: "unplugin-starter",
|
|
150
8
|
hooks: {
|
|
151
9
|
// eslint-disable-next-line require-await
|
|
152
|
-
"astro:config:setup": (astro) =>
|
|
10
|
+
"astro:config:setup": async (astro) => {
|
|
153
11
|
var _a;
|
|
154
12
|
(_a = astro.config.vite).plugins || (_a.plugins = []);
|
|
155
|
-
astro.config.vite.plugins.push(
|
|
156
|
-
}
|
|
13
|
+
astro.config.vite.plugins.push(_chunkKK7POSQ3cjs.index_default.vite(options));
|
|
14
|
+
}
|
|
157
15
|
}
|
|
158
16
|
});
|
|
159
|
-
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
exports.default = astro_default;
|
|
20
|
+
|
|
21
|
+
module.exports = exports.default;
|
|
22
|
+
//# sourceMappingURL=astro.cjs.map
|
package/dist/astro.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/essor/essor/packages/unplugin/dist/astro.cjs","../src/astro.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAAA;AACA;AACA;ACDA,IAAO,cAAA,EAAQ,CAAC,OAAA,EAAA,GAAA,CAA2B;AAAA,EACzC,IAAA,EAAM,kBAAA;AAAA,EACN,KAAA,EAAO;AAAA;AAAA,IAEL,oBAAA,EAAsB,MAAA,CAAO,KAAA,EAAA,GAAe;AAPhD,MAAA,IAAA,EAAA;AAQM,MAAA,CAAA,GAAA,EAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAA,CAAK,QAAA,GAAA,CAAlB,EAAA,CAAkB,QAAA,EAAY,CAAC,CAAA,CAAA;AAC/B,MAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,+BAAA,CAAS,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IACvD;AAAA,EACF;AACF,CAAA,CAAA;ADIA;AACE;AACF,gCAAA","file":"/home/runner/work/essor/essor/packages/unplugin/dist/astro.cjs","sourcesContent":[null,"import unplugin from '.';\nimport type { Options } from './types';\n\nexport default (options: Options): any => ({\n name: 'unplugin-starter',\n hooks: {\n // eslint-disable-next-line require-await\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= [];\n astro.config.vite.plugins.push(unplugin.vite(options));\n },\n },\n});\n"]}
|
package/dist/astro.d.cts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { Options } from './types.cjs';
|
|
2
2
|
import 'vite';
|
|
3
3
|
|
|
4
|
-
declare const _default: (options: Options) =>
|
|
5
|
-
name: string;
|
|
6
|
-
hooks: {
|
|
7
|
-
'astro:config:setup': (astro: any) => Promise<void>;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
4
|
+
declare const _default: (options: Options) => any;
|
|
10
5
|
|
|
11
|
-
export
|
|
6
|
+
export = _default;
|
package/dist/astro.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { Options } from './types.js';
|
|
2
2
|
import 'vite';
|
|
3
3
|
|
|
4
|
-
declare const _default: (options: Options) =>
|
|
5
|
-
name: string;
|
|
6
|
-
hooks: {
|
|
7
|
-
'astro:config:setup': (astro: any) => Promise<void>;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
4
|
+
declare const _default: (options: Options) => any;
|
|
10
5
|
|
|
11
6
|
export { _default as default };
|
package/dist/astro.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./chunk-VVPVCNL5.js";
|
|
2
|
+
index_default
|
|
3
|
+
} from "./chunk-KCKAO6VH.js";
|
|
5
4
|
|
|
6
5
|
// src/astro.ts
|
|
7
6
|
var astro_default = (options) => ({
|
|
8
|
-
name: "unplugin-
|
|
7
|
+
name: "unplugin-starter",
|
|
9
8
|
hooks: {
|
|
10
9
|
// eslint-disable-next-line require-await
|
|
11
|
-
"astro:config:setup": (astro) =>
|
|
10
|
+
"astro:config:setup": async (astro) => {
|
|
12
11
|
var _a;
|
|
13
12
|
(_a = astro.config.vite).plugins || (_a.plugins = []);
|
|
14
|
-
astro.config.vite.plugins.push(
|
|
15
|
-
}
|
|
13
|
+
astro.config.vite.plugins.push(index_default.vite(options));
|
|
14
|
+
}
|
|
16
15
|
}
|
|
17
16
|
});
|
|
18
17
|
export {
|
package/dist/astro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/astro.ts"],"sourcesContent":["import unplugin from '.';\nimport type { Options } from './types';\n\nexport default (options: Options) => ({\n name: 'unplugin-
|
|
1
|
+
{"version":3,"sources":["../src/astro.ts"],"sourcesContent":["import unplugin from '.';\nimport type { Options } from './types';\n\nexport default (options: Options): any => ({\n name: 'unplugin-starter',\n hooks: {\n // eslint-disable-next-line require-await\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= [];\n astro.config.vite.plugins.push(unplugin.vite(options));\n },\n },\n});\n"],"mappings":";;;;;AAGA,IAAO,gBAAQ,CAAC,aAA2B;AAAA,EACzC,MAAM;AAAA,EACN,OAAO;AAAA;AAAA,IAEL,sBAAsB,OAAO,UAAe;AAPhD;AAQM,kBAAM,OAAO,MAAK,YAAlB,GAAkB,UAAY,CAAC;AAC/B,YAAM,OAAO,KAAK,QAAQ,KAAK,cAAS,KAAK,OAAO,CAAC;AAAA,IACvD;AAAA,EACF;AACF;","names":[]}
|
|
@@ -14,26 +14,6 @@ var __spreadValues = (a, b) => {
|
|
|
14
14
|
}
|
|
15
15
|
return a;
|
|
16
16
|
};
|
|
17
|
-
var __async = (__this, __arguments, generator) => {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
var fulfilled = (value) => {
|
|
20
|
-
try {
|
|
21
|
-
step(generator.next(value));
|
|
22
|
-
} catch (e) {
|
|
23
|
-
reject(e);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
var rejected = (value) => {
|
|
27
|
-
try {
|
|
28
|
-
step(generator.throw(value));
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
34
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
17
|
|
|
38
18
|
// src/index.ts
|
|
39
19
|
import { createUnplugin } from "unplugin";
|
|
@@ -41,16 +21,17 @@ import * as babel from "@babel/core";
|
|
|
41
21
|
import essorBabelPlugin from "babel-plugin-essor";
|
|
42
22
|
import { createFilter } from "vite";
|
|
43
23
|
var CSS_EXTENSIONS = [".css", ".scss", ".sass"];
|
|
24
|
+
var JSX_EXTENSIONS = [".jsx", ".tsx"];
|
|
44
25
|
var DEFAULT_OPTIONS = {
|
|
45
26
|
symbol: "$",
|
|
27
|
+
mode: "client",
|
|
46
28
|
props: true,
|
|
47
|
-
|
|
29
|
+
hmr: true
|
|
48
30
|
};
|
|
49
31
|
var unpluginFactory = (options = {}) => {
|
|
50
32
|
const filter = createFilter(options.include, options.exclude);
|
|
51
33
|
return {
|
|
52
34
|
name: "unplugin-essor",
|
|
53
|
-
// enforce: 'pre',
|
|
54
35
|
config() {
|
|
55
36
|
return {
|
|
56
37
|
esbuild: {
|
|
@@ -81,40 +62,65 @@ var unpluginFactory = (options = {}) => {
|
|
|
81
62
|
},
|
|
82
63
|
handleHotUpdate(ctx) {
|
|
83
64
|
var _a, _b;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
65
|
+
const { file, modules, server } = ctx;
|
|
66
|
+
if (CSS_EXTENSIONS.some((ext) => file.endsWith(ext))) {
|
|
67
|
+
return modules;
|
|
68
|
+
}
|
|
69
|
+
if (JSX_EXTENSIONS.some((ext) => file.endsWith(ext))) {
|
|
70
|
+
const updatedModules = /* @__PURE__ */ new Set();
|
|
71
|
+
for (const mod of modules) {
|
|
72
|
+
const deps = ((_b = (_a = mod.info) == null ? void 0 : _a.meta) == null ? void 0 : _b.deps) || [];
|
|
73
|
+
const importers = Array.from(mod.importers || []);
|
|
74
|
+
const isComponent = JSX_EXTENSIONS.some((ext) => {
|
|
75
|
+
var _a2;
|
|
76
|
+
return (_a2 = mod.file) == null ? void 0 : _a2.endsWith(ext);
|
|
77
|
+
});
|
|
78
|
+
if (isComponent) {
|
|
79
|
+
updatedModules.add(mod);
|
|
80
|
+
for (const dep of deps) {
|
|
81
|
+
const depMod = server.moduleGraph.getModuleById(dep);
|
|
82
|
+
if (depMod) {
|
|
83
|
+
updatedModules.add(depMod);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
for (const importer of importers) {
|
|
87
|
+
if (importer.type === "js") {
|
|
88
|
+
updatedModules.add(importer);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
server.ws.send({
|
|
92
|
+
type: "custom",
|
|
93
|
+
event: "essor:hmr",
|
|
94
|
+
data: {
|
|
95
|
+
id: mod.id,
|
|
96
|
+
timestamp: Date.now()
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
updatedModules.add(mod);
|
|
101
|
+
server.moduleGraph.invalidateModule(mod);
|
|
102
|
+
const stack = [...importers];
|
|
103
|
+
while (stack.length) {
|
|
104
|
+
const current = stack.pop();
|
|
105
|
+
if (current && !updatedModules.has(current)) {
|
|
106
|
+
updatedModules.add(current);
|
|
107
|
+
stack.push(...Array.from(current.importers || []));
|
|
108
|
+
}
|
|
91
109
|
}
|
|
92
110
|
}
|
|
93
|
-
} else if (mod.type === "js" && Array.from(mod.importers).every(
|
|
94
|
-
(m) => m.type === "css" || CSS_EXTENSIONS.some((ext) => {
|
|
95
|
-
var _a2;
|
|
96
|
-
return (_a2 = m.file) == null ? void 0 : _a2.endsWith(ext);
|
|
97
|
-
})
|
|
98
|
-
)) {
|
|
99
|
-
ctx.server.moduleGraph.invalidateAll();
|
|
100
111
|
}
|
|
112
|
+
return Array.from(updatedModules);
|
|
101
113
|
}
|
|
102
|
-
|
|
103
|
-
ctx.server.ws.send({
|
|
104
|
-
type: "full-reload"
|
|
105
|
-
});
|
|
106
|
-
return [];
|
|
107
|
-
}
|
|
114
|
+
return modules;
|
|
108
115
|
}
|
|
109
116
|
};
|
|
110
117
|
};
|
|
111
118
|
var unplugin = /* @__PURE__ */ createUnplugin(unpluginFactory);
|
|
112
|
-
var
|
|
119
|
+
var index_default = unplugin;
|
|
113
120
|
|
|
114
121
|
export {
|
|
115
|
-
__async,
|
|
116
122
|
unpluginFactory,
|
|
117
123
|
unplugin,
|
|
118
|
-
|
|
124
|
+
index_default
|
|
119
125
|
};
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
126
|
+
//# sourceMappingURL=chunk-KCKAO6VH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createUnplugin } from 'unplugin';\nimport * as babel from '@babel/core';\nimport essorBabelPlugin from 'babel-plugin-essor';\nimport { createFilter } from 'vite';\nimport type { UnpluginFactory } from 'unplugin';\nimport type { Options } from './types';\nimport type { ModuleNode, ViteDevServer } from 'vite';\n\nconst CSS_EXTENSIONS = ['.css', '.scss', '.sass'];\nconst JSX_EXTENSIONS = ['.jsx', '.tsx'];\n\nconst DEFAULT_OPTIONS = {\n symbol: '$',\n mode: 'client',\n props: true,\n hmr: true,\n};\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options: Options = {}) => {\n const filter = createFilter(options.include, options.exclude);\n\n return {\n name: 'unplugin-essor',\n config() {\n return {\n esbuild: {\n jsx: 'preserve',\n },\n };\n },\n\n transform(code, id) {\n if (['node_modules', 'dist', 'public'].some(p => id.includes(p))) {\n return;\n }\n //\n if (!filter(id) || !/.[cm]?[jt]sx?$/i.test(id)) {\n return null;\n }\n\n const result = babel.transformSync(code, {\n filename: id,\n sourceMaps: true,\n sourceType: 'module',\n plugins: [[essorBabelPlugin, { ...DEFAULT_OPTIONS, ...options }]],\n });\n if (result?.code) {\n return {\n code: result.code,\n map: result.map,\n };\n }\n return code;\n },\n\n handleHotUpdate(ctx: { file: string; modules: ModuleNode[]; server: ViteDevServer }) {\n const { file, modules, server } = ctx;\n\n // 1. Handle style file hot updates\n if (CSS_EXTENSIONS.some(ext => file.endsWith(ext))) {\n // Only update style modules, no need for full page refresh\n return modules;\n }\n\n // 2. Handle JSX/TSX component files\n if (JSX_EXTENSIONS.some(ext => file.endsWith(ext))) {\n const updatedModules = new Set<ModuleNode>();\n\n for (const mod of modules) {\n // Get module dependency information\n const deps = mod.info?.meta?.deps || [];\n const importers = Array.from(mod.importers || []);\n\n // Check if it's a component file\n const isComponent = JSX_EXTENSIONS.some(ext => mod.file?.endsWith(ext));\n\n if (isComponent) {\n // For component files, we only update the component itself and modules that directly depend on it\n updatedModules.add(mod);\n\n // Process direct dependencies\n for (const dep of deps) {\n const depMod = server.moduleGraph.getModuleById(dep);\n if (depMod) {\n updatedModules.add(depMod);\n }\n }\n\n // Process modules that import this component\n for (const importer of importers) {\n if ((importer as ModuleNode).type === 'js') {\n updatedModules.add(importer as ModuleNode);\n }\n }\n\n // Send HMR update event\n server.ws.send({\n type: 'custom',\n event: 'essor:hmr',\n data: {\n id: mod.id,\n timestamp: Date.now(),\n },\n });\n } else {\n // For non-component files, we need to update all modules that depend on it\n updatedModules.add(mod);\n server.moduleGraph.invalidateModule(mod);\n\n // Recursively process all dependencies\n const stack = [...importers];\n while (stack.length) {\n const current = stack.pop() as ModuleNode;\n if (current && !updatedModules.has(current)) {\n updatedModules.add(current);\n stack.push(...Array.from(current.importers || []));\n }\n }\n }\n }\n\n return Array.from(updatedModules);\n }\n\n // 3. Other file types, maintain default behavior\n return modules;\n },\n };\n};\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory);\n\nexport default unplugin;\n"],"mappings":"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","names":["_a"]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// src/index.ts
|
|
19
|
+
var _unplugin = require('unplugin');
|
|
20
|
+
var _core = require('@babel/core'); var babel = _interopRequireWildcard(_core);
|
|
21
|
+
var _babelpluginessor = require('babel-plugin-essor'); var _babelpluginessor2 = _interopRequireDefault(_babelpluginessor);
|
|
22
|
+
var _vite = require('vite');
|
|
23
|
+
var CSS_EXTENSIONS = [".css", ".scss", ".sass"];
|
|
24
|
+
var JSX_EXTENSIONS = [".jsx", ".tsx"];
|
|
25
|
+
var DEFAULT_OPTIONS = {
|
|
26
|
+
symbol: "$",
|
|
27
|
+
mode: "client",
|
|
28
|
+
props: true,
|
|
29
|
+
hmr: true
|
|
30
|
+
};
|
|
31
|
+
var unpluginFactory = (options = {}) => {
|
|
32
|
+
const filter = _vite.createFilter.call(void 0, options.include, options.exclude);
|
|
33
|
+
return {
|
|
34
|
+
name: "unplugin-essor",
|
|
35
|
+
config() {
|
|
36
|
+
return {
|
|
37
|
+
esbuild: {
|
|
38
|
+
jsx: "preserve"
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
transform(code, id) {
|
|
43
|
+
if (["node_modules", "dist", "public"].some((p) => id.includes(p))) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!filter(id) || !/.[cm]?[jt]sx?$/i.test(id)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const result = babel.transformSync(code, {
|
|
50
|
+
filename: id,
|
|
51
|
+
sourceMaps: true,
|
|
52
|
+
sourceType: "module",
|
|
53
|
+
plugins: [[_babelpluginessor2.default, __spreadValues(__spreadValues({}, DEFAULT_OPTIONS), options)]]
|
|
54
|
+
});
|
|
55
|
+
if (result == null ? void 0 : result.code) {
|
|
56
|
+
return {
|
|
57
|
+
code: result.code,
|
|
58
|
+
map: result.map
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return code;
|
|
62
|
+
},
|
|
63
|
+
handleHotUpdate(ctx) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
const { file, modules, server } = ctx;
|
|
66
|
+
if (CSS_EXTENSIONS.some((ext) => file.endsWith(ext))) {
|
|
67
|
+
return modules;
|
|
68
|
+
}
|
|
69
|
+
if (JSX_EXTENSIONS.some((ext) => file.endsWith(ext))) {
|
|
70
|
+
const updatedModules = /* @__PURE__ */ new Set();
|
|
71
|
+
for (const mod of modules) {
|
|
72
|
+
const deps = ((_b = (_a = mod.info) == null ? void 0 : _a.meta) == null ? void 0 : _b.deps) || [];
|
|
73
|
+
const importers = Array.from(mod.importers || []);
|
|
74
|
+
const isComponent = JSX_EXTENSIONS.some((ext) => {
|
|
75
|
+
var _a2;
|
|
76
|
+
return (_a2 = mod.file) == null ? void 0 : _a2.endsWith(ext);
|
|
77
|
+
});
|
|
78
|
+
if (isComponent) {
|
|
79
|
+
updatedModules.add(mod);
|
|
80
|
+
for (const dep of deps) {
|
|
81
|
+
const depMod = server.moduleGraph.getModuleById(dep);
|
|
82
|
+
if (depMod) {
|
|
83
|
+
updatedModules.add(depMod);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
for (const importer of importers) {
|
|
87
|
+
if (importer.type === "js") {
|
|
88
|
+
updatedModules.add(importer);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
server.ws.send({
|
|
92
|
+
type: "custom",
|
|
93
|
+
event: "essor:hmr",
|
|
94
|
+
data: {
|
|
95
|
+
id: mod.id,
|
|
96
|
+
timestamp: Date.now()
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
updatedModules.add(mod);
|
|
101
|
+
server.moduleGraph.invalidateModule(mod);
|
|
102
|
+
const stack = [...importers];
|
|
103
|
+
while (stack.length) {
|
|
104
|
+
const current = stack.pop();
|
|
105
|
+
if (current && !updatedModules.has(current)) {
|
|
106
|
+
updatedModules.add(current);
|
|
107
|
+
stack.push(...Array.from(current.importers || []));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return Array.from(updatedModules);
|
|
113
|
+
}
|
|
114
|
+
return modules;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
var unplugin = /* @__PURE__ */ _unplugin.createUnplugin.call(void 0, unpluginFactory);
|
|
119
|
+
var index_default = unplugin;
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
exports.unpluginFactory = unpluginFactory; exports.unplugin = unplugin; exports.index_default = index_default;
|
|
126
|
+
//# sourceMappingURL=chunk-KK7POSQ3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/essor/essor/packages/unplugin/dist/chunk-KK7POSQ3.cjs","../src/index.ts"],"names":["_a"],"mappings":"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","file":"/home/runner/work/essor/essor/packages/unplugin/dist/chunk-KK7POSQ3.cjs","sourcesContent":[null,"import { createUnplugin } from 'unplugin';\nimport * as babel from '@babel/core';\nimport essorBabelPlugin from 'babel-plugin-essor';\nimport { createFilter } from 'vite';\nimport type { UnpluginFactory } from 'unplugin';\nimport type { Options } from './types';\nimport type { ModuleNode, ViteDevServer } from 'vite';\n\nconst CSS_EXTENSIONS = ['.css', '.scss', '.sass'];\nconst JSX_EXTENSIONS = ['.jsx', '.tsx'];\n\nconst DEFAULT_OPTIONS = {\n symbol: '$',\n mode: 'client',\n props: true,\n hmr: true,\n};\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options: Options = {}) => {\n const filter = createFilter(options.include, options.exclude);\n\n return {\n name: 'unplugin-essor',\n config() {\n return {\n esbuild: {\n jsx: 'preserve',\n },\n };\n },\n\n transform(code, id) {\n if (['node_modules', 'dist', 'public'].some(p => id.includes(p))) {\n return;\n }\n //\n if (!filter(id) || !/.[cm]?[jt]sx?$/i.test(id)) {\n return null;\n }\n\n const result = babel.transformSync(code, {\n filename: id,\n sourceMaps: true,\n sourceType: 'module',\n plugins: [[essorBabelPlugin, { ...DEFAULT_OPTIONS, ...options }]],\n });\n if (result?.code) {\n return {\n code: result.code,\n map: result.map,\n };\n }\n return code;\n },\n\n handleHotUpdate(ctx: { file: string; modules: ModuleNode[]; server: ViteDevServer }) {\n const { file, modules, server } = ctx;\n\n // 1. Handle style file hot updates\n if (CSS_EXTENSIONS.some(ext => file.endsWith(ext))) {\n // Only update style modules, no need for full page refresh\n return modules;\n }\n\n // 2. Handle JSX/TSX component files\n if (JSX_EXTENSIONS.some(ext => file.endsWith(ext))) {\n const updatedModules = new Set<ModuleNode>();\n\n for (const mod of modules) {\n // Get module dependency information\n const deps = mod.info?.meta?.deps || [];\n const importers = Array.from(mod.importers || []);\n\n // Check if it's a component file\n const isComponent = JSX_EXTENSIONS.some(ext => mod.file?.endsWith(ext));\n\n if (isComponent) {\n // For component files, we only update the component itself and modules that directly depend on it\n updatedModules.add(mod);\n\n // Process direct dependencies\n for (const dep of deps) {\n const depMod = server.moduleGraph.getModuleById(dep);\n if (depMod) {\n updatedModules.add(depMod);\n }\n }\n\n // Process modules that import this component\n for (const importer of importers) {\n if ((importer as ModuleNode).type === 'js') {\n updatedModules.add(importer as ModuleNode);\n }\n }\n\n // Send HMR update event\n server.ws.send({\n type: 'custom',\n event: 'essor:hmr',\n data: {\n id: mod.id,\n timestamp: Date.now(),\n },\n });\n } else {\n // For non-component files, we need to update all modules that depend on it\n updatedModules.add(mod);\n server.moduleGraph.invalidateModule(mod);\n\n // Recursively process all dependencies\n const stack = [...importers];\n while (stack.length) {\n const current = stack.pop() as ModuleNode;\n if (current && !updatedModules.has(current)) {\n updatedModules.add(current);\n stack.push(...Array.from(current.importers || []));\n }\n }\n }\n }\n\n return Array.from(updatedModules);\n }\n\n // 3. Other file types, maintain default behavior\n return modules;\n },\n };\n};\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory);\n\nexport default unplugin;\n"]}
|