{"_id":"@apihero/interceptors-js","_rev":"2-b016b408051f6a39e8ff5d08471a3603","name":"@apihero/interceptors-js","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@apihero/interceptors-js","version":"1.0.0","license":"MIT","main":"./lib/index.js","module":"./lib/index.mjs","types":"./lib/index.d.ts","publishConfig":{"access":"public"},"devDependencies":{"@apihero/tsconfig":"*","@open-draft/test-server":"^0.5.0","@types/expect":"^24.3.0","@types/express":"^4.17.13","@types/node":"^18.11.0","@types/node-fetch":"2.6.x","@apihero/eslint-config-vite":"*","express":"^4.18.2","happy-dom":"^6.0.4","node-fetch":"2.6.x","page-with":"^0.6.0","rimraf":"^3.0.2","tsup":"^6.2.3","tsx":"^3.7.1","typescript":"^4.8.4","until":"link:@types/@open-draft/until","vite":"^3.1.4","vite-tsconfig-paths":"^3.5.1","vitest":"^0.24.4","webpack":"^5.74.0"},"dependencies":{"@mswjs/interceptors":"^0.17.6","@open-draft/until":"^2.0.0","@types/debug":"^4.1.7","debug":"^4.3.4","headers-polyfill":"^3.1.2","outvariant":"^1.3.0"},"scripts":{"build":"pnpm run clean && tsc --build","clean":"rimraf lib","dev":"tsc --build -w","lint":"eslint ./src --fix","typecheck":"tsc --project ./tsconfig.json --noEmit","test":"pnpm run test:node && pnpm run test:browser","test:node":"vitest -c vitest.node.config.ts --run","test:browser":"vitest -c vitest.browser.config.ts --run"},"description":"Low-level HTTP/HTTPS/fetch request interception library for Node.js and [Fetch platforms](https://fetch.spec.whatwg.org)","_id":"@apihero/interceptors-js@1.0.0","_integrity":"sha512-Fwg32qGP52miXsCvF369zgWI+sNqPAv3T4oODsf7w+WBECVzg9DQqe9MVHz7djJ+m4MXl7XJu3BD5dOiJMgVHQ==","_resolved":"/private/var/folders/fr/dy9tj7997xgcpqb3glwt_6_40000gn/T/8420ff1a7831bc5628ecd0277dd8833d/apihero-interceptors-js-1.0.0.tgz","_from":"file:apihero-interceptors-js-1.0.0.tgz","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-Fwg32qGP52miXsCvF369zgWI+sNqPAv3T4oODsf7w+WBECVzg9DQqe9MVHz7djJ+m4MXl7XJu3BD5dOiJMgVHQ==","shasum":"e09de4d323c3a557be531788041bf844d06a4e5f","tarball":"https://registry.npmjs.org/@apihero/interceptors-js/-/interceptors-js-1.0.0.tgz","fileCount":39,"unpackedSize":60743,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEZIyJCANAClKBQq6iKBgNFfqz/v0Wc8IPoJxTOkFK2AiEA09QuqobEkxY+YUGzQ3gdV0edU7l7sfMuipHXn7FleTs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJja8z3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmogEQ//eAVY11xxENmE0d5/RETY1WcuccvKFXXLqmAiVgy5bKYD+rXx\r\nYW/Er797W/xr3QI5bZcoG92rhGXjkcgVRQpc0XntlIqwMuIbg2pFW9GwcxD3\r\nZqk/u4b3d1Ols0T7WPzryxV9kdxburwvs0pA0nI/E+V997Lm4EWPi3N/IpJN\r\nLCD6LwtJ5HLzrbGYFqaGYm6xQgsHg6rxQVon4HSsV3MxA4Bi8pTOU4MvS3i6\r\n61Lkt7Cn2P7nB6NjZJBAn16n3AvZS2Me3A8pnGu7N6sdyjiC6LZwh9X58nr/\r\nb0tbiuHoa7QfdfkcDybCZaC5VRtYq9vwugXpZy7QDkoQElyyua1wcOeyqgT0\r\n5f+N47xGfcSqbjoaUZmRvrArvD7UX7S98DL+SUP51nZct/9OVAsIiLtAYZRp\r\nLi7XFgkToioiL+ptQl2AmvSptVhuUWCZMlCFbztPI/3hlGZlQdLQfyhPu6GE\r\nxrRTprf0b1TQWzQmr32nz0RoPmn2SzvxWXp6iFlJXcfVP+QCIhxkMcKYWvpq\r\nC4V6rgpiSMYJuEywz7x06VvoNT5fEl2GndJPtPswlN6zTzgWcaFedEWvnSeL\r\nm3VmaCBxAObehDe/qRxi5Koka9YfV9SHZ2pod/UFmAs+LAKGuVrX4uEZy9wz\r\ngb/nXCnkwQEntJb7d9VrM4JkPzMxbhwnWrs=\r\n=11b2\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/interceptors-js_1.0.0_1668009207601_0.41098167893661697"},"_hasShrinkwrap":false},"1.0.1":{"name":"@apihero/interceptors-js","version":"1.0.1","license":"MIT","main":"./lib/index.js","module":"./lib/index.mjs","types":"./lib/index.d.ts","publishConfig":{"access":"public"},"devDependencies":{"@apihero/tsconfig":"*","@open-draft/test-server":"^0.5.0","@types/expect":"^24.3.0","@types/express":"^4.17.13","@types/node":"^18.11.0","@types/node-fetch":"2.6.x","@apihero/eslint-config-vite":"*","express":"^4.18.2","happy-dom":"^6.0.4","node-fetch":"2.6.x","page-with":"^0.6.0","rimraf":"^3.0.2","tsup":"^6.2.3","tsx":"^3.7.1","typescript":"^4.8.4","until":"link:@types/@open-draft/until","vite":"^3.1.4","vite-tsconfig-paths":"^3.5.1","vitest":"^0.24.4","webpack":"^5.74.0"},"dependencies":{"@mswjs/interceptors":"^0.17.6","@open-draft/until":"^2.0.0","@types/debug":"^4.1.7","debug":"^4.3.4","headers-polyfill":"^3.1.2","outvariant":"^1.3.0"},"scripts":{"build":"pnpm run clean && tsc --build","clean":"rimraf lib","dev":"tsc --build -w","lint":"eslint ./src --fix","typecheck":"tsc --project ./tsconfig.json --noEmit","test":"pnpm run test:node && pnpm run test:browser","test:node":"vitest -c vitest.node.config.ts --run","test:browser":"vitest -c vitest.browser.config.ts --run"},"description":"Low-level HTTP/HTTPS/fetch request interception library for Node.js and [Fetch platforms](https://fetch.spec.whatwg.org)","_id":"@apihero/interceptors-js@1.0.1","_integrity":"sha512-t6nvXXPHNqOJQ3a1QWS7mwTOf8fyTRPfnsNN66IuGNz2iqSYNXHnFOnJFnM/Ikkou1zzNhPvD9i8kJelOMoW6A==","_resolved":"/private/var/folders/fr/dy9tj7997xgcpqb3glwt_6_40000gn/T/a6eb6c1e7ef5c8392686ff6feec288fc/apihero-interceptors-js-1.0.1.tgz","_from":"file:apihero-interceptors-js-1.0.1.tgz","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-t6nvXXPHNqOJQ3a1QWS7mwTOf8fyTRPfnsNN66IuGNz2iqSYNXHnFOnJFnM/Ikkou1zzNhPvD9i8kJelOMoW6A==","shasum":"af65ea7ea4f769ea5bf72332c78cf34f6b5772b9","tarball":"https://registry.npmjs.org/@apihero/interceptors-js/-/interceptors-js-1.0.1.tgz","fileCount":39,"unpackedSize":62346,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCc6E06GT6haKkj8Pl/Issyqa8abH9hKPwAsalmF5q5xQIgUje/mBSlOLVM6GFZh2R/blj8qgwXNOaDarlaqWt28H4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjclgGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVShAAmIY9F2dWWasTv1Zoxp/X+p0zxgFe9lEQesFl9uXczKAgwmfr\r\nTruHq2tFMiIrJqfXbLr3cCkljCPgsQ10rPfyEvA/c6NurNBV0fYvQnsml2Re\r\nBDalXgzCLi5D3L/CLkgwGbFPmq5Ag+VoHLXr90GMW6itA7WEfip6gV7RN0r6\r\nSxCOtpv2gOdvbETHHQO6A7/i9PEtb7PFrCM9nHEK8ioKo++CqH2PepvMFB8Z\r\nFEK1fxadrNZjzFKL8T2uZP9yD6yyIEDXSUvGvE4MRON3MP1ghgv7sQsReQ6I\r\n6uLOCNpbfvMLVFEgNfhxGK7Ja3Si3Oikr1Spm9cOxVSHqZ50mib2bfLYsT//\r\npsx+SW1Gnidu2BeaVhvfFWWEBHNmpVpQ13e2wjx4/Iyeq1JcydNp2FDinmHs\r\ncMCfg7AIHNcTYzTVN0K+dDXLfLlIYFYB6VSywY6pJkDC7ASOWYINdfrvjRmt\r\nZVKo/LXUPfPAuH0MhCpC3900CF087xVHXVz2UjD+AgW2RkdyogrxslQG8Q5F\r\ng1kPqQ2hHharze2XPOVCV0OTl9bfGAF8Qi1cM/mIiUOoOtxkWZBX0zMVnnyC\r\nf8/YgLt3of1WlKPvfi5qmj1PdNI9eoVVAntlhdkLtGKS0DRNPJHs2FjYEK5P\r\nsnPyGn0V+qj3mYMeHfP0qL8haTZDDlFv8II=\r\n=pVlw\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/interceptors-js_1.0.1_1668438022424_0.8627645525248149"},"_hasShrinkwrap":false},"1.0.2":{"name":"@apihero/interceptors-js","version":"1.0.2","license":"MIT","main":"./lib/index.js","module":"./lib/index.mjs","types":"./lib/index.d.ts","publishConfig":{"access":"public"},"devDependencies":{"@apihero/tsconfig":"*","@open-draft/test-server":"^0.5.0","@types/expect":"^24.3.0","@types/express":"^4.17.13","@types/node":"^18.11.0","@types/node-fetch":"2.6.x","@apihero/eslint-config-vite":"*","express":"^4.18.2","happy-dom":"^6.0.4","node-fetch":"2.6.x","page-with":"^0.6.0","rimraf":"^3.0.2","tsup":"^6.2.3","tsx":"^3.7.1","typescript":"^4.8.4","until":"link:@types/@open-draft/until","vite":"^3.1.4","vite-tsconfig-paths":"^3.5.1","vitest":"^0.24.4","webpack":"^5.74.0"},"dependencies":{"@mswjs/interceptors":"^0.17.6","@open-draft/until":"^2.0.0","@types/debug":"^4.1.7","debug":"^4.3.4","headers-polyfill":"^3.1.2","outvariant":"^1.3.0"},"scripts":{"build":"pnpm run clean && tsc --build","clean":"rimraf lib","dev":"tsc --build -w","lint":"eslint ./src --fix","typecheck":"tsc --project ./tsconfig.json --noEmit","test":"pnpm run test:node && pnpm run test:browser","test:node":"vitest -c vitest.node.config.ts --run","test:browser":"vitest -c vitest.browser.config.ts --run"},"description":"Low-level HTTP/HTTPS/fetch request interception library for Node.js and [Fetch platforms](https://fetch.spec.whatwg.org)","_id":"@apihero/interceptors-js@1.0.2","_integrity":"sha512-qKZ5bRd4jhFeTbc0Kax82UIfQFqL6cXSEnq1tlyJwAlPGW1r0nhv+lUZzx7Au4azScJRIsqKncie6qby9uk+Uw==","_resolved":"/private/var/folders/fr/dy9tj7997xgcpqb3glwt_6_40000gn/T/449c59a4facce7325b2486b61c7600a7/apihero-interceptors-js-1.0.2.tgz","_from":"file:apihero-interceptors-js-1.0.2.tgz","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-qKZ5bRd4jhFeTbc0Kax82UIfQFqL6cXSEnq1tlyJwAlPGW1r0nhv+lUZzx7Au4azScJRIsqKncie6qby9uk+Uw==","shasum":"6315a33c6ac6caacf023308e2bb9e40191cd7929","tarball":"https://registry.npmjs.org/@apihero/interceptors-js/-/interceptors-js-1.0.2.tgz","fileCount":39,"unpackedSize":62388,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID0TNktlrijxK3yvA9k0PCFpER7U0t+TlOa2vMWvqQs6AiBG3N3pamIyYhMFnJ/SwP5tuEJBWbGJgpe4OmxAppCu4A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc18YACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqO2g//fESSeEGfqFqq10opyodYd8HniGIuY9lMOasUqJqWM2wUCVZq\r\n1rhun57zFiqSf6/xFK4NsUzLl1ismk5rPjwxjKeUrozXEQAtvFELfrFWvEFh\r\nS4bmRv1P3bQ+j5/pXkj/ArsVe5Z5tdqYbHRFBrIGF7M1OTIaR0tNFDJKO15C\r\nFM9QZltN8+UfTsXVcsw08fJsEBPL8T+790PExuM/shGFXsDUA7+UVHLoxirr\r\nnhBuUz5lJEf0FCzkTZUPUh+wjT1gEvRqC/i+jqopgazaacPGI8mLU8LfEbVf\r\nNx4Hd79sTXV6VPWdEC8/ZAwKyLkYKm9f8YvA4EqB8v7IxoEu2Q/XEwi8gUyU\r\nlH5mgRfwZemcOoJhS+Rogea55aDxsk5QcISy4MvXB0taNRaA+Rj7jmCnBeGN\r\n2+CnWYLDAIMeRG4qGIFQLSMfwct20VbsnPrKUVSxTFTf8+nh/0+1t4EIGuGU\r\n2oHDEsDKC32rM6wGa+ElXW0pYSYbpCNvKDbQXIsEWlrPMEST2cAHKs5g+BQU\r\n065DwbK8y/51kNoBbI7tf/MkA/cgpOKUleZbfRWMm0fn+fWkznui2ykdxy4V\r\nSCI6A7J2xvd+Hu4jBlV7XCtds4qGIJaCV9KFiEmdhHPgalCuctPoQ4yhO3Y1\r\ncuMQ+9XPtR6imk1Kt+2SJz1j2maoHErG8Tg=\r\n=9pab\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/interceptors-js_1.0.2_1668505368386_0.1488712140132169"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-09T15:53:27.545Z","1.0.0":"2022-11-09T15:53:27.831Z","modified":"2022-11-15T09:42:48.676Z","1.0.1":"2022-11-14T15:00:22.577Z","1.0.2":"2022-11-15T09:42:48.567Z"},"maintainers":[{"name":"mattaitken","email":"matt@mattaitken.com"},{"name":"ericallam","email":"eallam@icloud.com"}],"description":"Low-level HTTP/HTTPS/fetch request interception library for Node.js and [Fetch platforms](https://fetch.spec.whatwg.org)","license":"MIT","readme":"## @apihero/interceptors-js\n\nLow-level HTTP/HTTPS/fetch request interception library for Node.js and [Fetch platforms](https://fetch.spec.whatwg.org)\n\n### Motivation\n\nThis library was inspired by [@mswjs/interceptors](https://github.com/mswjs/interceptors), but is not for mocking. Instead, this library allows requests to be intercepted and **altered** before they are sent, in a way that does not require an extra request fetching library.\n\n### Usage\n\n```bash\nnpm install @apihero/interceptors-js\n```\n\n### Fetch Intercepting\n\n```typescript\nimport { FetchInterceptor } from \"@apihero/interceptors-js/lib/interceptors/fetch\";\n\nconst interceptor = new FetchInterceptor();\ninterceptor.apply();\n\ninterceptor.on(\"request\", (request) => {\n  console.log(`request ${request.method}: ${request.url.href}`);\n});\n```\n\n#### Modifying requests\n\nUse `request.requestWith()` to modify a request before it is executed.\n\n```typescript\nimport { FetchInterceptor } from \"@apihero/interceptors-js/lib/interceptors/fetch\";\n\nconst interceptor = new FetchInterceptor();\ninterceptor.apply();\n\ninterceptor.on(\"request\", (request) => {\n  // Use a different url for the request, and override a header\n  request.requestWith({\n    url: new URL(request.url.pathname, \"https://proxy.url\"),\n    headers: {\n      \"x-override\": \"this is a new header\",\n    },\n  });\n});\n```\n\nIf you want to modify the host of a ClientRequest, make sure to also listen to the `connect` event and respond with the `request.connectWith` callback:\n\n```typescript\nimport { ClientRequestInterceptor } from \"@apihero/interceptors-js/lib/interceptors/ClientRequest\";\n\nconst interceptor = new ClientRequestInterceptor();\ninterceptor.apply();\n\ninterceptor.on(\"connect\", (request) => {\n  // Connect to a different host\n  request.connectWith({\n    url: new URL(request.url.pathname, \"https://proxy.url\"),\n  });\n});\n\ninterceptor.on(\"request\", (request) => {\n  // Also override a header\n  request.requestWith({\n    headers: {\n      \"x-override\": \"this is a new header\",\n    },\n  });\n});\n```\n","readmeFilename":"README.md"}