{"_id":"@apihero/browser","_rev":"1-abdb8b7c590a54ccad2d846f622867c3","name":"@apihero/browser","dist-tags":{"latest":"1.3.16"},"versions":{"1.3.15":{"name":"@apihero/browser","version":"1.3.15","publishConfig":{"access":"public"},"license":"MIT","main":"./lib/index.js","types":"./lib/index.d.ts","bin":{"apihero-cli":"cli/index.js"},"exports":{".":{"default":"./lib/index.js"}},"sideEffects":false,"dependencies":{"@open-draft/until":"^2.0.0","chalk":"^4.1.1","debug":"^4.3.4","inquirer":"8.2.x","outvariant":"^1.3.0","yargs":"^17.6.2"},"devDependencies":{"@apihero/eslint-config-vite":"*","@apihero/tsconfig":"*","@types/debug":"^4.1.7","@types/expect":"^24.3.0","@types/express":"^4.17.13","@types/fs-extra":"^9.0.13","@types/node":"^18.11.0","@types/node-fetch":"2.6.x","babel-minify":"^0.5.2","cors":"^2.8.5","esbuild":"^0.15.12","express":"^4.18.2","fs-extra":"^10.1.0","happy-dom":"^6.0.4","page-with":"^0.6.0","rimraf":"^3.0.2","ts-loader":"^9.4.1","tsup":"^6.2.3","tsx":"^3.7.1","typescript":"^4.8.4","vite":"^3.1.4","vite-tsconfig-paths":"^3.5.1","vitest":"^0.24.4","webpack":"^5.74.0"},"scripts":{"build":"npm run clean && npm run build:tsup","build:tsup":"tsup","clean":"rimraf lib","dev":"tsup --watch","lint":"eslint ./src --fix","test":"vitest -c vitest.config.ts --run"},"description":"## Installation","_id":"@apihero/browser@1.3.15","_integrity":"sha512-CDc8YmWhxTXdFE3W7vpGcqfXAMhG4t9UqbtKjwJY5wUC3Yq43edgx2OaQADykyvgZh3COVS8kMDyhZhlsxeKLg==","_resolved":"/private/var/folders/fr/dy9tj7997xgcpqb3glwt_6_40000gn/T/efc05542ce2c3540d42a3901d00de171/apihero-browser-1.3.15.tgz","_from":"file:apihero-browser-1.3.15.tgz","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-CDc8YmWhxTXdFE3W7vpGcqfXAMhG4t9UqbtKjwJY5wUC3Yq43edgx2OaQADykyvgZh3COVS8kMDyhZhlsxeKLg==","shasum":"5f558183f85b153c2038ff03e28ec6e824022846","tarball":"https://registry.npmjs.org/@apihero/browser/-/browser-1.3.15.tgz","fileCount":15,"unpackedSize":192571,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDat8ly+0/CZoRP1NHMHl0Aa5xuGx6HbZY7OnRl8KjYnQIhANthpnKqaZtU65AbXoeoIJSNp+CiaxPE4MDP70Uabf6J"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfK6dACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4mw//bXd2a+wd1oKdn+SkXuJDiwOkuUX3JVwUGmNLzVrNcfWVYtoY\r\nHZhV644fP0GsGT9+h1M8ZnXR4Um55dRqEgcZ5I1gf/528sg+h53KvlLcsc7G\r\n5wXZzZWhOcqfAxZFgBcgh2zY6V8O5RJ7nPJao3uEzJpgNVJMXOtFlzJiK85B\r\nqXbqfPsVbPF3QtP5AD8PNd62QnvFBlrjL2Xacp+pMKGqi70Fl+R7XqOZO0rT\r\nhtje5N5VVlgKWqRZDOJ1TwT6ZR+Dc6lqiVSnU9Oy1j6oDM71NuQzI2YdyOQZ\r\n7+tEgG/+PU6uyrYkt+9aLkgnDDczwA5nkFxuRuXkoKxszYxbfFH+sBPdcG2e\r\nANy8w3EOzsXrbr7o7j9wY6GOtxWSjQnUhpFTq9sS2vydQdjNuWdDIkGX4Mis\r\n22tvUEckx04Ryu6PpFDeS6zAhGWKdaAytu2JlvOGk2nlK5YpdNQvud5MnsoA\r\nS6V3QihRnhC5oIS5tBjj2+lWQsrHljmzjIO0qUi39ioKVvas1wsGf1cOZYzl\r\nmT6zt4+zLdAW2NAz318BmegwfPL/5mfrTBDvEZ7gJ6G0PyHB+fHwx9UcGroC\r\nu7szPHMFNjKcONNv1K/dKoXvUu9VwpQBEoMzoedYIka0MimNI/Q6fMBjhsqL\r\n6tfRb+3EDiMscl/utxARj5jtps1lpKxcxl8=\r\n=7gT1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ericallam","email":"eallam@icloud.com"},"directories":{},"maintainers":[{"name":"mattaitken","email":"matt@mattaitken.com"},{"name":"ericallam","email":"eallam@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/browser_1.3.15_1669115549672_0.6461795531007555"},"_hasShrinkwrap":false},"1.3.16":{"name":"@apihero/browser","version":"1.3.16","publishConfig":{"access":"public"},"license":"MIT","main":"./lib/index.js","types":"./lib/index.d.ts","bin":{"apihero-cli":"cli/index.js"},"exports":{".":{"default":"./lib/index.js"}},"sideEffects":false,"dependencies":{"@open-draft/until":"^2.0.0","chalk":"^4.1.1","debug":"^4.3.4","inquirer":"8.2.x","is-node-process":"^1.0.1","outvariant":"^1.3.0","yargs":"^17.6.2"},"devDependencies":{"@apihero/eslint-config-vite":"*","@apihero/tsconfig":"*","@types/debug":"^4.1.7","@types/expect":"^24.3.0","@types/express":"^4.17.13","@types/fs-extra":"^9.0.13","@types/node":"^18.11.0","@types/node-fetch":"2.6.x","babel-minify":"^0.5.2","cors":"^2.8.5","esbuild":"^0.15.12","express":"^4.18.2","fs-extra":"^10.1.0","happy-dom":"^6.0.4","page-with":"^0.6.0","rimraf":"^3.0.2","ts-loader":"^9.4.1","tsup":"^6.2.3","tsx":"^3.7.1","typescript":"^4.8.4","vite":"^3.1.4","vite-tsconfig-paths":"^3.5.1","vitest":"^0.24.4","webpack":"^5.74.0"},"scripts":{"build":"npm run clean && npm run build:tsup","build:tsup":"tsup","clean":"rimraf lib","dev":"tsup --watch","lint":"eslint ./src --fix","test":"vitest -c vitest.config.ts --run"},"description":"## Installation","_id":"@apihero/browser@1.3.16","_integrity":"sha512-PZBaPQHGxpRElFaatdMO8sEYLEHwjUPKR/GfOi7uQDSnNA8HIxk3n/yVzTS/3aAfv+/9D4kCu4WPZRKUiClKSQ==","_resolved":"/private/var/folders/fr/dy9tj7997xgcpqb3glwt_6_40000gn/T/1ceb93cb60a616e213a810d2ec968818/apihero-browser-1.3.16.tgz","_from":"file:apihero-browser-1.3.16.tgz","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-PZBaPQHGxpRElFaatdMO8sEYLEHwjUPKR/GfOi7uQDSnNA8HIxk3n/yVzTS/3aAfv+/9D4kCu4WPZRKUiClKSQ==","shasum":"9b81b4b4213149644620664aca0a7d32e61427ed","tarball":"https://registry.npmjs.org/@apihero/browser/-/browser-1.3.16.tgz","fileCount":15,"unpackedSize":186267,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDk6RXQCN5hlXtD7iaQ7lxskmPkZRnW76NcDi41RQ+tBAIhALY3+d0Os+09osfdT9dhP/qGA4NtPpnex2pROcbjt1Q/"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfNwzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqNzhAAkRaQzAQ8SC9HEhBYgt2S6/VJ7ojJbPRNh5Z9SK5VjKQgh0mc\r\nJ0GuREvDX7zTCI/W8w4oP71KdnfPrUZa/mpPvDWySkxIsk/Mx7ahRqaA0b3j\r\nxR9fzWtMVEqaBDpUT5x3+8OpHaVHlthX2j8fz39ZIYbuw8lhN80KS9rIBTU2\r\nFsp1S3DjibGht3DFRdNnyfmRLwWjFR/ooHV/1//E9CUnOq4cG/moZeLalctx\r\ne9ivzKW0CMBRAYEuQoBqERsOCrc9Y6v9ifqo7Wn9O48EL3m7BnPeoY8oYtx/\r\nLjw1uzQDcjhnXtnso5zvsA+dvXeS3b+1J56XuVhLGiDvJcOBBCVYwnud7yNt\r\ndgi3xVWIVZtA4DXWTZ77u0Q2s2B+aHmdvIr4Dp6RDaVmLqs1/p+9FYi5ep7I\r\nl54dSjVqRMFOI3SR9jQlFFfRjloVOJ5vKg78n3IjITimHRPNAFne2GVzSpFs\r\njJIM0DT5n2XS8hJhLjPhOvNLMiE1Kd/uUAxVrF0rWcZQ21YkZHoIV6ThLggd\r\n3BJeazSbdMNxxjOVoYVvp5pZ7EIR0FY3FxoKe4zl5ARG/IhbTIPVhKm8pDi8\r\nfeluxCnCy39RbIuZOE1VFhFlj7q+D+PK/R5Scj53q/dqQ7yTmOTIVJjd5EEP\r\ny+poTAeWFw0uEorDkgdQqFAGHJdazzVlPYc=\r\n=uiJn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"ericallam","email":"eallam@icloud.com"},"directories":{},"maintainers":[{"name":"mattaitken","email":"matt@mattaitken.com"},{"name":"ericallam","email":"eallam@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/browser_1.3.16_1669127219155_0.2513712452208263"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-22T11:12:29.599Z","1.3.15":"2022-11-22T11:12:29.855Z","modified":"2022-11-22T14:26:59.493Z","1.3.16":"2022-11-22T14:26:59.346Z"},"maintainers":[{"name":"mattaitken","email":"matt@mattaitken.com"},{"name":"ericallam","email":"eallam@icloud.com"}],"description":"## Installation","license":"MIT","readme":"# @apihero/browser\n\n## Installation\n\n```bash\nnpm install @apihero/browser\n```\n\n## Usage\n\nThis library uses a Service Worker approach to capture and proxy API requests performed in the browser, so the setup is slightly different from Node.\n\nYou'll first need to add the Service Worker code to your public directly, using the `apihero-cli` cli:\n\n```typescript\nnpm exec apihero-cli init public/ --save\n```\n\nNext, create a file to setup the worker, for example in `src/apihero.js`:\n\n```javascript\n// src/apihero.js\nimport { setupWorker } from \"@apihero/browser\";\n\nexport const worker = setupWorker({\n  // You MUST supply the allow option for setupWorker, to ensure too many requests are not sent to the API Hero proxy\n  allow: [\"api.github.com\", \"api.twitter.com/users/*\"],\n  deny: [\"myprivateapi.dev/*\"],\n  projectKey: \"hero_123abc\",\n  url: \"https://proxy.apihero.run\",\n});\n```\n\nFinally, will need to start the worker in your application code. For example, in a React app\n\n```javascript\n// src/index.js\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport { worker } from \"./apihero\";\n\nworker.start();\n\nReactDOM.render(<App />, document.getElementById(\"root\"));\n```\n\nYou could also restrict proxying to only local dev like so:\n\n```javascript\n// src/index.js\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\n\nif (process.env.NODE_ENV === \"development\") {\n  const { worker } = require(\"./apihero\");\n  worker.start();\n}\n\nReactDOM.render(<App />, document.getElementById(\"root\"));\n```\n","readmeFilename":"README.md"}