{"_id":"@advanced-rest-client/arc-proxy","_rev":"7-dca1403922dde8aa9f5daeec202e98d9","name":"@advanced-rest-client/arc-proxy","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@advanced-rest-client/arc-proxy","version":"0.1.0","author":{"name":"Pawel Uchida-Psztyc","email":"pawel.psztyc@gmail.com"},"license":"Apache-2.0","_id":"@advanced-rest-client/arc-proxy@0.1.0","maintainers":[{"name":"jarrodek","email":"jarrodek@gmail.com"},{"name":"twoplustwoone","email":"francisco.digiandomenico@gmail.com"},{"name":"lbauret","email":"leandro.bauret@mulesoft.com"},{"name":"carowright","email":"carolina.wright@mulesoft.com"}],"contributors":[{"name":"Your name can be here!"}],"homepage":"https://github.com/advanced-rest-client/arc-proxy#readme","bugs":{"url":"https://github.com/advanced-rest-client/arc-proxy/issues","email":"arc@mulesoft.com"},"dist":{"shasum":"d649344e9da34de15803ea3cbf30cc71c718af2f","tarball":"https://registry.npmjs.org/@advanced-rest-client/arc-proxy/-/arc-proxy-0.1.0.tgz","fileCount":14,"integrity":"sha512-pxzTe2PSo0kYWjJI93GLpRVhCh9GjfYlzferV1Hm9yWkibqSXJGclykZQoOZjC5dpfWP3ifHooJJDK8QovyzFg==","signatures":[{"sig":"MEUCIGWYRIzYsywul5K/MbkMb+ZFDp4PV4k8JFwXA03XEMtuAiEAqqIztglBg8N18z95albA1EsLy2F9wr+p3v4CJVVMzlA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwtXnCRA9TVsSAnZWagAABCYP/Az7ijknrjHc5SemAGw9\n2zYeZiKhpChonnoxulh3EB+XlKuOnGqzogfEvL4znOh6gAXKiawc4VvkgbuP\nQUgLA9At/yAlICYvKFii2A+W9eklZVySS//oZJ+mtz6KvvzWJCcu0DgZgJce\n9qw0R1yD3T6AaQGIlaNvRH4jIawQECp6q5ml2C+GqBM0jdbN/N4beaBnT9/R\n/vPsuzkPApuUHasrxuOVfSMqkSwDyc1KWU0qrhJu/w+bz8MhI4ahejdMpo8+\nQCqlwO3JrobQg4XQLGImJOYRCjs4WDyjeVDTwRZEONhYeSIebQSV6fv6jApp\nCe6KZpfSmEE5DZM7IUL7emUqjQDlz0NmQZr+KZo29jwPz02yGMpExXMCWaig\nHg6tNDHTMyju/3voAfb6R+umnjDDuVmdnI4g6Q2S7V+Ra8oDnxdYcxkaK0yG\nZivSsYbweHKp6gToL3yvkuM9LUpZ8VsB32248hztuTa/jH53Kag7/AG+FVVM\nrkj1mkVlUTcPCgCoqS9dpOfowqXW8qkUSP+7UWA+2DeTDnWF+MD3C6JvNauV\n3dleBFKLWsgZU81NyhLImD5LtiuxGxqm4WcqF9F/XxnVA/NjojmyHuqKD09o\n3cgVszxtKzSKReORgFIsfWDCBkCx5a6TRo7d/IJh0G+632lkyzn5x7locvbZ\njz86\r\n=xQF+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","type":"module","module":"index.js","gitHead":"edc6919d2e0c553d96a89f15909e652324c39a5b","scripts":{"test":"mocha test/*.test.js --timeout 10000","prepare":"husky install","dev:start":"node dev/runner.js","test:force":"mocha test/*.test.js --timeout 10000 --exit"},"_npmUser":{"name":"jarrodek","email":"jarrodek@gmail.com"},"repository":{"url":"git://github.com/advanced-rest-client/arc-proxy.git","type":"git"},"_npmVersion":"6.14.15","description":"A web service to proxy ARC requests through it.","directories":{},"lint-staged":{"*.js":["eslint --fix"]},"_nodeVersion":"14.18.1","dependencies":{"esm":"^3.2.25","koa":"^2.13.4","uuid":"^8.3.2","@koa/cors":"^3.1.0","@koa/router":"^10.1.1","@advanced-rest-client/events":"^0.2.29","@advanced-rest-client/electron":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","chalk":"^4.1.2","husky":"^7.0.2","mocha":"^9.1.3","eslint":"^8.1.0","get-port":"^6.0.0","@types/koa":"^2.13.4","typescript":"^4.4.4","@babel/core":"^7.16.0","@types/chai":"^4.2.11","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@types/mocha":"^9.0.0","@commitlint/cli":"^13.2.1","@types/koa__cors":"^3.0.3","@types/koa__router":"^8.0.9","@babel/eslint-parser":"^7.16.0","@babel/eslint-plugin":"^7.14.5","eslint-config-google":"^0.14.0","eslint-plugin-import":"^2.25.2","eslint-config-prettier":"^8.3.0","eslint-plugin-no-only-tests":"^2.6.0","@commitlint/config-conventional":"^13.2.0"},"_npmOperationalInternal":{"tmp":"tmp/arc-proxy_0.1.0_1636418075282_0.5470102080247532","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-11-09T00:34:35.207Z","modified":"2026-04-07T19:30:21.501Z","0.1.0":"2021-11-09T00:34:35.432Z"},"bugs":{"url":"https://github.com/advanced-rest-client/arc-proxy/issues","email":"arc@mulesoft.com"},"author":{"name":"Pawel Uchida-Psztyc","email":"pawel.psztyc@gmail.com"},"license":"Apache-2.0","homepage":"https://github.com/advanced-rest-client/arc-proxy#readme","repository":{"url":"git://github.com/advanced-rest-client/arc-proxy.git","type":"git"},"description":"A web service to proxy ARC requests through it.","contributors":[{"name":"Your name can be here!"}],"maintainers":[{"email":"jarrodek@gmail.com","name":"jarrodek"},{"email":"alexperez@mulesoft.com","name":"alexperez_march_2024"},{"email":"elmellidiego@gmail.com","name":"dmacias"}],"readme":"# ARC proxy server\n\nA node web server that runs on [Koa](https://koajs.com/) that provides an API to proxy HTTP request.\n\nThe intended use is to proxy ARC/API Console requests from a web browser without CORS restrictions.\n\n## Usage\n\n### Installation\n\n```sh\nnpm i @advanced-rest-client/arc-proxy\n```\n\n### Running the server\n\n```javascript\nimport Server from '@advanced-rest-client/arc-proxy';\n\n(async () => {\n  const httpPort = 8080;\n  const sslPort = 8081;\n\n  const sslOptions = {\n    key: fs.readFileSync('key.pem'),\n    cert: fs.readFileSync('cert.pem')\n  };\n  \n  const srv = new Server();\n  srv.setupRoutes('/api/v1'); // optional prefix for the API routes.\n\n  await srv.startHttp(httpPort);\n  await srv.startSsl(sslOptions, httpPort);\n\n  // when ready...\n  await srv.stopHttp(); \n  await srv.stopSsl(); \n})();\n```\n\n## API routes\n\nSee the API spec in `spec/` folder for more details.\n\nNotes:\n\n- Examples assume no API prefix and port 8080\n- Example responses are formatted for readability\n\n### Proxying a request\n\nThe proxy server uses the ARC request object definition for the request.\n\n```http\nPOST /proxy HTTP/1.1\nHost: localhost:8080\nContent-Type: application/json\ncontent-length: ...\n\n{\n  \"request\": {\n    \"url\": \"https://httpbin.org/get\",\n    \"method\": \"GET\",\n    \"headers\": \"x-test: true\"\n  },\n  \"config\": {\n    \"followRedirects\": false\n  }\n}\n```\n\n#### Proxy response\n\n```http\nHTTP/1.1 200 OK\nContent-Type: application/json; charset=utf-8\nContent-Length: ...\nDate: Sat, 06 Nov 2021 00:01:15 GMT\nConnection: keep-alive\nKeep-Alive: timeout=5\n\n{\n  \"response\": {\n    \"status\": 200,\n    \"statusText\": \"OK\",\n    \"headers: \"...\",\n    \"payload\": {\n      \"type\": \"Buffer\",\n      \"data\": [102, 168, ...]\n    },\n    \"timings\": {\n      \"connect\": 10,\n      \"receive\": 2,\n      \"send\": 15,\n      \"wait\": 2,\n      \"blocked\": 0\n      \"dns\": 4\n      \"ssl\": 12\n    },\n    \"loadingTime\": 123,\n    \"redirects\": [],\n    \"size\": {\n      \"request\": 1234,\n      \"response\": 5678\n    }\n  },\n  \"transport\": {\n    \"httpMessage\": {\n      \"type\": \"Buffer\",\n      \"data\": [102, 168, ...]\n    },\n    \"startTime\": 123456789,\n    \"endTime\": 123456789\n  }\n}\n```\n\n## Development\n\n```sh\ngit clone https://github.com/advanced-rest-client/arc-proxy\ncd arc-proxy\nnpm install\n```\n\n### Running the tests\n\n```sh\nnpm test\n```\n\n## Credits and license\n\nThis library has been created by Pawel Uchida-Psztyc on his own free time. It is licensed under Apache 2 license.\n","readmeFilename":"readme.md"}