{"_id":"@graysonlang/esp","_rev":"33-a106a07862534223f79b4512125c9901","name":"@graysonlang/esp","dist-tags":{"latest":"2.7.0"},"versions":{"1.0.0":{"name":"@graysonlang/esp","version":"1.0.0","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.0.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"96e2337de9069ef357ed0e57d5c3df68343b42b9","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.0.0.tgz","fileCount":14,"integrity":"sha512-p7upis1YPa8WUCA5H/Qo4HI2g5p4rhQtsGPFJ5prWYkV5DTNN2Ly4bDjBlFhHb+9HJEMGvkmLtTH3LgiOEGHrA==","signatures":[{"sig":"MEUCIEAOkMO9o3opFizt8siwB9hOO+KJpj4Ho2CLcDn3djnFAiEAvBLhja9t3vZr/rzxXzFNmsezBkAaE3EBKf6Gua/jufc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45471},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"06179779435252ce52c03b5d7d909e8fd14c9ac2","scripts":{"lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs","serve":"node ./scripts/build.mjs --serve --proxy --watch","build:vscode":"node ./scripts/build.mjs --vscode","debug:vscode":"node ./scripts/build.mjs --vscode --watch"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"Some of my esbuild plugins.","directories":{"example":"example"},"_nodeVersion":"25.8.2","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.0.0_1776361970768_0.7712102911910284","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@graysonlang/esp","version":"1.0.1","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.0.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"d90d12a9c9489fb4e1356efca2307c979efa6047","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.0.1.tgz","fileCount":14,"integrity":"sha512-1TRNeRazjPp6HTilzVJDFIJuYKGbJTDETYz9pLNuIVm5cvP/bsVH68ljjK05PH4T+vt/kIPvNEwCPVu3I8YzGQ==","signatures":[{"sig":"MEUCIHIfD8rgNNPM7wxKGMoOocTGr8gWwb1ZUNI5UER4mBrdAiEAwCTk/tsDPR6WmDIQmRj0E4lQfKDg3DA/M0I4g0QK/w0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45468},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"fdc287101e8a83c4f2874413b85eaeb110fc0aea","scripts":{"lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs","serve":"node ./scripts/build.mjs --serve --proxy --watch","build:vscode":"node ./scripts/build.mjs --vscode","debug:vscode":"node ./scripts/build.mjs --vscode --watch"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"example":"example"},"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.0.1_1776376370863_0.5509003426616503","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@graysonlang/esp","version":"1.1.0","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.1.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"b1269de735e31890f6c8b18b08984dafeca2de10","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.1.0.tgz","fileCount":14,"integrity":"sha512-KvvQi1B0B/nIJmudMfB1oc6Jukh5SMMDKPIjzzb0/db3v1WqmS3EZjDquHPgRWu8ukov5Z9A6qe9IarTAzxYqA==","signatures":[{"sig":"MEUCIQDrrYWmAG+1Dng5yMsVKpoCfjChjd4erQmrDBZp6AItiwIgWrgYrBR7kNxZ+dKunNQVw4tliEk+9U5QBm6VZG34e/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48154},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"3eb0523e8705b476db44a30e95b45f5ab57db883","scripts":{"lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify ","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --proxy --launch","build:vscode":"node ./scripts/build.mjs --lint --minify --vscode","debug:vscode":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.1.0_1776725317044_0.1881252912319995","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@graysonlang/esp","version":"1.1.1","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.1.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"530627f2a1dd00e7cce746c817b1822f7b57ad73","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.1.1.tgz","fileCount":14,"integrity":"sha512-GyR0NHoJJYBm2rYDtarUsnjG4i5c/OZ+ImbyMLojNwSh3a5ByH7Tb8q+gw/8bhVLRmzeInf68NJpOgzaI99Q6Q==","signatures":[{"sig":"MEYCIQDej0EWNnHvakmwZhTGNG6TDWtva0eSVDfSAhP3XPXV1wIhAL+thxhfG4bf6FdK1dtwnjqvhcqSDp6fuvE85sNKW1Qa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48337},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"e0ef332dec05e9c90b4ac7e1941eded2bcc886db","scripts":{"lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify ","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --proxy --launch","build:vscode":"node ./scripts/build.mjs --lint --minify --vscode","debug:vscode":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.1.1_1776725576880_0.4563834343329729","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@graysonlang/esp","version":"1.2.0","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.2.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"2b103d11544f6353e937af7ed49d9f900fab7b6d","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.2.0.tgz","fileCount":14,"integrity":"sha512-vNrRaN1giDO8iFGN8kbQF/mrns0UWW+n804ojlq7qTtf8gFfjQPd2/jEKNGPLqQLJ5iNQlsdjrPAVscribuTOg==","signatures":[{"sig":"MEQCIBBig5JqjhrYaLzN0uNgYFD/4j1BNLr0EKeAqhfFz/YSAiA2vt9Uuh1AmUGRAIHxAAhONYxIXalXSoG5QzwlLV1gdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49331},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"84be08af2855b2b0c983e970e40cf38beef80772","scripts":{"lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify ","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --proxy --launch","build:vscode":"node ./scripts/build.mjs --lint --minify --vscode","debug:vscode":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.2.0_1777924370105_0.1645596015976527","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@graysonlang/esp","version":"1.2.1","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.2.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"1b4d7f8626f048312098d8d3a90848b9cceacc80","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.2.1.tgz","fileCount":14,"integrity":"sha512-fZw7u8v/BePqjJpjtKNokPIhI198XfGfF/UdJDqarSxn1N+PWXelNCPrG7d7rEtxwN+Xy5cOUn3zdhDSt4wK6g==","signatures":[{"sig":"MEQCIB+0vp7XdiIjdVhpVVLTmPPqlaKMjlIdVtssMsbCWmdTAiAsuwif0YE4X7vx1w7a949/uSiQL/KIC62psGRAoZk9Kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49352},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"13816c164e4ecfff25c3fe6e9bcd49d58be985ad","scripts":{"lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify ","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --proxy --launch","build:vscode":"node ./scripts/build.mjs --lint --minify --vscode","debug:vscode":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.2.1_1777941969724_0.3975931496078464","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@graysonlang/esp","version":"1.3.0","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.3.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"9316405ee63d1e28661cc22fdcec183ec89dee16","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.3.0.tgz","fileCount":15,"integrity":"sha512-fzvVJxGaV3NjRQoTq60Fh1Pu0ejqQQFETLga86xP8/tw4f8Dqw4HXiqHHKddut/XZE2OhJ8qz2LuuHabn/19DA==","signatures":[{"sig":"MEQCIFl4uGxF2wclj+VqvXp8T4rVk0pK9m3X76qN+A+TqIThAiAofiD4uGOdptksITW4AhEb0BJ7mu9ZHQjg6tLHjhCDEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59248},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"6e3ca68eb72235be581cb8a454bfc9b2de8ffc4a","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify ","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.3.0_1777948944344_0.8779080296639825","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@graysonlang/esp","version":"1.3.1","keywords":["emscripten","esbuild","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.3.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"cd7bbc5e3e346c4a2cd605cccd9ed8b1eec05c95","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.3.1.tgz","fileCount":15,"integrity":"sha512-SWU1RgBokgbnpqpPhuJCEiApEW3uaUdiU69iRd8yiy9wpF5yFpxvlhEY52e/mU75Mw7M3p/pFbLUW8+fEynw1Q==","signatures":[{"sig":"MEYCIQDlyKrtIHggpX3t9TZreESAOW3+FVsnTwJ4xGO+a0wQkQIhAO1ICB04WnJp989QvZX7JnGie5jeOr/06vG/AujhRXXK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59473},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"351c7306746e17f070ab968d664ffa81b33cb4bc","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify ","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.3.1_1777949180243_0.9952070459006683","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@graysonlang/esp","version":"1.3.2","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.3.2","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"b44a4a198b21d06b6fc1c1deed9dae5c07c99a79","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.3.2.tgz","fileCount":15,"integrity":"sha512-mQsWMvdjtSg2ikjDYtiYN00di7rHAXAcfeE46CWjBrVsLsv5GugVkwLYUTR8I1CLJt+pi4jsEm1VOUHZIez34w==","signatures":[{"sig":"MEYCIQCOn+I4/6tY3IXRywWBxLQD/yU98aP2cRdvQnKZ56XXYgIhAPME+nM1FTd1N4Q1W5bidXkd8EUZloI5TY8ZL8Rfnap9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59494},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"3c395b30351e15d437ddc030d660f118fbad564f","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.3.2_1777956779778_0.7243096648268394","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@graysonlang/esp","version":"1.3.3","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.3.3","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"a521b0e6eefff0fd6357b105f660da4dc12f6138","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.3.3.tgz","fileCount":15,"integrity":"sha512-nwTGa/PO2FI+7E5voyQtq5JykVo5JLXD79IqLrBDsDkQdpruXrYhJq4xQVrktSMPTh3N8HdE3I5kXZ/SfR1YTQ==","signatures":[{"sig":"MEUCICUadG0qdTritnGy5uWmiJRahRqXMW9cpYopidoZL7CRAiEAnaaDN97G9rAUN6mceNNfQxKH/YU9kXaGKucJLmf3LwU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60176},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"84729dbde51098bd53f3b8b893a57c405a300624","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.3.3_1780256453362_0.39182825764931817","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@graysonlang/esp","version":"1.3.4","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.3.4","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"51050c866ea6ed2b2fc5c04c7dd3cd54e0bedbe6","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.3.4.tgz","fileCount":15,"integrity":"sha512-DX5MF8uIseKgW6RqoCR21V8mUD3Iq85mY6P+1nQ2tE+WXPLK/pZCLnYvR2cBorWLAbE+bCqDDtrO28RZEpCwEQ==","signatures":[{"sig":"MEYCIQDu0qe7+WuLXub3+diw8NFgfvnddcDLJtV1COg1oNFd/QIhANuujADjpUh/GLiF2oP7KqD3kfw+zVQNWZR/+9EQvy/C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61427},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"5ba5e9262a31d00ed4ed1b2fc1ba8342d26c9a9d","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.3.4_1780298002249_0.6512110890140319","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@graysonlang/esp","version":"1.3.5","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.3.5","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"54a57be177b98d96f4a24ae61508bed87f5dfb25","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.3.5.tgz","fileCount":15,"integrity":"sha512-QfdvSwz5OUlgQAwdHUEuihgdwnLImkEG7Cy06Y22TZjsgbLOe9Bn6O2dmBywqqT7Kw5jsCG1/lT4fR5rn99AIg==","signatures":[{"sig":"MEUCIQDyi9rF+3lDt80kjJ9D8H26IgZ5XMHdxRi0ShmlEwTnFwIgbpjAVIaKR8qxCXF9w9mK073TNnwAVPGc6jrGV8tx0IU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63697},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"69e73ab168afe5c50f98674bfdccfb9d9d589061","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.3.5_1780341102963_0.10054408039599272","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@graysonlang/esp","version":"1.4.0","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.4.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"f1b1fd976ec69bbd13b1574571c38bb17506b30d","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.4.0.tgz","fileCount":15,"integrity":"sha512-wi1W4JROXMm+q/ckOQ8ou2dnc3Sr9vH5IF+YIoF70WFLhsAk6VrNbwyO+Y5CAJEudyBe4wrVaQ08YD8AlKz6YA==","signatures":[{"sig":"MEUCIQDSHL1CdW9G3+9D2p6LSAzMY3+pjgQwDCFuEEo2oPVrJwIgF3Kcsm0Yl1AVlOF7fWo1wUaWjbKaj3lvXdHlgoXeEZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63742},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"152c50bfa60e9a135bfc5de469a97486c3600969","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.4.0_1780634775026_0.773809794993602","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@graysonlang/esp","version":"1.5.0","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.5.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"7e9900baa65b4048b5e1ac0d80953b8186917c1c","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.5.0.tgz","fileCount":15,"integrity":"sha512-fOuWEr2ZCcjgtIcbjMnx2sZTKEMBVF4iqZcCnC010vR6X7UtXz/YtX3URSzjjaaULKHoh85wVpWWo/8LTnzL2g==","signatures":[{"sig":"MEUCIQDHI0K7MUbXo+LzkC0apFKwew5O7RtBqQw92UqgJJvmQQIgDR5ncAX1qxKYB+0JESj4wuPEQMK2LVnz4eHJruqp7ow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64311},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"c84359a6f2ef18cdbacb9a8e24a0c41e149a6b4d","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.5.0_1781546895308_0.3926965725113687","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@graysonlang/esp","version":"1.6.0","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.6.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"8b45da21dd2b9e9475aa33182da776ceaaaba6dc","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.6.0.tgz","fileCount":15,"integrity":"sha512-2M54rn9t++xZLOBAU1siKDTTvpoC0lRdW80YpURbfXr/ABtOYzE4uHM1wnIKJjV6VMX3IuCCSXiUI8K2yDkWqQ==","signatures":[{"sig":"MEUCIQDXwFXTWFNMgPXJ/FqnDt96gXTnOSVmCodbEIWUBLH5YQIgOSQPKPjdrsP06fpV8rmrQx2DhnuDc7TnApwZO464duM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68643},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"b51df911e1ac6a628482ad684bf2c9c0d5742d56","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.6.0_1782002811873_0.19299989972955545","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@graysonlang/esp","version":"1.6.1","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.6.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"2bfea1098e4efd4d9114c860e508c33954c0b505","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.6.1.tgz","fileCount":15,"integrity":"sha512-3EnmnkovHY8I379zt3rcJ3HzdPTzuBmrCZA1Hpgl7gENfwCCihszowCDqVenlv0Hdsr10m/nyLLDXwbANVhqbQ==","signatures":[{"sig":"MEUCIQDvAfhE2b6ZuGGeWztn/lgUhWdjyrSD+a53ciBhv9K1eAIgYhEL7I1g9dgsaN1Z0nViHWKnl6AVr1EPOzHq/Aas+Cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68882},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"f0ec81ee20624ae750c7cca31501a16299e6a788","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.6.1_1782079034312_0.4653282049476617","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@graysonlang/esp","version":"1.6.2","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.6.2","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"22e39e3ef64d1ef93d5fff9e84ece8ba6923b3a7","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.6.2.tgz","fileCount":15,"integrity":"sha512-wh8wMLRBcDj/suoQgy0ECwE/fFOJ2vpmcDtwNNsgihGLIXZqImE1//UL80J0xGLRKThhBiTaDQBYyc6SrE2Qqw==","signatures":[{"sig":"MEUCIAOqSl1b4u2NwhH47N4Nn27DjpaZScTPIILFID/hfFGAAiEA/Ane6FO7jQ03uZxHvOKVheEWstsmkcksYnVUDQQcFus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69754},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"85a63c40571887708119973fe39df6bca589e3df","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.6.2_1782685075681_0.7842677632182842","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@graysonlang/esp","version":"1.6.3","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.6.3","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"37f47ecd6f8d88062cf53d23ec8b3f750150564a","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.6.3.tgz","fileCount":15,"integrity":"sha512-8Zbe2MahwZwM8RmMIlYX8U3GouU8PQO5ujWBkLMJJwdSkUdgR02vfBvSz5sfEv81PAFlM1J8dG4ct4HtWgZBog==","signatures":[{"sig":"MEUCIQDVm8Gz3IhBGLHUTNdY/s1N4RGgO8sZSSC4gxh5DZ0f+QIgJSyFwoEkue1GFCFDFuTGrls9C+r/iFJf0bqwGpcU2IM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69985},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"061c7d26d0e1191904998011e12a5a7a5bf0faf2","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=9222","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/link-self-bin.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0 --port=8443","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.6.3_1783210264131_0.6277632037069105","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@graysonlang/esp","version":"1.7.0","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.7.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"10efeb2fb72956bdc3c0571f6b49aceccbfb696d","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.7.0.tgz","fileCount":16,"integrity":"sha512-5XUCnR1TVtxNQYkZr0YDWqFs7QLznZsrkPntWKM87oD640sNF4gDZ6hM0ikdAII4HajWXh9KoheGMBiawlOGvw==","signatures":[{"sig":"MEQCIFWF/3yjPLusMgI2Zo/8pHh7MUDhBpQ68Gx2ZEZtfjK5AiAI/MZfZPbBtxt+ouogso/8yPq4NkZabJcpTdxrhxwoww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82351},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"6eba341d85b9e3c5e2fd6cf414f06b3a13210a3e","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.7.0_1784510766590_0.00038575997039558274","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@graysonlang/esp","version":"1.7.1","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.7.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"41bb2b2b89603ce4ee6323b65e3cd94767cac17c","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.7.1.tgz","fileCount":16,"integrity":"sha512-+o6dUtKGNdXT4NzbV22isT5BWNNoNcRpHrsrMC0kySVeAXfUCuoY/+qI21chlaEDm1+myCn1Hken5Hq68cJgSA==","signatures":[{"sig":"MEQCIAXggy+4Q+PkFc0CsnbSRoIMWMvWtKPdhiPY3HWMAJQiAiAYHo14AcZEVfHyXl6Jje82FZuKaJK8iZl6Arx5js6e/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83095},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"6e205550f75c45079fa19f37abd8515a608b47d5","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern 'dist'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.7.1_1784848930895_0.8747053932655005","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@graysonlang/esp","version":"1.8.0","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.8.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"22400e37d7a5f240f90dff9519f7769d9a0b2236","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.8.0.tgz","fileCount":16,"integrity":"sha512-xrV9A7YJ2AEi36hDsIwcjfXeJaCMRFpNP0qEceiLjgcilaaBDEDsc2yxTgcBa3FEBz9AOuelL5FK8vRJfRMqHQ==","signatures":[{"sig":"MEUCID6Uv9PULYsd4T8l3LqFjntcrr6MJPNMzVpWPmAw9YPjAiEA9wyrx0FUdUtkhR9c1KSCvsH2bFNgLQneK4OjJtuU4Q0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83116},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"f9390226733299a7a9167ddae003350a1c63a017","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint . --ignore-pattern '{dist,www}/**'","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.8.0_1784934424708_0.8841935375796588","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@graysonlang/esp","version":"1.9.0","keywords":["emscripten","esbuild","esbuild-plugin","eslint","glob","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@1.9.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"d29f1fa6cd1818085bab2d171c926312f6255d80","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-1.9.0.tgz","fileCount":16,"integrity":"sha512-8xqQygneuMOPHMMXX/jJCqvc9OB+e2fgKb5hkOG4cs51s7qMZtLhzu3+JBTEebwjtOwmQM2+NhYgVfnIkCkGJg==","signatures":[{"sig":"MEUCIDAf4sc/gGIHK1BA/qlaXQv8ETxYD1s9+VUvQ7EJGpQ4AiEArNk9Zx4aPNy/g3oQiWudnT2smhmx6jasNvkPjQuC3aY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85911},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-eslint":"./src/esbuild-plugin-eslint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"2a25430a56a4fd17f9a7ca41d85ff3db3e5ba022","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"eslint .","test":"echo \"Error: no test specified\" && exit 1","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@stylistic/eslint-plugin":"^5.10.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@stylistic/eslint-plugin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_1.9.0_1784960482715_0.5856815477258888","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@graysonlang/esp","version":"2.0.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.0.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"9adcf275d29e081c45345a46a4e5f14fda999ecc","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.0.0.tgz","fileCount":19,"integrity":"sha512-HVbZzaWL9xjNbf2ozkaYYCX1UAaE1ikiB7TGX+jNLpxiqd28AL0wt0JkrO2clJkWlmDsjkhHOvr6DDZuFIBizQ==","signatures":[{"sig":"MEQCIBXUpjACxiNU1qwDwG0AC184e9bDCsOQJQ8Xphs4/7XkAiA77/Tiur7pp2WbVw7ZeHXLyMv1DM5cQYIjamoaEBr5nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117302},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./lint-diagnostics":"./src/lint-diagnostics.js","./lint-driver-biome":"./src/lint-driver-biome.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./lint-driver-eslint":"./src/lint-driver-eslint.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-lint":"./src/esbuild-plugin-lint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"b72ec54d115f999fa1542e25238a8d17decfb05e","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.0.0_1785103338587_0.6311696616321323","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@graysonlang/esp","version":"2.1.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.1.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"aa95d17c087aab0fadf0e20d81a75e991f853c1b","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.1.0.tgz","fileCount":20,"integrity":"sha512-HDIQAlRC/1sXA4iEGvt/DQCFBcsriqlFxPZhCn1RJuP2KeQBmUOTS/CmSyhk3/nKYsFq6lM7FNzH6gyXC+qgTQ==","signatures":[{"sig":"MEYCIQC25AgsJDwT7jdN3vawHtQzMXSzBaZOsCVti3CDop7JJwIhAPgWXsbYfy9hb3J0yh5Y6tUntTo+D/Kf0DATGPqWM0hF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121357},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./prepare":"./src/prepare.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./lint-diagnostics":"./src/lint-diagnostics.js","./lint-driver-biome":"./src/lint-driver-biome.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./lint-driver-eslint":"./src/lint-driver-eslint.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-lint":"./src/esbuild-plugin-lint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"30b38335ea321acced4d54624defd4d6f63b7670","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.1.0_1785203420602_0.0359575312285203","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@graysonlang/esp","version":"2.1.1","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.1.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"6cefee6568c619a014adfa23621f895ba55a06aa","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.1.1.tgz","fileCount":20,"integrity":"sha512-evEFTWAmzqk9Gs59jn9SOUq+nIA5tcS4+OfXQHM5oSUahwVnANuXHcYfDG3j9VNUWjK/a5S+P/5ccwG0Bpi8OQ==","signatures":[{"sig":"MEQCIAsJluFNc/p3ezDcz7K4n8Lmcrj+kTHanpvgp1QTHCptAiBSqOUOsgXNBS8zFsy/Pp0ro21uKran4jBzNpyZ413o+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123264},"main":"./src/index.js","type":"module","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":"./src/index.js","./glglob":"./src/glglob.js","./helpers":"./src/helpers.js","./prepare":"./src/prepare.js","./freshness":"./src/freshness.js","./esbuild-runner":"./src/esbuild-runner.js","./lint-diagnostics":"./src/lint-diagnostics.js","./lint-driver-biome":"./src/lint-driver-biome.js","./esbuild-plugin-imp":"./src/esbuild-plugin-imp.js","./lint-driver-eslint":"./src/lint-driver-eslint.js","./esbuild-plugin-emcc":"./src/esbuild-plugin-emcc.js","./esbuild-plugin-lint":"./src/esbuild-plugin-lint.js","./esbuild-problem-format":"./src/esbuild-problem-format.js","./esbuild-plugin-glob-copy":"./src/esbuild-plugin-glob-copy.js","./esbuild-plugin-vscode-problem-matcher":"./src/esbuild-plugin-vscode-problem-matcher.js"},"gitHead":"165cdbc7ad45bd09abe7ca61246c0b3f9c4c8a13","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","dev:coi":"npm run dev -- --cross-origin-isolation","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.1.1_1785207323866_0.3074029374534186","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@graysonlang/esp","version":"2.2.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.2.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"1d0ce6b637c347c76ee1d468abaf76b8b9fce479","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.2.0.tgz","fileCount":36,"integrity":"sha512-0FO28QwaunHxzS9VQoT0M7gda86wSEUv77w1pH263UeabUrdT54rc4G0Rhsg5RagoscmvTQl6yXN7lSwzOSRnw==","signatures":[{"sig":"MEYCIQCdHJgnhm7LrBdCqx1d8Ac4p4VNkpKUgEmRhStGMFxbhwIhAIIsuKF+uBf0UgFytSuUERlDBsApw+ujebE70mI7/hm5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139309},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"bb98f0363e85bf41cb52118579b49f0e67ae4824","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.2.0_1785218449814_0.070277812299401","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@graysonlang/esp","version":"2.3.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.3.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"95ff28f7a8471c071a2f6aa21c72f8519157480a","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.3.0.tgz","fileCount":36,"integrity":"sha512-nUNxtIXjOso2+k/kHilW5fx6nNaNJ7KuJ7XBgQzxaQsKtsKU8X7oCabxSnfrOBxschypPCTl4VJ4KpRAKBF2Ng==","signatures":[{"sig":"MEUCICaPrYlbtjyGgvwTgRowOo75rnW2Zil2UYrktBP5S4EiAiEA4ka0UNIPiZOwfYff5rv92zZHFQ9Fe9G7R8W2TbrfprY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145982},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"201b92f4ff04882577cc40789d55f41b97bc79e8","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.3.0_1786334301193_0.3503280787618428","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@graysonlang/esp","version":"2.3.1","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.3.1","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"dae52527700d333ce545133377e53f8db1c85c69","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.3.1.tgz","fileCount":36,"integrity":"sha512-kynZZs/6MfuCl6NmFyJKHQyuru1d7nOAnYdeKrlnFzivq3TxbbpSOa6seUysNni9kaPCf/dEApJ0EIPyCduRPQ==","signatures":[{"sig":"MEQCIDXn99mvfXB3gyM5vaoHmjqWlMygu9tKUxpMOflgxrdEAiBo8MY9fRKaIp+3yjbQHFF4Uu+ek4ONh1FBTUQVGyfCEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146442},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"b3ce5b19126c6dfffadb422719ec54d377cd309c","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.3.1_1786336947619_0.8586806331667178","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"@graysonlang/esp","version":"2.3.2","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.3.2","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"19331ba97a9bd1475c5cc72387fefd243ccf6b95","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.3.2.tgz","fileCount":36,"integrity":"sha512-0Wyu/3lknMF0YThvS2UJxK6kkdmSI3iGY00N9jHJt/HNePKdQunSy9qRpXyN9G24zAnnQIlg4pJRBxaiKOAVMQ==","signatures":[{"sig":"MEUCIQD49g/EhG5xnp4mU+MzWfY7LqdcbDHerzuU/sL241yEygIgHo2VrCos+BXvVK+Vvralxtpi/IThjHR4FuQhppi5GQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146442},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"bd25bae94212eaa47abad17371eba46a284bf367","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.3.2_1786340948160_0.9580434858716853","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@graysonlang/esp","version":"2.4.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.4.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-sync-mcp":"scripts/sync-mcp.mjs","esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"3203b2d09b30282073bd6a0a1e1d7e046de8537f","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.4.0.tgz","fileCount":37,"integrity":"sha512-dbzfJJn3hJsn0iwsvYfpST4O5/8u/K6EjvaQZ0xUxGhlQADb4ORPCd1uOD0/Gex2B0ihK+CovJSZOqd3QZ0DEg==","signatures":[{"sig":"MEQCICPUBg6TkuQGNtYjpAKhQnW/vSNvjJXyf0XqBbIkOgMNAiAzzoN4KpGdWCY3fbX335dk8pkIPn55lw12sUuU1kROaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB2Oa7F43v9Fp2DlcJezTh6TUz2sUWflvxyzyAvZT5T+AiEA2gu8ntxElRacDw1ZzbOwIvNf3zHbcAQyS3mLoqgRG2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151860},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"54a25593f1e6a8be4e646fcaa3056711064a5999","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.4.0_1787601910815_0.5919956615575266","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@graysonlang/esp","version":"2.5.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.5.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-sync-mcp":"scripts/sync-mcp.mjs","esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"a39c5635b802e593d7f382b554aa1ca1bdf2b4d5","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.5.0.tgz","fileCount":37,"integrity":"sha512-CDXAn6P8Jz7oOevm7gIyQ5Y1ogErxXM2NGJ32pI7e0aEEXfzkKD2lYPzjwLXFUTzXbC/gGAap8m1bFmLDSPl+w==","signatures":[{"sig":"MEYCIQCcg2j0VcUCswiC+3NJ8QjHUTWyP7D8LtFQumyoMgdOlwIhALmpEYQ24y4NouxX6C9UKeh6oHQqd+iHm5J2pWPlZjom","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFVCmq9NdG1V6h37L6J+DUKJJSM9h3376fS+my9IKRZsAiAL8ORT62SBzISklU0/0DUwZI8Ci/6saM44rramkR9SGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154160},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"bbb38978ea21255e815c84abcf8bd8731acf1b54","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.5.0_1787610197123_0.6487029138567986","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@graysonlang/esp","version":"2.6.0","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"author":{"name":"Grayson Lang"},"license":"MIT","_id":"@graysonlang/esp@2.6.0","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"homepage":"https://github.com/graysonlang/esp#readme","bugs":{"url":"https://github.com/graysonlang/esp/issues"},"bin":{"esp-sync-mcp":"scripts/sync-mcp.mjs","esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"dist":{"shasum":"92bc57d360ffedc99108f95b58ecd2da9c582e43","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.6.0.tgz","fileCount":37,"integrity":"sha512-KQf5xByRXJbMjjmFMznw6tQYdrRdmMwUKVVxayCjvFbiGJlUCgga440wI5pKXNpIIbH01edNmw5jll69mfEV4w==","signatures":[{"sig":"MEUCIBODK0A8Tx0OEGK61lZb8jIa0oIU0+Fr0F+Lj8dWgdAQAiEA4/6hd89P0cAr9sYobZAut/6MLTqDh+l32f0Yngkdu8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDR3uqvqiAukzOusd//XpO7FwQg5/ZOo0TbsqwJEsRCzgIhAK9WZjA37dbGMSu9Qnodum4XWqWRozhdx4p8FVNT0BqQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156947},"main":"./src/index.js","type":"module","types":"./types/index.d.ts","config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"4c80d5168f2dbf3a790aabc739802b1ce67e14a1","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/esp_2.6.0_1787764204397_0.2683634302716389","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"_id":"@graysonlang/esp@2.7.0","bin":{"esp-sync-mcp":"scripts/sync-mcp.mjs","esp-generate-dev-cert":"scripts/generate-dev-cert.mjs"},"bugs":{"url":"https://github.com/graysonlang/esp/issues"},"dist":{"shasum":"7715073763d0fa993448894efc53d385cc3a62f4","tarball":"https://registry.npmjs.org/@graysonlang/esp/-/esp-2.7.0.tgz","fileCount":37,"integrity":"sha512-nieOfLe0oogiujKeDFMlOHskl+9/Rn38h9yYhWp/F/NChf1DVksv3tfzJyR2J7RZSio0SvSW+QSMeJ4VRN2KKQ==","signatures":[{"sig":"MEQCIA66dw5JHxgqJWGL4P2lv9b2esJJGeaPgUi+4DH1Z1NeAiAvRobd+aAJRIvkhICnwrwAhF/JLJg8jleXUidAfI2a4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFVxU/IflQtLaILQhScoW2Jbx6T2gHJqWCFkzlPwJ0GOAiEAjsyuzRPDgsqh3bryJ9axZ7AFEtVWeuXtih+TBzXZU04="}],"unpackedSize":163628},"main":"./src/index.js","name":"@graysonlang/esp","type":"module","types":"./types/index.d.ts","author":{"name":"Grayson Lang"},"config":{"esp_dev_cert_name":"graysonlang-esp-dev"},"engines":{"node":">=22.4.0"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./glglob":{"types":"./types/glglob.d.ts","default":"./src/glglob.js"},"./helpers":{"types":"./types/helpers.d.ts","default":"./src/helpers.js"},"./prepare":{"types":"./types/prepare.d.ts","default":"./src/prepare.js"},"./freshness":{"types":"./types/freshness.d.ts","default":"./src/freshness.js"},"./esbuild-runner":{"types":"./types/esbuild-runner.d.ts","default":"./src/esbuild-runner.js"},"./lint-diagnostics":{"types":"./types/lint-diagnostics.d.ts","default":"./src/lint-diagnostics.js"},"./lint-driver-biome":{"types":"./types/lint-driver-biome.d.ts","default":"./src/lint-driver-biome.js"},"./esbuild-plugin-imp":{"types":"./types/esbuild-plugin-imp.d.ts","default":"./src/esbuild-plugin-imp.js"},"./lint-driver-eslint":{"types":"./types/lint-driver-eslint.d.ts","default":"./src/lint-driver-eslint.js"},"./esbuild-plugin-emcc":{"types":"./types/esbuild-plugin-emcc.d.ts","default":"./src/esbuild-plugin-emcc.js"},"./esbuild-plugin-lint":{"types":"./types/esbuild-plugin-lint.d.ts","default":"./src/esbuild-plugin-lint.js"},"./esbuild-problem-format":{"types":"./types/esbuild-problem-format.d.ts","default":"./src/esbuild-problem-format.js"},"./esbuild-plugin-glob-copy":{"types":"./types/esbuild-plugin-glob-copy.d.ts","default":"./src/esbuild-plugin-glob-copy.js"},"./esbuild-plugin-vscode-problem-matcher":{"types":"./types/esbuild-plugin-vscode-problem-matcher.d.ts","default":"./src/esbuild-plugin-vscode-problem-matcher.js"}},"gitHead":"2f9bb77d32712a59f0040ee0a5962c0e4493099f","license":"MIT","scripts":{"dev":"npm run serve -- --proxy --launch","lint":"biome check .","test":"node --test test/*.test.mjs","build":"node ./scripts/build.mjs --lint --minify","ports":"node ./scripts/build.mjs --print-port","serve":"node ./scripts/build.mjs --lint --sourcemap --watch --serve --debug-port=auto","types":"tsc -p tsconfig.types.json","dev:coi":"npm run dev -- --cross-origin-isolation","prepack":"npm run types","prepare":"node ./scripts/prepare.mjs","cert:dev":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert","lint:fix":"biome check --write .","dev:https":"npm run serve:https -- --proxy --launch","serve:https":"ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0","sync:launch":"node ./scripts/build.mjs --sync-launch","vscode:build":"npm run build -- --vscode","vscode:debug":"npm run serve -- --vscode","dev:https:coi":"npm run dev:https -- --cross-origin-isolation","vscode:debug:https":"npm run serve:https -- --vscode"},"version":"2.7.0","_npmUser":{"name":"graysonlang","email":"grayson.lang@gmail.com"},"homepage":"https://github.com/graysonlang/esp#readme","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"_npmVersion":"11.12.1","description":"A collection of esbuild plugins and utilities.","directories":{"doc":"docs","example":"example"},"maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","esbuild":"^0.28.0","typescript":"^5.9.0","@biomejs/biome":"^2.5.0"},"peerDependencies":{"eslint":"^9.0.0 || ^10.0.0","esbuild":"^0.28.0","@biomejs/biome":"^2.0.0"},"peerDependenciesMeta":{"eslint":{"optional":true},"@biomejs/biome":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/esp_2.7.0_1788902456965_0.8843343948205267"}}},"time":{"created":"2026-04-16T17:52:50.656Z","modified":"2026-09-08T21:20:57.218Z","1.0.0":"2026-04-16T17:52:50.912Z","1.0.1":"2026-04-16T21:52:51.000Z","1.1.0":"2026-04-20T22:48:37.187Z","1.1.1":"2026-04-20T22:52:57.045Z","1.2.0":"2026-05-04T19:52:50.240Z","1.2.1":"2026-05-05T00:46:09.872Z","1.3.0":"2026-05-05T02:42:24.492Z","1.3.1":"2026-05-05T02:46:20.388Z","1.3.2":"2026-05-05T04:52:59.962Z","1.3.3":"2026-05-31T19:40:53.506Z","1.3.4":"2026-06-01T07:13:22.393Z","1.3.5":"2026-06-01T19:11:43.108Z","1.4.0":"2026-06-05T04:46:15.196Z","1.5.0":"2026-06-15T18:08:15.454Z","1.6.0":"2026-06-21T00:46:52.015Z","1.6.1":"2026-06-21T21:57:14.455Z","1.6.2":"2026-06-28T22:17:55.818Z","1.6.3":"2026-07-05T00:11:04.265Z","1.7.0":"2026-07-20T01:26:06.728Z","1.7.1":"2026-07-23T23:22:11.077Z","1.8.0":"2026-07-24T23:07:04.869Z","1.9.0":"2026-07-25T06:21:22.859Z","2.0.0":"2026-07-26T22:02:18.720Z","2.1.0":"2026-07-28T01:50:20.729Z","2.1.1":"2026-07-28T02:55:24.105Z","2.2.0":"2026-07-28T06:00:49.962Z","2.3.0":"2026-08-10T03:58:21.328Z","2.3.1":"2026-08-10T04:42:27.747Z","2.3.2":"2026-08-10T05:49:08.317Z","2.4.0":"2026-08-24T20:05:10.911Z","2.5.0":"2026-08-24T22:23:17.205Z","2.6.0":"2026-08-26T17:10:04.489Z","2.7.0":"2026-09-08T21:20:57.055Z"},"bugs":{"url":"https://github.com/graysonlang/esp/issues"},"author":{"name":"Grayson Lang"},"license":"MIT","homepage":"https://github.com/graysonlang/esp#readme","keywords":["biome","emscripten","esbuild","esbuild-plugin","eslint","glob","lint","plugin","vscode"],"repository":{"url":"git+https://github.com/graysonlang/esp.git","type":"git"},"description":"A collection of esbuild plugins and utilities.","maintainers":[{"name":"graysonlang","email":"grayson.lang@gmail.com"}],"readme":"# @graysonlang/esp\n\nA collection of esbuild plugins and utilities.\n\n## Installation\n\n```sh\nnpm install @graysonlang/esp\n```\n\nPeer dependencies vary by plugin — install only what you need:\n\n```sh\nnpm install --save-dev esbuild            # required by all plugins\nnpm install --save-dev @biomejs/biome     # to lint with biome\nnpm install --save-dev eslint             # to lint with eslint\n```\n\nBoth linters are optional peer dependencies, and `esp` depends on neither. Pick one — [`esbuild-plugin-lint`](#esbuild-plugin-lint) takes a driver, and the driver you don't use is never loaded.\n\n### Upgrading to 2.0\n\n`esbuild-plugin-eslint` is gone. Linting is now one plugin plus a driver, so biome and ESLint go through the same code path and print the same output:\n\n```js\n// before (1.x)\nimport createEslintPlugin from '@graysonlang/esp/esbuild-plugin-eslint';\ncreateEslintPlugin({ throwOnErrors: true, fix: false });\n\n// after (2.x)\nimport createLintPlugin from '@graysonlang/esp/esbuild-plugin-lint';\nimport createEslintDriver from '@graysonlang/esp/lint-driver-eslint';\ncreateLintPlugin({ throwOnErrors: true, driver: createEslintDriver({ fix: false }) });\n```\n\nPlugin-level options (`throwOnErrors`, `throwOnWarnings`) stay on the plugin; everything ESLint-specific (`candidateExtensions`, `warnIgnored`, and any [ESLint constructor option](https://eslint.org/docs/latest/integrate/nodejs-api#-new-eslintoptions)) moves to the driver.\n\nTwo behavior changes come with it:\n\n- Diagnostics are rendered by `esp` rather than ESLint's own stylish formatter. The layout the VS Code problem matcher parses is unchanged, and output is still colored when the terminal takes it.\n- Files under `node_modules` are no longer linted. Pass `ignore: null` to restore the old behavior.\n\nProjects using `runBuild` with `--lint` and no `lintPlugin` override need no change.\n\n## Template project\n\n[graysonlang/esp-template](https://github.com/graysonlang/esp-template) is a minimal but complete project using `@graysonlang/esp` in an independent repo. It is a GitHub template — click **Use this template** to start a new project from it.\n\nIt includes a working `scripts/build.mjs`, the full set of recommended `package.json` scripts, the `.vscode/tasks.json` and `.vscode/launch_template.json` files described in the [VS Code Integration](#vs-code-integration) section below, and CI / GitHub Pages workflows.\n\n## Example app\n\n`example/` is this repo's own build, driven by [`scripts/build.mjs`](scripts/build.mjs). Run it with:\n\n```sh\nnpm run dev          # watch + dev server + proxy toasts + Chrome\nnpm run dev:coi      # same, cross-origin isolated\n```\n\nThe page it serves is a status board for the dev environment, and each panel is measured live rather than described:\n\n- **Dev server** — origin, protocol, [derived port](#dev-server-ports), secure context, and whether the page is [cross-origin isolated](#cross-origin-isolation) with `SharedArrayBuffer` available.\n- **Watch & live reload** — whether the runner's `/esbuild` event stream is connected, plus a reload counter that ticks up every time watch mode rebuilds. Edit `example/app/main.js` and save to watch it move.\n- **Copied assets** — the paths [`esbuild-plugin-glob-copy`](#esbuild-plugin-glob-copy) exported from `virtual:glob`, each fetched back from the output directory to confirm the copy landed.\n- **Build toasts** — whether the `--proxy` banner injected its toast overlay, so terminal-side plugin logs surface in the browser.\n- **Source maps** — follows this bundle's own `sourceMappingURL` and reports which original sources it resolves to, with a button that throws from a known line for checking stacks and breakpoints.\n\nSo a fresh clone answers \"is my setup working?\" by loading one page.\n\n## Output directory convention\n\nTwo output directories, with fixed meanings across esp-based projects:\n\n- **`www/`** — the built web content: the demo/app page, what the dev server serves and what deploys to GitHub Pages. This is what `scripts/build.mjs` emits via `outdir`, and it is never published to npm.\n- **`dist/`** — the source distribution: a packaged library bundle plus type declarations, pointed at by `main`/`types`/`exports` and listed in `files`. Emitted by a separate `scripts/dist.mjs` using esbuild and `tsc` directly, not by esp's runner.\n\nKeeping them distinct means a project can grow a publishable library without its web output and its npm payload contending for the same directory. Gitignore both, and exclude them from linting — `\"files\": { \"includes\": [\"**\", \"!dist\", \"!www\"] }` in `biome.jsonc`, or `ignores: ['dist/**', 'www/**']` in `eslint.config.js`.\n\nesp itself only produces `www/` (for its `example/`); its npm payload is the unbundled `src/` tree listed in `files`, so it has no `dist/`.\n\n## Scripts\n\n| Script | Command | Description |\n|--------|---------|-------------|\n| `ports` | `node ./scripts/build.mjs --print-port` | Print this checkout's derived dev server ports |\n| `sync:launch` | `node ./scripts/build.mjs --sync-launch` | Render `.vscode/launch.json` from `.vscode/launch_template.json` |\n| `build` | `node ./scripts/build.mjs --lint --minify` | One-shot production build (linted, minified) |\n| `serve` | `node ./scripts/build.mjs --lint --sourcemap --watch --serve` | Watch + dev server with live reload |\n| `serve:https` | `ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name npm run serve -- --host=0.0.0.0` | HTTPS watch + dev server using the configured development cert |\n| `dev` | `npm run serve -- --proxy --launch` | Watch + dev server with proxy toasts and Chrome launch |\n| `dev:coi` | `npm run dev -- --cross-origin-isolation` | Same as `dev`, but cross-origin isolated (`SharedArrayBuffer` enabled) |\n| `dev:https` | `npm run serve:https -- --proxy --launch` | HTTPS watch + dev server with proxy toasts and Chrome launch |\n| `dev:https:coi` | `npm run dev:https -- --cross-origin-isolation` | Same as `dev:https`, but cross-origin isolated (`SharedArrayBuffer` enabled) |\n| `vscode:build` | `npm run build -- --vscode` | One-shot build with VS Code problem matcher output |\n| `vscode:debug` | `npm run serve -- --vscode` | Watch + dev server with VS Code problem matcher output |\n| `vscode:debug:https` | `npm run serve:https -- --vscode` | HTTPS watch + dev server with VS Code problem matcher output |\n| `cert:dev` | `ESP_DEV_CERT_NAME=$npm_package_config_esp_dev_cert_name esp-generate-dev-cert` | Generate a trusted HTTPS development certificate |\n| `lint` | `biome check .` | Lint source files |\n| `lint:fix` | `biome check --write .` | Lint and apply fixes |\n\n### Runner CLI flags\n\n`runBuild` parses CLI flags from `process.argv` automatically. All flags are optional:\n\n| Flag | Short | Default | Description |\n|------|-------|---------|-------------|\n| `--minify` | | `false` | Minify output |\n| `--lint` | | `false` | Lint loaded source files after each build (biome or ESLint — see [driver selection](#esbuild-runner)) |\n| `--serve` | | `false` | Start esbuild's dev server |\n| `--watch` | | `false` | Rebuild on file changes |\n| `--proxy` | | `false` | Run a proxy server that forwards console logs to the browser as toasts |\n| `--cross-origin-isolation` | | `false` | Add COOP/COEP/CORP headers to proxied responses so the page is cross-origin isolated (`SharedArrayBuffer` available). Requires `--proxy` |\n| `--launch` | | `false` | Launch a dedicated Chrome instance when the dev server starts |\n| `--vscode` | | `false` | Emit VS Code problem matcher output and print `[esbuild-ready] <url>` when ready |\n| `--reuse` | | `false` | Open/reload an existing Chrome tab instead of launching a dedicated instance (macOS only — see [Browser launching](#browser-launching)) |\n| `--verbose` | `-v` | `false` | Enable verbose logging |\n| `--certfile` | | | Explicit HTTPS certificate path |\n| `--keyfile` | | | Explicit HTTPS private key path |\n| `--host` | | `127.0.0.1` | Dev server host |\n| `--port` | | *derived* | Dev server port. Omit it to use the port derived for this checkout (see [Dev server ports](#dev-server-ports)); pass one to pin it |\n| `--debug-port` | | | Chrome remote debugging port for the instance launched by `--launch`. Pass a number, or `auto` to derive one for this checkout |\n| `--print-port` | | `false` | Print this checkout's derived ports and exit |\n| `--sync-launch` | | `false` | Render `.vscode/launch.json` from its template and exit (intended for a `prepare` script) |\n| `--chrome-arg` | | | Extra flag forwarded to the dedicated Chrome launched by `--launch` (repeatable) |\n\nAny unrecognized flags are forwarded to esbuild as build options (e.g. `--sourcemap`).\n\n### Dev server ports\n\nWithout `--port`, the runner derives its port from the absolute, symlink-resolved path of the build script that invoked it (e.g. `/Users/me/projects/app/scripts/build.mjs`), hashed into the range `8000–8899`. The Chrome debug port used by `--debug-port=auto` is derived the same way, from `9300–9899`.\n\nThis means:\n\n- **Two projects never collide**, because they have different paths — no coordination, no state, no scanning in the common case.\n- **Two worktrees of the same repo never collide**, because their build scripts live at different paths.\n- **A given checkout keeps the same port across runs**, so its origin is stable: `localStorage`, service workers, and bookmarks all survive a restart, and a launch config can point at it.\n\nThe scheme is part of the hash, so a project's HTTP and HTTPS servers get different ports and can run side by side. If the derived port is already taken (a hash collision, or a second copy of the same server), the runner scans upward for the next free port — except under `--vscode`, where it fails instead, since the launch config is pointed at the derived port and drifting would aim the debugger at somebody else's server.\n\nPass `--port` to opt out and pin a port explicitly; it is then used verbatim.\n\nPrint the ports for the current checkout with:\n\n```sh\nnpm run ports\n# http=8561\n# https=8089\n# debug=9609\n```\n\nThese ports are baked into `.vscode/launch.json`, which the runner renders from a committed template — see [Ports in `launch.json`](#ports-in-launchjson).\n\n### Browser launching\n\n`--launch` works on macOS, Windows, and Linux. The runner locates a Chrome/Chromium binary by checking the standard install locations for the platform (including Chrome Canary, and Chromium on Linux). If your browser is installed somewhere non-standard — or you want to pin a specific build — set the `CHROME_PATH` environment variable to the executable:\n\n```sh\n# macOS\nCHROME_PATH=\"/Applications/Chromium.app/Contents/MacOS/Chromium\" npm run dev\n\n# Windows (PowerShell)\n$env:CHROME_PATH=\"C:\\Program Files\\Google\\Chrome Beta\\Application\\chrome.exe\"; npm run dev\n\n# Linux\nCHROME_PATH=/usr/bin/brave-browser npm run dev\n```\n\nIf no browser is found, the runner exits with a message telling you to set `CHROME_PATH`.\n\nThe launched instance uses a throwaway profile under the OS temp directory, so it won't touch your everyday Chrome session. Forward extra Chrome flags with `--chrome-arg` (repeatable).\n\n`--reuse` (focus/reload an already-open tab instead of launching a dedicated instance) relies on AppleScript and is **macOS only**. On Windows and Linux it logs a notice and falls back to launching a dedicated instance.\n\n## HTTPS Development\n\nThe package includes a certificate helper (`esp-generate-dev-cert`) for running esbuild's dev server over HTTPS locally — useful when testing on iOS/iPadOS or when a browser feature requires a secure context. It creates a server certificate under `.esp_dev_certs/` using `mkcert` and uses mkcert's configured CA root directly.\n\nAdd these scripts to your project's `package.json`:\n\n```json\n{\n  \"cert:dev\": \"ESP_DEV_CERT_NAME=<project>-dev esp-generate-dev-cert\",\n  \"serve\": \"node ./scripts/build.mjs --watch --serve\",\n  \"serve:https\": \"ESP_DEV_CERT_NAME=<project>-dev npm run serve -- --host=0.0.0.0 --port=8443\",\n  \"vscode:debug\": \"npm run serve -- --vscode\",\n  \"vscode:debug:https\": \"npm run serve:https -- --vscode\"\n}\n```\n\nBy default, generated cert files live in `.esp_dev_certs/`. For certificates you want to\nkeep across repo cleanup commands such as `git clean`, set `ESP_DEV_CERTS_DIR` to a\nstable location outside the repository in your shell environment, for example in\n`.zshrc`. The certificate helper and runner both use `ESP_DEV_CERTS_DIR` when it is\nset.\n\nWhen a certificate is generated, the helper also trusts the mkcert CA. On macOS it adds the CA from `mkcert -CAROOT` to the login keychain; on other platforms it runs `mkcert -install`. Pass `--skip-trust` to generate without changing local trust, or `--trust` to retrust an existing CA. Set `ESP_DEV_CERT_FORCE=1` to regenerate an existing certificate (e.g. when your LAN IP changes). Pass `ESP_DEV_CERT_NAME` to the runner to enable HTTPS with the matching generated certificate:\n\n```sh\nESP_DEV_CERT_NAME=<project>-dev node ./scripts/build.mjs --watch --serve --host=0.0.0.0 --port=8443\n```\n\nSee [docs/https-development-certificates.md](docs/https-development-certificates.md) for the full setup guide, including iOS/iPadOS installation, all CLI flags and environment variables, and troubleshooting.\n\n## Cross-Origin Isolation\n\nSome browser APIs — most notably `SharedArrayBuffer` (used by threaded WASM and `pthreads`-compiled Emscripten output) — are only available when the page is [cross-origin isolated](https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated). A page becomes isolated when it is served with the right COOP/COEP response headers, at which point `crossOriginIsolated === true` in the browser.\n\nesbuild's own dev server can't set these headers, so the `--cross-origin-isolation` flag works through the runner's proxy server. When enabled, the proxy adds the following headers to every response it forwards:\n\n```\nCross-Origin-Opener-Policy: same-origin\nCross-Origin-Embedder-Policy: require-corp\nCross-Origin-Resource-Policy: same-origin\n```\n\nBecause the headers are applied by the proxy, **`--cross-origin-isolation` requires `--proxy`** — on its own it has no effect.\n\nThe recommended way to enable it is via the dedicated dev scripts, which already include `--proxy`:\n\n```sh\nnpm run dev:coi          # HTTP, cross-origin isolated\nnpm run dev:https:coi    # HTTPS, cross-origin isolated\n```\n\nThese compose on the existing `dev` / `dev:https` scripts:\n\n```json\n{\n  \"dev\": \"npm run serve -- --proxy --launch\",\n  \"dev:coi\": \"npm run dev -- --cross-origin-isolation\",\n  \"dev:https\": \"npm run serve:https -- --proxy --launch\",\n  \"dev:https:coi\": \"npm run dev:https -- --cross-origin-isolation\"\n}\n```\n\n> **Note:** With COEP set to `require-corp`, every cross-origin subresource (scripts, images, fonts, etc.) must itself opt in via `Cross-Origin-Resource-Policy` or CORS, or the browser will block it. If subresources fail to load after enabling isolation, this is usually why.\n\n## Plugins\n\n### `esbuild-plugin-emcc`\n\nCompiles C/C++ source files via [Emscripten](https://emscripten.org/) (`emcc`) during an esbuild build. Dependency paths, content hashes, and mtimes are persisted under `node_modules/.cache/@graysonlang/esp/emcc`, so an unchanged one-shot build skips both the `emcc -MM` dependency scans and compilation. Changes to the compiler version, relevant Emscripten environment, source list, output path, or compiler options invalidate the cache.\n\nOn a cold or invalidated cache, the plugin prints a single progress line before dependency discovery begins. Warm cache hits stay quiet unless `verbose` is enabled.\n\n```js\nimport createEmccPlugin from '@graysonlang/esp/esbuild-plugin-emcc';\n\nawait esbuild.build({\n  plugins: [createEmccPlugin({ emccPath: 'emcc', emccOptions: ['-sSINGLE_FILE=1'] })],\n});\n```\n\n**Options:** `emccPath`, `emccOptions`, `cacheDirectory`, `verbose`, `logger`\n\nSet `cacheDirectory` to a custom path to relocate the cache, or to `null` to keep freshness state in memory only.\n\n---\n\n### `esbuild-plugin-glob-copy`\n\nResolves `virtual:glob` imports and copies matched files to the output directory.\n\n```js\nimport 'virtual:glob' with { pattern: 'assets/**', baseDir: 'src' };\n```\n\n```js\nimport createGlobCopyPlugin from '@graysonlang/esp/esbuild-plugin-glob-copy';\n\nawait esbuild.build({\n  plugins: [createGlobCopyPlugin({ verbose: true })],\n});\n```\n\n**Options:** `sideEffects`, `verbose`, `logger`\n\n---\n\n### `esbuild-plugin-imp`\n\nCopies a single file to the output directory via a `virtual:copy` import.\n\n```js\nimport 'virtual:copy' with { path: './assets/logo.png', dest: 'images/' };\n```\n\n```js\nimport createImpPlugin from '@graysonlang/esp/esbuild-plugin-imp';\n\nawait esbuild.build({\n  plugins: [createImpPlugin()],\n});\n```\n\n**Options:** `verbose`, `logger`\n\n---\n\n### `esbuild-plugin-lint`\n\nLints the source files a build loaded, at the end of each build. Only re-lints files that changed since the last build, plus any that reported a problem last time — so a fix elsewhere clears a stale squiggle. Files under `node_modules` are skipped.\n\nThe linter itself is a *driver*, so the plugin is the same whichever one you use:\n\n```js\nimport createLintPlugin from '@graysonlang/esp/esbuild-plugin-lint';\nimport createBiomeDriver from '@graysonlang/esp/lint-driver-biome';\n\nawait esbuild.build({\n  plugins: [createLintPlugin({ driver: createBiomeDriver(), throwOnErrors: true })],\n});\n```\n\n**Options:** `driver` (required), `throwOnWarnings`, `throwOnErrors`, `ignore`.\n\nOutput is colored when stdout is a terminal, honoring `NO_COLOR` and `FORCE_COLOR`. That is safe for the Problems panel because VS Code strips ANSI escapes before running a problem matcher over task output — so one stream reads well in the integrated terminal and still populates the panel.\n\n#### `lint-driver-biome`\n\nRuns the `biome` executable and reads its JSON reporter. Resolves a locally installed binary by walking up to `node_modules/.bin`, falling back to `PATH`; `@biomejs/biome` is never imported, so it stays out of the module graph.\n\n**Options:** `biomePath`, `command` (`'check'` by default, so a build surfaces what `biome check` surfaces in CI — including formatting drift — rather than reporting green and failing CI later), `extensions`, `biomeArgs`, `cwd`.\n\n#### `lint-driver-eslint`\n\nUses ESLint's programmatic API. `eslint` is imported lazily, only once this driver runs. The file filter is built from the extensions your own ESLint config claims, so a project with no TypeScript config never loads `.ts` files just to ignore them.\n\n**Options:** `candidateExtensions`, plus any [ESLint constructor options](https://eslint.org/docs/latest/integrate/nodejs-api#-new-eslintoptions).\n\n#### Custom drivers\n\nA driver is any object of this shape, so a linter `esp` has never heard of works without patching `esp`:\n\n```js\n{\n  name: string,\n  init(): Promise<{ filter: RegExp }>,   // filter is compiled by Go's regexp — no `u` flag\n  lint(files: string[]): Promise<LintDiagnostic[]>,\n}\n```\n\n`LintDiagnostic` is `{ filePath, line, column, severity, message, ruleId? }` with an absolute path, 1-based position, and a severity of `error`, `warning`, or `info`. Rendering is shared, so every driver produces output the same problem matcher parses.\n\n---\n\n### `esbuild-plugin-vscode-problem-matcher`\n\nEmits `[watch] build started` and formats esbuild errors/warnings in a format compatible with VS Code's problem matcher.\n\n```js\nimport createVSCodePlugin from '@graysonlang/esp/esbuild-plugin-vscode-problem-matcher';\n\nawait esbuild.build({\n  plugins: [createVSCodePlugin()],\n});\n```\n\n## Utilities\n\n### `esbuild-runner`\n\nThe `runBuild` helper wraps esbuild context management, CLI flag parsing, dev server setup, live reload, and browser launching in a single call. Your build script provides a `getOptions` factory; the runner injects resolved flags and wires up plugins automatically.\n\n```js\nimport { runBuild } from '@graysonlang/esp/esbuild-runner';\n\nfunction getOptions(args, verbose, logger) {\n  return {\n    bundle: true,\n    entryPoints: ['src/index.js'],\n    outdir: 'www',\n    plugins: [\n      pluginGlobCopy({ logger }),\n    ],\n    ...args, // spreads minify, live-reload banner for watch/serve, etc.\n  };\n}\n\nrunBuild(getOptions);\n```\n\nThe runner automatically adds `esbuild-plugin-lint` (when `--lint`) and `esbuild-plugin-vscode-problem-matcher` (when `--vscode`) to the plugin list.\n\nUnder `--lint` the driver is chosen from the project: a `biome.json` or `biome.jsonc` in the working directory selects biome, and anything else falls back to ESLint. Neither package is a dependency of `esp`, so this never forces an install — it only decides which one an opted-in project meant.\n\n`runBuild` accepts an optional second argument to override the injected plugins:\n\n```js\nrunBuild(getOptions, {\n  lintPlugin: () => myCustomLintPlugin(),  // replace the auto-selected lint plugin\n  vscodePlugin: null,                      // null/falsy disables the plugin entirely\n});\n```\n\nA project can also register small Node-side functions that its page may call while it is served locally:\n\n```js\nrunBuild(getOptions, {\n  invocations: {\n    greet: payload => `Hello, ${payload.name}`,\n  },\n});\n```\n\nThe watch/serve banner exposes them as `await window.__ESP__.invoke('greet', { name: 'Ada' })`.\nRegistered functions are available only under `--serve` when the server binds to `127.0.0.1`, `::1`, or `localhost`.\nESP enables its same-origin proxy automatically, accepts only allowlisted names and small JSON requests, and authenticates calls with a per-process token embedded in the built page.\nInvocations are disabled when `--host` exposes the server to the network.\n\nWhen `--launch` is set, the runner opens a dedicated Chrome instance using a temporary profile, discovering the browser binary cross-platform (override with `CHROME_PATH` — see [Browser launching](#browser-launching)). When `--reuse` is also set, it instead opens or reloads an existing Chrome tab (macOS only; falls back to a dedicated instance elsewhere). When `--vscode` is set, the runner prints `[esbuild-ready] <url>` once the server is ready — a signal VS Code tasks can use as a `background.endsPattern`.\n\n---\n\n### `esbuild-problem-format`\n\nFormats esbuild diagnostics into VS Code problem matcher output.\n\n```js\nimport { formatDiagnostic, printErrorsAndWarnings } from '@graysonlang/esp/esbuild-problem-format';\n```\n\n### `freshness`\n\nTracks file content changes using SHA-1 hashes and mtimes to detect when files have actually changed.\n\n```js\nimport Freshness from '@graysonlang/esp/freshness';\n\nconst freshness = new Freshness({\n  cacheFile: 'node_modules/.cache/my-plugin/freshness.json',\n  cacheKey: 'options-and-toolchain-signature',\n});\nconst previouslyTrackedFiles = await freshness.trackedFiles();\nconst isUpToDate = await freshness.check(filePathSet);\nconst { changed, removed } = await freshness.update(fileMapOrSet);\n```\n\nBoth constructor options are optional; without `cacheFile`, freshness state remains in memory. `cacheKey` lets callers invalidate otherwise valid persisted state when non-file inputs change.\n\n### `glglob`\n\nA lightweight async glob implementation with `**`, `*`, `?`, and `{a,b}` expansion. No external dependencies.\n\n```js\nimport glob from '@graysonlang/esp/glglob';\n\nconst files = await glob('src/**/*.js');\n```\n\n### `helpers`\n\nInternal utilities: `computeUrlSafeBase64Digest`, `consolidateDirs`, `parsePathsString`.\n\n### `prepare`\n\nRuns a project's `prepare` steps. Each runs as its own child process, in order, and **every failure is a warning** — `prepare` fires on local `npm install`, on publish, and when someone installs the project as a *git* dependency, where npm builds it from a temp clone. The steps projects want there are developer conveniences; none is worth failing an install over, least of all somebody else's. A child process is also a hard boundary, so a step that dies on import is contained rather than taking the install down.\n\nA project's `scripts/prepare.mjs` is then just the list:\n\n```js\n#!/usr/bin/env node\ntry {\n  const { runPrepareSteps } = await import('@graysonlang/esp/prepare');\n  runPrepareSteps([\n    {\n      label: 'sync launch.json',\n      args: ['./scripts/build.mjs', '--sync-launch'],\n    },\n  ]);\n} catch (error) {\n  console.warn(`prepare: skipped (${error.message})`);\n}\n```\n\n**Step fields:** `label` (required — named in any warning), `command` (defaults to the running Node), `args`, and `hint` — extra text appended to the warning, worth setting on a load-bearing step whose output a git install has no other way to obtain, so the message says how to recover.\n\nTwo details that look like noise but aren't:\n\n- **The import is dynamic and guarded.** `prepare` still runs under `npm install --omit=dev`, where `esp` is not installed. A bare top-level import would fail the very install this exists not to disturb.\n- **Each step object is written expanded**, one field per line. Biome and Prettier both keep an object broken up when the source has a newline between the `{` and the first key, so adding a step or a field stays a one-line diff instead of reflowing its neighbours.\n\nPrefer this over chaining in `package.json`. `a && b` silently skips `b` when `a` fails, `a || echo ...` swallows which step broke, and neither can carry a comment or avoid the platform's shell.\n\n## VS Code Integration\n\nThe repository includes example `.vscode/` configuration files that demonstrate a full VS Code debug workflow built on `esbuild-runner`.\n\n### How it works\n\nThe `--vscode` flag tells the runner to:\n\n1. Attach `esbuild-plugin-vscode-problem-matcher`, which formats build errors/warnings so VS Code can parse them and surface them in the Problems panel. When `--lint` is also set, lint findings are surfaced too — via a companion problem matcher in `tasks.json` (see below).\n2. Print `[esbuild-ready] <url>` to stdout once the dev server is ready. VS Code uses this as the `background.endsPattern` to know the server is up before launching the debugger.\n\n### `.vscode/tasks.json`\n\nFour tasks are defined:\n\n- **`build`** — one-shot build (`vscode:build` script). Configured as the default build task (`Ctrl+Shift+B` / `Cmd+Shift+B`). Carries **two** inline problem matchers: one parses esbuild's `> file:line:col: error: message` output, the other parses the *stylish* layout emitted by `esbuild-plugin-lint` under `--lint`. Both `debug` tasks carry the same pair.\n- **`debug`** — HTTP watch-mode server (`vscode:debug` script). Runs in the background. The `background` problem matcher waits for `[esbuild-ready] <url>` before signaling readiness to the launch configuration.\n- **`debug:https`** — HTTPS watch-mode server (`vscode:debug:https` script). Uses the same readiness signal as `debug`, and serves HTTPS on this checkout's derived port.\n- **`Kill debug server`** — sends `SIGTERM` to the watch process. Runs as the `postDebugTask` so the server shuts down when the debug session ends.\n\nThe two matchers coexist because esbuild and the linters print errors in different shapes. The lint matcher uses VS Code's multi-line (`loop`) pattern to read the stylish \"file header + indented findings\" layout, and reports with `fileLocation: \"absolute\"` — the same approach as VS Code's built-in `$eslint-stylish` matcher. Because VS Code strips ANSI escapes before matching, the colored terminal output is preserved while still populating the Problems panel.\n\nIt reports under the `esp-lint` owner rather than `eslint`, which is both accurate when the driver is biome and keeps the task from clearing diagnostics the ESLint extension owns. Existing `tasks.json` files keep working either way — the pattern is unchanged, only the label differs.\n\nHolding that layout is the reason the driver seam is worth having: swap the linter underneath and VS Code keeps showing inline squiggles with no change to `tasks.json`. Two constraints follow from the matcher, and [`test/lint-diagnostics.test.mjs`](test/lint-diagnostics.test.mjs) pins both — paths are absolute, and at least two spaces separate the rule id from the message.\n\n### `.vscode/launch.json`\n\nThree Chrome configurations are provided:\n\n- **\"Debug in Chrome\"** launches this checkout's derived HTTP URL after running the `debug` task.\n- **\"Debug in Chrome (https)\"** launches its derived HTTPS URL after running the `debug:https` task.\n- **\"Attach to Chrome\"** attaches to the dedicated Chrome that `npm run dev` launches, on this checkout's derived debug port.\n- The two launch configurations set `postDebugTask` to `Kill debug server` and use `outFiles` for source map resolution.\n- All three set `webRoot` to `\"${workspaceFolder}\"` plus a `sourceMapPathOverrides` rule so breakpoints bind against esbuild's spec-correct (outdir-relative) source maps. See [Source maps & VS Code breakpoints](docs/sourcemaps-and-vscode.md) for the full rationale and trade-offs.\n\n#### Ports in `launch.json`\n\nBecause [dev server ports are derived per checkout](#dev-server-ports), `launch.json` cannot hardcode one — a second worktree would inherit the committed number and point at the wrong server. And VS Code has no way to compute a value for a launch config: `${config:}` resolves only *registered* settings, `${env:}` reads VS Code's own environment, and `${input:command}` can only invoke a command that some extension registered ([variables reference](https://code.visualstudio.com/docs/reference/variables-reference)). A native `variables` section [was requested and declined](https://github.com/microsoft/vscode/issues/267100).\n\nSo rather than have `launch.json` *look up* a port at debug time, the port is baked in ahead of time. `.vscode/launch_template.json` is the committed source of truth:\n\n```jsonc\n\"url\": \"http://localhost:{{http}}\",\n...\n\"port\": {{debug}},\n...\n\"outFiles\": [\"${workspaceFolder}/{{outdir}}/*.js\"]\n```\n\nThe runner renders it to `.vscode/launch.json`, substituting `{{http}}`, `{{https}}` and `{{debug}}`, plus `{{outdir}}` — the build's output directory (the `outdir` in `scripts/build.mjs`), so `outFiles` points at wherever this build actually writes its bundles. That happens on `npm install` (via `prepare`, so the config is right before the first debug session in a fresh clone) and on every serve/watch, and can be forced with `npm run sync:launch`. Because the ports are a pure function of the build script's path, rendering is idempotent — identical output every run, and the file is left untouched when nothing changed.\n\n`{{outdir}}` requires esp 1.8.0 or newer. An older runner leaves it unsubstituted, producing a literal `{{outdir}}` path segment that matches nothing — breaking source map resolution with no error.\n\n**Edit the template, not `launch.json`.** The generated file carries a `GENERATED FILE — DO NOT EDIT` banner and is **gitignored**; each clone and worktree renders its own.\n\nThis costs no extensions and keeps the task-based flow — and with it the Problems panel — intact.\n\n**Launch usage:** open the Run & Debug panel, choose the HTTP or HTTPS Chrome configuration, and press **Start Debugging (F5)**. VS Code starts the matching watch server, waits for `[esbuild-ready]`, launches Chrome with the debugger attached, and tears the server down when you stop.\n\n**Attach usage:** Chrome must be running with remote debugging enabled. Quit any existing Chrome instance first, then relaunch it with the flag:\n\n```sh\n# macOS\nopen -a \"Google Chrome\" --args --remote-debugging-port=9222\n\n# Windows (PowerShell)\n& \"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --remote-debugging-port=9222\n\n# Linux\ngoogle-chrome --remote-debugging-port=9222\n```\n\nThen start `npm run dev` (or `npm run serve`), navigate Chrome to the dev server URL, select **\"Attach to Chrome\"** in the Run & Debug panel, and press **F5**. VS Code attaches to the open tab without managing the server lifecycle.\n\n## Coding-agent browser support\n\nMCP-aware coding agents can drive a real browser for validation — navigate to the dev server, read the accessibility tree, click controls, and inspect console output — when the project registers a browser-automation MCP server.\n`esp-sync-mcp` scaffolds that registration once per project:\n\n```sh\nnpx esp-sync-mcp\n```\n\nIt writes three project-local files so the setup is versioned, reproducible, and shared by collaborators without relying on user-level configuration.\n`.mcp.json` registers [Playwright MCP](https://github.com/microsoft/playwright-mcp) as a stdio server for Claude-compatible hosts and says nothing else — run the project's pinned server with the project's config:\n\n```json\n{\n  \"mcpServers\": {\n    \"playwright\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"node_modules/@playwright/mcp/cli.js\", \"--config\", \"playwright-mcp.config.json\"]\n    }\n  }\n}\n```\n\n`.codex/config.toml` makes the same registration available to Codex:\n\n```toml\n[mcp_servers.playwright]\ncommand = \"node\"\nargs = [\n  \"node_modules/@playwright/mcp/cli.js\",\n  \"--config\",\n  \"playwright-mcp.config.json\",\n]\nstartup_timeout_sec = 30\ntool_timeout_sec = 120\ndefault_tools_approval_mode = \"approve\"\n```\n\nThe project-local Codex registration is the recommended arrangement because it matches the repository-owned configuration used by other hosts.\nIt intentionally omits `cwd`, which is the repository root when Codex opens the project, and `enabled`, because the presence of this project file is the opt-in.\nThe scaffolder creates the complete file only when `.codex/config.toml` is absent and never merges into or rewrites an existing Codex configuration.\n\n`playwright-mcp.config.json` holds the browser policy, seeded with defaults suited to validation:\n\n```json\n{\n  \"browser\": {\n    \"isolated\": true,\n    \"launchOptions\": { \"headless\": true }\n  }\n}\n```\n\nThe separation is deliberate.\nAgent hosts may re-prompt for approval whenever a registration changes, so the registrations stay minimal and are approved once, while everything a host repo may want to tune — headed for debugging, a persistent profile, another browser, a viewport, a CDP endpoint to a running Chrome — lives in the browser config and can be edited freely; the server reads it at startup and validates it against [Playwright MCP's schema](https://github.com/microsoft/playwright-mcp#configuration-file).\nThe defaults run headless so automation never raises a window over the developer's work, and isolated so every run starts from the same blank browser state rather than whatever a previous run left behind.\n\nInvoking the cli directly with node runs whatever `@playwright/mcp` version the project pins in `devDependencies` — install it with `npm install --save-dev --save-exact @playwright/mcp` — and a missing pin fails loudly at agent-session start instead of silently floating to latest; a bare `npx` runner is avoided because it can intercept flags meant for the server, and its registry fallback would fetch an unpinned version.\n\nEach file is written only when missing and never regenerated: unlike `launch.json` they embed no derived values, and all three are authored config a project may extend.\nThe browser config is created only when `.mcp.json` or `.codex/config.toml` refers to it, so a project with its own registrations never acquires an unused file.\nCommit all three; each collaborator approves the registration once in each agent host they use.\n\nUsers who deliberately centralize Codex MCP servers may instead put the complete registration in `~/.codex/config.toml` and disable it by default:\n\n```toml\n[mcp_servers.playwright]\ncommand = \"node\"\nargs = [\n  \"node_modules/@playwright/mcp/cli.js\",\n  \"--config\",\n  \"playwright-mcp.config.json\",\n]\nstartup_timeout_sec = 30\ntool_timeout_sec = 120\ndefault_tools_approval_mode = \"approve\"\nenabled = false\n```\n\nEach participating repository then keeps only the opt-in in `.codex/config.toml`:\n\n```toml\n[mcp_servers.playwright]\nenabled = true\n```\n\nThat user-level arrangement reduces repetition across repositories but makes the Codex setup depend on per-machine state.\nIt also assumes each participating repository pins `@playwright/mcp` and provides `playwright-mcp.config.json` at the same relative paths.\nESP never creates or modifies `~/.codex/config.toml`; after `esp-sync-mcp` first creates the project registration, a user choosing this arrangement replaces its contents with the opt-in above, which later runs preserve.\n\nTo keep fresh clones provisioned, add it to the project's prepare steps:\n\n```js\nrunPrepareSteps([\n  { label: 'sync launch.json', args: ['./scripts/build.mjs', '--sync-launch'] },\n  { label: 'sync .mcp.json', args: ['./node_modules/@graysonlang/esp/scripts/sync-mcp.mjs'] },\n]);\n```\n\nAgents should validate against their own isolated preview (`node scripts/build.mjs --serve --port=<reserved> --sourcemap`) rather than the developer's `npm run dev` server, then navigate the Playwright browser to the exact emitted URL.\n","readmeFilename":"README.md"}