{"_id":"vite-plugin-keywords","_rev":"34-110fa907c087aa39e5aea0d175653507","name":"vite-plugin-keywords","dist-tags":{"latest":"1.2.3"},"versions":{"0.0.23":{"name":"vite-plugin-keywords","version":"0.0.23","keywords":["vite","vite-plugin","minification"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@0.0.23","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"7e69ab5a22454e0100787035c1f45d46bce9ace4","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-0.0.23.tgz","fileCount":11,"integrity":"sha512-ZWF0bGqQxDMDPhUUrcSpltELJ9CHACgKlIS0atKE45mMfyUypkixuk57Ye5bH6lEgCzd4s71SvacvQXp4j9KHg==","signatures":[{"sig":"MEUCIQDGvCZ+LhWL0w8iFKYIa7Z7kCLLiYce6vcsc/x8ya/skQIgTyYk6rh4i6Dbw33x+AkmnpWDNsWoNSwH+sSFYECV8Qg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25991},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-0.0.23.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/f7e27d7e28c4a0bcb69f7b7323bea661/vite-plugin-keywords-0.0.23.tgz","_integrity":"sha512-ZWF0bGqQxDMDPhUUrcSpltELJ9CHACgKlIS0atKE45mMfyUypkixuk57Ye5bH6lEgCzd4s71SvacvQXp4j9KHg==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"10.9.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"minifiable-keywords":"0.0.23"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^3.2.4","@types/node":"^24.1.0"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_0.0.23_1756354480505_0.5075775123184343","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0":{"name":"vite-plugin-keywords","version":"1.0.0","keywords":["vite","vite-plugin","minification"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.0.0","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"482ec8ac455b6001e8b0d9f73b475bcd2ad83052","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.0.0.tgz","fileCount":11,"integrity":"sha512-AbKDc/JT+xJqEfg4YTME/bIjI6uw939VeU3z2jFgy3CPojfXXwW+NTUuO5q8MZtppG/tW+LISoQW+nDeN+h0xw==","signatures":[{"sig":"MEUCIHtYviClKW2CrwgpfmE8nW8T4QfkUYUdy41g+WB7EMj1AiEAj6+JCiv9r93HPJg10YNaNydfOGAPyY6Mm4p/oCXnXEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25989},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/f39591a72fafda119aa0314baf44874f/vite-plugin-keywords-1.0.0.tgz","_integrity":"sha512-AbKDc/JT+xJqEfg4YTME/bIjI6uw939VeU3z2jFgy3CPojfXXwW+NTUuO5q8MZtppG/tW+LISoQW+nDeN+h0xw==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"10.9.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"minifiable-keywords":"1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^3.2.4","@types/node":"^24.1.0"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.0.0_1756967749949_0.9749775643104575","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"vite-plugin-keywords","version":"1.0.1","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.0.1","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"a367ddc6beeca53e142179ef817586e71cdeb3a5","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.0.1.tgz","fileCount":11,"integrity":"sha512-mN77bgclUR1dcbM5TQOxX3u1OkYYh3gMTNBkTajxpR9Fm/LKsiW/cU8+NCkNjvQo5WKSE5ITLHt4i82M/IK66g==","signatures":[{"sig":"MEUCIQChi8zjqkoR68zj10zpvBqux5Q7EVZ79I2GT2c2dZ0RRwIgKViuFOeGjk0bXOOxWMADVCkqubgSf8ONWqyal0cyHUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26005},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/3d42856ab9d1643cba01f9b626443707/vite-plugin-keywords-1.0.1.tgz","_integrity":"sha512-mN77bgclUR1dcbM5TQOxX3u1OkYYh3gMTNBkTajxpR9Fm/LKsiW/cU8+NCkNjvQo5WKSE5ITLHt4i82M/IK66g==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"10.9.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"minifiable-keywords":"1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^3.2.4","@types/node":"^24.1.0"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.0.1_1759131236590_0.32738984429765106","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.2":{"name":"vite-plugin-keywords","version":"1.0.2","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.0.2","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"8ec01dca79ed143c9287245098a4694eefb4ae59","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.0.2.tgz","fileCount":11,"integrity":"sha512-XfL967xFwcKgv2AIDBL1NCLt6+v9iz7p9pxy7KwaiQxAiPAMmIkvDjqPNIaGmShO9sc2b7quo/Zd4Li1a0DwiA==","signatures":[{"sig":"MEUCICpbEr/9zu+4KM0gprXtoFJglvXQ3XqobCxUwkUlSEcaAiEAvBHlVpMInO0vWDRMpwOGNi+m9Qmakmo9uOmNEUyGSME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66911},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.0.2.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/eec51e007caedcf7e3adec5371ece646/vite-plugin-keywords-1.0.2.tgz","_integrity":"sha512-XfL967xFwcKgv2AIDBL1NCLt6+v9iz7p9pxy7KwaiQxAiPAMmIkvDjqPNIaGmShO9sc2b7quo/Zd4Li1a0DwiA==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.0.2"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.0.2_1768581187525_0.3241592485362541","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0":{"name":"vite-plugin-keywords","version":"1.1.0","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.1.0","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"8f99abdd1ad183a4da0a697eea4b70ff04b6a3ea","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.1.0.tgz","fileCount":11,"integrity":"sha512-9AIHwCMnultzkeRTrGd1sqGS/ZkF7dRYx4XRiopcd6QIwFcsRf4F5cHojvFzg9jDL9q3IwwoLeoGl7SnqnGf3w==","signatures":[{"sig":"MEUCIF0dRpYJKMuKXJKIfc3x/wtE3RnPlXHUQxLCudg0rZNtAiEAq07kcDKNWSnALTZ8PdQQwlgqvHDVJ+OD1QQnT6TFr7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65955},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/c891a36d36d1540069e22317d7f7611a/vite-plugin-keywords-1.1.0.tgz","_integrity":"sha512-9AIHwCMnultzkeRTrGd1sqGS/ZkF7dRYx4XRiopcd6QIwFcsRf4F5cHojvFzg9jDL9q3IwwoLeoGl7SnqnGf3w==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.1.0"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.1.0_1768684229716_0.4091721159561996","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.1":{"name":"vite-plugin-keywords","version":"1.1.1","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.1.1","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"6c66c75771145db4eaa83684723e97308192c013","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.1.1.tgz","fileCount":11,"integrity":"sha512-J4+1SUuEYOP69LNKA2ftbA0ce1Q06mEKkpdY+9DuPlWUMI0IlsBQPX0uWvCATc+7FzUfPtUycPL2i35eZuGX6A==","signatures":[{"sig":"MEUCIQC0wh6rkbTamtdpJA5dpcqWQfPti6wPaNDc3yexAIrBLAIgXNcKnJSq+QVyxE4KFKmqVP+9b+VcZDz2Bo9Y4Rp7Q1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66028},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.1.1.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/dd932ea48cbb4b956e2c23a29834cb7c/vite-plugin-keywords-1.1.1.tgz","_integrity":"sha512-J4+1SUuEYOP69LNKA2ftbA0ce1Q06mEKkpdY+9DuPlWUMI0IlsBQPX0uWvCATc+7FzUfPtUycPL2i35eZuGX6A==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.1.1"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.1.1_1768686063954_0.9811778168398368","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.0":{"name":"vite-plugin-keywords","version":"1.2.0","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.2.0","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"32a46e5b9fdb4299ab9df633522947138c445bbb","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.2.0.tgz","fileCount":11,"integrity":"sha512-3OnoDy/0EqM1U8OYujDbX6SLqntEtPzj5cOXe4Xa51seakWarPlayYuVjSrqOJ3NNARWvlFNQzi4x34D+oER3w==","signatures":[{"sig":"MEUCIBvjjl3GtVz288l/E8Z+Y7x9h/ri7qrJbr0oL0eTo0oWAiEAq71TyTU5AWwHBj3JdG6/uWe08jcsNgQiGmCkHi9aNIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79030},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/ff8134311fbb77c92590ef841d4ec46c/vite-plugin-keywords-1.2.0.tgz","_integrity":"sha512-3OnoDy/0EqM1U8OYujDbX6SLqntEtPzj5cOXe4Xa51seakWarPlayYuVjSrqOJ3NNARWvlFNQzi4x34D+oER3w==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.2.0"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.2.0_1771586497450_0.8647947804547846","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.1":{"name":"vite-plugin-keywords","version":"1.2.1","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.2.1","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"018d33a52e820fecd5827712f69b8419ce60cf06","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.2.1.tgz","fileCount":11,"integrity":"sha512-Km3ankzlce7HCWPNXnek6uZ5NgZF1652kBnG6fjfCnAw3DrGbfdxQJ6jcr4FN1kLBIPrzofh+YLzifImhQDhdA==","signatures":[{"sig":"MEYCIQD8umUwpPmhP+fqupo/q61mh/FqYEJw5AhUmRS9wmJtqQIhAO714u5yCHSHgbYGRbENZMo8nxSj9gqM7TYBHliZRZ9c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79290},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.2.1.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/219f8dc3cb54b4cf33847870ada2df74/vite-plugin-keywords-1.2.1.tgz","_integrity":"sha512-Km3ankzlce7HCWPNXnek6uZ5NgZF1652kBnG6fjfCnAw3DrGbfdxQJ6jcr4FN1kLBIPrzofh+YLzifImhQDhdA==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.2.1"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.2.1_1771592986606_0.9372778299991316","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.2":{"name":"vite-plugin-keywords","version":"1.2.2","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.2.2","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"cc5002aaf19828c1b693a3f1dc1032f244782095","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.2.2.tgz","fileCount":11,"integrity":"sha512-SAgew9eCUN4FherhkWz3KVYYxdvgs9s+RGOSMfo3TNDIo2tlXeGpbAPa9IKUlm7Af5DJHS/QzuuvjH9vvt6EKA==","signatures":[{"sig":"MEUCIHMJdQXSsdmsaf30+yYOg+DI50VJIXd6LmTOG+rZb5FwAiEA+Mc5PCZmWLFEhm+mw00I+WdY/va6nn50kgQ7nbg5KR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79742},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.2.2.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/49c4491d698a8f7648e4eea950e91a08/vite-plugin-keywords-1.2.2.tgz","_integrity":"sha512-SAgew9eCUN4FherhkWz3KVYYxdvgs9s+RGOSMfo3TNDIo2tlXeGpbAPa9IKUlm7Af5DJHS/QzuuvjH9vvt6EKA==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.2.2"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.2.2_1771594060947_0.7291361632612143","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.3":{"name":"vite-plugin-keywords","version":"1.2.3","keywords":["vite","vite-plugin","minification","obfuscation"],"author":{"name":"cueaz"},"license":"MIT","_id":"vite-plugin-keywords@1.2.3","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"bin":{"keywords":"dist/cli.js"},"dist":{"shasum":"396258858ece84437af078354dda6d052dcf841e","tarball":"https://registry.npmjs.org/vite-plugin-keywords/-/vite-plugin-keywords-1.2.3.tgz","fileCount":11,"integrity":"sha512-nhkQRl7+s8w1fCM2XBFw3V6BTpyC7dt17DufrNiQImAZ5OaaruETS236eUEVu1tRIH4nM+oXBsT620gsCSOZLg==","signatures":[{"sig":"MEQCICTUX+N3C56Q4yIXxOJw1Nf5CM8dSm3Z/IHsW8KcCRI1AiBT3YUH703sFe/sQOHWnTdMvAkhPfXHDy+74t+xIKLDWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80907},"main":"./dist/index.js","type":"module","_from":"file:vite-plugin-keywords-1.2.3.tgz","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest","build":"tsup","clean":"rimraf dist"},"_npmUser":{"name":"cueaz","email":"vcs@cueaz.com"},"_resolved":"/private/var/folders/wv/p3xsrmtj4xq565vpw1_sn6100000gn/T/0d8aa6ea43c5662d2fb3ea56abb02ac6/vite-plugin-keywords-1.2.3.tgz","_integrity":"sha512-nhkQRl7+s8w1fCM2XBFw3V6BTpyC7dt17DufrNiQImAZ5OaaruETS236eUEVu1tRIH4nM+oXBsT620gsCSOZLg==","repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"_npmVersion":"11.6.2","description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"globby":"^16.0.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","vitest":"^4.0.0","@types/node":"^24.1.0","minifiable-keywords":"1.2.3"},"peerDependencies":{"vite":"^6.0.0 || ^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-plugin-keywords_1.2.3_1771603424333_0.990047605137909","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2025-09-04T06:35:49.820Z","modified":"2026-05-05T16:24:08.292Z","0.0.1":"2025-07-27T05:29:56.906Z","0.0.2":"2025-07-27T06:00:41.256Z","0.0.3":"2025-07-27T08:21:02.629Z","0.0.4":"2025-07-27T13:45:30.917Z","0.0.5":"2025-07-27T13:48:50.231Z","0.0.6":"2025-07-27T14:58:50.665Z","0.0.7":"2025-07-27T15:05:04.606Z","0.0.8":"2025-07-27T15:11:12.963Z","0.0.9":"2025-07-27T15:44:43.037Z","0.0.10":"2025-07-28T14:20:32.376Z","0.0.11":"2025-07-28T15:30:45.221Z","0.0.23":"2025-08-28T04:14:40.705Z","1.0.0":"2025-09-04T06:35:50.121Z","1.0.1":"2025-09-29T07:33:56.746Z","1.0.2":"2026-01-16T16:33:07.675Z","1.1.0":"2026-01-17T21:10:29.857Z","1.1.1":"2026-01-17T21:41:04.103Z","1.2.0":"2026-02-20T11:21:37.588Z","1.2.1":"2026-02-20T13:09:46.769Z","1.2.2":"2026-02-20T13:27:41.090Z","1.2.3":"2026-02-20T16:03:44.499Z"},"bugs":{"url":"https://github.com/cueaz/vite-plugin-keywords/issues"},"author":{"name":"cueaz"},"license":"MIT","homepage":"https://github.com/cueaz/vite-plugin-keywords#readme","keywords":["vite","vite-plugin","minification","obfuscation"],"repository":{"url":"git+https://github.com/cueaz/vite-plugin-keywords.git","type":"git"},"description":"A Vite plugin that provides minifiable Symbols (keywords) to use in place of string literals for aggressive minification/obfuscation.","maintainers":[{"name":"cueaz","email":"vcs@cueaz.com"}],"readme":"# vite-plugin-keywords\n\n[![NPM][npm-badge]][npm-url]\n[![Github CI][ci-badge]][ci-url]\n[![MIT licensed][license-badge]][license-url]\n\n[npm-badge]: https://img.shields.io/npm/v/vite-plugin-keywords.svg\n[npm-url]: https://www.npmjs.com/package/vite-plugin-keywords\n[ci-badge]: https://github.com/cueaz/vite-plugin-keywords/actions/workflows/ci.yaml/badge.svg\n[ci-url]: https://github.com/cueaz/vite-plugin-keywords/actions/workflows/ci.yaml\n[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[license-url]: https://github.com/cueaz/vite-plugine-keywords/blob/main/LICENSE\n\n> [!NOTE]\n> A Rollup version of this plugin, `rollup-plugin-keywords`, is also available. The primary difference is that the Vite plugin utilizes the `hotUpdate` hook to incrementally collect keywords and update modules and types during development. While this documentation is written primarily for the Vite plugin, the setup is almost identical—just add `rollup-plugin-keywords` to your Rollup configuration.\n\nA Vite plugin that provides a way to use minifiable `Symbols` (keywords) in place of string literals and object keys, offering a potential strategy for aggressive minification/obfuscation.\n\nThis approach introduces a trade-off between a small reduction in bundle size and an increase in code complexity. It is best suited for ~~applications where every byte counts~~ minification/obfuscation nerds.\n\n## Rationale\n\nA common pattern in JavaScript applications, particularly in state management, involves using string literals as unique identifiers.\n\n```ts\n// A typical action in a state management system\nfunction setUser(name: string) {\n  return {\n    type: 'SET_USER',\n    payload: { name },\n  };\n}\n```\n\nWhile minifiers can shorten variable and function names, they cannot alter the string literals. When an application defines dozens of these identifiers, they accumulate as unminifiable overhead in the final bundle.\n\nThis plugin addresses this by enabling the use of `Symbol` primitives, which, when assigned to variables, can be safely minified.\n\n**Standard Approach:**\n\nIn this standard pattern, both the property key `type` and `payload`, and the type value `'SET_USER'` are strings that resist minification.\n\n```ts\ninterface SetUserAction {\n  type: 'SET_USER';\n  payload: { name: string };\n}\nconst setUser = (payload: { name: string }): SetUserAction => ({\n  type: 'SET_USER',\n  payload,\n});\n\nfunction reducer(state: any, action: SetUserAction) {\n  if (action.type === 'SET_USER') {\n    // use action.payload\n  }\n}\n\n// Minified Output: The strings 'type', 'payload', and 'SET_USER' persist.\n// prettier-ignore\nconst a=p=>({type:'SET_USER',payload:p});\n// prettier-ignore\nfunction b(s,c){if(c.type==='SET_USER'){/*...*/}}\n```\n\n**With `vite-plugin-keywords`:**\n\nBy importing from the `virtual:keywords` module, you can replace internal, structural strings with minifiable `Symbol` variables, while leaving the data model intact.\n\n```ts\nimport * as K from 'virtual:keywords';\n\ninterface SetUserAction {\n  [K.type]: typeof K.SET_USER;\n  // The payload's structure remains unchanged for compatibility with external data sources.\n  [K.payload]: { name: string };\n}\nconst setUser = (payload: { name: string }): SetUserAction => ({\n  [K.type]: K.SET_USER,\n  [K.payload]: payload,\n});\n\nfunction reducer(state: any, action: SetUserAction) {\n  if (action[K.type] === K.SET_USER) {\n    // use action[K.payload]\n  }\n}\n\n// Minified Output: All structural identifiers become single-character variables.\n// prettier-ignore\nconst k=Symbol,a=k(),b=k(),c=k(),d=p=>({[a]:b,[c]:p});\n// prettier-ignore\nfunction e(s,f){if(f[a]===b){/*...*/}}\n```\n\nThis transforms static string overhead into minifiable variables, allowing the minifier to do what it does best.\n\n## Comparison to Property Mangling\n\nProperty mangling lacks the semantic context to know which keys are safe to alter, often relying on fragile regex or naming conventions. This plugin takes a different approach by operating on explicit developer intent. Rather than asking a minifier to guess, you refactor a string literal into a minifiable variable (`K.myKeyword`) that holds a unique `Symbol`. This provides an unambiguous, structural hint to the build process, enabling safe and predictable minification of identifiers without the risks associated with global property renaming.\n\n## How It Works\n\nThe plugin works by scanning your code for usages of the `virtual:keywords` module and generating the corresponding `Symbol` exports and types on the fly.\n\n```ts\n// virtual:keywords\nconst __SYMBOL__ = Symbol;\nconst _type = /* @__PURE__ */ __SYMBOL__(); // __SYMBOL__('type') in dev mode\nconst _payload = /* @__PURE__ */ __SYMBOL__(); // __SYMBOL__('payload') in dev mode\nconst _SET_USER = /* @__PURE__ */ __SYMBOL__(); // __SYMBOL__('SET_USER') in dev mode\n// ... and so on for all other keywords found.\nexport {\n  _type as type,\n  _payload as payload,\n  _SET_USER as SET_USER,\n  // ... and so on\n};\n```\n\n## Installation\n\n```bash\nnpm install -D vite-plugin-keywords\n# or\nyarn add -D vite-plugin-keywords\n# or\npnpm add -D vite-plugin-keywords\n```\n\n## Setup\n\n1. Add the plugin to your `vite.config.ts`.\n\n   ```ts\n   // vite.config.ts\n   import { defineConfig } from 'vite';\n   import keywords from 'vite-plugin-keywords';\n\n   export default defineConfig({\n     plugins: [keywords()],\n   });\n   ```\n\n2. Include the generated types file in your `tsconfig.json`.\n\n   ```jsonc\n   // tsconfig.json\n   {\n     // ...\n     \"compilerOptions\": {\n       // ...\n       \"paths\": {\n         \"virtual:keywords\": [\"./.keywords/index.d.ts\"],\n       },\n     },\n   }\n   ```\n\n3. Exclude the generated types file from your version control system (e.g., Git).\n\n   ```gitignore\n   # .gitignore\n   .keywords/\n   ```\n\n4. Ensure that your type-checking script in `package.json` is updated to run the plugin first:\n\n   ```jsonc\n   // package.json\n   {\n     \"scripts\": {\n       \"typecheck\": \"keywords && tsc --noEmit\",\n     },\n   }\n   ```\n\n5. The `.keywords/index.d.ts` type file is created automatically on `vite dev/build`, or manually via the `keywords` script.\n\n## CLI\n\nYou can manually generate the keyword types using the provided CLI. This is useful for type-checking in CI or before a build.\n\n```bash\nnpx keywords [--config <path>]\n```\n\n| Option     | Shorthand | Description                                    |\n| ---------- | --------- | ---------------------------------------------- |\n| `--config` | `-c`      | Specify a custom Vite configuration file path. |\n\n## Options\n\n### `additionalModulesToScan`\n\n- **Type:** `string[]`\n- **Default:** `[]`\n\nAn array of module specifiers that the plugin should scan for keyword usage in addition to `virtual:keywords`.\n\nThis is particularly useful in a monorepo where keywords are centralized in a shared package (e.g., `@myrepo/keywords` which simply re-exports `virtual:keywords`).\n\n```ts\nimport keywords from 'vite-plugin-keywords';\n\nexport default defineConfig({\n  plugins: [\n    keywords({\n      additionalModulesToScan: ['@myrepo/keywords'], // Allows extracting keywords imported from the shared package\n    }),\n  ],\n});\n```\n\n### `isDev`\n\n- **Type:** `boolean`\n- **Default:** `process.env.NODE_ENV === 'development'` (for Rollup) or `config.mode === 'development'` (for Vite)\n\nManually overrides the build environment mode.\n\n- `true`: Generates `Symbol('keyword')` with string descriptions for easier debugging.\n- `false`: Generates empty `Symbol()` to completely remove string literals from the bundle.\n\nThis is especially useful in Rollup to output both dev and prod bundles from a single configuration without relying on `process.env.NODE_ENV`.\n\n## Limitations\n\n- **Serialization**: Keywords are compiled down to `Symbol` primitives, which cannot be serialized (e.g., via `JSON.stringify()`). Avoid using keywords for keys in state objects that need to be persisted to LocalStorage, sent over network boundaries, or used in SSR hydration.\n- **(TODO) Frameworks**: The plugin uses Babel to parse JavaScript and TypeScript files. It cannot parse keywords from Vue, Svelte, or Astro files yet.\n- **Dynamic Access**: Only static property access (e.g., `K.myKeyword`) is detected. Dynamic, computed access (e.g., `K['myKeyword']`) will not be identified by the plugin.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}