@@ -10,7 +10,6 @@ import fs from 'fs';
1010import path from 'path' ;
1111import postprocess from '@zsviczian/rollup-plugin-postprocess' ;
1212import cssnano from 'cssnano' ;
13- import jsesc from 'jsesc' ;
1413import { minify } from 'uglify-js' ;
1514import json from '@rollup/plugin-json' ;
1615import { parseEnv } from 'node:util' ;
@@ -103,8 +102,13 @@ const react_pkg = isLib ? "" : minifyCode(isProd
103102const reactdom_pkg = isLib ? "" : minifyCode ( isProd
104103 ? fs . readFileSync ( "./node_modules/react-dom/umd/react-dom.production.min.js" , "utf8" )
105104 : fs . readFileSync ( "./node_modules/react-dom/umd/react-dom.development.js" , "utf8" ) ) ;
105+ const reactPackagesCompressed = isLib
106+ ? ""
107+ : compressDeflateBase64 ( react_pkg + reactdom_pkg + jsxRuntimeShim ) ;
106108
107- const pako_pkg = isLib ? "" : fs . readFileSync ( "./node_modules/pako/dist/pako.min.js" , "utf8" ) ;
109+ // Runtime payloads are only decompressed; including Pako's deflate implementation
110+ // would add unused code to the size-constrained Obsidian plugin bundle.
111+ const pako_pkg = isLib ? "" : fs . readFileSync ( "./node_modules/pako/dist/pako_inflate.min.js" , "utf8" ) ;
108112
109113if ( ! isLib ) {
110114 const excalidraw_styles = isProd
@@ -140,10 +144,7 @@ const packageString = isLib
140144 ' ' + pako_pkg + '\n' +
141145 ' return module.exports;\n' +
142146 '})();\n' +
143- '\nlet REACT_PACKAGES = `' +
144- jsesc ( react_pkg + reactdom_pkg + jsxRuntimeShim , { quotes : 'backtick' } ) +
145- '`;\n' +
146- // NEW: Fast, mobile-compatible runtime decompression
147+ // Define the dependency-free inflater before React participates in bootstrap.
147148 'const unpackBase64Deflate = (b64) => {\n' +
148149 ' const binStr = atob(b64);\n' +
149150 ' const len = binStr.length;\n' +
@@ -152,6 +153,7 @@ const packageString = isLib
152153 ' return new TextDecoder().decode(pako.inflate(bytes));\n' +
153154 '};\n' +
154155 'window.unpackBase64Deflate = unpackBase64Deflate;\n' +
156+ 'let REACT_PACKAGES = unpackBase64Deflate("' + reactPackagesCompressed + '");\n' +
155157 'const unpackExcalidraw = () => unpackBase64Deflate("' + compressDeflateBase64 ( excalidraw_pkg ) + '");\n' +
156158 'let {react, reactDOM } = new Function(`${REACT_PACKAGES}; return {react: React, reactDOM: ReactDOM};`)();\n' +
157159 'let excalidrawLib = {};\n' +
@@ -292,4 +294,4 @@ if (process.env.NODE_ENV === "lib") {
292294 config . push ( BUILD_CONFIG ) ;
293295}
294296
295- export default config ;
297+ export default config ;
0 commit comments