@vizejs/rspack-plugin 0.101.0 → 0.103.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-BA-YuYIM.d.mts → index-lMwi--Ex.d.mts} +23 -0
- package/dist/index.d.mts +13 -11
- package/dist/index.mjs +1 -1
- package/dist/loader/index.d.mts +1 -1
- package/dist/loader/index.mjs +1 -1
- package/dist/loader/scope-loader.mjs +1 -1
- package/dist/loader/style-loader.d.mts +1 -1
- package/dist/loader/style-loader.mjs +1 -1
- package/dist/loader-Cu6KT7rY.mjs +24 -0
- package/dist/utils-CFK8mca_.mjs +1 -0
- package/package.json +5 -2
- package/dist/loader-G4-4uHYx.mjs +0 -24
- package/dist/utils-BW6CWIY4.mjs +0 -4
|
@@ -11,6 +11,26 @@ interface SfcCompileOptionsNapi {
|
|
|
11
11
|
/** Scope ID for scoped CSS (e.g., "data-v-abc123") */
|
|
12
12
|
scopeId?: string;
|
|
13
13
|
}
|
|
14
|
+
interface StyleBlockNapi {
|
|
15
|
+
content: string;
|
|
16
|
+
src?: string;
|
|
17
|
+
lang?: string;
|
|
18
|
+
scoped: boolean;
|
|
19
|
+
module: boolean;
|
|
20
|
+
moduleName?: string;
|
|
21
|
+
index: number;
|
|
22
|
+
}
|
|
23
|
+
interface SfcBlockAttributeNapi {
|
|
24
|
+
name: string;
|
|
25
|
+
value?: string;
|
|
26
|
+
}
|
|
27
|
+
interface CustomBlockNapi {
|
|
28
|
+
blockType: string;
|
|
29
|
+
content: string;
|
|
30
|
+
src?: string;
|
|
31
|
+
attrs: SfcBlockAttributeNapi[];
|
|
32
|
+
index: number;
|
|
33
|
+
}
|
|
14
34
|
interface MacroArtifact {
|
|
15
35
|
kind: string;
|
|
16
36
|
name: string;
|
|
@@ -27,6 +47,9 @@ interface SfcCompileResultNapi {
|
|
|
27
47
|
map?: string;
|
|
28
48
|
errors: string[];
|
|
29
49
|
warnings: string[];
|
|
50
|
+
hasScoped: boolean;
|
|
51
|
+
styles: StyleBlockNapi[];
|
|
52
|
+
customBlocks: CustomBlockNapi[];
|
|
30
53
|
macroArtifacts?: MacroArtifact[];
|
|
31
54
|
}
|
|
32
55
|
interface StyleBlockInfo {
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as SfcCompileOptionsNapi, c as StyleBlockInfo, d as VizeStyleLoaderOptions, i as MacroArtifact, l as VizeLoaderOptions, n as CustomBlockInfo, o as SfcCompileResultNapi, r as LoaderEntry, s as SfcSrcInfo, t as CompiledModule, u as VizeRspackPluginOptions } from "./index-
|
|
1
|
+
import { a as SfcCompileOptionsNapi, c as StyleBlockInfo, d as VizeStyleLoaderOptions, i as MacroArtifact, l as VizeLoaderOptions, n as CustomBlockInfo, o as SfcCompileResultNapi, r as LoaderEntry, s as SfcSrcInfo, t as CompiledModule, u as VizeRspackPluginOptions } from "./index-lMwi--Ex.mjs";
|
|
2
2
|
import vizeLoader from "./loader/index.mjs";
|
|
3
3
|
import vizeStyleLoader from "./loader/style-loader.mjs";
|
|
4
4
|
import vizeScopeLoader from "./loader/scope-loader.mjs";
|
|
@@ -32,7 +32,7 @@ declare function applyRuleCloning(rules: (RuleSetRule | "...")[], nativeCss: boo
|
|
|
32
32
|
declare function generateScopeId(filename: string, rootContext?: string, isProduction?: boolean, source?: string): string;
|
|
33
33
|
/** Extract style block metadata from SFC source. */
|
|
34
34
|
declare function extractStyleBlocks(source: string): StyleBlockInfo[];
|
|
35
|
-
/**
|
|
35
|
+
/** Back-compat export for scoped CSS transformation. Delegates to the native CSS pipeline. */
|
|
36
36
|
declare function addScopeToCssFallback(css: string, scopeId: string): string;
|
|
37
37
|
/** Extract custom block metadata from SFC source (non-script/template/style tags). */
|
|
38
38
|
declare function extractCustomBlocks(source: string): CustomBlockInfo[];
|
|
@@ -48,6 +48,17 @@ declare function matchesPattern(file: string, pattern: string | RegExp | (string
|
|
|
48
48
|
/** Generate `module.hot` HMR boilerplate for a Vue SFC. */
|
|
49
49
|
declare function genHotReloadCode(id: string): string;
|
|
50
50
|
//#endregion
|
|
51
|
+
//#region src/shared/output.d.ts
|
|
52
|
+
/** Generate JS output with style/custom-block imports and optional HMR code. */
|
|
53
|
+
declare function generateOutput(compiled: CompiledModule, options: {
|
|
54
|
+
requestPath: string; /** Inject HMR boilerplate using `module.hot` (Rspack/webpack CJS API) */
|
|
55
|
+
hmr?: boolean; /** Original file path (for __file exposure in dev mode) */
|
|
56
|
+
filePath?: string; /** Whether this is a production build */
|
|
57
|
+
isProduction?: boolean; /** Project root context (for computing relative __file path) */
|
|
58
|
+
rootContext?: string; /** Whether Rspack native CSS is handling CSS module exports */
|
|
59
|
+
nativeCss?: boolean;
|
|
60
|
+
}): string;
|
|
61
|
+
//#endregion
|
|
51
62
|
//#region src/shared/compiler.d.ts
|
|
52
63
|
/** Clear the compilation cache. Exposed for testing. */
|
|
53
64
|
declare function clearCompilationCache(): void;
|
|
@@ -62,14 +73,5 @@ declare function compileFile(filePath: string, source: string, options?: {
|
|
|
62
73
|
isProduction?: boolean; /** @see VizeLoaderOptions.transformAssetUrls */
|
|
63
74
|
transformAssetUrls?: boolean | Record<string, string[]>;
|
|
64
75
|
}): CompiledModule;
|
|
65
|
-
/** Generate JS output with style/custom-block imports and optional HMR code. */
|
|
66
|
-
declare function generateOutput(compiled: CompiledModule, options: {
|
|
67
|
-
requestPath: string; /** Inject HMR boilerplate using `module.hot` (Rspack/webpack CJS API) */
|
|
68
|
-
hmr?: boolean; /** Original file path (for __file exposure in dev mode) */
|
|
69
|
-
filePath?: string; /** Whether this is a production build */
|
|
70
|
-
isProduction?: boolean; /** Project root context (for computing relative __file path) */
|
|
71
|
-
rootContext?: string; /** Whether Rspack native CSS is handling CSS module exports */
|
|
72
|
-
nativeCss?: boolean;
|
|
73
|
-
}): string;
|
|
74
76
|
//#endregion
|
|
75
77
|
export { type CompiledModule, type CustomBlockInfo, type LoaderEntry, type MacroArtifact, type RuleCloningResult, type SfcCompileOptionsNapi, type SfcCompileResultNapi, type SfcSrcInfo, type StyleBlockInfo, type VizeLoaderOptions, VizePlugin, type VizeRspackPluginOptions, type VizeStyleLoaderOptions, addScopeToCssFallback, applyRuleCloning, clearCompilationCache, compileFile, extractCustomBlocks, extractSrcInfo, extractStyleBlocks, genHotReloadCode, generateOutput, generateScopeId, inlineSrcBlocks, matchesPattern, vizeLoader, vizeScopeLoader, vizeStyleLoader };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,o as r,r as i,s as a,t as o}from"./utils-
|
|
1
|
+
import{a as e,c as t,i as n,o as r,r as i,s as a,t as o}from"./utils-CFK8mca_.mjs";import{a as s,i as c,n as l,r as u,t as d}from"./loader-Cu6KT7rY.mjs";import f from"./loader/style-loader.mjs";import p from"./loader/scope-loader.mjs";const m=`@vizejs/rspack-plugin/style-loader`,h=`@vizejs/rspack-plugin/scope-loader`,g={"\\.css$":`css`,"\\.scss$":`scss`,"\\.sass$":`sass`,"\\.less$":`less`,"\\.styl(us)?$":`styl`};function _(e,t){let n=[],r=e.findIndex(e=>e!==`...`&&v(e));if(r===-1)return{applied:!1,clonedCount:0,warnings:n};let i=e[r];if(i.oneOf)return{applied:!1,clonedCount:0,warnings:n};let a=[];for(let t=0;t<e.length;t++){if(t===r)continue;let n=e[t];if(n===`...`)continue;let i=x(n);i&&a.push({index:t,rule:n,lang:i})}let o=[];for(let e of a)o.push(...S(e.rule,e.lang,t));o.some(e=>e.resourceQuery instanceof RegExp&&e.resourceQuery.test(`vue&type=style&index=0&lang=css`))||o.push(...C(t));let s={use:E(i)},c=[...o,s];e[r]={test:i.test,oneOf:c};for(let e of a)w(e.rule);return{applied:!0,clonedCount:o.length,warnings:n}}function v(e){return b(e.test)?E(e).some(e=>{let t=typeof e==`string`?e:e.loader;return t?y(t):!1}):!1}function y(e){return e===`@vizejs/rspack-plugin/loader`||e.includes(`rspack-vize-plugin`)&&e.includes(`loader`)&&!e.includes(`style-loader`)&&!e.includes(`scope-loader`)}function b(e){return e?e instanceof RegExp?e.test(`App.vue`)||e.test(`foo.vue`):typeof e==`string`?e.includes(`.vue`):!1:!1}function x(e){let t=e.test;if(!t||!(t instanceof RegExp))return null;let n=t.source;for(let[e,t]of Object.entries(g))if(n.includes(e)||n===e)return t;return t.test(`foo.css`)&&!t.test(`foo.vue`)?`css`:t.test(`foo.scss`)&&!t.test(`foo.vue`)?`scss`:t.test(`foo.sass`)&&!t.test(`foo.vue`)?`sass`:t.test(`foo.less`)&&!t.test(`foo.vue`)?`less`:t.test(`foo.styl`)&&!t.test(`foo.vue`)?`styl`:null}function S(e,t,n){let r=E(e);if(r.length===0)return[];let i=[{loader:h},...D(r),{loader:m}],a=(t,n)=>{let r={resourceQuery:t,use:D(i)};return e.type?r.type=e.type:n&&(r.type=n),r};return n?[a(RegExp(`(?=.*type=style)(?=.*lang=${t})(?=.*module=)`),`css/module`),a(RegExp(`(?=.*type=style)(?=.*lang=${t})`),`css/auto`)]:[a(RegExp(`(?=.*type=style)(?=.*lang=${t})`))]}function C(e){return e?[{resourceQuery:/(?=.*type=style)(?=.*lang=css)(?=.*module=)/,type:`css/module`,use:[{loader:h},{loader:m}]},{resourceQuery:/(?=.*type=style)(?=.*lang=css)/,type:`css/auto`,use:[{loader:h},{loader:m}]}]:[{resourceQuery:/(?=.*type=style)(?=.*lang=css)/,type:`javascript/auto`,use:[{loader:h},{loader:m}]}]}function w(e){let t=e.resourceQuery;if(t)return typeof t==`object`&&!Array.isArray(t)&&!(t instanceof RegExp)&&`not`in t,void 0;e.resourceQuery={not:[/vue/]}}function T(e){return e?Array.isArray(e)?e:[e]:[]}function E(e){let t=T(e.use);if(t.length>0)return t;let n=e.loader;if(n){let t=e.options;return t?[{loader:n,options:t}]:[n]}return[]}function D(e){return e.map(e=>{if(typeof e==`string`)return e;if(typeof e==`object`&&e){let t={...e};return`options`in e&&e.options&&typeof e.options==`object`&&(t.options={...e.options}),t}return e})}var O=class e{static name=`VizePlugin`;options;constructor(e={}){this.options=e}apply(t){let n=t.getInfrastructureLogger(e.name),r=this.options.isProduction??t.options.mode===`production`;this.options.vapor&&!r&&n.debug(`Vapor mode is enabled.`);let i=!!t.options.experiments?.css;if(this.options.css?.native&&!i&&n.warn("`css.native: true` is set but `experiments.css` is not enabled in rspack config."),this.options.autoRules??!0){let e=t.options.module?.rules;if(e){let t=_(e,i);t.applied&&n.debug(`Auto-injected ${t.clonedCount} style rule(s) for Vue SFC sub-requests.`);for(let e of t.warnings)n.warn(e)}}if(this.options.typescript??!0){let e=t.options.module?.rules;e&&(e.some(e=>{if(e===`...`||typeof e!=`object`||!e)return!1;let t=e;if(t.enforce!==`post`)return!1;let n=t.test;return n instanceof RegExp?n.test(`App.vue`):typeof n==`string`?n.includes(`.vue`):!1})||(e.push({test:/\.vue$/,resourceQuery:{not:[/type=/]},enforce:`post`,loader:`builtin:swc-loader`,options:{jsc:{parser:{syntax:`typescript`}}},type:`javascript/auto`}),n.debug(`Auto-injected TypeScript post-processing rule for .vue files.`)))}let{DefinePlugin:a}=t.webpack,o=new Set;for(let e of t.options.plugins??[]){let t=e?.definitions;if(t)for(let e of Object.keys(t))o.add(e)}let s={};o.has(`__VUE_OPTIONS_API__`)||(s.__VUE_OPTIONS_API__=JSON.stringify(!0)),o.has(`__VUE_PROD_DEVTOOLS__`)||(s.__VUE_PROD_DEVTOOLS__=JSON.stringify(!r)),o.has(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`)||(s.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=JSON.stringify(!r)),Object.keys(s).length>0&&new a(s).apply(t),r||t.hooks.watchRun.tap(e.name,e=>{let t=e.modifiedFiles,r=e.removedFiles;if(t)for(let e of t)e.endsWith(`.vue`)&&this.shouldHandleFile(e)&&n.debug(`Vue file changed: ${e}`);if(r)for(let e of r)e.endsWith(`.vue`)&&this.shouldHandleFile(e)&&n.debug(`Vue file removed: ${e}`)})}shouldHandleFile(e){return!(!t(e,this.options.include,!0)||t(e,this.options.exclude,!1))}};export{O as VizePlugin,o as addScopeToCssFallback,_ as applyRuleCloning,l as clearCompilationCache,u as compileFile,i as extractCustomBlocks,n as extractSrcInfo,e as extractStyleBlocks,s as genHotReloadCode,c as generateOutput,r as generateScopeId,a as inlineSrcBlocks,t as matchesPattern,d as vizeLoader,p as vizeScopeLoader,f as vizeStyleLoader};
|
package/dist/loader/index.d.mts
CHANGED
package/dist/loader/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"../loader-
|
|
1
|
+
import{t as e}from"../loader-Cu6KT7rY.mjs";export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"../utils-
|
|
1
|
+
import{l as e}from"../utils-CFK8mca_.mjs";import*as t from"@vizejs/native";const{compileCss:n}=t;function r(t){let r=this.async(),{resourceQuery:i,resourcePath:a}=this;if(!i){r(null,t);return}let o=new URLSearchParams(i.slice(1)).get(`scoped`);if(!o){r(null,t);return}let s=`data-v-${o}`,c=n(e(t),{filename:a,scoped:!0,scopeId:s});for(let e of c.errors)this.emitError(Error(`[vize] ${e}`));for(let e of c.warnings)this.emitWarning(Error(`[vize] ${e}`));r(null,c.code)}export{r as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"../utils-
|
|
1
|
+
import{a as e}from"../utils-CFK8mca_.mjs";import t from"node:path";import n from"node:fs/promises";function r(r){let i=this.async(),{resourceQuery:a,resourcePath:o}=this;if(!a){i(null,r);return}let s=new URLSearchParams(a.slice(1));if(s.get(`type`)!==`style`){i(null,r);return}let c=parseInt(s.get(`index`)||`0`,10);this.addDependency(o);let l=e(r)[c];if(!l){this.emitError(Error(`[vize] Style block at index ${c} not found in ${o}`)),i(null,``);return}if(l.src){let e=t.resolve(t.dirname(o),l.src);this.addDependency(e),n.readFile(e,`utf-8`).then(e=>{i(null,e)}).catch(()=>{this.emitWarning(Error(`[vize] <style src> target not found: ${l.src} (resolved: ${e}) in ${o}`)),i(null,``)});return}i(null,l.content)}export{r as default};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import{c as e,d as t,i as n,n as r,o as i,r as a,s as o,u as s}from"./utils-CFK8mca_.mjs";import*as c from"@vizejs/native";import l from"node:fs";import u from"node:path";import{createHash as d}from"node:crypto";function f(e){return`
|
|
2
|
+
/* hot reload */
|
|
3
|
+
if (module.hot) {
|
|
4
|
+
_sfc_main.__hmrId = "${e}"
|
|
5
|
+
const api = __VUE_HMR_RUNTIME__
|
|
6
|
+
module.hot.accept()
|
|
7
|
+
if (!api.createRecord('${e}', _sfc_main)) {
|
|
8
|
+
api.reload('${e}', _sfc_main)
|
|
9
|
+
}
|
|
10
|
+
}`}function p(e,t,n,r){return`
|
|
11
|
+
if (module.hot) {
|
|
12
|
+
module.hot.accept(${t}, () => {
|
|
13
|
+
_sfc_main.__cssModules[${JSON.stringify(r)}] = ${n}
|
|
14
|
+
__VUE_HMR_RUNTIME__.rerender("${e}")
|
|
15
|
+
})
|
|
16
|
+
}`}function m(e,t){let n=e.code,r=e.isCustomElement;if(e.templateAssetUrls.length>0)for(let{url:t,varName:r}of e.templateAssetUrls){let e=t.indexOf(`#`),i=e>=0?t.slice(e):``,a=i?`${r} + ${JSON.stringify(i)}`:r,o=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);n=n.replace(RegExp(`"${o}"`,`g`),a),n=n.replace(RegExp(`'${o}'`,`g`),a)}let i=/^export default /m,a=i.test(n),o=/\bconst\s+_sfc_main\s*=/.test(n);if(a&&!o?(n=n.replace(i,`const _sfc_main = `),e.hasScoped&&e.scopeId&&(n+=`\n_sfc_main.__scopeId = "data-v-${e.scopeId}";`),n+=`
|
|
17
|
+
export default _sfc_main;`):a&&o&&e.hasScoped&&e.scopeId&&(n=n.replace(/^export default _sfc_main/m,`_sfc_main.__scopeId = "data-v-${e.scopeId}";\nexport default _sfc_main`)),e.styles.length>0){if(r&&e.styles.some(e=>e.module))throw Error(`[vize] <style module> is not supported in custom elements mode.`);let i=e.styles.filter(e=>e.module===!0).length;if(i>1)throw Error(`[vize] Found ${i} unnamed <style module> blocks. Only one unnamed <style module> is allowed per SFC. Use named modules instead: <style module="name">`);let a=e.styles.filter(e=>e.src||/\S/.test(e.content)),o=[];if(n=a.map(n=>{let i=[`vue`,`type=style`,`index=${n.index}`,`lang=${n.lang||`css`}`,...n.scoped?[`scoped=${e.scopeId}`]:[],...n.module?[`module=${typeof n.module==`string`?n.module:`true`}`]:[],...r?[`inline`]:[]],a=`${t.requestPath}?${i.join(`&`)}`;if(r)return`import _style_${n.index} from ${JSON.stringify(a)};`;if(n.module){let e=typeof n.module==`string`?n.module:`$style`,r=`_cssModule_${n.index}`;return o.push({request:a,varName:r,bindingName:e}),t.nativeCss?`import * as ${r} from ${JSON.stringify(a)};`:`import ${r} from ${JSON.stringify(a)};`}return`import ${JSON.stringify(a)};`}).join(`
|
|
18
|
+
`)+`
|
|
19
|
+
`+n,r){let e=a.map(e=>`_style_${e.index}`).join(`,`);n=n.replace(/^export default _sfc_main;/m,`_sfc_main.styles = [${e}];\nexport default _sfc_main;`)}if(!r&&o.length>0){let r=o.map(e=>`_sfc_main.__cssModules = _sfc_main.__cssModules || {};\n_sfc_main.__cssModules[${JSON.stringify(e.bindingName)}] = ${e.varName};`).join(`
|
|
20
|
+
`),i=t.hmr&&e.scopeId?o.map(t=>p(e.scopeId,JSON.stringify(t.request),t.varName,t.bindingName)).join(`
|
|
21
|
+
`):``;n=n.replace(/^export default _sfc_main;/m,`${r}\n${i}\nexport default _sfc_main;`)}}if(t.filePath&&!t.isProduction){let e=t.rootContext?u.relative(t.rootContext,t.filePath).replace(/\\/g,`/`):u.basename(t.filePath);n=n.replace(/^export default _sfc_main;/m,`_sfc_main.__file = ${JSON.stringify(e)};\nexport default _sfc_main;`)}if(t.hmr&&e.scopeId&&(n=n.replace(/^export default _sfc_main;/m,`${f(e.scopeId)}\nexport default _sfc_main;`)),e.customBlocks.length>0){let r=e.customBlocks.map((e,n)=>{let r=[`vue`,`type=${e.type}`,`index=${n}`,...e.src?[`src=true`]:[]];for(let[t,n]of Object.entries(e.attrs))t!==`src`&&(n===!0?r.push(t):r.push(`${t}=${n}`));let i=`${t.requestPath}?${r.join(`&`)}`;return`import block${n} from ${JSON.stringify(i)};\nif (typeof block${n} === 'function') block${n}(_sfc_main);`}).join(`
|
|
22
|
+
`);n=n.replace(/^export default _sfc_main;/m,`${r}\nexport default _sfc_main;`)}return e.templateAssetUrls.length>0&&(n=e.templateAssetUrls.map(({url:e,varName:t})=>{let n=e.startsWith(`~`)?e.slice(1):e,r=n.indexOf(`#`);return r>=0&&(n=n.slice(0,r)),`import ${t} from ${JSON.stringify(n)};`}).join(`
|
|
23
|
+
`)+`
|
|
24
|
+
`+n),n}const{compileSfc:h}=c,g=new Map;function _(e){return d(`sha256`).update(e).digest(`hex`).slice(0,16)}function v(){g.clear()}function y(e,n,a={}){let o=a.compilerOptions?.isTs??/<script[^>]*\blang=["']ts["']/.test(n),c=a.ssr??a.compilerOptions?.ssr??!1,l=a.vapor??a.compilerOptions?.vapor??!1,u=a.sourceMap??a.compilerOptions?.sourceMap??!0,d=a.isCustomElement??!1,f=a.rootContext??``,p=a.isProduction??!1,m=a.transformAssetUrls??!0,v=`${e}:ssr=${c}:vapor=${l}:ts=${o}:map=${u}:ce=${d}:root=${f}:prod=${p}:${m===!1?`tau=false`:m===!0?`tau=true`:`tau=${JSON.stringify(m)}`}`,y=_(n),b=g.get(v);if(b&&b.contentHash===y)return b.result;let x=i(e,a.rootContext,a.isProduction,n),S=h(n,{...a.compilerOptions,filename:e,sourceMap:a.sourceMap??a.compilerOptions?.sourceMap??!0,ssr:c,vapor:l,isTs:o,scopeId:`data-v-${x}`}),C=r(n,m),w={code:S.code,css:S.css,errors:S.errors,warnings:S.warnings,scopeId:x,hasScoped:S.hasScoped,styles:S.styles.map(t),customBlocks:S.customBlocks.map(s),isCustomElement:d,templateAssetUrls:C,macroArtifacts:S.macroArtifacts??[]};return w.errors.length===0&&g.set(v,{contentHash:y,result:w}),w}const b=/\.ce\.vue$/;function x(e){let t=this.async(),r=this.getOptions(),i=this.resourcePath,s=this.resourceQuery,c=T(this,i),d=this.mode===`production`||process.env.NODE_ENV===`production`,f=!(r.ssr??!1)&&!d&&r.hotReload!==!1,p=C(this,r);if(this.addDependency(i),s?.includes(`type=style`)){t(Error(`[vize] Main loader received style sub-request: ${i}${s}. Use module.rules[].oneOf with resourceQuery branches so style requests are handled by @vizejs/rspack-plugin/style-loader.`));return}if(s&&s.includes(`vue`)&&s.includes(`type=`)&&!s.includes(`type=style`)){let n=new URLSearchParams(s.slice(1)),r=n.get(`type`);if(r&&r!==`style`){let o=parseInt(n.get(`index`)||`0`,10),s=a(e)[o];if(s){if(s.src){let e=u.resolve(u.dirname(i),s.src);this.addDependency(e);try{t(null,l.readFileSync(e,`utf-8`))}catch{t(Error(`[vize] Custom block <${r} src="${s.src}"> not found (resolved: ${e}) in ${i}`))}return}t(null,s.content)}else t(null,``);return}}if(!S(i,r)){this.emitWarning(Error(`[vize] File is filtered out by loader options include/exclude: ${i}. Passing through source unchanged.`)),t(null,e);return}try{let a=w(i,r.customElement),s=n(e),h=e;if(s.scriptSrc){let e=u.resolve(u.dirname(i),s.scriptSrc);this.addDependency(e);try{let t=l.readFileSync(e,`utf-8`);h=o(h,t,null)}catch{t(Error(`[vize] <script src="${s.scriptSrc}"> not found (resolved: ${e}) in ${i}`));return}}if(s.templateSrc){let e=u.resolve(u.dirname(i),s.templateSrc);this.addDependency(e);try{let t=l.readFileSync(e,`utf-8`);h=o(h,null,t)}catch{t(Error(`[vize] <template src="${s.templateSrc}"> not found (resolved: ${e}) in ${i}`));return}}let g=y(i,h,{sourceMap:r.sourceMap??this.sourceMap??!0,ssr:r.ssr??!1,vapor:r.vapor??!1,compilerOptions:r.compilerOptions,isCustomElement:a,rootContext:this.rootContext,isProduction:d,transformAssetUrls:r.transformAssetUrls});for(let e of g.warnings)this.emitWarning(Error(`[vize] ${e}`));if(g.errors.length>0){for(let e of g.errors)this.emitError(Error(`[vize] ${e}`));let e=g.errors.join(`\\n`);t(Error(`[vize] Compilation failed for ${i}:\n${e}`));return}t(null,m(g,{requestPath:c,hmr:f,filePath:i,isProduction:d,rootContext:this.rootContext,nativeCss:p}))}catch(e){t(e)}}function S(t,n){return!(!e(t,n.include,!0)||e(t,n.exclude,!1))}function C(e,t){return t.css?.native==null?!!e._compiler?.options?.experiments?.css:t.css.native}function w(e,t){return t===!0?!0:t===!1||t===void 0?b.test(e):t.test(e)}function T(e,t){return`./${u.basename(t)}`}export{f as a,m as i,v as n,y as r,x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{collectSfcTemplateAssetUrls as e,extractSfcCustomBlocks as t,extractSfcSrcInfo as n,extractSfcStyleBlocks as r,generateSfcScopeId as i,scopeViteCssForPipeline as a,stripSfcScopedCssComments as o}from"@vizejs/native";function s(e,t,n,r){return i(e,t,n,r)}function c(e){return r(e).map(v)}function l(e){return o(e)}function u(e,t){return a(e,t.startsWith(`data-v-`)?t:`data-v-${t}`)}function d(e){return t(e).map(y)}function f(e){let t=n(e);return{scriptSrc:t.scriptSrc??null,templateSrc:t.templateSrc??null}}function p(e,t,n){let r=e;return t!==null&&(r=r.replace(/(<script)([^>]*)\bsrc=["'][^"']+["']([^>]*>)[\s\S]*?(<\/script>)/i,(e,n,r,i,a)=>`${n}${(r+i).replace(/\bsrc=["'][^"']+["']\s*/g,``)}\n${t}\n${a}`)),n!==null&&(r=r.replace(/(<template)([^>]*)\bsrc=["'][^"']+["']([^>]*>)[\s\S]*?(<\/template>)/i,(e,t,r,i,a)=>`${t}${(r+i).replace(/\bsrc=["'][^"']+["']\s*/g,``)}\n${n}\n${a}`)),r}function m(e,t,n){if(!t)return n;let r=e.replace(/\\/g,`/`);return(Array.isArray(t)?t:[t]).some(t=>typeof t==`string`?r.includes(t)||e.includes(t):h(t,r))}function h(e,t){e.lastIndex=0;let n=e.test(t);return e.lastIndex=0,n}Object.freeze({img:[`src`],video:[`src`,`poster`],source:[`src`],image:[`xlink:href`,`href`],use:[`xlink:href`,`href`]});function g(t,n){return n===!1?[]:e(t,_(n))}function _(e){if(!(e==null||e===!0))return Object.entries(e).map(([e,t])=>({tag:e,attrs:t}))}function v(e){return{content:e.content,src:e.src??null,lang:e.lang??null,scoped:e.scoped,module:e.module?e.moduleName??!0:!1,index:e.index}}function y(e){let t={};for(let n of e.attrs)t[n.name]=n.value??!0;return{type:e.blockType,content:e.content,src:e.src??null,attrs:t,index:e.index}}export{c as a,m as c,v as d,f as i,l,g as n,s as o,d as r,p as s,u as t,y as u};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vizejs/rspack-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.103.0",
|
|
4
4
|
"description": "High-performance Rspack plugin for Vue SFC compilation powered by Vize",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compiler",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"access": "public"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@vizejs/native": "0.
|
|
53
|
+
"@vizejs/native": "0.103.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@rspack/core": "2.0.3",
|
|
@@ -64,6 +64,9 @@
|
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@rspack/core": ">=1.0.0"
|
|
66
66
|
},
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=22"
|
|
69
|
+
},
|
|
67
70
|
"scripts": {
|
|
68
71
|
"build": "vp pack",
|
|
69
72
|
"dev": "vp pack --watch",
|
package/dist/loader-G4-4uHYx.mjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,r as a,s as o}from"./utils-BW6CWIY4.mjs";import{createHash as s}from"node:crypto";import c from"node:path";import l from"node:fs";import*as u from"@vizejs/native";function d(e){return`
|
|
2
|
-
/* hot reload */
|
|
3
|
-
if (module.hot) {
|
|
4
|
-
_sfc_main.__hmrId = "${e}"
|
|
5
|
-
const api = __VUE_HMR_RUNTIME__
|
|
6
|
-
module.hot.accept()
|
|
7
|
-
if (!api.createRecord('${e}', _sfc_main)) {
|
|
8
|
-
api.reload('${e}', _sfc_main)
|
|
9
|
-
}
|
|
10
|
-
}`}function f(e,t,n,r){return`
|
|
11
|
-
if (module.hot) {
|
|
12
|
-
module.hot.accept(${t}, () => {
|
|
13
|
-
_sfc_main.__cssModules[${JSON.stringify(r)}] = ${n}
|
|
14
|
-
__VUE_HMR_RUNTIME__.rerender("${e}")
|
|
15
|
-
})
|
|
16
|
-
}`}const{compileSfc:p}=u,m=new Map;function h(e){return s(`sha256`).update(e).digest(`hex`).slice(0,16)}function g(){m.clear()}function _(t,n,o={}){let s=o.compilerOptions?.isTs??/<script[^>]*\blang=["']ts["']/.test(n),c=o.ssr??o.compilerOptions?.ssr??!1,l=o.vapor??o.compilerOptions?.vapor??!1,u=o.sourceMap??o.compilerOptions?.sourceMap??!0,d=o.isCustomElement??!1,f=o.rootContext??``,g=o.isProduction??!1,_=o.transformAssetUrls??!0,v=`${t}:ssr=${c}:vapor=${l}:ts=${s}:map=${u}:ce=${d}:root=${f}:prod=${g}:${_===!1?`tau=false`:_===!0?`tau=true`:`tau=${JSON.stringify(_)}`}`,y=h(n),b=m.get(v);if(b&&b.contentHash===y)return b.result;let x=i(t,o.rootContext,o.isProduction,n),S=/<style[^>]*\bscoped\b/.test(n),C=p(n,{...o.compilerOptions,filename:t,sourceMap:o.sourceMap??o.compilerOptions?.sourceMap??!0,ssr:c,vapor:l,isTs:s,scopeId:S?`data-v-${x}`:void 0}),w=e(n),T=a(n),E=r(n,_),D={code:C.code,css:C.css,errors:C.errors,warnings:C.warnings,scopeId:x,hasScoped:S,styles:w,customBlocks:T,isCustomElement:d,templateAssetUrls:E,macroArtifacts:C.macroArtifacts??[]};return D.errors.length===0&&m.set(v,{contentHash:y,result:D}),D}function v(e,t){let n=e.code,r=e.isCustomElement;if(e.templateAssetUrls.length>0)for(let{url:t,varName:r}of e.templateAssetUrls){let e=t.indexOf(`#`),i=e>=0?t.slice(e):``,a=i?`${r} + ${JSON.stringify(i)}`:r,o=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);n=n.replace(RegExp(`"${o}"`,`g`),a),n=n.replace(RegExp(`'${o}'`,`g`),a)}let i=/^export default /m,a=i.test(n),o=/\bconst\s+_sfc_main\s*=/.test(n);if(a&&!o?(n=n.replace(i,`const _sfc_main = `),e.hasScoped&&e.scopeId&&(n+=`\n_sfc_main.__scopeId = "data-v-${e.scopeId}";`),n+=`
|
|
17
|
-
export default _sfc_main;`):a&&o&&e.hasScoped&&e.scopeId&&(n=n.replace(/^export default _sfc_main/m,`_sfc_main.__scopeId = "data-v-${e.scopeId}";\nexport default _sfc_main`)),e.styles.length>0){if(r&&e.styles.some(e=>e.module))throw Error(`[vize] <style module> is not supported in custom elements mode.`);let i=e.styles.filter(e=>e.module===!0).length;if(i>1)throw Error(`[vize] Found ${i} unnamed <style module> blocks. Only one unnamed <style module> is allowed per SFC. Use named modules instead: <style module="name">`);let a=e.styles.filter(e=>e.src||/\S/.test(e.content)),o=[];if(n=a.map(n=>{let i=[`vue`,`type=style`,`index=${n.index}`,`lang=${n.lang||`css`}`,...n.scoped?[`scoped=${e.scopeId}`]:[],...n.module?[`module=${typeof n.module==`string`?n.module:`true`}`]:[],...r?[`inline`]:[]].join(`&`),a=`${t.requestPath}?${i}`;if(r)return`import _style_${n.index} from ${JSON.stringify(a)};`;if(n.module){let e=typeof n.module==`string`?n.module:`$style`,r=`_cssModule_${n.index}`;return o.push({request:a,varName:r,bindingName:e}),t.nativeCss?`import * as ${r} from ${JSON.stringify(a)};`:`import ${r} from ${JSON.stringify(a)};`}return`import ${JSON.stringify(a)};`}).join(`
|
|
18
|
-
`)+`
|
|
19
|
-
`+n,r){let e=a.map(e=>`_style_${e.index}`).join(`,`);n=n.replace(/^export default _sfc_main;/m,`_sfc_main.styles = [${e}];\nexport default _sfc_main;`)}if(!r&&o.length>0){let r=o.map(e=>`_sfc_main.__cssModules = _sfc_main.__cssModules || {};\n_sfc_main.__cssModules[${JSON.stringify(e.bindingName)}] = ${e.varName};`).join(`
|
|
20
|
-
`),i=t.hmr&&e.scopeId?o.map(t=>f(e.scopeId,JSON.stringify(t.request),t.varName,t.bindingName)).join(`
|
|
21
|
-
`):``;n=n.replace(/^export default _sfc_main;/m,`${r}\n${i}\nexport default _sfc_main;`)}}if(t.filePath&&!t.isProduction){let e=t.rootContext?c.relative(t.rootContext,t.filePath).replace(/\\/g,`/`):c.basename(t.filePath);n=n.replace(/^export default _sfc_main;/m,`_sfc_main.__file = ${JSON.stringify(e)};\nexport default _sfc_main;`)}if(t.hmr&&e.scopeId&&(n=n.replace(/^export default _sfc_main;/m,`${d(e.scopeId)}\nexport default _sfc_main;`)),e.customBlocks.length>0){let r=e.customBlocks.map((e,n)=>{let r=[`vue`,`type=${e.type}`,`index=${n}`,...e.src?[`src=true`]:[]];for(let[t,n]of Object.entries(e.attrs))t!==`src`&&(n===!0?r.push(t):r.push(`${t}=${n}`));let i=r.join(`&`),a=t.requestPath;return`import block${n} from ${JSON.stringify(`${a}?${i}`)};\nif (typeof block${n} === 'function') block${n}(_sfc_main);`}).join(`
|
|
22
|
-
`);n=n.replace(/^export default _sfc_main;/m,`${r}\nexport default _sfc_main;`)}return e.templateAssetUrls.length>0&&(n=e.templateAssetUrls.map(({url:e,varName:t})=>{let n=e.startsWith(`~`)?e.slice(1):e,r=n.indexOf(`#`);return r>=0&&(n=n.slice(0,r)),`import ${t} from ${JSON.stringify(n)};`}).join(`
|
|
23
|
-
`)+`
|
|
24
|
-
`+n),n}const y=/\.ce\.vue$/;function b(e){let t=this.async(),r=this.getOptions(),i=this.resourcePath,s=this.resourceQuery,u=w(this,i),d=this.mode===`production`||process.env.NODE_ENV===`production`,f=!(r.ssr??!1)&&!d&&r.hotReload!==!1,p=S(this,r);if(this.addDependency(i),s?.includes(`type=style`)){t(Error(`[vize] Main loader received style sub-request: ${i}${s}. Use module.rules[].oneOf with resourceQuery branches so style requests are handled by @vizejs/rspack-plugin/style-loader.`));return}if(s&&s.includes(`vue`)&&s.includes(`type=`)&&!s.includes(`type=style`)){let n=new URLSearchParams(s.slice(1)),r=n.get(`type`);if(r&&r!==`style`){let o=parseInt(n.get(`index`)||`0`,10),s=a(e)[o];if(s){if(s.src){let e=c.resolve(c.dirname(i),s.src);this.addDependency(e);try{t(null,l.readFileSync(e,`utf-8`))}catch{t(Error(`[vize] Custom block <${r} src="${s.src}"> not found (resolved: ${e}) in ${i}`))}return}t(null,s.content)}else t(null,``);return}}if(!x(i,r)){this.emitWarning(Error(`[vize] File is filtered out by loader options include/exclude: ${i}. Passing through source unchanged.`)),t(null,e);return}try{let a=C(i,r.customElement),s=n(e),m=e;if(s.scriptSrc){let e=c.resolve(c.dirname(i),s.scriptSrc);this.addDependency(e);try{let t=l.readFileSync(e,`utf-8`);m=o(m,t,null)}catch{t(Error(`[vize] <script src="${s.scriptSrc}"> not found (resolved: ${e}) in ${i}`));return}}if(s.templateSrc){let e=c.resolve(c.dirname(i),s.templateSrc);this.addDependency(e);try{let t=l.readFileSync(e,`utf-8`);m=o(m,null,t)}catch{t(Error(`[vize] <template src="${s.templateSrc}"> not found (resolved: ${e}) in ${i}`));return}}let h=_(i,m,{sourceMap:r.sourceMap??this.sourceMap??!0,ssr:r.ssr??!1,vapor:r.vapor??!1,compilerOptions:r.compilerOptions,isCustomElement:a,rootContext:this.rootContext,isProduction:d,transformAssetUrls:r.transformAssetUrls});for(let e of h.warnings)this.emitWarning(Error(`[vize] ${e}`));if(h.errors.length>0){for(let e of h.errors)this.emitError(Error(`[vize] ${e}`));let e=h.errors.join(`\\n`);t(Error(`[vize] Compilation failed for ${i}:\n${e}`));return}t(null,v(h,{requestPath:u,hmr:f,filePath:i,isProduction:d,rootContext:this.rootContext,nativeCss:p}))}catch(e){t(e)}}function x(e,n){return!(!t(e,n.include,!0)||t(e,n.exclude,!1))}function S(e,t){return t.css?.native==null?!!e._compiler?.options?.experiments?.css:t.css.native}function C(e,t){return t===!0?!0:t===!1||t===void 0?y.test(e):t.test(e)}function w(e,t){return`./${c.basename(t)}`}export{d as a,v as i,g as n,_ as r,b as t};
|
package/dist/utils-BW6CWIY4.mjs
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{createHash as e}from"node:crypto";import t from"node:path";function n(n,r,i,a){let o;if(r){let e=t.relative(r,n).replace(/^(\.\.[/\\])+/,``).replace(/\\/g,`/`);o=i&&a?e+`
|
|
2
|
-
`+a.replace(/\r\n/g,`
|
|
3
|
-
`):e}else o=n;return e(`sha256`).update(o).digest(`hex`).slice(0,8)}function r(e){let t=[],n=/<style([^>]*)>([\s\S]*?)<\/style>/gi,r,i=0;for(;(r=n.exec(e))!==null;){let e=r[1],n=r[2],a=e.match(/\bsrc=["']([^"']+)["']/)?.[1]??null,o=e.match(/\blang=["']([^"']+)["']/)?.[1]??null,s=/\bscoped\b/.test(e),c=e.match(/\bmodule(?:=["']([^"']+)["'])?/),l=c?c[1]||!0:!1;t.push({content:n,src:a,lang:o,scoped:s,module:l,index:i}),i++}return t}function i(e,t){let n=`[data-v-${t}]`,r=``,i=0,a=0,s=0;for(;a<e.length;){let t=e[a];if(t===`{`){if(i===0){let t=e.slice(s,a);r+=o(t,n),r+=`{`}else r+=t;i++,a++,s=a}else t===`}`?(i--,r+=t,a++,s=a):(i>0&&(r+=t),a++)}return s<e.length&&i===0&&(r+=e.slice(s)),r}function a(e){if(!e.includes(`/*`))return e;let t=e.length,n=[],r=0,i=0;for(;i<t;){let a=e.charCodeAt(i);if(a===34||a===39){let n=a;for(i++;i<t;){let t=e.charCodeAt(i);if(t===92){i+=2;continue}if(i++,t===n)break}continue}if(a===47&&i+1<t&&e.charCodeAt(i+1)===42){i>r&&n.push(e.slice(r,i)),i+=2;let a=` `;for(;i<t;){if(e.charCodeAt(i)===42&&i+1<t&&e.charCodeAt(i+1)===47){a+=` `,i+=2;break}a+=e.charCodeAt(i)===10?`
|
|
4
|
-
`:` `,i++}n.push(a),r=i;continue}i++}return r===0?e:(r<t&&n.push(e.slice(r)),n.join(``))}function o(e,t){return e.trim().startsWith(`@`)?e:e.split(`,`).map(e=>{let n=e.trim();return!n||n.startsWith(`@`)?e:`${e.match(/^(\s*)/)?.[1]??``}${n}${t}`}).join(`,`)}function s(e){let t=[],n=new Set([`script`,`template`,`style`]),r=0,i=0;for(;i<e.length;){let a=e.indexOf(`<`,i);if(a===-1)break;if(e.startsWith(`<!--`,a)){let t=e.indexOf(`-->`,a+4);i=t===-1?e.length:t+3;continue}if(e[a+1]===`/`){let t=e.indexOf(`>`,a+2);i=t===-1?e.length:t+1;continue}let o=/^<([a-zA-Z][a-zA-Z0-9-]*)(\s[^>]*)?\s*\/?>/.exec(e.slice(a));if(!o){i=a+1;continue}let s=o[1],l=(o[2]||``).trim(),u=o[0].trimEnd().endsWith(`/>`),d=a+o[0].length;if(u){n.has(s.toLowerCase())||t.push({type:s,content:``,src:l.match(/\bsrc=["']([^"']+)["']/)?.[1]??null,attrs:c(l),index:r++}),i=d;continue}let f=s.toLowerCase(),p=1,m=d;for(;m<e.length&&p>0;){let i=e.indexOf(`<`,m);if(i===-1){m=e.length;break}let a=RegExp(`^</${s}\\s*>`,`i`).exec(e.slice(i));if(a){if(p--,p===0){let o=e.slice(d,i);n.has(f)||t.push({type:s,content:o,src:l.match(/\bsrc=["']([^"']+)["']/)?.[1]??null,attrs:c(l),index:r++}),m=i+a[0].length;break}m=i+a[0].length;continue}let o=RegExp(`^<${s}\\b[^>]*>`,`i`).exec(e.slice(i));if(o&&!o[0].trimEnd().endsWith(`/>`)){p++,m=i+o[0].length;continue}m=i+1}i=m}return t}function c(e){let t={},n=/\b([a-z][a-z0-9-]*)(?:=["']([^"']*)["'])?/gi,r;for(;(r=n.exec(e))!==null;)t[r[1]]=r[2]??!0;return t}function l(e){let t=e.match(/<script([^>]*)>/i),n=e.match(/<template([^>]*)>/i);return{scriptSrc:t?.[1]?.match(/\bsrc=["']([^"']+)["']/)?.[1]??null,templateSrc:n?.[1]?.match(/\bsrc=["']([^"']+)["']/)?.[1]??null}}function u(e,t,n){let r=e;return t!==null&&(r=r.replace(/(<script)([^>]*)\bsrc=["'][^"']+["']([^>]*>)[\s\S]*?(<\/script>)/i,(e,n,r,i,a)=>`${n}${(r+i).replace(/\bsrc=["'][^"']+["']\s*/g,``)}\n${t}\n${a}`)),n!==null&&(r=r.replace(/(<template)([^>]*)\bsrc=["'][^"']+["']([^>]*>)[\s\S]*?(<\/template>)/i,(e,t,r,i,a)=>`${t}${(r+i).replace(/\bsrc=["'][^"']+["']\s*/g,``)}\n${n}\n${a}`)),r}function d(e,t,n){if(!t)return n;let r=e.replace(/\\/g,`/`);return(Array.isArray(t)?t:[t]).some(t=>typeof t==`string`?r.includes(t)||e.includes(t):f(t,r))}function f(e,t){e.lastIndex=0;let n=e.test(t);return e.lastIndex=0,n}const p=Object.freeze({img:[`src`],video:[`src`,`poster`],source:[`src`],image:[`xlink:href`,`href`],use:[`xlink:href`,`href`]});function m(e){return!e||/^(https?:)?\/\//.test(e)||e.startsWith(`data:`)?!1:!!(e.startsWith(`./`)||e.startsWith(`../`)||e.startsWith(`@/`)||e.startsWith(`~`))}function h(e){let t=0;for(;t<e.length;){let n=e.indexOf(`<`,t);if(n===-1)break;if(e.startsWith(`<!--`,n)){let r=e.indexOf(`-->`,n+4);t=r===-1?e.length:r+3;continue}if(e[n+1]===`/`){let r=e.indexOf(`>`,n+2);t=r===-1?e.length:r+1;continue}let r=/^<template(\s[^>]*)?>/.exec(e.slice(n));if(!r){t=n+1;continue}let i=n+r[0].length,a=1,o=i;for(;o<e.length&&a>0;){let t=e.indexOf(`<`,o);if(t===-1)break;let n=/^<\/template\s*>/i.exec(e.slice(t));if(n){if(a--,a===0)return e.slice(i,t);o=t+n[0].length;continue}let r=/^<template\b[^>]*>/i.exec(e.slice(t));if(r&&!r[0].trimEnd().endsWith(`/>`)){a++,o=t+r[0].length;continue}o=t+1}return null}return null}function g(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function _(e,t){if(t===!1)return[];let n=t==null||t===!0?p:t,r=h(e);if(!r)return[];let i=new Map,a=0;for(let[e,t]of Object.entries(n)){let n=RegExp(`<${g(e)}((?:\\s+[^>]*)?)(?:/>|>)`,`gi`),o;for(;(o=n.exec(r))!==null;){let e=o[1]??``;for(let n of t){let t=RegExp(`(?:^|\\s)${g(n)}="([^"]+)"`,`i`),r=RegExp(`(?:^|\\s)${g(n)}='([^']+)'`,`i`),o=t.exec(e)??r.exec(e);if(o){let e=o[1];m(e)&&!i.has(e)&&i.set(e,`_imports_${a++}`)}}}}return Array.from(i.entries()).map(([e,t])=>({url:e,varName:t}))}export{r as a,d as c,l as i,a as l,_ as n,n as o,s as r,u as s,i as t};
|