@visulima/packem-rollup 1.0.0-alpha.10 → 1.0.0-alpha.11

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/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## @visulima/packem-rollup [1.0.0-alpha.11](https://github.com/visulima/packem/compare/@visulima/packem-rollup@1.0.0-alpha.10...@visulima/packem-rollup@1.0.0-alpha.11) (2025-08-25)
2
+
3
+ ### Features
4
+
5
+ * Add Data URI plugin support for SVG files ([8528648](https://github.com/visulima/packem/commit/852864828d09a70367c93228b1bee8699e1e00f2))
6
+
7
+
8
+ ### Dependencies
9
+
10
+ * **@visulima/packem-share:** upgraded to 1.0.0-alpha.8
11
+
1
12
  ## @visulima/packem-rollup [1.0.0-alpha.10](https://github.com/visulima/packem/compare/@visulima/packem-rollup@1.0.0-alpha.9...@visulima/packem-rollup@1.0.0-alpha.10) (2025-08-21)
2
13
 
3
14
  ### Bug Fixes
package/README.md CHANGED
@@ -41,6 +41,60 @@ pnpm add @visulima/packem-rollup
41
41
 
42
42
  ## Usage
43
43
 
44
+ ### Data URI Plugin
45
+
46
+ The `dataUriPlugin` converts files to data URIs for inline embedding. It supports configurable SVG encoding strategies via query parameters.
47
+
48
+ ```typescript
49
+ import { dataUriPlugin } from "@visulima/packem-rollup";
50
+
51
+ export default {
52
+ plugins: [
53
+ dataUriPlugin()
54
+ ]
55
+ };
56
+ ```
57
+
58
+ #### Query Parameters
59
+
60
+ - `?data-uri` - Basic data URI conversion
61
+ - `?data-uri&encoding=css` - Use CSS-optimized SVG encoding
62
+ - `?data-uri&encoding=tiny` - Use tiny SVG encoding (default)
63
+ - `?data-uri&srcset` - Encode spaces as %20 for srcset compatibility
64
+
65
+ #### Examples
66
+
67
+ ```typescript
68
+ // Tiny SVG encoding (default)
69
+ import icon from './icon.svg?data-uri';
70
+
71
+ // CSS-optimized SVG encoding
72
+ import icon from './icon.svg?data-uri&encoding=css';
73
+
74
+ // Tiny SVG with srcset compatibility
75
+ import icon from './icon.svg?data-uri&srcset';
76
+
77
+ // CSS encoding with srcset compatibility
78
+ import icon from './icon.svg?data-uri&encoding=css&srcset';
79
+ ```
80
+
81
+ ### URL Plugin
82
+
83
+ The `urlPlugin` handles asset URLs, either inlining them as data URIs or copying them to a destination directory. SVG files are optimized using the shared `svgEncoder` utility before being base64 encoded.
84
+
85
+ ```typescript
86
+ import { urlPlugin } from "@visulima/packem-rollup";
87
+
88
+ export default {
89
+ plugins: [
90
+ urlPlugin({
91
+ limit: 14336, // 14kb
92
+ fileName: '[hash][extname]'
93
+ })
94
+ ]
95
+ };
96
+ ```
97
+
44
98
  ## Related
45
99
 
46
100
  ## Supported Node.js Versions
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{default as o}from"./packem_shared/chunkSplitter-DWAy1JkE.mjs";import{cjsInteropPlugin as a}from"./packem_shared/cjsInteropPlugin-D5wyoQ_B.mjs";import{copyPlugin as f}from"./packem_shared/copyPlugin--6RITp1-.mjs";import{dataUriPlugin as u}from"./packem_shared/dataUriPlugin-BOjv6O2O.mjs";import{default as p}from"./packem_shared/browserslistToEsbuild-C0IWmbNe.mjs";import{esmShimCjsSyntaxPlugin as x}from"./packem_shared/esmShimCjsSyntaxPlugin-DjKqX4DE.mjs";import{fixDtsDefaultCjsExportsPlugin as d}from"./packem_shared/fixDtsDefaultCjsExportsPlugin-Dp1UcHVR.mjs";import{default as P}from"./packem_shared/fixDynamicImportExtension-BBGNRniz.mjs";import{isolatedDeclarationsPlugin as b}from"./packem_shared/isolatedDeclarationsPlugin-B34s_qkE.mjs";import{default as j}from"./packem_shared/jsonPlugin-BAi3Da-h.mjs";import{jsxRemoveAttributes as y}from"./packem_shared/jsxRemoveAttributes-B1PLPffj.mjs";import{license as D}from"./packem_shared/licensePlugin-C5yzUqe-.mjs";import{default as E}from"./packem_shared/metafilePlugin-ObS4J7mO.mjs";import{default as w}from"./packem_shared/cachingPlugin-D0BBFJPD.mjs";import{default as L}from"./packem_shared/preserveDirectivesPlugin-B49Cbykd.mjs";import{rawPlugin as R}from"./packem_shared/rawPlugin-DgRj14Xy.mjs";import{default as z}from"./packem_shared/resolveFileUrlPlugin-BkpjVHeK.mjs";import{getShebang as F,makeExecutable as N,removeShebangPlugin as T,shebangPlugin as V}from"./packem_shared/makeExecutable-6aOVHoJR.mjs";import{sourcemapsPlugin as B}from"./packem_shared/sourcemapsPlugin-B4W3J79w.mjs";import{urlPlugin as H}from"./packem_shared/urlPlugin-Bm2IE00y.mjs";import{default as K}from"./packem_shared/createSplitChunks-CGDk55G3.mjs";import{default as Q}from"./packem_shared/getCustomModuleLayer-d8i66lfh.mjs";import{default as X}from"./packem_shared/getModuleLayer-rF9RxnJ5.mjs";import{default as Z}from"@rollup/plugin-alias";import{default as $}from"@rollup/plugin-commonjs";import{default as re}from"@rollup/plugin-dynamic-import-vars";import{default as te}from"@rollup/plugin-inject";import{default as le}from"@rollup/plugin-node-resolve";import{default as se}from"@rollup/plugin-replace";import{default as me}from"@rollup/plugin-wasm";import{default as ie}from"rollup-plugin-polyfill-node";import{PluginPure as ne}from"rollup-plugin-pure";import{default as ge}from"rollup-plugin-visualizer";export{Z as alias,p as browserslistToEsbuild,w as cachingPlugin,o as chunkSplitter,a as cjsInteropPlugin,$ as commonjs,f as copyPlugin,K as createSplitChunks,u as dataUriPlugin,re as dynamicImportVars,x as esmShimCjsSyntaxPlugin,d as fixDtsDefaultCjsExportsPlugin,P as fixDynamicImportExtension,Q as getCustomModuleLayer,X as getModuleLayer,F as getShebang,te as inject,b as isolatedDeclarationsPlugin,j as jsonPlugin,y as jsxRemoveAttributes,D as licensePlugin,N as makeExecutable,E as metafilePlugin,le as nodeResolve,ie as polyfillNode,L as preserveDirectivesPlugin,ne as pure,R as rawPlugin,T as removeShebangPlugin,se as replace,z as resolveFileUrlPlugin,V as shebangPlugin,B as sourcemapsPlugin,H as urlPlugin,ge as visualizer,me as wasm};
1
+ import{default as o}from"./packem_shared/chunkSplitter-DWAy1JkE.mjs";import{cjsInteropPlugin as a}from"./packem_shared/cjsInteropPlugin-D5wyoQ_B.mjs";import{copyPlugin as f}from"./packem_shared/copyPlugin--6RITp1-.mjs";import{dataUriPlugin as u}from"./packem_shared/dataUriPlugin-CfKiUIP_.mjs";import{default as p}from"./packem_shared/browserslistToEsbuild-C0IWmbNe.mjs";import{esmShimCjsSyntaxPlugin as x}from"./packem_shared/esmShimCjsSyntaxPlugin-DjKqX4DE.mjs";import{fixDtsDefaultCjsExportsPlugin as d}from"./packem_shared/fixDtsDefaultCjsExportsPlugin-Dp1UcHVR.mjs";import{default as P}from"./packem_shared/fixDynamicImportExtension-BBGNRniz.mjs";import{isolatedDeclarationsPlugin as b}from"./packem_shared/isolatedDeclarationsPlugin-B34s_qkE.mjs";import{default as j}from"./packem_shared/jsonPlugin-BAi3Da-h.mjs";import{jsxRemoveAttributes as y}from"./packem_shared/jsxRemoveAttributes-B1PLPffj.mjs";import{license as D}from"./packem_shared/licensePlugin-C5yzUqe-.mjs";import{default as E}from"./packem_shared/metafilePlugin-ObS4J7mO.mjs";import{default as w}from"./packem_shared/cachingPlugin-D0BBFJPD.mjs";import{default as L}from"./packem_shared/preserveDirectivesPlugin-B49Cbykd.mjs";import{rawPlugin as R}from"./packem_shared/rawPlugin-DgRj14Xy.mjs";import{default as z}from"./packem_shared/resolveFileUrlPlugin-BkpjVHeK.mjs";import{getShebang as F,makeExecutable as N,removeShebangPlugin as T,shebangPlugin as V}from"./packem_shared/makeExecutable-6aOVHoJR.mjs";import{sourcemapsPlugin as B}from"./packem_shared/sourcemapsPlugin-B4W3J79w.mjs";import{urlPlugin as H}from"./packem_shared/urlPlugin-Bm2IE00y.mjs";import{default as K}from"./packem_shared/createSplitChunks-CGDk55G3.mjs";import{default as Q}from"./packem_shared/getCustomModuleLayer-d8i66lfh.mjs";import{default as X}from"./packem_shared/getModuleLayer-rF9RxnJ5.mjs";import{default as Z}from"@rollup/plugin-alias";import{default as $}from"@rollup/plugin-commonjs";import{default as re}from"@rollup/plugin-dynamic-import-vars";import{default as te}from"@rollup/plugin-inject";import{default as le}from"@rollup/plugin-node-resolve";import{default as se}from"@rollup/plugin-replace";import{default as me}from"@rollup/plugin-wasm";import{default as ie}from"rollup-plugin-polyfill-node";import{PluginPure as ne}from"rollup-plugin-pure";import{default as ge}from"rollup-plugin-visualizer";export{Z as alias,p as browserslistToEsbuild,w as cachingPlugin,o as chunkSplitter,a as cjsInteropPlugin,$ as commonjs,f as copyPlugin,K as createSplitChunks,u as dataUriPlugin,re as dynamicImportVars,x as esmShimCjsSyntaxPlugin,d as fixDtsDefaultCjsExportsPlugin,P as fixDynamicImportExtension,Q as getCustomModuleLayer,X as getModuleLayer,F as getShebang,te as inject,b as isolatedDeclarationsPlugin,j as jsonPlugin,y as jsxRemoveAttributes,D as licensePlugin,N as makeExecutable,E as metafilePlugin,le as nodeResolve,ie as polyfillNode,L as preserveDirectivesPlugin,ne as pure,R as rawPlugin,T as removeShebangPlugin,se as replace,z as resolveFileUrlPlugin,V as shebangPlugin,B as sourcemapsPlugin,H as urlPlugin,ge as visualizer,me as wasm};
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var c=(a,e)=>p(a,"name",{value:e,configurable:!0});import{createFilter as g}from"@rollup/pluginutils";import{readFile as u}from"@visulima/fs";import{svgToCssDataUri as h,svgToTinyDataUri as b}from"@visulima/packem-share";import{R as v}from"./index-Cj1Okk1t.mjs";var x=Object.defineProperty,$=c((a,e)=>x(a,"name",{value:e,configurable:!0}),"l");const F=$((a={})=>{const e=g(a.include??[/\?data-uri/],a.exclude);return{async load(s){if(!e(s)||!s.includes("?data-uri"))return;const i=new URL(s,"file://"),t=i.pathname,f=i.searchParams.get("encoding")||"tiny",l=i.searchParams.has("srcset")||a.srcset;this.addWatchFile(t);const r=v.getType(t)||"application/octet-stream";if(r==="image/svg+xml"){const n=await u(t,{buffer:!1}),o=f==="css"?h(n):b(n);return`export default "${l?o.replaceAll(" ","%20"):o}"`}const d=await u(t,{buffer:!0}),m=Buffer.from(d).toString("base64");return`export default "${`${r.startsWith("text/")?`data:${r};charset=utf-8;base64,`:`data:${r};base64,`}${m}`}"`},name:"packem:data-uri"}},"dataUriPlugin");export{F as dataUriPlugin,F as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/packem-rollup",
3
- "version": "1.0.0-alpha.10",
3
+ "version": "1.0.0-alpha.11",
4
4
  "description": "Rollup plugins for packem",
5
5
  "keywords": [
6
6
  "visulima",
@@ -78,7 +78,7 @@
78
78
  "@visulima/find-cache-dir": "1.0.31",
79
79
  "@visulima/fs": "3.1.5",
80
80
  "@visulima/package": "3.5.8",
81
- "@visulima/packem-share": "1.0.0-alpha.7",
81
+ "@visulima/packem-share": "1.0.0-alpha.8",
82
82
  "@visulima/path": "1.4.0",
83
83
  "@visulima/source-map": "1.0.20",
84
84
  "es-module-lexer": "1.7.0",
@@ -1 +0,0 @@
1
- var f=Object.defineProperty;var o=(e,a)=>f(e,"name",{value:a,configurable:!0});import{createFilter as m}from"@rollup/pluginutils";import{readFile as n}from"@visulima/fs";import{R as g}from"./index-Cj1Okk1t.mjs";var h=Object.defineProperty,r=o((e,a)=>h(e,"name",{value:a,configurable:!0}),"e");const l={quotes:/"/g,urlHexPairs:/%[\dA-F]{2}/g,whitespace:/\s+/g},x=r(e=>{switch(e){case"%2F":return"/";case"%3A":return":";case"%3D":return"=";case"%20":return" ";default:return e.toLowerCase()}},"specialHexEncode"),$=r(e=>e.trim().replaceAll(l.whitespace," "),"collapseWhitespace"),F=r(e=>encodeURIComponent(e).replaceAll(l.urlHexPairs,x),"dataUriPayload"),b=r(e=>e.replaceAll(/<!--[\s\S]*?-->/g,""),"stripSvgComments"),u=r(e=>{const a=e.startsWith("\uFEFF")?e.slice(1):e,s=b(a),t=$(s).replaceAll(l.quotes,"'");return`data:image/svg+xml,${F(t)}`},"svgToTinyDataUri"),y=r((e={})=>{const a=m(e.include??[/\?data-uri$/],e.exclude);return{async load(s){if(!a(s)||!s.endsWith("?data-uri"))return;const t=s.replace(/\?data-uri$/,"");this.addWatchFile(t);const i=g.getType(t)||"application/octet-stream";if(i==="image/svg+xml"){const c=await n(t,{buffer:!1});return`export default "${e.srcset?u(c).replaceAll(" ","%20"):u(c)}"`}const d=await n(t,{buffer:!0}),p=Buffer.from(d).toString("base64");return`export default "${`${i.startsWith("text/")?`data:${i};charset=utf-8;base64,`:`data:${i};base64,`}${p}`}"`},name:"packem:data-uri"}},"dataUriPlugin");export{y as dataUriPlugin,y as default};