{"_id":"@asos/web-toggle-point-features","_rev":"8-3749f39b1bbe64afd3887ed22f997f4c","name":"@asos/web-toggle-point-features","dist-tags":{"latest":"0.5.0"},"versions":{"0.3.2":{"name":"@asos/web-toggle-point-features","version":"0.3.2","license":"MIT","_id":"@asos/web-toggle-point-features@0.3.2","maintainers":[{"name":"asos-bradleyabel","email":"bradley.abel@asos.com"},{"name":"asos-rupeshghelani","email":"rupesh.ghelani@asos.com"},{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"homepage":"https://github.com/asos/web-toggle-point#readme","bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"dist":{"shasum":"e69850d8ee37353cb7d5eba824f0b8ea279889a3","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.3.2.tgz","fileCount":10,"integrity":"sha512-j+OGCfJP/nA117/MyCv9O2XKiihVlnS8MTp+TRKXn/H0/2yKXmwu5pnHoYtTWL0OctZS2GpUeKOaegk2XpyqZw==","signatures":[{"sig":"MEUCIDsgt/JhFwX1b+jSACcUJoWz8UQgvNeOj8EdBFN46JMiAiEA3BX6RFVuY3Mnyr9ePnlU0YV4Dz/CWbA9KCkOak5DZuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53158},"main":"./lib/main.es5.cjs","type":"module","exports":{"node":{"import":"./lib/main.js","require":"./lib/main.es5.cjs"},"default":{"import":"./lib/browser.js","require":"./lib/browser.es5.cjs"}},"gitHead":"ca3f68325cff83644fab664414627fd3a5edc5e5","scripts":{"docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","lint":"eslint build src docs --flag unstable_config_lookup_from_file","test":"jest","build":"npm run clean && npm run build:browser && npm run build:server","clean":"rimraf ./lib","prelint":"npm run build-dependencies","pretest":"npm run build-dependencies","lint:fix":"npm run lint -- --fix","prebuild":"npm run build-dependencies","build:server":"rollup -c build/rollup.mjs --config_isClient false","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isClient true","prepublishOnly":"npm run build","build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build"},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"repository":{"url":"git+https://github.com/asos/web-toggle-point.git","type":"git","directory":"packages/features"},"_npmVersion":"10.9.2","description":"toggle point features code","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@babel/runtime":"^7.26.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","jsdoc":"^4.0.4","react":"^18.3.1","rimraf":"^6.0.1","react-dom":"^18.3.1","@eslint/js":"^9.15.0","path-exists-cli":"^2.0.0","@eslint/eslintrc":"^3.2.0","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-react":"^7.31.10","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-replace":"^5.0.1","@testing-library/react":"^16.0.1","eslint-plugin-jsx-a11y":"^6.7.1","jest-environment-jsdom":"^29.6.4","@rollup/plugin-commonjs":"^25.0.4","@testing-library/jest-dom":"^6.1.3","eslint-plugin-react-hooks":"^5.0.0","@rollup/plugin-node-resolve":"^15.2.1","rollup-plugin-auto-external":"^2.0.0","eslint-plugin-testing-library":"^7.0.0"},"peerDependencies":{"react":">=17","react-dom":">=17","prop-types":"^15.7.2","@reduxjs/toolkit":"^2.4.0","@asos/web-toggle-point-ssr":"0.2.2"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"prop-types":{"optional":true},"@reduxjs/toolkit":{"optional":true},"@asos/web-toggle-point-ssr":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-toggle-point-features_0.3.2_1741271144692_0.668142664321699","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@asos/web-toggle-point-features","version":"0.3.3","license":"MIT","_id":"@asos/web-toggle-point-features@0.3.3","maintainers":[{"name":"asos-bradleyabel","email":"bradley.abel@asos.com"},{"name":"asos-rupeshghelani","email":"rupesh.ghelani@asos.com"},{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"dist":{"shasum":"db522eb4a2c68e24b7112e6e08b92f4055abae68","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.3.3.tgz","fileCount":11,"integrity":"sha512-L6K2XBWb+sEZjdduSyEXy7mIqRwMHPLrzuSg//wztvCXwtnvhQKhmp6Q8KKKp2sbfLd8Zo45+0Qka0cJ8mtUMw==","signatures":[{"sig":"MEQCIDnSurRP3Be4rNbeCyODiBG0oKNJosrILK9wYhhgDQqJAiAsRph74owFYciK6y3hJLCKGL2AwipuqN7raDYkWuUh4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59927},"main":"./lib/main.es5.cjs","type":"module","exports":{"node":{"import":"./lib/main.js","require":"./lib/main.es5.cjs"},"default":{"import":"./lib/browser.js","require":"./lib/browser.es5.cjs"}},"gitHead":"0ba42cc822c3326d5e6853b24b34070f3e357143","scripts":{"docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","lint":"eslint build src docs --flag unstable_config_lookup_from_file","test":"jest","build":"npm run clean && npm run build:browser && npm run build:server","clean":"rimraf ./lib","prelint":"npm run build-dependencies","pretest":"npm run build-dependencies","lint:fix":"npm run lint -- --fix","prebuild":"npm run build-dependencies","build:server":"rollup -c build/rollup.mjs --config_isClient false","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isClient true","prepublishOnly":"npm run build","build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build"},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"repository":{"url":"git+https://github.com/asos/web-toggle-point.git","type":"git","directory":"packages/features"},"_npmVersion":"10.9.2","description":"toggle point features code","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"@babel/runtime":"^7.26.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","jsdoc":"^4.0.4","react":"^18.3.1","rimraf":"^6.0.1","react-dom":"^18.3.1","@eslint/js":"^9.15.0","path-exists-cli":"^2.0.0","@eslint/eslintrc":"^3.2.0","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-react":"^7.31.10","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-replace":"^5.0.1","@testing-library/react":"^16.0.1","eslint-plugin-jsx-a11y":"^6.7.1","jest-environment-jsdom":"^29.6.4","@rollup/plugin-commonjs":"^25.0.4","@testing-library/jest-dom":"^6.1.3","eslint-plugin-react-hooks":"^5.0.0","@rollup/plugin-node-resolve":"^15.2.1","rollup-plugin-auto-external":"^2.0.0","eslint-plugin-testing-library":"^7.0.0"},"peerDependencies":{"react":">=17","react-dom":">=17","prop-types":"^15.7.2","@reduxjs/toolkit":"^2.4.0","@asos/web-toggle-point-ssr":"0.2.3"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"prop-types":{"optional":true},"@reduxjs/toolkit":{"optional":true},"@asos/web-toggle-point-ssr":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-toggle-point-features_0.3.3_1752505314726_0.706157215680538","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@asos/web-toggle-point-features","version":"0.3.4","license":"MIT","_id":"@asos/web-toggle-point-features@0.3.4","maintainers":[{"name":"asos-bradleyabel","email":"bradley.abel@asos.com"},{"name":"asos-rupeshghelani","email":"rupesh.ghelani@asos.com"},{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"dist":{"shasum":"96e8d89cc012814bd279804429622953ffd0362b","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.3.4.tgz","fileCount":11,"integrity":"sha512-RQvbeVYf6ooOKeO7+wa0xawlTNtzE22AQq7pc1o6rrBb7LS8rjhneChKXHXMvi0PO16E4ITc5pzpEASokr0nUQ==","signatures":[{"sig":"MEUCIQDnEXKiRIWednP45yq4FaoVoKHYGk879lkTKF6xoK1qJgIgN3SJGfwlDqWAvzRDcIBAGlJqVhWYkmBauOH6YsI12Vg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59844},"main":"./lib/main.es5.cjs","type":"module","exports":{"node":{"import":"./lib/main.js","require":"./lib/main.es5.cjs"},"default":{"import":"./lib/browser.js","require":"./lib/browser.es5.cjs"}},"gitHead":"490e522c2d0b43b58a19a3a3a0b350a06088c775","scripts":{"docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","lint":"eslint build src docs --flag unstable_config_lookup_from_file","test":"jest","build":"npm run clean && npm run build:browser && npm run build:server","clean":"rimraf ./lib","prelint":"npm run build-dependencies","pretest":"npm run build-dependencies","lint:fix":"npm run lint -- --fix","prebuild":"npm run build-dependencies","build:server":"rollup -c build/rollup.mjs --config_isClient false","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isClient true","prepublishOnly":"npm run build","build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build"},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"repository":{"url":"git+https://github.com/asos/web-toggle-point.git","type":"git","directory":"packages/features"},"_npmVersion":"10.9.2","description":"toggle point features code","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"@babel/runtime":"^7.26.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","jsdoc":"^4.0.4","react":"^18.3.1","rimraf":"^6.0.1","@eslint/js":"^9.15.0","path-exists-cli":"^2.0.0","@eslint/eslintrc":"^3.2.0","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-react":"^7.31.10","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-replace":"^5.0.1","@testing-library/react":"^16.0.1","eslint-plugin-jsx-a11y":"^6.7.1","jest-environment-jsdom":"^29.6.4","@rollup/plugin-commonjs":"^25.0.4","@testing-library/jest-dom":"^6.1.3","eslint-plugin-react-hooks":"^5.0.0","@rollup/plugin-node-resolve":"^15.2.1","rollup-plugin-auto-external":"^2.0.0","eslint-plugin-testing-library":"^7.0.0"},"peerDependencies":{"react":">=17","prop-types":"^15.7.2","@asos/web-toggle-point-ssr":"0.2.3"},"peerDependenciesMeta":{"react":{"optional":true},"prop-types":{"optional":true},"@asos/web-toggle-point-ssr":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-toggle-point-features_0.3.4_1752508998742_0.727700010255641","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@asos/web-toggle-point-features","version":"0.4.0","license":"MIT","_id":"@asos/web-toggle-point-features@0.4.0","maintainers":[{"name":"asos-bradleyabel","email":"bradley.abel@asos.com"},{"name":"asos-rupeshghelani","email":"rupesh.ghelani@asos.com"},{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"dist":{"shasum":"0634beb7f2f78b307f2f247bdc2edc1b19ab0dbd","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.4.0.tgz","fileCount":5,"integrity":"sha512-7Xl43Q4ArKEVDQgpgDDC4xacMJg0cYn4Tm2BdO/lbhUX/HvKoS3u7NInnyEu1Er8P9CsoZuHV/RMQMztu7OQHA==","signatures":[{"sig":"MEUCIBP8kcTTpvYdIwJ4yGmFd/6mh8DYAnw4wTDNehHbAwWWAiEAhqxwsp2xx2UjYuqxJ/fLVtI1kcOnlxglsZU2jNviIv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20129},"main":"./lib/global.js","type":"module","exports":{".":null,"./*":{"browser":{"import":"./lib/*.browser.js","require":"./lib/*.browser.es5.cjs"},"default":{"import":"./lib/*.js","require":"./lib/*.es5.cjs"}}},"gitHead":"2918c6be4158f082cea75c3e11dfd97e1342845a","scripts":{"docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","lint":"eslint build src docs --flag unstable_config_lookup_from_file","test":"jest","build":"npm run clean && npm run build:browser && npm run build:server && npm run build:eslint-import-backfill","clean":"rimraf ./lib","prelint":"npm run build-dependencies","pretest":"npm run build-dependencies","lint:fix":"npm run lint -- --fix","prebuild":"npm run build-dependencies","build:server":"rollup -c build/rollup.mjs --config_isBrowser false","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isBrowser true","prepublishOnly":"npm run build","build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build","build:eslint-import-backfill":"rollup -c build/eslint-import-backfill.rollup.mjs"},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"repository":{"url":"git+https://github.com/asos/web-toggle-point.git","type":"git","directory":"packages/features"},"_npmVersion":"10.9.3","description":"toggle point features code","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"@babel/runtime":"^7.26.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","jsdoc":"^4.0.4","react":"^18.3.1","rimraf":"^6.0.1","@eslint/js":"^9.15.0","path-exists-cli":"^2.0.0","@eslint/eslintrc":"^3.2.0","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-react":"^7.31.10","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-replace":"^5.0.1","@testing-library/react":"^16.0.1","eslint-plugin-jsx-a11y":"^6.7.1","jest-environment-jsdom":"^29.6.4","@rollup/plugin-commonjs":"^25.0.4","@testing-library/jest-dom":"^6.1.3","eslint-plugin-react-hooks":"^5.0.0","@rollup/plugin-node-resolve":"^15.2.1","rollup-plugin-auto-external":"^2.0.0","eslint-plugin-testing-library":"^7.0.0"},"peerDependencies":{"react":">=17","prop-types":"^15.7.2","@asos/web-toggle-point-ssr":"0.2.4"},"peerDependenciesMeta":{"react":{"optional":true},"prop-types":{"optional":true},"@asos/web-toggle-point-ssr":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-toggle-point-features_0.4.0_1759136410453_0.19748058640090393","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@asos/web-toggle-point-features","version":"0.4.1","keywords":["toggle point","feature toggles","feature flags","toggle state storage"],"license":"MIT","_id":"@asos/web-toggle-point-features@0.4.1","maintainers":[{"name":"asos-bradleyabel","email":"bradley.abel@asos.com"},{"name":"asos-rupeshghelani","email":"rupesh.ghelani@asos.com"},{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"dist":{"shasum":"f9a107db0c9b89098508bc92b70301f36c45bafe","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.4.1.tgz","fileCount":5,"integrity":"sha512-Yd5BI8I/YFcfvy9xZTndC/CCHKdfk6vwCC8JED4OWKTKVCu4qWUrYlVU63XFQ/DR84Uf4M4qSBJaORwIGvO30A==","signatures":[{"sig":"MEYCIQDxZ6PbKmh/SQBQJ1eiftAUKjFkBMQd5bQ3bFnbLNtw3wIhAP+7eu3Lz/2u/ZmNaut2uO55eIiQ12ZEA/9AzUG5+buI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16075},"main":"./lib/global.js","type":"module","exports":{".":null,"./*":{"browser":{"import":"./lib/*.browser.js","require":"./lib/*.browser.es5.cjs"},"default":{"import":"./lib/*.js","require":"./lib/*.es5.cjs"}}},"gitHead":"bc7f6fd20141dd6f9ba026c45d748eb976cabd98","scripts":{"docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","lint":"eslint build src docs --flag unstable_config_lookup_from_file","test":"jest","build":"npm run clean && npm run build:browser && npm run build:server && npm run build:eslint-import-backfill","clean":"rimraf ./lib","prelint":"npm run build-dependencies","pretest":"npm run build-dependencies","lint:fix":"npm run lint -- --fix","prebuild":"npm run build-dependencies","postpublish":"shx rm ./README.md LICENSE","build:server":"rollup -c build/rollup.mjs --config_isBrowser false","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isBrowser true","prepublishOnly":"shx cp docs/README.md ../../LICENSE . && npm run build","build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build","build:eslint-import-backfill":"rollup -c build/eslint-import-backfill.rollup.mjs"},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"repository":{"url":"git+https://github.com/asos/web-toggle-point.git","type":"git","directory":"packages/features"},"_npmVersion":"10.9.3","description":"toggle point features code, used to store toggle state","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"@babel/runtime":"^7.26.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","jest":"^29.7.0","jsdoc":"^4.0.4","react":"^18.3.1","rimraf":"^6.0.1","@eslint/js":"^9.15.0","path-exists-cli":"^2.0.0","@eslint/eslintrc":"^3.2.0","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-react":"^7.31.10","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-replace":"^5.0.1","@testing-library/react":"^16.0.1","eslint-plugin-jsx-a11y":"^6.7.1","jest-environment-jsdom":"^29.6.4","@rollup/plugin-commonjs":"^25.0.4","@testing-library/jest-dom":"^6.1.3","eslint-plugin-react-hooks":"^5.0.0","@rollup/plugin-node-resolve":"^15.2.1","rollup-plugin-auto-external":"^2.0.0","eslint-plugin-testing-library":"^7.0.0"},"peerDependencies":{"react":">=17","prop-types":"^15.7.2","@asos/web-toggle-point-ssr":"0.2.5"},"peerDependenciesMeta":{"react":{"optional":true},"prop-types":{"optional":true},"@asos/web-toggle-point-ssr":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-toggle-point-features_0.4.1_1759150816122_0.5419917604335507","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@asos/web-toggle-point-features","version":"0.4.2","keywords":["toggle point","feature toggles","feature flags","toggle state storage"],"license":"MIT","_id":"@asos/web-toggle-point-features@0.4.2","maintainers":[{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"dist":{"shasum":"5786c2df3b04d85452cfa10e5b37058badd51cbf","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.4.2.tgz","fileCount":5,"integrity":"sha512-dm2PBmXxfwDqymQqdneFiZeS6z5Hb32eWXLcym1G8gwgMVMg46VYS0uDLsHaDbQWfUnnu9o+u4XT9I+Bf5xi7A==","signatures":[{"sig":"MEUCIQDi6onsGciidmF74MnMvCST6m8uR/zEN6zuXOyGUsypCgIgbf3N3DmNfMuuYTT3ImYzsdRM8kv836DXnla3/KML4vE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16092},"main":"./lib/global.js","type":"module","exports":{".":null,"./*":{"browser":{"import":"./lib/*.browser.js","require":"./lib/*.browser.es5.cjs"},"default":{"import":"./lib/*.js","require":"./lib/*.es5.cjs"}}},"gitHead":"daed26d56eaae55b1cc27df051ed69f0136f4767","scripts":{"docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","lint":"eslint build src docs --flag unstable_config_lookup_from_file","test":"jest","build":"npm run clean && npm run build:browser && npm run build:server && npm run build:eslint-import-backfill","clean":"rimraf ./lib","prelint":"npm run build-dependencies","pretest":"npm run build-dependencies","lint:fix":"npm run lint -- --fix","prebuild":"npm run build-dependencies","postpublish":"shx rm ./README.md LICENSE","build:server":"rollup -c build/rollup.mjs --config_isBrowser false","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isBrowser true","prepublishOnly":"node ../prepare-publish.mjs && npm run build","build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build","build:eslint-import-backfill":"rollup -c build/eslint-import-backfill.rollup.mjs"},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"repository":{"url":"git+https://github.com/asos/web-toggle-point.git","type":"git","directory":"packages/features"},"_npmVersion":"10.9.3","description":"toggle point features code, used to store toggle state","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@babel/runtime":"^7.26.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","jest":"^29.7.0","jsdoc":"^4.0.4","react":"^18.3.1","rimraf":"^6.0.1","@eslint/js":"^9.15.0","path-exists-cli":"^2.0.0","@eslint/eslintrc":"^3.2.0","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-react":"^7.31.10","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-terser":"^0.4.3","@rollup/plugin-replace":"^5.0.1","@testing-library/react":"^16.0.1","eslint-plugin-jsx-a11y":"^6.7.1","jest-environment-jsdom":"^29.6.4","@rollup/plugin-commonjs":"^25.0.4","transform-markdown-links":"^2.1.0","@testing-library/jest-dom":"^6.1.3","eslint-plugin-react-hooks":"^5.0.0","@rollup/plugin-node-resolve":"^15.2.1","rollup-plugin-auto-external":"^2.0.0","eslint-plugin-testing-library":"^7.0.0"},"peerDependencies":{"react":">=17","prop-types":"^15.7.2","@asos/web-toggle-point-ssr":"0.2.6"},"peerDependenciesMeta":{"react":{"optional":true},"prop-types":{"optional":true},"@asos/web-toggle-point-ssr":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-toggle-point-features_0.4.2_1760971522807_0.9148698196503189","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asos/web-toggle-point-features","description":"toggle point features code, used to store toggle state","version":"0.5.0","license":"MIT","type":"module","main":"./lib/global.js","sideEffects":false,"exports":{".":null,"./*":{"browser":{"import":"./lib/*.browser.js","require":"./lib/*.browser.es5.cjs"},"default":{"import":"./lib/*.js","require":"./lib/*.es5.cjs"}}},"keywords":["toggle point","feature toggles","feature flags","toggle state storage"],"repository":{"type":"git","url":"git+https://github.com/asos/web-toggle-point.git","directory":"packages/features"},"bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","directories":{"doc":"docs"},"scripts":{"build-dependencies":"path-exists ../../packages/ssr/lib || npm run --prefix ../../packages/ssr build","prebuild":"npm run build-dependencies","build":"npm run clean && npm run build:browser && npm run build:server && npm run build:eslint-import-backfill","build:browser":"cross-env BABEL_ENV=browser rollup -c build/rollup.mjs --config_isBrowser true","build:server":"rollup -c build/rollup.mjs --config_isBrowser false","prepublishOnly":"node ../prepare-publish.mjs && npm run build","postpublish":"shx rm ./README.md LICENSE","build:eslint-import-backfill":"rollup -c build/eslint-import-backfill.rollup.mjs","clean":"rimraf ./lib","docs":"rimraf ./docs/**/*.html && jsdoc -c ../jsdoc.conf.js","prelint":"npm run build-dependencies","lint":"eslint build src docs --flag unstable_config_lookup_from_file","lint:fix":"npm run lint -- --fix","pretest":"npm run build-dependencies","test":"jest"},"dependencies":{"@babel/runtime":"^7.26.0"},"devDependencies":{"@eslint/eslintrc":"^3.2.0","@eslint/js":"^9.15.0","@rollup/plugin-babel":"^6.0.2","@rollup/plugin-commonjs":"^25.0.4","@rollup/plugin-node-resolve":"^15.2.1","@rollup/plugin-replace":"^5.0.1","@rollup/plugin-terser":"^0.4.3","@testing-library/jest-dom":"^6.1.3","@testing-library/react":"^16.0.1","@types/webpack-env":"^1.18.0","eslint-plugin-jsdoc":"^50.5.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-react":"^7.31.10","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-testing-library":"^7.0.0","jest":"^29.7.0","jest-environment-jsdom":"^29.6.4","jsdoc":"^4.0.4","path-exists-cli":"^2.0.0","react":"^18.3.1","rimraf":"^6.0.1","rollup-plugin-auto-external":"^2.0.0","shx":"^0.4.0","transform-markdown-links":"^2.1.0"},"peerDependencies":{"@asos/web-toggle-point-ssr":"0.2.6","prop-types":"^15.7.2","react":">=17"},"peerDependenciesMeta":{"@asos/web-toggle-point-ssr":{"optional":true},"prop-types":{"optional":true},"react":{"optional":true}},"_id":"@asos/web-toggle-point-features@0.5.0","gitHead":"b2961b0c57d503cd37487ddd1034154fea8c0c93","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-IgSf0INOlIjG9sfncIVx3AYDtwSxQygcng0UMZ0Ksz0E/xTsl3hjmP10nm1DUsuG+uq+7avBweU48KoSfX/Duw==","shasum":"25040f411e017ce2607ede798c1687eac823586c","tarball":"https://registry.npmjs.org/@asos/web-toggle-point-features/-/web-toggle-point-features-0.5.0.tgz","fileCount":5,"unpackedSize":18137,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDZUtJm2f5cfe3ulaksWTLlfOpfFQ683te57STMeg5x2AIgYRnCJ0Gi7YPkYI+/vZ6zOkwrhp5QSHZZ04gGQhQvWOk="}]},"_npmUser":{"name":"asos-danielc","email":"DanielC@ASOS.com"},"maintainers":[{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-toggle-point-features_0.5.0_1761038653699_0.916013262832811"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-06T14:25:44.621Z","modified":"2025-10-21T09:24:14.115Z","0.3.2":"2025-03-06T14:25:44.864Z","0.3.3":"2025-07-14T15:01:54.931Z","0.3.4":"2025-07-14T16:03:18.923Z","0.4.0":"2025-09-29T09:00:10.629Z","0.4.1":"2025-09-29T13:00:16.346Z","0.4.2":"2025-10-20T14:45:23.006Z","0.5.0":"2025-10-21T09:24:13.900Z"},"bugs":{"url":"https://github.com/asos/web-toggle-point/issues"},"license":"MIT","homepage":"https://github.com/asos/web-toggle-point/tree/main/packages/features","keywords":["toggle point","feature toggles","feature flags","toggle state storage"],"repository":{"type":"git","url":"git+https://github.com/asos/web-toggle-point.git","directory":"packages/features"},"description":"toggle point features code, used to store toggle state","maintainers":[{"name":"asos-roberth","email":"robert.hill@asos.com"},{"name":"asos-tonygorman","email":"Tony.Gorman@asos.com"},{"name":"asos-danielc","email":"DanielC@ASOS.com"}],"readme":"# @asos/web-toggle-point-features\n\nThis package provides utility modules for managing features state in applications.\n\nIt provides global or contextual status of the toggles that should govern relevant modules, passing methods to an appropriate decision-making toggle point (e.g. those created by `withTogglePoint` or `withToggledHook` from the [`react-pointcuts` package](../react-pointcuts/docs/README.md)).\n\nA store should be chosen based on the requirement for global or partitioned state, and the reactivity needed, for the type of toggle.\n\n## Usage\n\nSee: [JSDoc output](https://asos.github.io/web-toggle-point/module-web-toggle-point-features.html)\n\n## Exports\n\n> [!WARNING]\n> This package uses [`package.json` exports](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#exports) to specify individual stores (listed below), to ensure that browser / node specific stores can \n> be individually imported and prevent build failures where, prior to tree-shaking, incompatible APIs / globals are referenced.\n> Due to [a long-standing bug in `eslint-plugin-import`](https://github.com/import-js/eslint-plugin-import/issues/1810), users of eslint with this plugin may need to ignore an [`import/no-unresolved`](https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-unresolved.md) error,\n> or move to a modern alternative for this plugin (e.g. [`eslint-plugin-import-x`](https://github.com/un-ts/eslint-plugin-import-x)), or use [a typescript parser](https://typescript-eslint.io/packages/parser/) (which understands `exports`)\n\nThe package contains the following exports:\n\n### `storeFactories/globalFeaturesStoreFactory`\n\nA \"global\" features store factory: a thin wrapper around a singleton, this is an extension point for future plugins etc.  Each invocation will create a new store, even with a `toggleType` matching a prior invocation.\n\nIt accepts the following parameters:\n- `toggleType`\n  - the type of the toggle, used only for debugging.\n\nIt exports a store with:\n\n- a `setValue` function, that sets a current value.\n- a `getFeatures` function\n   - designed to be passed as the `getActiveFeatures` input of the `withTogglePointFactory` or `withToggledHookFactory` from the [`react-pointcuts` package](../react-pointcuts/docs/README.md).\n\nFor protection against variation (or other) code modifying the toggle state unduly, the value passed could be [deep frozen](https://github.com/christophehurpeau/deep-freeze-es6), e.g.\n```js\nimport { deepFreeze } from \"deep-freeze-es6\";\nconst initialValue = {};\nfeaturesStore.setValue({ value: deepFreeze(initialValue) });\n```\nFor reactive values, without the need for a React or other contextual wrapper, consider wrapping an object with [`valtio`](https://github.com/pmndrs/valtio):\n```js\nimport { proxy } from \"valtio/vanilla\";\nconst initialValue = {};\nfeaturesStore.setValue({ value: proxy(initialValue) });\n```\n...which can then be subscribed to in an appropriate toggle point, to re-evaluate toggled functions:\n```js\nimport { subscribe } from \"valtio/vanilla\";\nsubscribe(featuresStore.getFeatures(), () => { /* re-evaluate */ });\n```\nIf using React (e.g. `react-pointcuts` package), can just use the native support in Valtio:\n```js\nimport { proxy, useSnapshot } from \"valtio\";\nconst initialValue = {};\nfeaturesStore.setValue({ value: proxy(initialValue) });\nexport const setValue = (input) =>  // consumed in updating code-paths\n  featuresStore.setValue({\n    value: Object.assign(featuresStore.getFeatures(), input)\n  });\nexport const getActiveFeatures = () => useSnapshot(featuresStore.getFeatures()); // passed to `withTogglePointFactory`\n```\n...which will then re-render consuming components based on the parts of the toggle state they are reliant on.\n\n### `storeFactories/nodeRequestScopedFeaturesStoreFactory`\n\nA \"request scoped\" features store factory, for use in [Node](https://nodejs.org/).\n\nIt accepts the following parameters:\n- `toggleType`\n  - the type of the toggle, this is keyed against a singleton referenced by [a runtime-wide global symbol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry), to ensure it works across multi-compilation runtimes (e.g. NextJs) / throughout a [realm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Execution_model#realms).  N.B. Each invocation with the same toggleType will return the initial store.\n\nIt exports a store with:\n- a `setValue` function that sets a current value, taking a `scopeCallBack` (along with a `value`), under which the value is scoped.\n   - This is using [`AsyncLocalStorage.run`](https://nodejs.org/api/async_context.html#asynclocalstoragerunstore-callback-args) under the hood, which can be plugged into Express middleware thus:\n      ```js\n      import express from \"express\";\n\n      const app = express();\n      const featuresStore = requestScopedFeaturesStoreFactory({ toggleType: \"some type of toggle\" });\n\n      app.use((request, response, next) => {\n        const value = ?? // some value holding toggle state, either based on `request`, or scoped from outside this middleware, etc.\n        featuresStore.setValue({ value, scopeCallBack: next });\n      });\n      app.use(\"/\", () => { /* routes that require toggled code */ });\n      ```\n- a `getFeatures` function\n   - designed to be passed as the `getActiveFeatures` input of the `withTogglePointFactory` or `withToggledHookFactory` from the [`react-pointcuts` package](../react-pointcuts/docs/README.md).\n> [!WARNING]\n> This will throw an error if called outside of a request scope, so care should be taken to set up the toggle point config to only toggle modules called within the call stack of the middleware.\n> Wrap the `setValue` call in a `try` / `catch`, if prior access is expected.\n> If this happens unexpectedly, follow the advice [here](https://nodejs.org/api/async_context.html#troubleshooting-context-loss).\n\n### `storeFactories/reactContextFeaturesStoreFactory`\n\nIt accepts the following parameters:\n- `toggleType`\n  - the type of the toggle, forming the displayName of the react context provider\n\nIt exports a store with:\n- a `providerFactory` factory function, creating a [react context provider](https://reactjs.org/docs/context.html#contextprovider).\n  - appropriate parts of the react tree, that need to have toggled react components, should be wrapped by this provider. It should be passed a value representing active features state.\n- a `getFeatures` function\n  - this uses [`useContext`](https://react.dev/reference/react/useContext) internally, so should be used honouring the rules of hooks.  It will make consumers reactive to any change of the toggle state.\n  - can be passed to `getActiveFeatures` of `withTogglePointFactory` / `withToggledHookFactory` from the [`react-pointcuts` package](../react-pointcuts/docs/README.md).\n\n### `storeFactories/ssrBackedReactContextFeaturesStoreFactory`\n\nIt exports a store with the same signature as that exported by `reactContextFeaturesStoreFactory`.  It utilises `withJsonIsomorphism` from the [`ssr` package](../ssr/docs/README.md) internally, to create [\"isomorphic\" or \"universal\"](https://en.wikipedia.org/wiki/Isomorphic_JavaScript) contexts, for use in framework-less React applications.  The value set on the server will be realised as the initial value within the browser.\n\nIt accepts the following parameters:\n- `namespace`\n  - this becomes a prefix for the `id` of the `application/json` script written to the page, useful for pages running multiple react applications.\n- `toggleType`\n  - the type of the toggle, the latter part of the `id` of the aforementioned script, and becoming the prop holding the features state, and forming the displayName of the underlying react context provider\n- `logWarning`\n  - a method to log warnings, should the serialized json somehow become malformed when hydrating the client application\n    - this was designed to allow modifications of markup in systems upstream of the origin, but downstream of the browser, with a view to ensure adequate telemetry is in place.\n\n> [!WARNING]\n> ### Use with React 17\n> The react-specific stores should work with React 17 and above, but due to [a bug](https://github.com/facebook/react/issues/20235) that they are not back-filling, the use of `\"type\": \"module\"` in the package means webpack will be unable to resolve the extensionless import.\n> To fix, either upgrade to React 18+ or add the following resolve configuration to the webpack config:\n> ```js\n> resolve: {\n>   alias: {\n>     \"react/jsx-runtime\": \"react/jsx-runtime.js\",\n>     \"react-dom/server\": \"react-dom/server.js\",\n>   }\n> }\n> ```","readmeFilename":"README.md"}