rspack-plugin-svg-sprite 1.4.0 → 1.5.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/loader.d.ts CHANGED
@@ -11,6 +11,7 @@ interface LoaderContext {
11
11
  resourcePath: string;
12
12
  getOptions?: () => LoaderOptions;
13
13
  _compilation?: any;
14
+ _compiler?: any;
14
15
  }
15
16
  export declare function parseViewBox(svgContent: string): string;
16
17
  export declare function extractSvgInner(svgContent: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,6BAA6B,CAAC;AAEpD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,aAAa,CAAC;IACjC,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAe1E;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAerF;AAmBD,iBAAS,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgFrE;AAED,QAAA,MAAM,MAAM;;CAAgD,CAAC;AAC7D,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,6BAA6B,CAAC;AAEpD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,aAAa,CAAC;IACjC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBvD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB1E;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAerF;AAmBD,iBAAS,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyFrE;AAED,QAAA,MAAM,MAAM;;CAAgD,CAAC;AAC7D,eAAe,MAAM,CAAC"}
package/dist/loader.js CHANGED
@@ -41,8 +41,19 @@ exports.generateSymbolId = generateSymbolId;
41
41
  const path = __importStar(require("path"));
42
42
  exports.NAMESPACE = 'rspack-plugin-svg-sprite';
43
43
  function parseViewBox(svgContent) {
44
- const match = svgContent.match(/viewBox=["']([^"']+)["']/);
45
- return match ? match[1] : '0 0 24 24';
44
+ // Extract the root <svg> opening tag to avoid matching attributes on child elements
45
+ const svgTagMatch = svgContent.match(/<svg([^>]*)>/i);
46
+ const svgTag = svgTagMatch ? svgTagMatch[1] : '';
47
+ const match = svgTag.match(/viewBox=["']([^"']+)["']/);
48
+ if (match)
49
+ return match[1];
50
+ // Derive viewBox from width/height attributes on the root <svg> tag only
51
+ const widthMatch = svgTag.match(/\bwidth=["'](\d+(?:\.\d+)?)(?:px)?["']/);
52
+ const heightMatch = svgTag.match(/\bheight=["'](\d+(?:\.\d+)?)(?:px)?["']/);
53
+ if (widthMatch && heightMatch) {
54
+ return '0 0 ' + widthMatch[1] + ' ' + heightMatch[1];
55
+ }
56
+ return '0 0 24 24';
46
57
  }
47
58
  function extractSvgInner(svgContent) {
48
59
  const innerMatch = svgContent.match(/<svg[^>]*>([\s\S]*)<\/svg>/i);
@@ -54,10 +65,15 @@ function extractSvgAttrs(svgContent) {
54
65
  if (!svgTagMatch)
55
66
  return attrs;
56
67
  const attrString = svgTagMatch[1];
57
- const attrRegex = /(\w[\w-]*)=["']([^"']*?)["']/g;
68
+ // Match simple attributes but also capture any namespace prefix (e.g. xml:space, xmlns:xlink)
69
+ const attrRegex = /([\w:-]+)=["']([^"']*?)["']/g;
58
70
  let match;
59
71
  while ((match = attrRegex.exec(attrString)) !== null) {
60
- const name = match[1].toLowerCase();
72
+ const raw = match[1];
73
+ // Skip namespaced attributes (xml:space, xmlns:xlink) and known non-visual attrs
74
+ if (raw.includes(':'))
75
+ continue;
76
+ const name = raw.toLowerCase();
61
77
  if (name !== 'xmlns' && name !== 'version' && name !== 'class' && name !== 'style') {
62
78
  attrs[name] = match[2];
63
79
  }
@@ -119,7 +135,16 @@ function svgSpriteLoader(content) {
119
135
  const spriteModulePath = path.join(runtimeDir, 'browser-sprite').replace(/\\/g, '\\\\');
120
136
  if (extract) {
121
137
  const spriteFilename = options.spriteFilename || 'sprite.svg';
122
- const publicPath = options.publicPath || '';
138
+ let publicPath = options.publicPath || '';
139
+ if (!publicPath && this._compiler && this._compiler.options && this._compiler.options.output) {
140
+ const outputPublicPath = this._compiler.options.output.publicPath;
141
+ if (typeof outputPublicPath === 'string' && outputPublicPath !== 'auto') {
142
+ publicPath = outputPublicPath;
143
+ }
144
+ }
145
+ if (publicPath && !publicPath.endsWith('/')) {
146
+ publicPath += '/';
147
+ }
123
148
  const symbolData = {
124
149
  id: symbolId,
125
150
  viewBox: viewBox,
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,cAAc,CAAC;AAI1D,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,cAAM,eAAe;IACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/B,OAAO,EAAE,UAAU,EAAE,CAAC;gBAEjB,GAAG,CAAC,EAAE,YAAY;IAK9B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IASvC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAuC7C,KAAK,GAAI,UAAU,QAAQ,KAAG,IAAI,CA4ChC;CACH;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,QAOvD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAa,GAAG,GAAG,CAS7F;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,cAAc,CAAC;AAI1D,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD,cAAM,eAAe;IACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/B,OAAO,EAAE,UAAU,EAAE,CAAC;gBAEjB,GAAG,CAAC,EAAE,YAAY;IAK9B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IA6BvC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IA2C7C,KAAK,GAAI,UAAU,QAAQ,KAAG,IAAI,CA6ChC;CACH;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,QAOvD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,GAAa,GAAG,GAAG,CAS7F;AAED,eAAe,eAAe,CAAC"}
package/dist/plugin.js CHANGED
@@ -19,6 +19,7 @@ class SvgSpritePlugin {
19
19
  constructor(cfg) {
20
20
  this.apply = (compiler) => {
21
21
  compiler.hooks.thisCompilation.tap(NAMESPACE, (compilation) => {
22
+ this.symbols = [];
22
23
  compilation[NAMESPACE] = this;
23
24
  compilation.hooks.processAssets.tap({
24
25
  name: NAMESPACE,
@@ -64,6 +65,22 @@ class SvgSpritePlugin {
64
65
  addSymbol(symbolData) {
65
66
  const existing = this.symbols.findIndex((s) => s.id === symbolData.id);
66
67
  if (existing >= 0) {
68
+ const prev = this.symbols[existing];
69
+ if (prev.resourcePath &&
70
+ symbolData.resourcePath &&
71
+ prev.resourcePath !== symbolData.resourcePath) {
72
+ console.warn('[rspack-plugin-svg-sprite] Duplicate symbol ID "' +
73
+ symbolData.id +
74
+ '" from:\n' +
75
+ ' - ' +
76
+ prev.resourcePath +
77
+ '\n' +
78
+ ' - ' +
79
+ symbolData.resourcePath +
80
+ '\n' +
81
+ 'The second file will overwrite the first. Use a symbolId pattern like ' +
82
+ '"[folder]-[name]" to avoid collisions.');
83
+ }
67
84
  this.symbols[existing] = symbolData;
68
85
  }
69
86
  else {
@@ -71,19 +88,22 @@ class SvgSpritePlugin {
71
88
  }
72
89
  }
73
90
  generateSprite(symbols) {
74
- let attrs = 'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"';
91
+ let attrs = 'xmlns="http://www.w3.org/2000/svg"';
75
92
  Object.keys(this.config.spriteAttrs).forEach((key) => {
76
93
  attrs += ' ' + key + '="' + this.config.spriteAttrs[key] + '"';
77
94
  });
95
+ const symbolsContent = symbols.map((s) => s.content).join('\n');
96
+ if (this.config.plainSprite) {
97
+ return '<svg ' + attrs + '>\n' + symbolsContent + '\n</svg>';
98
+ }
78
99
  const styles = '<style>\n' +
79
100
  ' .sprite-symbol-usage {display: none;}\n' +
80
101
  ' .sprite-symbol-usage:target {display: inline;}\n' +
81
102
  ' </style>';
82
- const symbolsContent = symbols.map((s) => s.content).join('\n');
83
103
  const usages = symbols
84
104
  .map((s) => '<use id="' +
85
105
  s.id +
86
- '-usage" xlink:href="#' +
106
+ '-usage" href="#' +
87
107
  s.id +
88
108
  '" width="100%" height="100%" class="sprite-symbol-usage" />')
89
109
  .join('\n');
@@ -101,7 +121,7 @@ class SvgSpritePlugin {
101
121
  function FallbackRawSource(str) {
102
122
  this._value = str;
103
123
  this.source = () => str;
104
- this.size = () => str.length;
124
+ this.size = () => Buffer.byteLength(str, 'utf8');
105
125
  this.buffer = () => Buffer.from(str);
106
126
  this.map = () => null;
107
127
  this.sourceAndMap = () => ({ source: str, map: null });
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/dist/rsbuild.d.ts CHANGED
@@ -7,6 +7,10 @@ export interface SvgSpritePluginOptions {
7
7
  publicPath?: string;
8
8
  plainSprite?: boolean;
9
9
  spriteAttrs?: Record<string, string>;
10
+ include?: RegExp | string;
11
+ exclude?: RegExp | string;
10
12
  }
13
+ /** Returns true when a RegExp targets only .svg files (not a compound pattern). */
14
+ export declare function isSvgOnlyPattern(re: RegExp): boolean;
11
15
  export declare function pluginSvgSprite(options?: SvgSpritePluginOptions): RsbuildPlugin;
12
16
  //# sourceMappingURL=rsbuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsbuild.d.ts","sourceRoot":"","sources":["../src/rsbuild.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa,CA6BnF"}
1
+ {"version":3,"file":"rsbuild.d.ts","sourceRoot":"","sources":["../src/rsbuild.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa,CAkDnF"}
package/dist/rsbuild.js CHANGED
@@ -36,18 +36,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.isSvgOnlyPattern = isSvgOnlyPattern;
39
40
  exports.pluginSvgSprite = pluginSvgSprite;
40
41
  const path = __importStar(require("path"));
41
42
  const plugin_1 = __importDefault(require("./plugin"));
43
+ /** Returns true when a RegExp targets only .svg files (not a compound pattern). */
44
+ function isSvgOnlyPattern(re) {
45
+ // Compound patterns use | for alternation (e.g. /\.(svg|png)$/).
46
+ // If the source contains |, it matches more than just SVG — keep the rule.
47
+ return !re.source.includes('|');
48
+ }
42
49
  function pluginSvgSprite(options = {}) {
43
- const { plainSprite, spriteAttrs, ...loaderOptions } = options;
50
+ const { plainSprite, spriteAttrs, include, exclude, ...loaderOptions } = options;
44
51
  return {
45
52
  name: 'rsbuild-plugin-svg-sprite',
46
53
  setup(api) {
47
54
  api.modifyRspackConfig((config) => {
48
55
  config.module = config.module || {};
49
56
  config.module.rules = config.module.rules || [];
50
- config.module.rules.push({
57
+ // Remove existing SVG-only rules to avoid conflicts.
58
+ // Rules with compound patterns (e.g. /\.(svg|png)$/) are kept to avoid
59
+ // breaking non-SVG file handling — users should use include/exclude instead.
60
+ config.module.rules = config.module.rules.filter((rule) => {
61
+ if (!rule || typeof rule !== 'object')
62
+ return true;
63
+ const test = rule.test;
64
+ if (typeof test === 'string')
65
+ return test !== '.svg';
66
+ if (test instanceof RegExp && test.test('.svg')) {
67
+ // Only remove rules that exclusively target SVG files.
68
+ // Compound patterns like /\.(svg|png|jpg)$/ are kept intact.
69
+ return !isSvgOnlyPattern(test);
70
+ }
71
+ return true;
72
+ });
73
+ const svgRule = {
51
74
  test: /\.svg$/,
52
75
  type: 'javascript/auto',
53
76
  loader: path.join(__dirname, 'loader.js'),
@@ -58,7 +81,12 @@ function pluginSvgSprite(options = {}) {
58
81
  spriteFilename: loaderOptions.spriteFilename || 'sprite.svg',
59
82
  publicPath: loaderOptions.publicPath || '',
60
83
  },
61
- });
84
+ };
85
+ if (include)
86
+ svgRule.include = include;
87
+ if (exclude)
88
+ svgRule.exclude = exclude;
89
+ config.module.rules.push(svgRule);
62
90
  if (loaderOptions.extract) {
63
91
  config.plugins = config.plugins || [];
64
92
  config.plugins.push(new plugin_1.default({ plainSprite, spriteAttrs }));
@@ -1 +1 @@
1
- {"version":3,"file":"rsbuild.js","sourceRoot":"","sources":["../src/rsbuild.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,0CA6BC;AA3CD,2CAA6B;AAE7B,sDAAuC;AAYvC,SAAgB,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAE/D,OAAO;QACL,IAAI,EAAE,2BAA2B;QACjC,KAAK,CAAC,GAAG;YACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,iBAA0B;oBAChC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;oBACzC,OAAO,EAAE;wBACP,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,QAAQ;wBAC5C,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,KAAK;wBACvC,QAAQ,EAAE,aAAa,CAAC,QAAQ,KAAK,KAAK;wBAC1C,cAAc,EAAE,aAAa,CAAC,cAAc,IAAI,YAAY;wBAC5D,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;qBAC3C;iBACF,CAAC,CAAC;gBAEH,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC1B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,gBAAe,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rsbuild.js","sourceRoot":"","sources":["../src/rsbuild.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,4CAIC;AAED,0CAkDC;AAzED,2CAA6B;AAE7B,sDAAuC;AAcvC,mFAAmF;AACnF,SAAgB,gBAAgB,CAAC,EAAU;IACzC,iEAAiE;IACjE,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAEjF,OAAO;QACL,IAAI,EAAE,2BAA2B;QACjC,KAAK,CAAC,GAAG;YACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBAEhD,qDAAqD;gBACrD,uEAAuE;gBACvE,6EAA6E;gBAC7E,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC7D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,OAAO,IAAI,CAAC;oBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,OAAO,IAAI,KAAK,MAAM,CAAC;oBACrD,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBAChD,uDAAuD;wBACvD,6DAA6D;wBAC7D,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAQ;oBACnB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,iBAA0B;oBAChC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;oBACzC,OAAO,EAAE;wBACP,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,QAAQ;wBAC5C,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,KAAK;wBACvC,QAAQ,EAAE,aAAa,CAAC,QAAQ,KAAK,KAAK;wBAC1C,cAAc,EAAE,aAAa,CAAC,cAAc,IAAI,YAAY;wBAC5D,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE;qBAC3C;iBACF,CAAC;gBAEF,IAAI,OAAO;oBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvC,IAAI,OAAO;oBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBAEvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAElC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC1B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,gBAAe,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-sprite.d.ts","sourceRoot":"","sources":["../../src/runtime/browser-sprite.ts"],"names":[],"mappings":"AAAA,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD,iBAAS,KAAK,IAAI,IAAI,CASrB;AAWD,iBAAS,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAK1C;AAED,oDAAoD;AACpD,iBAAS,MAAM,IAAI,IAAI,CAItB;AAED,gEAAgE;AAChE,iBAAS,SAAS,IAAI,IAAI,CAQzB;;;;;;;AAID,wBAAiD"}
1
+ {"version":3,"file":"browser-sprite.d.ts","sourceRoot":"","sources":["../../src/runtime/browser-sprite.ts"],"names":[],"mappings":"AAAA,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAiBD,iBAAS,KAAK,IAAI,IAAI,CASrB;AAWD,iBAAS,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAO1C;AAED,oDAAoD;AACpD,iBAAS,MAAM,IAAI,IAAI,CAItB;AAED,gEAAgE;AAChE,iBAAS,SAAS,IAAI,IAAI,CAQzB;;;;;;;AAID,wBAAiD"}
@@ -6,7 +6,6 @@ let isMounted = false;
6
6
  function createSpriteElement() {
7
7
  const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
8
8
  svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
9
- svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
10
9
  svg.style.position = 'absolute';
11
10
  svg.style.width = '0';
12
11
  svg.style.height = '0';
@@ -25,7 +24,7 @@ function mount() {
25
24
  });
26
25
  }
27
26
  function appendSymbolToSprite(symbolData) {
28
- const existing = sprite.querySelector('#' + symbolData.id);
27
+ const existing = sprite.getElementById(symbolData.id);
29
28
  if (existing) {
30
29
  existing.outerHTML = symbolData.content;
31
30
  }
@@ -34,6 +33,9 @@ function appendSymbolToSprite(symbolData) {
34
33
  }
35
34
  }
36
35
  function add(symbolData) {
36
+ // Skip in SSR/Node.js to prevent memory leaks across requests
37
+ if (typeof document === 'undefined')
38
+ return;
37
39
  symbols[symbolData.id] = symbolData;
38
40
  if (isMounted) {
39
41
  appendSymbolToSprite(symbolData);
@@ -1 +1 @@
1
- {"version":3,"file":"browser-sprite.js","sourceRoot":"","sources":["../../src/runtime/browser-sprite.ts"],"names":[],"mappings":";;AAKA,IAAI,OAAO,GAAgC,EAAE,CAAC;AAC9C,IAAI,MAAM,GAAyB,IAAI,CAAC;AACxC,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC1E,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;IACxD,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;IAChE,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAChC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;IACtB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IACvB,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,KAAK;IACZ,IAAI,SAAS;QAAE,OAAO;IACtB,MAAM,GAAG,mBAAmB,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,SAAS,GAAG,IAAI,CAAC;IAEjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAuB;IACnD,MAAM,QAAQ,GAAG,MAAO,CAAC,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAO,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,UAAuB;IAClC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,SAAS,MAAM;IACb,OAAO,GAAG,EAAE,CAAC;IACb,MAAM,GAAG,IAAI,CAAC;IACd,SAAS,GAAG,KAAK,CAAC;AACpB,CAAC;AAED,gEAAgE;AAChE,SAAS,SAAS;IAChB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,EAAE,CAAC;AAEZ,kBAAe,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"browser-sprite.js","sourceRoot":"","sources":["../../src/runtime/browser-sprite.ts"],"names":[],"mappings":";;AAKA,IAAI,OAAO,GAAgC,EAAE,CAAC;AAC9C,IAAI,MAAM,GAAyB,IAAI,CAAC;AACxC,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC1E,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;IACxD,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAChC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;IACtB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IACvB,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,KAAK;IACZ,IAAI,SAAS;QAAE,OAAO;IACtB,MAAM,GAAG,mBAAmB,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,SAAS,GAAG,IAAI,CAAC;IAEjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QAClC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAuB;IACnD,MAAM,QAAQ,GAAG,MAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAO,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,UAAuB;IAClC,8DAA8D;IAC9D,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IAC5C,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,SAAS,MAAM;IACb,OAAO,GAAG,EAAE,CAAC;IACb,MAAM,GAAG,IAAI,CAAC;IACd,SAAS,GAAG,KAAK,CAAC;AACpB,CAAC;AAED,gEAAgE;AAChE,SAAS,SAAS;IAChB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,EAAE,CAAC;AAEZ,kBAAe,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rspack-plugin-svg-sprite",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "SVG sprite loader and plugin for Rspack — drop-in replacement for svg-sprite-loader with inline and extract mode support",
5
5
  "author": "Yichen Zhu",
6
6
  "license": "MIT",