{"_id":"use-chrome-storage","_rev":"32-b08f61335f10b566f312441c8a91ec77","name":"use-chrome-storage","dist-tags":{"latest":"1.3.2"},"versions":{"1.0.0-0":{"name":"use-chrome-storage","version":"1.0.0-0","description":"React hooks for chrome.storage. You may use it for keeping global state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn","preview":"npm run build && np --no-yarn --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.12.17","@babel/preset-env":"^7.12.17","@babel/preset-react":"^7.12.13","@testing-library/react":"^11.2.5","@testing-library/react-hooks":"^5.0.3","@types/chrome":"^0.0.132","babel-jest":"^26.6.3","eslint":"^7.20.0","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.0","microbundle":"^0.13.0","np":"^7.4.0","react":"^17.0.1","react-dom":"^17.0.1"},"dependencies":{},"gitHead":"41f881f23811e9e633096c877406a37bf15f6aa9","_id":"use-chrome-storage@1.0.0-0","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-Iz7kCF1xVllCgoKASCJz2CueeFEInLaWb/UJ8AFfmKzCHwGXDdDZiyoZSEAQdWLwZ1UwxwGhonIVZrS16PyBeA==","shasum":"bb87b4358409441adace837834a9bb66678cff41","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.0-0.tgz","fileCount":11,"unpackedSize":46727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM/E+CRA9TVsSAnZWagAA5q8P/RjCYAozvTGds4nnfFF6\nj+h2HRUlgXAq5E+2baub5+gUYq8uubbVvgUw2UWE1BfH1X+hHBaLOmjGwzVA\n6/6grGB2Ga2y0Dg3MXviGmA8HIEaeOto8a6RdQRKNUar74HvxmeepLTb+Wc3\nqz+ens+Luk56car/eQBWjc1+FCrghuMzlBQsycVqpZ2sutOmyxeJtwNU6obv\ng2hUQdCWjjA8cJ+P0cEH5IIB1d+B3lLMf8VLhDXJ3OXdu4INEME6YWRLFn3+\nvmcn8vX93Nfcg/+WgoyAn0vps0rGB7cuMeTQ3vfalKyFcC7U9JdoiRa8raTr\nMM/gkhD9lBwd+BVROPHCtTWrLfl9sTofIDovc7WnVcWsvjirqejSgXo3AgTZ\n2qSnA4bJwUfbswtL5UQY9yYl4FtYFeuFbDKkH3o+2ZItmMBLnBi8ePAu1tEy\nlYaUkEAWo+lfnHU6qWM6CRKXcn7JxoftaPH9cvtW/X9up56LnBu0h3HHS+R6\nZBdpYVwLUrVLBip6F7+qOvhsZlFFaBldmewuY+kqYVfTgNqzshMtCrHNHLgy\nfp5OX399/FXaujBISpmSkq9Q+d+Ndf37ftSVDthmribwEdQKMI77wPbToHkP\nq7+oGCcBKrcLA5neh7jgKzwiuGC3xJUcYtLRnzWnTF3plD6oZiQS53yEQ7WR\nqPT/\r\n=kUC2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGLCLRPx9tOCPX+8lzvEZlYPptr1sPZvSonKBdYgfkRmAiEArKK9SMNvNxGN+p48KDmx7XJXXjqs6o8absIxNfHIB1s="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.0-0_1614016830356_0.1839587512155647"},"_hasShrinkwrap":false},"1.0.0-1":{"name":"use-chrome-storage","version":"1.0.0-1","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-2fa","preview":"npm run build && np --no-yarn --preview --no-2fa","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.12.17","@babel/preset-env":"^7.12.17","@babel/preset-react":"^7.12.13","@testing-library/react":"^11.2.5","@testing-library/react-hooks":"^5.0.3","@types/chrome":"^0.0.132","babel-jest":"^26.6.3","eslint":"^7.20.0","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.0","microbundle":"^0.13.0","np":"^7.4.0","react":"^17.0.1","react-dom":"^17.0.1"},"dependencies":{},"readme":"# use-chrome-storage\r\n\r\nCustom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.\r\n\r\n- Simplify work with `chrome.storage`\r\n- Supports `chrome.storage.local` and `chrome.storage.sync`\r\n- May be used as persisted state available from all extension's contexts (background, content script, popup, option\r\n  page)\r\n- Listen for `chrome.storage` changes and keep local state updated\r\n\r\n## Install\r\n\r\n```bash\r\nnpm i use-chrome-storage\r\n```\r\n\r\n## Usage\r\n\r\nFor usage with chrome.storage.**local** use `useChromeStorageLocal` hook. For chrome.storage.**sync**\r\nuse `useChromeStorageSync` hook.\r\n\r\n### Usage of useChromeStorage\r\n\r\n```javascript\r\nimport React from 'react';\r\nimport {useChromeStorageLocal} from 'use-chrome-storage';\r\n\r\n\r\nconst LocalCounter = () => {\r\n    // if you need to state be preserved in `chrome.storage.sync` use useChromeStorageSync\r\n    const [value, setValue, isPersistent, error] = useChromeStorageLocal('counterLocal', 0);\r\n    return (\r\n            <div>\r\n                <button\r\n                        onClick={() => {\r\n                            setValue(prev => (prev + 1));\r\n                        }}\r\n                >\r\n                    Increment in Local Storage\r\n                </button>\r\n                <div>Value: {value}</div>\r\n                <div>Persisted in chrome.storage.local: {isPersistent.toString()}</div>\r\n                <div>Error: {error}</div>\r\n            </div>\r\n    );\r\n};\r\n```\r\n\r\n### Usage of createChromeStorageStateHook\r\n\r\nIf you want to use same `key` in different components in different extension contexts (like in PopUp, content scripts,\r\nbackground pages) you need to use `createChromeStorageStateHookLocal`(for chrome.storage.**local**)\r\nor `createChromeStorageStateHookSync` (for chrome.storage.**sync**)\r\n\r\nInitialize storage:\r\n\r\n```javascript\r\n// common/useSettingsStore.js\r\nimport {createChromeStorageStateHookLocal} from 'use-chrome-storage';\r\n\r\n\r\nconst SETTINGS_KEY = 'settings';\r\nconst INITIAL_VALUE = {\r\n    showAvatar: true,\r\n    showHistory: false,\r\n};\r\n\r\nexport const useSettingsStore = createChromeStorageStateHookLocal(SETTINGS_KEY, INITIAL_VALUE);\r\n```\r\n\r\nUse `useSettingsStore` on options page:\r\n\r\n```javascript\r\n// options.js\r\nimport React from 'react';\r\nimport {useSettingsStore} from './common/useSettingsStore';\r\n\r\n\r\nconst Options = () => {\r\n    const [settings, setSettings, isPersistent, error] = useSettingsStore();\r\n\r\n    const handleChange = event => {\r\n        setSettings(prevState => {\r\n            return {\r\n                ...prevState,\r\n                [event.target.name]: event.target.checked\r\n            };\r\n        });\r\n    };\r\n\r\n    return (\r\n            <div>\r\n                <label>\r\n                    <input\r\n                            type=\"checkbox\"\r\n                            name=\"showAvatar\"\r\n                            checked={settings.showAvatar}\r\n                            onChange={handleChange}\r\n                    />\r\n                    <span>Show Avatar</span>\r\n                </label>\r\n                <label>\r\n                    <input\r\n                            type=\"checkbox\"\r\n                            name=\"showHistory\"\r\n                            checked={settings.showHistory}\r\n                            onChange={handleChange}\r\n                    />\r\n                    <span>Show History</span>\r\n                </label>\r\n                {!isPersistent && <div>Error writing to the chrome.storage: {error}</div>}\r\n            </div>\r\n    );\r\n};\r\n```\r\n\r\nOr from content script:\r\n\r\n```javascript\r\n// contentScript.js\r\nimport React from 'react';\r\nimport {useSettingsStore} from './common/useSettingsStore';\r\n\r\n\r\nconst Card = () => {\r\n    const [settings] = useSettingsStore();\r\n\r\n    return (\r\n            <div>\r\n                {settings.showAvatar && <Avatar/>}\r\n                {settings.showHistory && <History/>}\r\n            </div>\r\n    );\r\n};\r\n```\r\n\r\nIn same way you may use it for PopUp or background scripts.\r\n\r\n## API\r\n\r\n### useChromeStorageLocal(key, initialValue?)\r\n\r\nState will be persisted in `chrome.storage.local` (and updated from `chrome.storage.local` if it was updated in other\r\ncontexts). If you want to use this hook in more than one place, use `createChromeStorageStateHookLocal`.\r\n\r\n- `key: string` - The key used in `chrome.storage.local`\r\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.local` has no stored value yet\r\n\r\n#### Returns\r\n\r\n`[value, setValue, isPersistent, error]`\r\n\r\n- `value: any` - stateful value like first one returned from `React.useState()`\r\n- `setValue: function` - function to update `value` like second one returned from `React.useState()`\r\n- `isPersistent: boolean` - Will be `true` if data is persisted in `chrome.storage.local`. In case of error\r\n  during `chrome.storage.local.get` or `chrome.storage.local.set` value will be stored in memory only and `isPersistent`\r\n  will be set to `false`\r\n- `error: string` - If `isPersistent` is `true` will contain empty string. Otherwise, will contain error returned\r\n  by `chrome.runtime.lastError`.\r\n\r\n### useChromeStorageSync(key, initialValue?)\r\n\r\nSimilar to `useChromeStorageLocal` but will use `chrome.storage.sync`. State will be persisted\r\nin `chrome.storage.sync` (and updated from `chrome.storage.sync` if it was updated in other contexts). If you want to\r\nuse this hook in more than one place, use `createChromeStorageStateHookSync`.\r\n\r\n- `key: string` - The key used in `chrome.storage.sync`\r\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.sync` has no stored value yet\r\n\r\n#### Returns\r\n\r\n`[value, setValue, isPersistent, error]`\r\n\r\n- `value: any` - stateful value like first one returned from `React.useState()`\r\n- `setValue: function` - function to update `value` like second one returned from `React.useState()`\r\n- `isPersistent: boolean` - Will be `true` if data is persisted in `chrome.storage.sync`. In case of error\r\n  during `chrome.storage.local.get` or `chrome.storage.local.set` value will be stored in memory only and `isPersistent`\r\n  will be set to `false`\r\n- `error: string` - If `isPersistent` is `true` will contain empty string. Otherwise, will contain error returned\r\n  by `chrome.runtime.lastError`.\r\n\r\n### createChromeStorageStateHookLocal(key, initialValue?)\r\n\r\nIn case you want to use same `key` in different components/extension contextsInstead you may create state hook which may\r\nbe used across extension. See [example](#usage-of-createchromestoragestateHook). State will be persisted\r\nin `chrome.storage.local`.\r\n\r\n- `key: string` - The key used in `chrome.storage.local`\r\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.local` has no stored value yet\r\n\r\n### Returns\r\n\r\n`function(): [any, (value: any) => void, boolean, string]` - `useChromeStorageLocal` hook which may be used across\r\nextension's components/pages\r\n\r\n### createChromeStorageStateHookSync(key, initialValue?)\r\n\r\nSimilar to `createChromeStorageStateHookLocal` but uses `chrome.storage.sync`. In case you want to use same `key` in\r\ndifferent components/extension contextsInstead you may create state hook which may be used across extension.\r\nSee [example](#usage-of-createchromestoragestateHook) and replace with `createChromeStorageStateHookSync`. State will be\r\npersisted in `chrome.storage.sync`.\r\n\r\n- `key: string` - The key used in `chrome.storage.sync`\r\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.sync` has no stored value yet\r\n\r\n### Returns\r\n\r\n`function(): [any, (value: any) => void, boolean, string]` - `useChromeStorageSync` hook which may be used across\r\nextension's components/pages\r\n\r\n## Thanks to\r\n\r\n[use-local-storage-state](https://github.com/astoilkov/use-local-storage-state) for inspiration\r\n","readmeFilename":"README.md","gitHead":"a4df5653412d81291ac3309b0422d6789d269da4","_id":"use-chrome-storage@1.0.0-1","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-jCLE+kn0f7Bm/DzyHYjigiLqPRengPtcrD04hBnfd23f8UlJxPM/a8gamCvm/3EtmSeXJdm8awSbaF7//PGbeQ==","shasum":"d182d3d485c387430f0418e03d946ac4c96d1146","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.0-1.tgz","fileCount":12,"unpackedSize":54577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNSh6CRA9TVsSAnZWagAADbkP/iRaQ0ZsXMcWdae9P3eH\nlyTJNgK0DDWK1oVc8lTgyGzJcFoB4qKw/xrB84Rpm8+3CoeJZVqyI1KS5hKx\nYCMvMJqqMWrNqp/00E6DnESIpgp4e4ZxABLI33ZF9b52Nn6OvbnWvIsfaYPy\nKbYgtC4KZkvSL+Dwtrbb2qYUgYGYziCkjIK7O6ppg6dD27Ivqa9an7hFCd2U\n60dUFo0zwpNugH8Hn0NMQajFzrkbLBlABoliusLqprByG/yx54jE7fN8V2iT\nO8OhyBzo7pLcfaJBNUBtBEml5nl5rQcSqWCfOqtx4ehzzn1oNJV+9i+JlY7m\nC7ULzY+27gGo0BzHII4FVqby6Xh0/b5mn+Kp7uDs7RcJSExsDXnnJRlbjFiq\nepmMc/g5BNV1L4TSOKkRyK0SktQ6otQVQMjJtYunl8N8eHci0vVc7PtnOVpl\nSfIEkmFweX8hePpJzFo9aaF9Hf+i4+LXl3xzrLgiLE5TEhiLl7bFUuGSEz+t\nso9yO5cQQzQiFg/a7Nd1zvJrdz2q3CjhdiSIIRPnngwvUitcSo40EG8FLlVS\nn3tqJaS9buYYkCSxXaOlGMiHW/MgZqXz+yjfOsGuKAIQDT4jdGpk67wrFWVB\nkaQh7jhvtavfOtHmatBA4AkL+Njk6GWuG2Aw4zov49G0HoaAwg4eyBs0veDt\nq9r+\r\n=r2Y3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDGC1z5poBASsM14aXGl3aRSAm41s3o0zuR0dEteU1dhAiAtrkAiYg6j7lNjkcKgg+AzF+7nFFusmb+bDEwA5yfo3Q=="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.0-1_1614096506197_0.13935133206356043"},"_hasShrinkwrap":false},"1.0.0":{"name":"use-chrome-storage","version":"1.0.0","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-2fa","preview":"npm run build && np --no-yarn --preview --no-2fa","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.12.17","@babel/preset-env":"^7.12.17","@babel/preset-react":"^7.12.13","@testing-library/react":"^11.2.5","@testing-library/react-hooks":"^5.0.3","@types/chrome":"^0.0.132","babel-jest":"^26.6.3","eslint":"^7.20.0","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.0","microbundle":"^0.13.0","np":"^7.4.0","react":"^17.0.1","react-dom":"^17.0.1"},"dependencies":{},"gitHead":"85fcc08eca5b367398cab5a246588759faba5327","_id":"use-chrome-storage@1.0.0","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-g5CbeBsQ9PblJI4KZwDTS/lKVNXZCGZFNazLioGZhmTZ1BQs8LpawPI8QJpECKnUFTPVnFqUQBkFrJ8cAACEVw==","shasum":"9651ef9954479a9652086a1ac1429aae00be0671","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.0.tgz","fileCount":12,"unpackedSize":54824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNT/0CRA9TVsSAnZWagAAqKUQAJUcqxVvcjO0J+K+IEtc\ndZYeIReiZ3+VYa6GxjFX6QzYH/vMb5M9KrwzMN8nyvdDpBxr4AtcDhyb3g5r\neoyZu3Bif/m8VKBX8ZxJJu6bzzd1UqcCGAM/xMC/RItpoOnay2h3Rqq9HDyC\nFNGt8VS61tLaqrCSbINos0z3kn3sepotTYRQS9RSD8A8wClgpP0n/Z3DtXVY\nhK7KAxLghoWv//ABf+cAgjHRo0t1SiElyFHLn+JZrlXERvSipjCckg/qg14z\nyUn2/UDAMoaeqRcONtgj12oiN6nEeKndg5sjR1kGQ8lNZAlJkL2GqCXQla3N\nWtqMlkv+lHLNo3nmBDJaI91Or04woz3VmYs2L0nYaV1X2R8QXxRaycqoJPm4\n/KLVAhx44tPGBEl7581LGBEBzH6xgDVneBkpGUZ8elPRGmM4cF6TXc4tqFvZ\ndlwaMYNNefeU80eDZ794E1Wi90oTYKNqxExgWoJHWr9tHjGtEFey3AgZiSj0\nVaQf3jl2YINUsvhWsa2T3jv5N2t5SjjLyGPr+TA7mwpYV6ug524P9rHMG9ni\n4rkHUZFRUy36kqo/76KmOngBUj08EJYHBUNsSsgYpO8bI7JQYbBaQC53QaOu\n0UJs2DWI5yh9PtOjQax+kPs4mRyAuzeuqNBk5+BZcruqQ4jZCywvziRtrCCT\ndVqi\r\n=kANA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM2ukeSdUCcqRO4umaWfX43ePv1kH6VTyQxaRBfyEJegIgf1JB4+t1uGAvleTu98B2wiHd14rEOlcvg/YXdHdql6o="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.0_1614102515628_0.4577510497027135"},"_hasShrinkwrap":false},"1.0.1":{"name":"use-chrome-storage","version":"1.0.1","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup --no-2fa","preview":"npm run build && np --no-yarn --no-cleanup --no-2fa --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.12.17","@babel/preset-env":"^7.12.17","@babel/preset-react":"^7.12.13","@testing-library/react":"^11.2.5","@testing-library/react-hooks":"^5.0.3","@types/chrome":"^0.0.134","babel-jest":"^26.6.3","eslint":"^7.20.0","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.0","microbundle":"^0.13.0","np":"^7.4.0","react":"^17.0.1","react-dom":"^17.0.1"},"dependencies":{},"gitHead":"4692835342532aa1d088c9c0347b572601698fdc","_id":"use-chrome-storage@1.0.1","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-VPW2QVlRHlCgfMTMJVFGzYJz3+SPQ/3bN0rI2z+RL7p0SLxOmiqKfR+PFo7u9/+voVoPr3725nG2YVNVApAEyw==","shasum":"4bb0a69660c907333afa2c53d0c82b48db3e9c8a","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.1.tgz","fileCount":13,"unpackedSize":55947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbdclCRA9TVsSAnZWagAAHzMP/jIC56yKktHM0Pa1MZpy\nf40mtnvrXfqR9E2HiKRdrHPavqybi2/SHA8qfHKoTm3mEzVbC74pvOW4BqgM\nR7CGfR1z84aggHq5oTP4XkKMyghASX1f36Bx2gFx0en3JuinErResMGHMDm9\nXLaXyJpXbZCpogWesVDKCZ7jMtw7SWSF3XyI/Likh4IefXdeSB1Zmc+icUqa\n6URXpEBr89xPv8rRzN9OWE/CoLi2bgE74IBM7+EgXlhIvW7h+QwXTNr0MxQh\ne3eDJqfDeJZhb+ym0HqXmCoiF6k6DLfuzruOXWZ/OAaXLJ5IzB6St2bjF+EC\n0rnu0H+B89uTnJHBQ9XlKTVN72vWfN/cyFy1f1qt3kJvU/fGCLwNAjqVawXw\nuorlCAIq7/bwSawdBFYORlyhNd3oqtyMl8QYGDW0qkDGw4qLnvXdM9apwSXr\nQ1xwbHcw78H8ZousbRerENmkSdGGbXyNi+4qhU+VBqqWJ6Sb93a27oU+ezk2\nOvB0+CLOtm4fCb/aDCZ0ReSw3z7jjEiRPV4o/inMwACxkNuQgcuMHmzk+2wY\nXm4BNK+Dw/VLYRngTJZRKdgkprgdbGVQyLo/n4PxOLZxYsDNA+/SfjmV40Iq\n2A2EaXU+5td8nHgLstEolrOYNFjsqSmo2N3kF5nYzChDB2e3rw32lqecYkAi\ni06h\r\n=mriy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEveo6PpbQZjSinixpLPW6JOpX053wuNzIdDUnh1Mc8AIgbPyHQJXSWOXLKbA+v/SpPRe6VM3W6y2olvd2QSKA5JI="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.1_1617811236793_0.5189640093059087"},"_hasShrinkwrap":false},"1.0.2":{"name":"use-chrome-storage","version":"1.0.2","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup --no-2fa","preview":"npm run build && np --no-yarn --no-cleanup --no-2fa --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.12.17","@babel/preset-env":"^7.12.17","@babel/preset-react":"^7.12.13","@testing-library/react":"^11.2.5","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.141","babel-jest":"^26.6.3","eslint":"^7.20.0","eslint-plugin-react":"^7.22.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.0","microbundle":"^0.13.0","np":"^7.4.0","react":"^17.0.1","react-dom":"^17.0.1"},"dependencies":{},"gitHead":"8496f5ee6e218fa188fc7efdc36181250081f9d0","_id":"use-chrome-storage@1.0.2","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-HnOLw+vp/VqtKFJ46hkXwBxSsZC6peTLhJaPRwokMwaf/2JaIJefU1MUfGxmu6dNfXBwpwwPbpXBh5ErbxfLvQ==","shasum":"26327b4cc5f91d34bbc8ed2099f41b6f9fcfa9d9","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.2.tgz","fileCount":13,"unpackedSize":55947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrQ/RCRA9TVsSAnZWagAAVhEP/jnsAewxhyosl4puSqrU\nt7bGoO6FON78dqii+0fi2jptdT/4oOcdog/8YLpdErd1Ogkql7lZeSf1TEgc\nXWIGjYTRI2gSg7OlNxu7FnnUXpV6AEVUeL0+jJ6BcgJhnQWfcGhTIZUc8vBr\nMhWS10HotxEPvpV4+qLsXl+zoY9Pgbd2aWrTGsxbFaxRcysCZO37AixcdCgA\ntNBeZiB3Sm7l8kkBnXCryUa7F0vGujjvAsOtb6iQYLeEBNYOzhbKEM7uBJnE\nx6EzMAycsBJt7k8tr4cAWWGvzm+5LIV/gH833htdroHumksOSvcRhJnZz1fp\nHP4caNXS0eZoPEUxpw5BOuUNO/whKnGJBF2UuaXbcRijSjsqOHj2hRhBaSG5\ndE0YAXv/WCozQcnQY6fF1GiKC8J5xRsOCpZifj0CmMLqhMyI41X6K0mJMcwU\nIkbE0IiuM6ak0pngFztG4hm+dO2wEo7xZ9FF/G83a7xKnNSvqXAo5EKSotsS\n4laQD8KFctl4MqrfiXSJvAOzUWXS2q5cqTFtITBDYTt0qj0mmr5HNHh5M98L\nckUkwQsE5YplWK3dabeDarwWAy9L/0FZe+UefNBfAlvYCjjZru+OvE88xhPR\nmqvVmZgws0G/TrJHdFjKRe08uXURNdQa3gkbZPJfTWMHtLAwgCqHeLmpObE/\nv9YK\r\n=mctc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPRhsj7faGWU3PQqVDT3Vl9Y75CPgt8+v3uWJhf2P02AiAlm6vHZG45Q4yFHG9cp3U2A4GV18gpZkQ0BgAXLC1FTg=="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.2_1621954512823_0.8345351893159609"},"_hasShrinkwrap":false},"1.0.3":{"name":"use-chrome-storage","version":"1.0.3","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup --no-2fa","preview":"npm run build && np --no-yarn --no-cleanup --no-2fa --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.145","babel-jest":"^26.6.3","eslint":"^7.29.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.1","microbundle":"^0.13.3","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"fe44bc28594b96502b90f457550c44b143efd4db","_id":"use-chrome-storage@1.0.3","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-QT+vQ4dwlow7Rh1MCE/HiNdfFlDbFl+xJhzuu33S53/P9GDAypwe1RnI2fWOblph0GhgkXVposbZTdK/EhApKg==","shasum":"b4293182d37ba5988149ccf54a714f8283ef21ec","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.3.tgz","fileCount":13,"unpackedSize":56108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0LfDCRA9TVsSAnZWagAAHScP+waosKlSMLNSE/h14EJF\nBbK41OE+lUMKavoK0rDBqzAOeGzfAyTznGhFoiTFFV6lTVhoHo2xD0fhAtxe\nJVzW4JonjYVBr3DQS3SwzuZlK7GuyluUBbcUd7N0hFZ4Kz1XCUj/yufzLz0E\nV26oWUrdyjfIihsXjwp20k0P0QkZY6Yw1gVcKng9QhsbEB0HiozI6eBpRZLm\n+nLBbkLVnvSzjQ53S0qRCqzGWM03KqQHx8VJdhEDHsfkqm0tD9q5NAh9Upfx\nH1vstfO503C2zXWWDxiyTSJ+W/VwnJiq/sThk9FFUECnaAf13BcuBSWRXvw4\n5XqZ0gV3DwSQV0pJvNw80QP1VHTK8axPfzVfCNPevg567QBEIZVDxNU79Lz7\nlRH68HJuMZaZ15XivTKLpVQ3qM652/8WMWZ2TNXwWu380TTyY8vh1Zz3Uhe9\nDbhvl4XUqtM/GNFNZc5xqB6b/shUzvjTTU+askoMRESFHApMck/HfYv3ik9r\nCQeGwXdeHG8i6JdR78vXll3gLbneEtNvDSgXLGJzLEfaVQA7BoWCaD5GW9qQ\n46TazznCPMa5dj75M2ECy6y6nBU3b9Ar+isAgAs1fqr9cHEmeeUIQNJZrhw0\nPutFsJnEV9I0NKOBtr1XhYfTkejtUgXcIlSEBgUi7od9p+3rh0GJGrJ04v86\npuPW\r\n=8FCe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnOK+o6MYCsfGKaP9BhSNRYe8YtmNuqmNdJsB3h3J/WAIgBruFnWK2BA0GWxLF2Fma8RhXgS2slMbIEeEq2W0+UAY="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.3_1624291267126_0.32219418140883493"},"_hasShrinkwrap":false},"1.0.4":{"name":"use-chrome-storage","version":"1.0.4","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup --no-2fa","preview":"npm run build && np --no-yarn --no-cleanup --no-2fa --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.145","babel-jest":"^26.6.3","eslint":"^7.29.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.1","microbundle":"^0.13.3","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"c9bb7e82fbcc29fe2a672794088c7ede3c4dfd35","_id":"use-chrome-storage@1.0.4","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-Mwj20Et5VfYRpFzt1YBLaztuqpcRbimDxpUCOqrD4zRxcV5eLQqrXRhjEGgkZ3xCOqAUu1vyUuLFcHjTzekrFw==","shasum":"24c67905dfdde8b6db029b30f420afcf1aa10ccb","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.4.tgz","fileCount":13,"unpackedSize":56858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg20VpCRA9TVsSAnZWagAA26QP/3HzlEGxhxNl63yMuMQE\nxHreU62t0lJ9xbBtCwqIFb2giXntuCbiLoK239RP6KKINsYI9tfXVfNJT//m\nuMMFgIMutdFZCbKJ1SqXnLdvCi/Y099fcJU/7CHf1B1el77Ud11i9W0eKYCu\n+++ypLJp1WqjfcOxdxnOPRd2PA7GfPJkIBCjBY4sU1ivq8C1lseJwwftZxcT\nv3Dk80k5TpaNaS+TXrCdnMdq8CANwWFXD2Kjsx55uk3OfQ1tjQxANzVdT5/O\naBf4X6zmm+OwSkSDYD0CcpWExE8/yPqTeeaJw3yNa2Fo7njLUt+qOrFTsGoY\nwNBhnvFL81dL4nLiBUQQtFPsQNciCTumo7JK22VcdjBMdilY+ChdZrWu2zhs\nvTko3KjDCMuIupR1CUPwAvSf0wOlD9/iGo6yzhLWJOMNAp1zl2eoTD/pCZwX\nvGr0os4vxQzpCDiBDDkzoNC0/1X5Z7krBAFIH0McE1B+skyy7/2MAlI/NTbp\naj7SJoLcm62OpmY89/zqdgBm9iLQdNIoO7RX6lHEF52muWxhAuNF7EuF1Dwn\noo77Bjsqw8IFsiJtZc/RNeL+O+waGrsimhsp7XFjZoBN3z3rNZXri8pPHixb\nu0hboAPAd+TsXM/7YyVTeUJb5QliLY+x7MMmz9N2SvquRCKVQD6/S60TwDNl\n85Mq\r\n=eRA2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGsAwoehvOpfqoAJPdc+v2jFOONXZvbueRgEtQvTfY1cAiEA23+jWx5WJM3v8cyKZXuuiYhtK6Vg5/CA37PKAOLbTVQ="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.4_1624982889269_0.24543016780574511"},"_hasShrinkwrap":false},"1.0.5":{"name":"use-chrome-storage","version":"1.0.5","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup --no-2fa","preview":"npm run build && np --no-yarn --no-cleanup --no-2fa --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.164","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.1","microbundle":"^0.14.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"08442f508f9a410104c7d84dac9c04c97e3bb487","_id":"use-chrome-storage@1.0.5","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ZRe6JsWh4MvFWnV9p51kRkwLJbBPIX/Nx5qptnvRWM7MM2x9s+h+OB8PN9yXl7Kb0FPYC5tsX1ejCmkG4eNP4g==","shasum":"14705225d01f092ea8602645bab5d879b20e53fc","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.5.tgz","fileCount":37,"unpackedSize":134827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm4XvCRA9TVsSAnZWagAAemsP+wWHMDhCHE0CHqqAEkbM\nZnkzYPOTtlJ8wgPdPlwSJ197Vsa5OS4Xk0/rQhDoxQVHofdACAclsHwD+JKt\nWHiot+hxC64GJMiQX+HRByHK7FTgrGVmlApMOqGUvdxsfxD9YgpHFfgYHAEX\ncSZEAuOEkmVhQxTr5jjNdoIv788Zte7IARqge4lXYvBv7pn4WnLEjqONqyU+\nRM3Zn7GWEgO4SKZ7HgYCwpmXn2eKxl71CgSVvCY+wJLZYjZikDpjsZeGe6sl\nBX6OPD1jcNgQ++J0YiTYGaI4IfUkd2p8KkK4PWcRv6QI9W9ZmCN86Pt2gSgO\ndsCFTdIjTnVMODyo5kW3rmynEChhOidLZKxNxw10Xx/5b//eg7bQAMZk70Ci\nAl0UK33m66Hvxpsh0B8TeLgGnGhdTWrZYaXKW3B9dwOkDuOU1sRdfTMm83PE\nRvGykEl6s67y/1feec+IyqDFhrKs4jUEdvloXxReEcd5zfQNT5PhFLUUp44R\n77mnxi53Axd5nyK6mP4EK83PLm+bvo00M7V3w/1VIOwSdLkVvCBcKhmGHFBb\npOyefpjjFo5c6OIQDs7QIBHuC5PEkxKXTy9GUyDCtrmtv3tGlOEYKhYaczTz\nzlb0ucRCA6Asv6ECBx/WIj9FMYuYgJjkc7BQmlbC0rroolbS6FaWjpd1FOqJ\nbwLt\r\n=Bu7X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7Wd96MZUBqz8pNREjG7BFnB6E3T6dTvDe4bcJJ5WwGwIgISL+xl0+2/fOuZSdE6zJZTO1c27qaraxnwHGiiX2KGE="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.5_1637582319351_0.8403035991678129"},"_hasShrinkwrap":false},"1.0.6":{"name":"use-chrome-storage","version":"1.0.6","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup --no-2fa","preview":"npm run build && np --no-yarn --no-cleanup --no-2fa --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.178","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.1","microbundle":"^0.14.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"5ff7a45162e87134985d58bb6c04c39f8aeea753","_id":"use-chrome-storage@1.0.6","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-nOsPhYpqCTSAluXL+mCUsWq1M4g8648EromgGiWGXnoVp1LBkWJZcT8z10y8Axyp0IMYJlXkMd5yrHRxx+RmFg==","shasum":"cc4b2239ad9358da7becd7ef7675405eb1ac0deb","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.6.tgz","fileCount":37,"unpackedSize":135389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDlclACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkixAAlFDjE/4QqzvBGfPlE4Gn92s7wL9AaESXoRCzRlZW8mgisYAB\r\nmbENbs6KdS/B6UpEJawRl6SnGuSf4N9vrmuncPLpoiMuo2b58PIeV0SVS7H6\r\nFFKV9fM06jf9ZBlM0ms5Ud6+0V9cj2eB7AWp5CkhQ21JZyEuM/N8/Yshpaz5\r\nD7/tLosxIw8E742A6Va7777v8HtaKMxczESHuzzzSlIB8EYPWYGcjAZQeqxm\r\nQ1g9jdOs/ljUE2nbKPIZikAuPt+k91ddoqsIw/QbsUmjwRxHsm4gNt7dJI9I\r\nQBCrsDOj72DSJdzjzrG3zfWwdhTWeEVwGhm5FBApvaJE11iaYdzlsaYMe5Mw\r\nC3cIi+toCpUxKEhRMr/gkjuAi9F2mr6eVXdnlX+Sq4Fr41raxnbH0BteWWCd\r\nTghmVW+Pt5Hkq5ujQn4RZiZmwsEs2o1zj+bUTVnI0n1Le9i8rSAPks/h5/ny\r\n/RZ6hdp24XOfQFKRi5t8AJT0lmdRdaFsbKqi5EQwFHLSu45AAud/GTmnbNFS\r\nSKbsmA+5vboob850MRcUuBaz/bPQ6M1wzrm0/7wNyzSPsTB0bTBSODLfkHiI\r\n3QK6spggNK4mAf3gLN2GOo8aSaL4QQCCK4vnezTOIIjePBCvrRETBAVBvFKB\r\nTBEIuTZ23LBXPSkyJJx+VMveRd0PdDGSpN4=\r\n=q9C5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+1s+zBvr4zwxh9og50YvNj5lupyG9PKWujQw1u7veiAIgGvUBnos2BlLtfCVigP0lG7pYgP2fKO2s03XLyDmbFWw="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.6_1645106981771_0.8542674278992111"},"_hasShrinkwrap":false},"1.0.7":{"name":"use-chrome-storage","version":"1.0.7","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.184","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.1","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"f7de16c5cf3345b15cc3d2720a4a37fd924c2efa","_id":"use-chrome-storage@1.0.7","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-TfkYuDQiTrNojChLdqjkWM4mE6S+RR7WHRfbI6kwAnSc8wO+yGE7hboF28+zvVi6ZLvYTtLaK5Pz6/jrq1GdQw==","shasum":"c882390481ab871f1fd2a827918d7a6cfc55ea37","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.7.tgz","fileCount":39,"unpackedSize":146285,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSmyJ2y+fGQJmIeVvLJFWuNj2fAuf5plnt9NAVahkLeAiBaWKWnbbo4k1vAPzBs6+H9YdCi5EHVLdr8MQoGCoIGhQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifStKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRlBAAj5FPBa5CvXa8drrU9gKNbKPjOZBSJOAZk7nXoRPNlMIgD4Lc\r\nYsknOZTN7m54Vlg/chd0eT7+juOU0jpLRBEy+Rsz/MjOGjzloWnlPDALXI4a\r\n533P9yEyqqcBlOlf3HWK+owCighBpHZwu18BMv4/P3F2kqc8LdAoPUTfiOWS\r\nv97iYdUcR6YFVOmT3+xG76WTsHzVbivCmkxMZ3H5b4wX8zEvNWBdUAPjy4i1\r\nT9x9n56fArCSVc/ccQSIOBWcJu/FOSV0iK+mpdv3X6D6LWLVfnVAe1ND/S8M\r\ngZPC2CxQbic7MPVvgX7LDYhXGRoxKg/Iuf2kR/I3bBzb7PqEzJcKaa3rOML1\r\nFCCS4B9kQCZ1wGum2PFn8ddVoLlzkNkpSBDQ8yucKXsYqRZjEbBeaLQGmHK6\r\nmKTYEjyWA5mNvsx1GJqev6p7UpV/+hVewiou4E+bdiQ4PalWsscySr8Dt32N\r\nv4T+sOdJbD9or1aBYXElCaUg4dL7F9eqJVEU9fHOujwaAMmsQNOnBfw1aS1w\r\npltKqSkDVdCi1P0eyNfvIQ7DCgzl6rvZEEzrdHWNkw6bwhrfQH5aqmHwtqJs\r\n+IL9ur/r+BkiMOxUtriiKTI+vcpS1AnU5NzhDCuHYi94QUoPDMP8ZEBSZzvi\r\nmB/UuE6ziUfxv2g3i2+8yc39R5lEq4pYqzg=\r\n=aeUL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.7_1652370250212_0.6613401808622317"},"_hasShrinkwrap":false},"1.0.8":{"name":"use-chrome-storage","version":"1.0.8","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle","dev":"microbundle watch","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.191","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.7.1","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"5f43ea8f44a82fb8296f5272f5cf5551a7c021c7","_id":"use-chrome-storage@1.0.8","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-+3z6Loy36pHPlIpR3jmofo641nE7uCn2mOSMzMfn2InIhsIY8Elx0wHTBpkq9OfaGyKCJfMZ3m9X7Atad0cksA==","shasum":"c36f0c56e5572ba5d4d6183f420c2980bf9c69d6","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.8.tgz","fileCount":13,"unpackedSize":57021,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOU71JYMa0OnUTXNdyiCr6Q3Rcfk0yuX2ihhoUcSHkFQIgDTI4x+hO5fxQJyfpNTbgjmj4IVG+wU7Og7Ei87zUjp0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiueoZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplIg/7B6pNklWcmcVpNj38HDZoD9lMLrwfedC2HXWuLsKlQsPwR7Fd\r\nxS1H1V88sss19SoVLMsP9ZfEQredCYABSYCVNUYw+IxlwOuRlmMgZ83qh3YC\r\n0cRx9+4Iu3cvLD92FylzqXONnV++3bj3jS7v6ISPIoH6NP6wWiKrwHoxa7+n\r\n2Imjin9yfH7dOHQUH7M0t9MTPu46HEBiFVOHYKJcWzO9ma+D102QJkQx8cav\r\ntYduZzF6JyEf/tu6ENlzs6E4ArQwPYGJYSkvInr0Gekbwy5F5at0szOFPqmT\r\nveyFIj65+iakYVT1/IqjF32yfR+wYcNDUfY9LeVALsaOaKOR4fSYPUKngOBd\r\nOLfSYYqqQBaIV9jtAG2+6xmqpCYxdLE3RzMbbWomckI9ve73mx6hlK2zMFIY\r\nBav+nbXufUfujqqEjnopOhKtIt9tqlCmAmeSHrVomsALAGrKWiZjd5r3cCfy\r\niAGVjzzPTR9kQ+Pqic3ibYVDZHFbkYpY2TSXVIq8n/wbA4g2wNFVTo3J3dkQ\r\ntAugeuMJ6dbSeC/L5zG/ml0aMuuxHMqeGFb64fJCl1k/CU108i/tLchA3cp4\r\nUQHsoDlB0BT11qqwboweBWn5z2DYQX1U3k9XJUGy0ZXKbPQGuXtoQm7f1BM4\r\nIJot9hRiz8yNPUzHyp8qAD++mK2vhfmMwRs=\r\n=ycZN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.8_1656351257080_0.9404115748263415"},"_hasShrinkwrap":false},"1.0.9":{"name":"use-chrome-storage","version":"1.0.9","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.210","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"0197bfccee204f1dd83953ddc8ce3deef9700ad1","_id":"use-chrome-storage@1.0.9","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-mOuO37EIHGtavbbtrJglsSm0oP+SXQxs9BhPbetHPyCohl6yL+Iz8p9jMoXJAQNCEY2ZnanvNBL3wBlZ7MQgqg==","shasum":"7dae0d40468a62780bb05bf324bd140a342bf584","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.9.tgz","fileCount":13,"unpackedSize":60531,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH37Ishyc0toA2LWxakB56+UagLtRznYDDME0OEBlyJgAiEAlCM3bMoH4Vd5FOywgKAR8ih8GU/4LoF/mSgmJ+ZtmEc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3Nw0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp3oQ/+LzKW/bA40NyecQLximgqWYNs83Pfxu+4AGx2tb8C2JgpzKwl\r\nwulaK4H6G88CT/OuFESU9afPEKarhinAMm/7E21qK1Q6+JdU5+JgQoNAWQS6\r\nxF1Kt7Zb6ERZUErXjPFjf0rWB6rhSL6fE8Iz2L3eUTlmmoVCTw4dtht+Czja\r\ntw2hRJ0cioak/NmsdzgjyQh1uzJyHlVK7vh0AbRsN8KTg1Gze52gXSsibBjc\r\nFUHGlegM9JN2pmwyTBF3gJBbUezEo8j1FSNi7kbBZiTm00Wu3M7xUhX2C0ei\r\nI8bNiga1nfetThcmpecNEAWYxe4VPl6wP6vin84Ia0NyKEGrwF3NB47dxw3S\r\niq/XJYPMqAmfgeSQEXDI/5umzqeNeL9NpdFuRzCf4Hyf2i5KLHQ2j6AGTy61\r\nlF2GL9iBKZzXrjCKrY7n10A3kc8YpKfi7HWUSbQV9wjWUvAv9tcHJWv0Qb9m\r\nZ50D8Oocq8HkE8uS+91+CZLwwwCghKDmAgg4QNDPzE19sRRZkTXd77zaoXoL\r\n4nzmL/iMJ9dDVrZY8m0xnun9n646cDDYVc6FXKR3bIXq+S444PDsKGQLTM1Y\r\nG359R+NDAbwb6K+VOhJ3OyMTU7sN5jR3gRucfNzzM+2+Qzq74iONPwJNGNJw\r\ne0DOgJGza93m1ES6NFUn4ptHAKJ2AN0HQqA=\r\n=GcXb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.9_1675418676635_0.6635270436369345"},"_hasShrinkwrap":false},"1.0.10":{"name":"use-chrome-storage","version":"1.0.10","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.212","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"2b44cdafc15c6bbb793bf97695f382b9c69535eb","_id":"use-chrome-storage@1.0.10","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-aYeG8WFPZ1dwytL9anPq2e/rzRgPYZ+ILywRQp28PRkhgCYP+Mm+nKtm3w9uwXgoiz89LpgPWRly7L+jnYISQA==","shasum":"dd6d602a5b92d3e21c099c2ee4db3c297f007704","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.10.tgz","fileCount":13,"unpackedSize":60688,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRSbEBqo5E7qnrkSXxYHLYsjUv8ZjD3r1TUnH59rGOUAiBvdVDyUZBw1YCUEW1IV5yKpe08jkt0wOb0OtCTSxxb9g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4iVDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7aA//UMIZ9NOB1JJDAYl/qBU5j7g3i1fOXdGyOS7DKqgpPPfh+Zsx\r\nXmzj82YO2vo6tL+54Qq1AwdQB66SfUAumholQr5SOdcUpFeCaUI4SUicqHUW\r\nLkDrX0T68gDqqZhkSZUSDpbMk1Rs0cH7FSmRhy0M7HvLH1rfF3nBHwmSD7xP\r\n9dlgq5ouywI2LxA47QxNmTYTkiyyRsuA87NGvBCV4JtiX2OYGs1Xl5iZLb1o\r\nJeYsVponfhejsWRTnSekoBb+VHc0orNTCAmNHV2bNLCkqpFUM5LQp4z+pir1\r\nfsEBZxS/RiG0zshzRJDfahYhc3uL2vXTgYFdK5GNZ4X/B+UymsiDoUVuTvyE\r\naL0qA7WpqNDzDjmmceOoJL/aKHxsE9lRL8t6ANlhyRBg+BKXvJSyp9aAZhQZ\r\nzmMG+jBdrESqrixQ4TqU1UhWsqVENuIlpCasEE/w9SsfiHIixYPSk+gNzgCT\r\ndQ3YgRN5LNGjT86Y3H3xn1Wmjaamj4BxNsWQX2PZ/8niB0AFWhsIw43y3Q/a\r\nyvm3mSbgkE0+0MshWhrwphjIz6mtVTOau5sB44oSi+Lcwib91ywTCKidTyx1\r\n7Qpcmz4qp3heaMie9dgW+h0n+odrO6e4Q+YNS37hmpl/+tZ06SNCBluh+5pq\r\ngQsY5VYCHo4+thGV+/r8UeppDEz5oLowqAY=\r\n=auax\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.10_1675765059565_0.7911925050288358"},"_hasShrinkwrap":false},"1.0.11":{"name":"use-chrome-storage","version":"1.0.11","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.212","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"ce8777dd9ff39f09bfa9b2f63cfade65f7daccac","_id":"use-chrome-storage@1.0.11","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-MzB9AyuSH1JjFGjdjyotx44Wss3AzWCJRdqlR2OKKxrEN5B/E8dAeoeL/exkHaeOQ5+4ycpIwwKF3jr1eIMxJw==","shasum":"8c5fef92fb1f90795025399eedd0b3147584d5e8","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.11.tgz","fileCount":13,"unpackedSize":60873,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIFthdFxXL8g0l59n9yiamhAG5LUPFIs3YqFiCPPJCvAiEAkPQdT3LpEV+alvPBjtoMMyRZaNgWj7oQgR6Dnb5OS08="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5TxvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqg9Q//RhUVb4xguRZbafI3q0IVsM1CXg2WFusW8HaMxkxkZuX60tUx\r\nfKgZA0vTiFdbaCGCmwETnIpgofeUTz5YVCzT0IvWuvsi51MzROcTkO+rGce3\r\n1i3a6LtX5DZ7GMv12omIrzkvzBEfIZ11ki26TjrbBSN/sf11rUEIvC7u2iYW\r\naEeCecOJsL0jhOLWd2v1d9KZtEJfH8izRMzTl4twSyScUBHZ++6eaPXmtUUK\r\nx9dbHvclYDrCVWb+4P/i46YTVvmR+1/QOcBuZc5zh7pEVEx1SPECOvEhnSHC\r\nODCZiUOsoAxXpSa2+NISdO88KgeoVRWo/9tvmAa+E997cd37Fa8h4QPjD+vh\r\nUBtKsWh5hB1B/B4IfDZgmM19dCM5VyURWXG6KHTRJHOZvanzsotbfzY6P/7j\r\nEcd558YOWR7IhMrP779VXDtHp4V/ZXq9MuzPjBRaPuHQ4YX70XYeYJhtCTBR\r\ncjRMF+J5dvINFOPxXUP4Ds/s+3QlYhsvCJaFgVSWQRW5UhFvsQ8inO7Fj08w\r\nxkUpO5FwVp0l164wzbh9fZgNzVbciw+tJLapTXyM+J3/HEg5/zEMTpMiCFGR\r\nYTn3KAbohYBqeOMfR2lKx5MyMYG56NB5+QK6i4usZGXzbLhdxgcUAAQyF1HW\r\naOkI0nxlSI6ntw6zb5qJHkiT2r2PW+9gw1I=\r\n=k+8p\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.11_1675967599097_0.22876221167935973"},"_hasShrinkwrap":false},"1.0.12":{"name":"use-chrome-storage","version":"1.0.12","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.217","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"3f8040c8bf34ee060fa94a3f2502db72c7963461","_id":"use-chrome-storage@1.0.12","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-sbDX5ddpQGpR5v50HnUV0kQXpKNu3VLefItvcXDC1ogWvfBqMktq11u8N8Agyex0x2xdxup2mYLNOvsThExq8w==","shasum":"684371199151da1f4f3e51ec557cac99056e747c","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.0.12.tgz","fileCount":13,"unpackedSize":62031,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH8F3k+0aqC7R6T412P5uwHfdU0HwHe7C4AIFJG6KcKwIhAMQmvjerINuSziYIPwp6rNCGjdWgfMtkrARmUduCCtFA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAHEKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFbg//TUSJV7pabLT6KkIn9SA0Z6i4+PjmHqD8OKNf+EhIv4kj8VYr\r\nb6YbR4UQwuRGIWXiGc8npWF13TvJwm63nzPodMT5pdK5HIENoFnfL0YtmFw+\r\ncnN6va/88mPSBBhM9e8KgZfhbky/um75AhocIX/Pj0gNA3WMFJ8A4GmCFZq5\r\nLDMrZWSvymXUhZNrWc0ut33SiqFm1U8+nxU+4VpybB8URbmAXtBfRDLUqGiC\r\nXmQxq842iVzVED0p7dG8zVEd4pGAFOGGxV2oBQCUdhxkc3y1SZzGWXmMM6Qh\r\nebeJcMtLlGpNY11qApHHg7unAZqFKCNjeRjzw/nqChCeu3LRu3WjDH5F9Idy\r\nhfMT+IDemSOw5Am+PIFYHX2n9xsMuF1n0TOZ5rtFPnVXVI/2W4+z0IHhrH+j\r\nhI6WypwqzwQxNpmuRryN6U75tGjscmqgbcOcbpB3QYTcr/yYP9KMrRkYaAmh\r\nSp88ac/Q6Tiu5lnCInoEmdyoNQkUojHjyrM9t3rVhLNKT5VqFA3yD3nt4UwO\r\nbUD5YHeo9Vz1C9Dgx0USvQ9m0p9yY7FqxICwVYEGoM6NSNoP7+4wKfwcW/UK\r\nIJgVBoSRSfg1tpZFkPdrzKI0jkmXuhwXriS7zcS9fERQnvf1YtS1UBkyTPWt\r\nmwBO9FLXDwRU+IwbJhOnigeqrirZHuSisqQ=\r\n=IFYh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.0.12_1677750538497_0.47667391821663885"},"_hasShrinkwrap":false},"1.1.0":{"name":"use-chrome-storage","version":"1.1.0","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.219","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"b6b74310cc23c6ef55bca51445a757d1cf8a40ce","_id":"use-chrome-storage@1.1.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-ywUTVG9mT9aXVTrwHGwMmwlqiGZgLKZguRMEoOo3LPYDnmFYmbxrBBpqDNXRO01Lc67C1SyT6YUePsTjqZEb/Q==","shasum":"5d182ab47226e56dc7fd72452ab40a1e802851f3","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.1.0.tgz","fileCount":13,"unpackedSize":65613,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFx5hM8MLGJGCP2B3Ge2LFLq2/s37PqBke/InphBqUaSAiEAs8LSNEuT/9igPKNZa4qoEH6UhIRoi0e3VjCVxbjcWkk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkBceuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXYA/5Aekuk32WYf39YF0DnE6RWCM5gnFjHKSiib1BdJoCn9YCOhcP\r\ntzkVt9Mn96cymJqG+/5sGH2M5mfHniHZcfyRP0JwheUs5jLQSN5eUc2aFbIL\r\n6z9thPjRhqd8bNo2cGa8LPTXjB1NtSy80Fi2LCEQ4otblTfXp+QlU7e1/ZhJ\r\n2yo9mX5vWFQEnr9q+bxrB3Va8CjveFNQGU1UKu9KOhKeFNY+9faBH1FSpK2s\r\ngrIVaFfe2Md7Oze+kggHu5KkKdKQJxSOtnA8+0PYhQoVSpk3KqBdtGbW5gZc\r\n27AAnRXE04v/OcbbCYT+hQBpZ+A5qm2wWaBMvKcrAm38ykctfUCF89/IbKAT\r\nXW48i2jAyXPWTq1wIE5SPReJ3cuONmRLjlR7n++flbFUjpbOxdGiE3UcIbcP\r\nvbMxGvN6Fzh0h9bdabf/QZSdyIidPuSJ+ZNyJyJUZkqZlE5UccuKyAJVoiDz\r\nGlcfSEEmcBQSAIulykAdyIg+Mz/5n0uIOpbza8IKkrOTsg1uF1GdwVFbVvI1\r\n8+CT6QudfsVDHXqbNp42wSPdd4zZVDJ4vDs5cN/Qun6lG/SGs43tIgtFcwFh\r\n1eVU2V25e7qLVfwTXeFM65ud2vH7VdlbkZNxgKCJn8V5GjcLtlh6V5dddIoA\r\nLcDokc/qu2anOWiqIWQSjcnPJ6Ws4FEnRoA=\r\n=7cE/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.1.0_1678100398445_0.6211662107519245"},"_hasShrinkwrap":false},"1.1.1":{"name":"use-chrome-storage","version":"1.1.1","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.219","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"40ff61ce2c481833bf852ff37a5bc8ed9017866e","_id":"use-chrome-storage@1.1.1","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-A+6578HVayoPnZ3acMZlIiHns+0vQElQMSkrkMSEjZSUly2258/9BAQPruLvOfQ4KY5dzD8nVAhbK+hhBU3cbQ==","shasum":"5abd22b4a96e44439bbab36b5720371500649051","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.1.1.tgz","fileCount":13,"unpackedSize":66280,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDm4Xg16/qYaOBm92jSEWYXBuNs1vRLZ4zD3kxExTni0AIgTtDQDkazPty8bow71mTvzps4iewc99zSAeq78SaKO1I="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkBxdaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmonXg//XT61DRpqf1HzldhRyQapmSqHbs/cPJIHGRz3IB/VeT6+2S0m\r\n8KcLdQCBhFbUm4F5VaH33OjeS6CFvvzkv78bAVHQw9UXsjF3YsJakNeAEAm/\r\nW4PByQWh/OQEiPD70Mffklx+SBONjzpFXQouTWzJViUnPrY92uh2g0Ffyu06\r\nXkZZWugqxIyfFoktBg1pCSNivxwqV6183Wl7LS7QUxB2eCyn4A2iBhy7FBuj\r\n0U6ezfPdECuGkQx10TH6rhFxkioLgjku7V1EjsLBm4qv3HXwqeGwNQP/CQts\r\nL17Pm8PDXiL1hcBLazPtGKGj/XsfgPaSIzmG4RgfeqgPZvxy95YeVMl1U+NO\r\nZG5Yh1/q535lPOSUSpseE+sSypjHLMxmAz/t+T30KxPYPqWMDkVU1x+MVDE6\r\nZNW6OVRIUiFTFdwJBW+9kiJMF1UzK5JZU+ql6WwHepB+H0K0PHgawJakpZAp\r\nFoI7iMNVUQqTTKM/kNsd7YVac1bp91AnT4pD+2hNRKvePhKaKFBwNp/PL0lE\r\neKotVvVjkZah9mmLPH1i4bLaTogwOims3PAsh+en4MBbeQVtemgVqiXqx98h\r\nB5YFxbTA+pJGjbNStXiuLwXRHp++g6jnidxqgSBg+oICUo3LujiekPcMkhoK\r\ng/EVJ1Fy22HshntB9RHj+gaig1h3iSb3KvA=\r\n=NRMi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.1.1_1678186330341_0.056355239177143135"},"_hasShrinkwrap":false},"1.2.0":{"name":"use-chrome-storage","version":"1.2.0","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.219","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"f282a2e00ee8b286e39dbc08aa546b0345c2140f","_id":"use-chrome-storage@1.2.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-NMvG27IxCSTEopmbnC4km0SPUhH+6I3sMKdngbkda36dg7+ZcZ2uipbD1yZLF+MDa9esvvAlA5+z+5tIuQWZNQ==","shasum":"617b6d8d68da959aff814cf51ca54299414c9043","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.2.0.tgz","fileCount":13,"unpackedSize":81424,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDf4r+EiXJtLFHpYUF1IvKVmLQe5VBCkVsTrCFnWaE49AIgIrdqY39/IcEuytkz2tBFv3hlDxPt1+jY/oywF9aeT1k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkC07tACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQSRAAgxA6E6foevFXqNWRF0fT4phyfRzWryv0nDIWd+0lsEpkqmSW\r\nwOkl2RCDxtYtV9ZXIlUBih4uz6aMvyRjPBSCr0jJXCYwBC1AeY5JdKMw8Q/B\r\nRdtuTGGNqHO/eu/RWCFma8wIZ3gjgkBAD9/DI7jFBzgXCXrPKJWUbJ+qpnJi\r\nDqHwz5axCessEu3lr5hX//U5zTkuzCnNie6wWZPFW43jWIDsRcTaM7aGH01S\r\ny961znsebCJgsHU2YxlHFtc8QQ5yYkdJRlYGOlS3Urkj0ep8HawpreZDNyoX\r\n6SJBvsbvaA/VcKQp8I25ERxZ/nlon682Yf5o2X2G8zzvNcX9f7GQecXIyh3S\r\nS0uPWIGLQ4fWEGfCBC7w8UflZtfqW6t+w+14JueI2p3Le1ko7hYmsfX03Ron\r\nEpa0T3h4C23dwHPatUeV6SNF+PJt+gKXwcNKaTJWk+UvzKhykeC5u2fSrXHW\r\nzrFKniHaiSiF1cf3yml9x4D3jV13vKGO8RAh2AlvlEVpezpfq/z6r+ym5grQ\r\nama40DXDjxkGnoHNss56uPUE9kJp4jY4WS3xYubPoxb8AMXjdhqJ+Uax/+N3\r\njB66ujQQnxeMgwnEb0qP4bT8PLFSpL3UlKgF9N6WlTnP91UoSgPmlnSSTMEa\r\niVA5FpyjYk/pvhYtloZ0fIvc6juCT1JSoh0=\r\n=jhps\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.2.0_1678462700837_0.11333581629974643"},"_hasShrinkwrap":false},"1.2.1":{"name":"use-chrome-storage","version":"1.2.1","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.225","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"5e24d87ecd82afaa5c4e330f214a0a654e8ab23f","_id":"use-chrome-storage@1.2.1","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-Xpcd8/kHy4yXN8XfEjFuL5QtAQQhg+/HlIOUdpBJEv6s0ncU2o9DmQ2SW8PPx7i5+tDVyDzOPVD8pFW5mEGmcg==","shasum":"8dce69465ea1c7996ac717d4d504bb274eff371d","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.2.1.tgz","fileCount":13,"unpackedSize":84698,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/H7rhA3iRwpMpQJ0SUzbSRcnHiEs/rJUU2SxQokwdXQIhAJwSIMkT6p2IcZPVXXnq3mICMXgk5oHpcZuvvhRWvNus"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJFFLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJtA//RUHQ1XiUf4HsIn51FoMunSNADSa8tvlYcxlkMfZHjTixEvNN\r\nrx9myWRwifX0M69A+HQqSAaXkoej8X1+9mzWzHf8AYYyBimgv+/Ir+r8UAKf\r\ntT+scN2u2FLYExBKy7wJCui7M1F/VPi8PZvXoD/06piqHaMMup8Flw/y3KUe\r\ne7z9C8Qu72dWuKkAoRB7PtQ3coUL1YtO4LDWzbxsrW9PhuBvaWopVERaXz8h\r\nyzgMWaOiGleeIsRJYYG0KUiPhP/D3UNoKWCG9PLEF1jf3ENEUqycgezn8R0m\r\n/eabYaIajvYcE0BOkMxjrZCFyNUH3Y85pN5HFy9DnVlUX/dj1gP6zO3E+uwh\r\nd5wtvWF4F3ZKoQqETU+kvvFgrBHU7ukNKLP5xKgJFAgNXJQLvCeYWdwJ/TS9\r\nNQXhudjXR8odDmOnAHrNXHx2zzkgip1HSJBpq1+DX6v2NshdRpvcmdRZflTL\r\nL8qkOeNnU/ayrBbiUO07c353MPHI9qWP8aao3Y8WO9L8FE5wukFrIorZ5Ux4\r\nDSpSCpm5sbhudMo/pjvJYZAVnJK26Wf3RwvgNEWRmBMvSO9qJ9+jIEekZ5vc\r\nCatJtzuBzPs42cWiMIUYUF7ebcIu/gGY0EDMEaSXlOmPQlv+vZIuKqY8iLIi\r\nzImLTygn+u6HZLSscMxiOPw0wCBZEmqCFhE=\r\n=35Jm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.2.1_1680101707685_0.7725668638581886"},"_hasShrinkwrap":false},"1.2.2":{"name":"use-chrome-storage","version":"1.2.2","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.239","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"2be3dc2eca044bf4094b62fcc6613cd3d67d01be","_id":"use-chrome-storage@1.2.2","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-/9xW7LWERd4q58n2oApAeOLKvqhGYEtcFXnU82Kcv9bCPeGF784zkm1dN9dJYXBZjdYQbLDHTwIvacagZDhjKQ==","shasum":"0b15de3e13513e3d3dbdbe5c7c1c3caba1c93069","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.2.2.tgz","fileCount":13,"unpackedSize":84934,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRmV6x5vjdN24JXV6JPHokGcm0gOvKeVZj1uc19+L0DAiAHnNNzroVDjMQ2furICg7yZkOSY00jPYPYTn1euUo1MA=="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.2.2_1689333307811_0.8556252091658871"},"_hasShrinkwrap":false},"1.3.0":{"name":"use-chrome-storage","version":"1.3.0","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.259","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"_id":"use-chrome-storage@1.3.0","gitHead":"5ac56a6619673f2a0af14d6568295efa281d1ae6","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-zdeAAHU1zsjNSy78I8GCtcWJkbpG0Iqwiiv42c2sDQ0HXTGGZHh7pAsFiHdZFEBYBIJM+ENkpGOQ06MNouBRoA==","shasum":"c7e93a5cc0b98280caff4494195f9bcbc10d2f0c","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.3.0.tgz","fileCount":15,"unpackedSize":95550,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+sEro/2ajK9tzfBfdGwRjetdUH1C2ReRo8NR6kIQSSwIhAOZyToISDvOx0xKlwdfD/9nvOlKjwdWVWn4xVnSGLa1O"}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.3.0_1708049560626_0.49057401671487155"},"_hasShrinkwrap":false},"1.3.1":{"name":"use-chrome-storage","version":"1.3.1","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.268","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"gitHead":"a2a007ed7da2730d6c4fbf669960d77832e60147","_id":"use-chrome-storage@1.3.1","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-gqpdWMLCIHtVQ9fnODURRN/+WNdKNZ3IDKuo29sRt5xtzHFTEgFtupKAnHPt7D8HWuDLjbVRq36u9K05nsOWdA==","shasum":"7a069dfbda1c5dab2af71ce6eb89043456bc1bb4","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.3.1.tgz","fileCount":13,"unpackedSize":87651,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGmUR7vG6UnC8juh8ISohqEN6OGijZ57OslwAi095ZnWAiEAyKepRMNlIJbJfZrAibYyhM+EHaawvvhXYvGc3sSdves="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.3.1_1715974974083_0.20903721671656217"},"_hasShrinkwrap":false},"1.3.2":{"name":"use-chrome-storage","version":"1.3.2","description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","source":"src/index.js","main":"dist/index.js","module":"dist/index.es.js","umd:main":"dist/index.umd.js","typings":"index.d.ts","scripts":{"build":"microbundle --generateTypes false","dev":"microbundle watch --generateTypes false","release":"npm run build && np --no-yarn --no-cleanup","preview":"npm run build && np --no-yarn --no-cleanup --preview","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"homepage":"https://github.com/onikienko/use-chrome-storage#readme","author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"license":"MIT","peerDependencies":{"react":"^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"devDependencies":{"@babel/core":"^7.14.6","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@testing-library/react":"^11.2.7","@testing-library/react-hooks":"^6.0.0","@types/chrome":"^0.0.268","babel-jest":"^26.6.3","eslint":"^8.3.0","eslint-plugin-react":"^7.24.0","eslint-plugin-react-hooks":"^4.2.0","jest":"^26.6.3","jest-chrome":"^0.8.0","microbundle":"^0.15.0","np":"^7.5.0","react":"^17.0.2","react-dom":"^17.0.2"},"dependencies":{},"_id":"use-chrome-storage@1.3.2","gitHead":"904217c6b688fca5ba00099fd7235f77b8fba129","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-8AONdHW7bo7t0PSypcMuSPUX8du37fdyqUuPKy6PVmXBEK6vVyvcKmlO6N7f/2ZuXvhmr1SemRD27qFxfElTtg==","shasum":"54ebfef8473eb7ff87490e26ef75f0f0b585ec6a","tarball":"https://registry.npmjs.org/use-chrome-storage/-/use-chrome-storage-1.3.2.tgz","fileCount":15,"unpackedSize":95990,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAkv7jp/HBZjqRGAMEIMAPOq2zP503EufC1Knvo8H3AKAiEAsjd7RRS8ce8aLWZjPfDst3sCXGEBzqdIITrV6zwBrmw="}]},"_npmUser":{"name":"onikienko","email":"michael.onikienko@gmail.com"},"directories":{},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chrome-storage_1.3.2_1716940905348_0.7661435994551891"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-22T18:00:30.356Z","1.0.0-0":"2021-02-22T18:00:30.501Z","modified":"2024-05-29T00:01:45.790Z","1.0.0-1":"2021-02-23T16:08:26.325Z","1.0.0":"2021-02-23T17:48:35.802Z","1.0.1":"2021-04-07T16:00:36.951Z","1.0.2":"2021-05-25T14:55:12.938Z","1.0.3":"2021-06-21T16:01:07.245Z","1.0.4":"2021-06-29T16:08:09.415Z","1.0.5":"2021-11-22T11:58:39.559Z","1.0.6":"2022-02-17T14:09:41.928Z","1.0.7":"2022-05-12T15:44:10.427Z","1.0.8":"2022-06-27T17:34:17.249Z","1.0.9":"2023-02-03T10:04:36.899Z","1.0.10":"2023-02-07T10:17:39.761Z","1.0.11":"2023-02-09T18:33:19.379Z","1.0.12":"2023-03-02T09:48:58.676Z","1.1.0":"2023-03-06T10:59:58.611Z","1.1.1":"2023-03-07T10:52:10.492Z","1.2.0":"2023-03-10T15:38:20.978Z","1.2.1":"2023-03-29T14:55:07.887Z","1.2.2":"2023-07-14T11:15:07.998Z","1.3.0":"2024-02-16T02:12:40.835Z","1.3.1":"2024-05-17T19:42:54.300Z","1.3.2":"2024-05-29T00:01:45.619Z"},"maintainers":[{"name":"onikienko","email":"michael.onikienko@gmail.com"}],"description":"Custom React hooks for `chrome.storage.` You may use it for keeping global persisted state in chrome extensions.","homepage":"https://github.com/onikienko/use-chrome-storage#readme","keywords":["react hooks","chrome storage","browser storage","react state","chrome extension","browser extension"],"repository":{"type":"git","url":"git+https://github.com/onikienko/use-chrome-storage.git"},"author":{"name":"Mykhailo Onikiienko","email":"michael.onikienko@gmail.com"},"bugs":{"url":"https://github.com/onikienko/use-chrome-storage/issues"},"license":"MIT","readme":"# use-chrome-storage\n\n☝️ This package is for usage in Chrome (and Chromium-based) Extensions, but it should work with Firefox extensions too.\n\nCustom React hooks for `chrome.storage.` You may use it to keep the global persisted state in Chrome Extensions.\n\n**Note:** Since it's a React hook, it may be used only in the React context.\nSo it's impossible to use this package in the background service worker.\n\n- Simplify work with `chrome.storage`\n- Supports `chrome.storage.local`, `chrome.storage.sync`, and `chrome.storage.session`\n- Can be used as persisted state available in different extension's contexts (content script, popup, options page)\n- Listen for `chrome.storage` changes and keep the local state updated\n\n## Install\n\n```bash\nnpm i use-chrome-storage\n```\n\n## Usage\n\nThis package requires the storage permission in manifest.json:\n\n```json\n{\n    \"name\": \"My Extension\",\n    \"permissions\": [\n        \"storage\"\n    ]\n}\n```\n\nFor usage with chrome.storage.**local** use `useChromeStorageLocal` hook. For chrome.storage.**sync**\nuse `useChromeStorageSync` hook. Use `useChromeStorageSession` for chrome.storage.**session**\n\n### Usage of useChromeStorage\n\n```javascript\nimport React from 'react';\nimport {useChromeStorageLocal} from 'use-chrome-storage';\n\n\nconst LocalCounter = () => {\n    // If you need to state be preserved in `chrome.storage.sync` use useChromeStorageSync\n    // for `chrome.storage.session` use useChromeStorageSession\n    const [value, setValue, isPersistent, error, isInitialStateResolved] = useChromeStorageLocal('counterLocal', 0);\n    return (\n            <div>\n                <button\n                        onClick={() => {\n                            setValue(prev => (prev + 1));\n                        }}\n                >\n                    Increment in Local Storage\n                </button>\n                <div>Value: {value}</div>\n                <div>Persisted in chrome.storage.local: {isPersistent.toString()}</div>\n                <div>Error: {error}</div>\n                <div>Is state from chrome.storage already loaded? - {isInitialStateResolved.toString()}</div>\n            </div>\n    );\n};\n```\n\n### Usage of createChromeStorageStateHook\n\nIf you want to use the same `key` in different components in different extension parts in the React context (like in PopUp,\ncontent scripts,\n) you need to use `createChromeStorageStateHookLocal`(for chrome.storage.**local**),\n`createChromeStorageStateHookSync` (for chrome.storage.**sync**)\nand `createChromeStorageStateHookSession` (for chrome.storage.**session**).\n\nInitialize storage:\n\n```javascript\n// common/useSettingsStore.js\nimport {createChromeStorageStateHookLocal} from 'use-chrome-storage';\n\n\nconst SETTINGS_KEY = 'settings';\nconst INITIAL_VALUE = {\n    showAvatar: true,\n    showHistory: false,\n};\n\nexport const useSettingsStore = createChromeStorageStateHookLocal(SETTINGS_KEY, INITIAL_VALUE);\n```\n\nUse `useSettingsStore` on the options page:\n\n```javascript\n// options.js\nimport React from 'react';\nimport {useSettingsStore} from './common/useSettingsStore';\n\n\nconst Options = () => {\n    const [settings, setSettings, isPersistent, error, isInitialStateResolved] = useSettingsStore();\n\n    const handleChange = event => {\n        setSettings(prevState => {\n            return {\n                ...prevState,\n                [event.target.name]: event.target.checked\n            };\n        });\n    };\n\n    return (\n            <div>\n                <label>\n                    <input\n                            type=\"checkbox\"\n                            name=\"showAvatar\"\n                            checked={settings.showAvatar}\n                            onChange={handleChange}\n                    />\n                    <span>Show Avatar</span>\n                </label>\n                <label>\n                    <input\n                            type=\"checkbox\"\n                            name=\"showHistory\"\n                            checked={settings.showHistory}\n                            onChange={handleChange}\n                    />\n                    <span>Show History</span>\n                </label>\n                {isInitialStateResolved && <div>Initial state from \"chrome.storage\" is loaded</div>}\n                {!isPersistent && <div>Error writing to the chrome.storage: {error}</div>}\n            </div>\n    );\n};\n```\n\nOr from the content script:\n\n```javascript\n// contentScript.js\nimport React from 'react';\nimport Avatar from './common/Avatar';\nimport History from './common/History';\nimport {useSettingsStore} from './common/useSettingsStore';\n\n\nconst Card = () => {\n    const [settings] = useSettingsStore();\n\n    return (\n            <div>\n                {settings.showAvatar && <Avatar/>}\n                {settings.showHistory && <History/>}\n            </div>\n    );\n};\n```\n\nIn the same way, you may use it for PopUp.\n\n### Initial Value flow\n\nSay we have the next hook:\n\n```javascript\nconst [value, setValue, isPersistent, error, isInitialStateResolved] = useChromeStorageLocal('counterLocal', 1);\n```\n\nSay in the `chrome.storage.local` we already have: `counterLocal: 10`.\n\nChanges of `value`:\n\n1. `value` is 1 (`initialValue` set in the hook)\n2. `useChromeStorageLocal` calls to Chrome API (this API is async) to get the value of `counterLocal`.\n\n- `value` changes to *10*\n- `isInitialStateResolved` changes to `true` indicating that `value` synchronized with data saved in `chrome.storage`\n\n### Usage with `chrome.storage.session`\n\n`useChromeStorageSession` and `createChromeStorageStateHookSessin` use `chrome.storage.session` to persist state.\nBy default, it's not exposed to content scripts,\nbut this behavior can be changed by calling `chrome.storage.session.setAccessLevel('TRUSTED_AND_UNTRUSTED_CONTEXTS')`\n(call it from the background script).\nhttps://developer.chrome.com/docs/extensions/reference/storage/#method-StorageArea-setAccessLevel\n\n### Clearing or removing storage items\n\nSuppose you want to reset all your stored items back to their initial values. \n\nYou could, for example, use `chrome.storage.local.clear()` (or their 'session', 'sync' counterparts) to clear the entire storage.  \nAlternatively, you can use `chrome.storage.local.remove(key)` to remove a specific storage item.\n\nThis will trigger a sync event in your `useChromeStorage[Local|Session|Sync]` hooks, setting them back to their _initial value_.\n\n## API\n\n### useChromeStorageLocal(key, initialValue?)\n\nThe state will be persisted in `chrome.storage.local` (and updated from `chrome.storage.local` if it was updated in other\ncontexts). If you want to use this hook in more than one place, use `createChromeStorageStateHookLocal`.\n\n- `key: string` - The key used in `chrome.storage.local`\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.local` has no stored value yet or when a stored item is removed (unset)\n\n#### Returns\n\n`[value, setValue, isPersistent, error, isInitialStateResolved]`\n\n- `value: any` - stateful value like first one returned from `React.useState()`\n- `setValue: function` - function to update `value` like second one returned from `React.useState()`\n- `isPersistent: boolean` - Will be `true` if data is persisted in `chrome.storage.local`. In case of error\n  during `chrome.storage.local.get` or `chrome.storage.local.set` value will be stored in memory only and `isPersistent`\n  will be set to `false`\n- `error: string` - If `isPersistent` is `true` will contain empty string. Otherwise, will contain error returned\n  by `chrome.runtime.lastError`.\n- `isInitialStateResolved: boolean` - will set to `true` once `initialValue` will be replaced with stored in\n  chrome.storage\n\n### useChromeStorageSync(key, initialValue?)\n\nSimilar to `useChromeStorageLocal` but will use `chrome.storage.sync`. State will be persisted\nin `chrome.storage.sync` (and updated from `chrome.storage.sync` if it was updated in other contexts). If you want to\nuse this hook in more than one place, use `createChromeStorageStateHookSync`.\n\n- `key: string` - The key used in `chrome.storage.sync`\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.sync` has no stored value yet\n\n#### Returns\n\n`[value, setValue, isPersistent, error]`\n\n- `value: any` - stateful value like the first one returned from `React.useState()`\n- `setValue: function` - function to update `value` like the second one returned from `React.useState()`\n- `isPersistent: boolean` - Will be `true` if data is persisted in `chrome.storage.sync`. In case of an error\n  during `chrome.storage.local.get` or `chrome.storage.local.set` value will be stored in memory only and `isPersistent`\n  will be set to `false`\n- `error: string` - If `isPersistent` is `true` will contain empty string. Otherwise, will contain error returned\n  by `chrome.runtime.lastError`.\n- `isInitialStateResolved: boolean` - will set to `true` once `initialValue` will be replaced with stored in\n  chrome.storage\n\n### useChromeStorageSession(key, initialValue?)\n\nSimilar to `useChromeStorageLocal` but will use `chrome.storage.session`. State will be persisted\nin `chrome.storage.session` (and updated from `chrome.storage.session` if it was updated in other contexts). If you want\nto use this hook in more than one place, use `createChromeStorageStateHookSession`.\n\n- `key: string` - The key used in `chrome.storage.session`\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.session` has no stored value yet\n\n#### Returns\n\n`[value, setValue, isPersistent, error]`\n\n- `value: any` - stateful value like the first one returned from `React.useState()`\n- `setValue: function` - function to update `value` like the second one returned from `React.useState()`\n- `isPersistent: boolean` - Will be `true` if data is persisted in `chrome.storage.session`. In case of an error\n  during `chrome.storage.session.get` or `chrome.storage.session.set` value will be stored in memory only\n  and `isPersistent` will be set to `false`\n- `error: string` - If `isPersistent` is `true` will contain empty string. Otherwise, will contain an error returned\n  by `chrome.runtime.lastError`.\n- `isInitialStateResolved: boolean` - will set to `true` once `initialValue` will be replaced with stored in\n  `chrome.storage.session`\n\n### createChromeStorageStateHookLocal(key, initialValue?)\n\nIn case you want to use the same `key` in different components/extension contexts you could create the state hook which can\nbe used across the extension. See [example](#usage-of-createchromestoragestateHook). The state will be persisted\nin `chrome.storage.local`.\n\n- `key: string` - The key used in `chrome.storage.local`\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.local` has no stored value yet\n\n### Returns\n\n`function(): [any, (value: any) => void, boolean, string, boolean]` - `useChromeStorageLocal` hook which may be used\nacross\nextension's components/pages\n\n### createChromeStorageStateHookSync(key, initialValue?)\n\nSimilar to `createChromeStorageStateHookLocal` but uses `chrome.storage.sync`. In case you want to use the same `key` in\ndifferent components/extension contexts you could create a state hook that can be used across the extension.\nSee [example](#usage-of-createchromestoragestateHook) and replace with `createChromeStorageStateHookSync`. State will be\npersisted in `chrome.storage.sync`.\n\n- `key: string` - The key used in `chrome.storage.sync`\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.sync` has no stored value yet\n\n### Returns\n\n`function(): [any, (value: any) => void, boolean, string, boolean]` - `useChromeStorageSync` hook which may be used\nacross extension's components/pages\n\n### createChromeStorageStateHookSession(key, initialValue?)\n\nSimilar to `createChromeStorageStateHookLocal` but uses `chrome.storage.session`. In case you want to use the same `key` in\ndifferent components/extension contexts, you could create a state hook that can be used across extension.\nSee [example](#usage-of-createchromestoragestateHook) and replace with `createChromeStorageStateHookSession`. State will\nbe persisted in `chrome.storage.session`.\n\n- `key: string` - The key used in `chrome.storage.session`\n- `initialValue: any = undefined` - value which will be used if `chrome.storage.session` has no stored value yet\n\n### Returns\n\n`function(): [any, (value: any) => void, boolean, string, boolean]` - `useChromeStorageSession` hook which may be used\nacross extension's components/pages\n\n## Thanks to\n\n[use-local-storage-state](https://github.com/astoilkov/use-local-storage-state) for inspiration\n","readmeFilename":"README.md"}