{"_id":"@cantoo/capacitor-http-server","_rev":"9-82ec996ff4da9e67c781e967366bfce5","name":"@cantoo/capacitor-http-server","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"@cantoo/capacitor-http-server","version":"1.0.0","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.0","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/Sharcoux/capacitor-http-server#readme","bugs":{"url":"https://github.com/Sharcoux/capacitor-http-server/issues"},"dist":{"shasum":"b41f955edbff47a2a06ce53da56e610a3f51200f","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.0.tgz","fileCount":26,"integrity":"sha512-VGMuYwZ211cXkPoYSLm0VrEzg8uUV0qbA57tc8w38haknzWGrkLrSXYHOgJFzFovmbHB2fZIakNlsmkB51Drbw==","signatures":[{"sig":"MEUCIAG59rgzcz7cd4fs4rQ8FeMs7kW3TdKpM64zcNbPap9AAiEAh/2H3MJAORW17ovtsDVk8OoG4P5jHBPVdprG1hY9F6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109294},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","gitHead":"89d0493122f4f4fefbf8f21b1df7176777bcf6eb","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/Sharcoux/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.0_1776756961897_0.0785677919302914","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cantoo/capacitor-http-server","version":"1.0.1","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.1","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"dist":{"shasum":"d0482de7631468f190b5449dd0e78fe358b87ac9","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.1.tgz","fileCount":26,"integrity":"sha512-Te4QzEHHXmzmemPKkq1N2ALmIpNRnRmfx4Lt7JAs4gWQUdhBPr1B/IHqG3SK+6N+dd3j8eCOdGyUW9AWF8S6oQ==","signatures":[{"sig":"MEQCIB03OEcdEyPWScc91xaBmdyuYK4YIRRRh3GI4c3rX9MqAiByBT/iSX32eateGmn5Gwn4CkKigDJBAOXhIkmkKHUjqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109545},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/plugin.cjs.js"},"./package.json":"./package.json"},"gitHead":"53ae8c7d5da8a440b96941e781b78acca4b5b67b","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.1_1776766048454_0.9954323055368774","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cantoo/capacitor-http-server","version":"1.0.2","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.2","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"dist":{"shasum":"209226d5fa1c9b26757d8f9975e56113503245c2","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.2.tgz","fileCount":26,"integrity":"sha512-XNEhA42sZfFSGFY7V0DEGk6N50fPMLXTgP/l51WxoxMqVCg9yUlDdvqa23oThjz7Q2DWGWXg9fLjEJXSpxDNEw==","signatures":[{"sig":"MEUCIQCZBSmQ/DSWdb50R9wZHlnkTagMlUa1w0RLw/KkwdNbigIgPKMau8QafRuHM2kLHCrKPQfo8+uKYcWO5bbgJKHAvZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109587},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/plugin.cjs.js"},"./package.json":"./package.json"},"gitHead":"3606d6f5669e0f46ad6d8d360c76977131a450c4","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.2_1776783441011_0.8231398247064439","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@cantoo/capacitor-http-server","version":"1.0.3","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.3","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"dist":{"shasum":"e6ab87efef646bd015453758ac61b754327a8c89","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.3.tgz","fileCount":26,"integrity":"sha512-s9Eu8QkV1gCa62Q42DFY79A40Nm7+AheUOMakt48XQxTxMdMi6O4Upe5L3UrNwAfpL7XGuH2FLa+3oeBgS1NnQ==","signatures":[{"sig":"MEUCIQCHmnKLHGWohDPRN/STKwIL1JCLWgCvVEY5ImljDpkG3AIgdq+e4twgAL+y5tH7a6pQVDHsGnajsJnSRVeIkJGlxlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":110099},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/plugin.cjs.js"},"./package.json":"./package.json"},"gitHead":"f5cea65275ebf3accfa215cc551a87c646c166ef","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.3_1776785152733_0.42307417265109226","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@cantoo/capacitor-http-server","version":"1.0.4","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.4","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"dist":{"shasum":"2aec3666f9be3db9b0fd6dbe751c064f61511eab","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.4.tgz","fileCount":26,"integrity":"sha512-DUl4gEA7G9/a178tWzsHD9XwRAJqf0OwqapTA3/FkERlG/0gJPpuiWGlPxTdzy2WHV+VGS2E9SZeh+ISdWOFAA==","signatures":[{"sig":"MEUCIDQ+eX6InIoAlcR/NW+s5Lf2nvLLZWbtMlJlWJo2lPrKAiEA/exdlKNR1HKmFclwHlxMplvW9NX2geP2YnN9FK0rIyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111230},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/plugin.cjs.js"},"./package.json":"./package.json"},"gitHead":"d33dd668af0c45e9f1f05b026360bc99843ff0a8","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.4_1776789460601_0.7618997042416951","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@cantoo/capacitor-http-server","version":"1.0.5","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.5","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"dist":{"shasum":"9ab00c21242bee7f65b0aa4b95ccd34bf37f32ff","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.5.tgz","fileCount":26,"integrity":"sha512-/4GWpEvHV3Ii58DfpXgVt3MzrGkakAnQxfL6ZhzM4Fby+3VZKHIumvrrPi5fhaxGvcblj0D9O6jqZbzsq/ZMsg==","signatures":[{"sig":"MEQCIEEshB6rTFTICY6Aaa9D8uyJcI+1krFALtEZtizerfGnAiBibVq0EkRb8XyHcdaEYZytf5gJskt4Vie7KbuABaQdLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112813},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/plugin.cjs.js"},"./package.json":"./package.json"},"gitHead":"eb485914ad1b28de2774272dd45034abc0a42c21","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.5_1776815494262_0.030492080150899215","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@cantoo/capacitor-http-server","version":"1.0.6","keywords":["capacitor","plugin","http","server","native","ios","android"],"author":{"name":"Cantoo Scribe"},"license":"MIT","_id":"@cantoo/capacitor-http-server@1.0.6","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"dist":{"shasum":"43fcec132fa5895d67847ef8a336efa45e2c3b1b","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.6.tgz","fileCount":26,"integrity":"sha512-iy/CDOQuYnpk4d23k5gn8e8EC4dc5Fv8CZNd8A2WvgrBl3YcjaYtsxiKhbInBAOf50ebGnbH62Z/8a4TfAs1Ig==","signatures":[{"sig":"MEUCIF/kGGSg0HQbddRL7ia5P9H3Ca1YktHVBb8ugfZK8DsAAiEA7He7U+fnztnOmj4UQ9T8i8gVPfuVZhckRGmzb5NWw98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117789},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","default":"./dist/esm/index.js","require":"./dist/plugin.cjs.js"},"./package.json":"./package.json"},"gitHead":"dc742cbf6d76c336680b838ec88b20ee8501a396","scripts":{"fmt":"npm run eslint -- --fix && npm run prettier -- --write","lint":"npm run eslint && npm run prettier -- --check","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext .ts","release":"npm run typecheck && npm run build && release-it","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"repository":{"url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git","type":"git"},"_npmVersion":"10.9.3","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","directories":{},"_nodeVersion":"22.19.0","eslintConfig":{"rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]},"extends":"@ionic/eslint-config/recommended"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","rimraf":"^6.0.0","rollup":"^4.20.0","prettier":"^3.3.0","release-it":"^17.10.0","typescript":"^5.5.0","@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-http-server_1.0.6_1777543697833_0.16687540698608672","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@cantoo/capacitor-http-server","version":"1.0.8","description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","main":"dist/plugin.cjs.js","module":"dist/esm/index.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/plugin.cjs.js","default":"./dist/esm/index.js"},"./package.json":"./package.json"},"author":{"name":"Cantoo Scribe"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git"},"bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","publishConfig":{"access":"public"},"keywords":["capacitor","plugin","http","server","native","ios","android"],"scripts":{"lint":"npm run eslint && npm run prettier -- --check","fmt":"npm run eslint -- --fix && npm run prettier -- --write","eslint":"eslint . --ext .ts","prettier":"prettier \"**/*.{ts,js,mjs,md,json}\"","docgen":"docgen --api HttpServerPlugin --output-readme README.md --output-json dist/docs.json","typecheck":"tsc --noEmit","build":"npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","release":"npm run typecheck && npm run build && release-it","prepublishOnly":"npm run build"},"devDependencies":{"@capacitor/core":"^7.0.0","@capacitor/docgen":"^0.3.0","@ionic/eslint-config":"^0.4.0","@ionic/prettier-config":"^4.0.0","eslint":"^8.57.0","prettier":"^3.3.0","release-it":"^17.10.0","rimraf":"^6.0.0","rollup":"^4.20.0","typescript":"^5.5.0"},"peerDependencies":{"@capacitor/core":"^6.0.0 || ^7.0.0 || ^8.0.0"},"prettier":"@ionic/prettier-config","eslintConfig":{"extends":"@ionic/eslint-config/recommended","rules":{"@typescript-eslint/no-unused-vars":["warn",{"argsIgnorePattern":"^_","varsIgnorePattern":"^_"}]}},"capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"gitHead":"1273d317f2ebc405315ab9938fe47a5b59e8e449","_id":"@cantoo/capacitor-http-server@1.0.8","_nodeVersion":"22.19.0","_npmVersion":"11.15.0","dist":{"integrity":"sha512-mRB0lMwPHMDkWsoFJoRY4udjK5hyD4t47bcYNPbv9omV5p8SqS5UsGZO0nENIg3N416qxkcHbfuArGnq12gS+w==","shasum":"abae33d6813aae16e4f0af768801a907dc0a59b6","tarball":"https://registry.npmjs.org/@cantoo/capacitor-http-server/-/capacitor-http-server-1.0.8.tgz","fileCount":26,"unpackedSize":130822,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD3vvrdbhC8IY285oRLnVoV4mBWrhheYtgaskIMEvOP3AIhAINenMh6c6CJgmqO3KFRGi3sqsXx3wf/Opmi5qWG+kpP"}]},"_npmUser":{"name":"sharcoux","email":"f.billioud@gmail.com"},"directories":{},"maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"felipecantoo","email":"felipe@cantoo.fr"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-http-server_1.0.8_1786516319543_0.7392578552550921"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-21T07:36:01.724Z","modified":"2026-08-12T06:31:59.998Z","1.0.0":"2026-04-21T07:36:02.074Z","1.0.1":"2026-04-21T10:07:28.616Z","1.0.2":"2026-04-21T14:57:21.143Z","1.0.3":"2026-04-21T15:25:52.891Z","1.0.4":"2026-04-21T16:37:40.744Z","1.0.5":"2026-04-21T23:51:34.401Z","1.0.6":"2026-04-30T10:08:18.014Z","1.0.8":"2026-08-12T06:31:59.694Z"},"bugs":{"url":"https://github.com/cantoo-scribe/capacitor-http-server/issues"},"author":{"name":"Cantoo Scribe"},"license":"MIT","homepage":"https://github.com/cantoo-scribe/capacitor-http-server#readme","keywords":["capacitor","plugin","http","server","native","ios","android"],"repository":{"type":"git","url":"git+https://github.com/cantoo-scribe/capacitor-http-server.git"},"description":"Capacitor plugin exposing a local HTTP server on iOS and Android with routing delegated to JavaScript.","maintainers":[{"name":"sharcoux","email":"f.billioud@gmail.com"},{"name":"ribeirofmatheus","email":"matheus_f.ribeiro@hotmail.com"},{"name":"matheusrdsantos","email":"matheus.r.d.s10@hotmail.com"},{"name":"gabrielnsd","email":"gabrielnsdantas@gmail.com"},{"name":"felipecantoo","email":"felipe@cantoo.fr"},{"name":"nicodemos234","email":"nicodemos54324@gmail.com"}],"readme":"# @cantoo/capacitor-http-server\n\nA generic [Capacitor](https://capacitorjs.com) plugin that exposes a local\nHTTP server on iOS and Android with routing delegated to JavaScript.\n\nThe plugin has **no business logic**. It only handles the transport layer:\nit starts a listener, hands every incoming request to JavaScript via a\n`request` event, and writes back whatever JavaScript returns through\n`respond()`. This keeps your app code — authentication, routing, payloads,\nCORS policy — entirely in TypeScript, where it can be tested, updated from\na hot-reload bundle, and shared across platforms.\n\n## Changelog\n\n### 1.0.7\n\n- `StartResult` adds `addresses` / `urls` (IPv4 LAN + routable IPv6, bracketed\n  IPv6 URLs). `port` / `url` / `localIp` stay the historical IPv4 LAN fields.\n- Android NanoHTTPD binds dual-stack (`::`, IPv4 fallback). iOS GCDWebServer\n  already listens on IPv4 + IPv6.\n\n## Install\n\n```bash\nnpm install @cantoo/capacitor-http-server\nnpx cap sync\n```\n\n### Android configuration\n\nThe plugin ships all required permissions in its manifest:\n\n- `INTERNET`, `ACCESS_NETWORK_STATE`, `ACCESS_WIFI_STATE`\n- `FOREGROUND_SERVICE` and `FOREGROUND_SERVICE_DATA_SYNC` (API 34+)\n- `POST_NOTIFICATIONS` (API 33+)\n\nThe server runs inside a foreground service with type `dataSync`, so it\nsurvives the screen being locked. On Android 13+ the system requires a\nvisible notification, hence `POST_NOTIFICATIONS`. If the user declines the\npermission, the server still starts but the system is free to kill the\nprocess at any moment. The plugin requests the permission automatically\non the first `start()` call.\n\nYou **must** supply `android.notificationTitle` and `android.notificationText`\nwhen starting the server:\n\n```ts\nawait HttpServer.start({\n  android: {\n    notificationTitle: 'My App',\n    notificationText: 'Local server is running.',\n    smallIconResourceName: 'ic_notification', // res/drawable/ic_notification.png\n    channelId: 'my_app_http',\n    channelName: 'Local HTTP server',\n  },\n});\n```\n\n### iOS configuration\n\nAdd the following keys to your app's `Info.plist`:\n\n```xml\n<key>NSLocalNetworkUsageDescription</key>\n<string>Used to expose a local server for sharing files across devices on this network.</string>\n\n<!-- Optional. Only needed if you broadcast your server over Bonjour. -->\n<key>NSBonjourServices</key>\n<array>\n  <string>_myservice._tcp</string>\n</array>\n```\n\nWithout `NSLocalNetworkUsageDescription`, iOS 14+ silently drops every\nincoming connection from other devices.\n\n> **Note:** iOS does not allow long-running HTTP servers in background.\n> The plugin requests a short background task on app backgrounding, then\n> emits a `server-error` event with `fatal: true` when the window expires.\n> Restart the server on `UIApplication.didBecomeActive`.\n\n## Usage\n\n### Echo server\n\nA complete, 20-line echo server that returns exactly what it received:\n\n```ts\nimport { HttpServer } from '@cantoo/capacitor-http-server';\n\nawait HttpServer.addListener('request', async (req) => {\n  await HttpServer.respond({\n    requestId: req.requestId,\n    status: 200,\n    headers: { 'content-type': req.headers['content-type'] ?? 'text/plain' },\n    ...(req.bodyText !== undefined && { bodyText: req.bodyText }),\n    ...(req.bodyBase64 !== undefined && { bodyBase64: req.bodyBase64 }),\n    ...(req.bodyFilePath !== undefined && { bodyFilePath: req.bodyFilePath }),\n  });\n});\n\nconst { url, urls } = await HttpServer.start({\n  android: {\n    notificationTitle: 'Echo server',\n    notificationText: 'Listening for requests',\n  },\n});\nconsole.log('Primary IPv4 URL', url);\nconsole.log('All candidate URLs', urls);\n```\n\nTest it from a laptop on the same network:\n\n```bash\ncurl http://<device-ipv4>:<port>/ -d 'hello'\n# hello\n```\n\n### IPv6 / multi-address clients\n\n`start()` always returns the historical IPv4 fields (`url`, `localIp`) plus\ntwo arrays for multi-homed / IPv6 discovery:\n\n```ts\nconst { port, url, localIp, addresses, urls } = await HttpServer.start({ /* … */ });\n\n// Prefer `urls` when encoding a QR or probing reachability (e.g. GET /health).\n// IPv6 entries are already bracketed: \"http://[2001:db8::1]:18765\"\nfor (const candidate of urls) {\n  console.log(candidate);\n}\n```\n\n- `addresses` — bare IPs only (no scheme/port), sorted by score\n  (Wi‑Fi IPv4 → Ethernet → hotspot → IPv6 Wi‑Fi → IPv6 cellular, …).\n- Excludes loopback and link-local (`169.254.0.0/16`, `fe80::/10`).\n- Includes ULA (`fc00::/7`) when present; includes **global cellular IPv6**\n  (cellular IPv4 stays out of `localIp` / `url` as before).\n\n#### Manual IPv6 check\n\nOn the phone, note an IPv6 from `addresses` (or from Settings). From another\ndevice that shares IPv6 reachability with the phone:\n\n```bash\n# Brackets are required for literal IPv6 hosts in URLs.\ncurl -v \"http://[2001:db8::1]:18765/health\"\n```\n\nThe HTTP listener is dual-stack on both platforms (Android binds `::` with\nIPv4 fallback; iOS GCDWebServer opens AF_INET + AF_INET6 sockets).\n\n### Handling errors\n\n```ts\nHttpServer.addListener('server-error', ({ message, fatal }) => {\n  console.warn('Server error:', message, 'fatal:', fatal);\n  if (fatal) {\n    // On iOS the server dies in background; restart on foreground.\n  }\n});\n```\n\n### Streaming a large file out\n\n```ts\nHttpServer.addListener('request', async (req) => {\n  if (req.path === '/big.bin') {\n    await HttpServer.respond({\n      requestId: req.requestId,\n      status: 200,\n      headers: { 'content-type': 'application/octet-stream' },\n      bodyFilePath: '/absolute/path/to/file.bin', // streamed, no RAM spike\n    });\n  } else {\n    await HttpServer.respond({ requestId: req.requestId, status: 404 });\n  }\n});\n```\n\n### Receiving a large upload\n\nBodies above `fileBodyThresholdBytes` (default 1 MB) are streamed to a\ntemp file managed by the plugin. JavaScript receives the absolute path\nvia `bodyFilePath` and is free to move, hash, or re-stream it. The plugin\ndeletes the temp file automatically once `respond()` returns.\n\n## API\n\n<docgen-index>\n\n* [`start(...)`](#start)\n* [`stop()`](#stop)\n* [`respond(...)`](#respond)\n* [`addListener('request', ...)`](#addlistenerrequest-)\n* [`addListener('server-error', ...)`](#addlistenerserver-error-)\n* [`removeAllListeners()`](#removealllisteners)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### start(...)\n\n```typescript\nstart(options?: StartOptions | undefined) => any\n```\n\nStart the local HTTP server. Picks a free port if `port` is omitted.\nOn Android, starts a foreground service so the server survives screen lock.\nThrows if the server is already running with a different configuration,\nor if required permissions are missing.\n\n| Param         | Type                                                  |\n| ------------- | ----------------------------------------------------- |\n| **`options`** | <code><a href=\"#startoptions\">StartOptions</a></code> |\n\n**Returns:** <code>any</code>\n\n--------------------\n\n\n### stop()\n\n```typescript\nstop() => any\n```\n\nStop the server and release all resources (port, threads, temp files, service).\nSafe to call when already stopped.\n\n**Returns:** <code>any</code>\n\n--------------------\n\n\n### respond(...)\n\n```typescript\nrespond(response: HttpResponse) => any\n```\n\nReply to a request previously received via the `request` event.\nThe plugin looks up `requestId`, writes the response, and cleans up any\ntemporary body file. Calling respond twice for the same requestId is a\nno-op on the second call. Unanswered requests time out (504) after 60 s.\n\n| Param          | Type                                                  |\n| -------------- | ----------------------------------------------------- |\n| **`response`** | <code><a href=\"#httpresponse\">HttpResponse</a></code> |\n\n**Returns:** <code>any</code>\n\n--------------------\n\n\n### addListener('request', ...)\n\n```typescript\naddListener(eventName: 'request', listener: (event: HttpRequestEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandle\n```\n\nSubscribe to incoming HTTP requests. Every accepted request fires exactly\none `request` event; JS is expected to call `respond` exactly once per\nevent.\n\n| Param           | Type                                                                              |\n| --------------- | --------------------------------------------------------------------------------- |\n| **`eventName`** | <code>'request'</code>                                                            |\n| **`listener`**  | <code>(event: <a href=\"#httprequestevent\">HttpRequestEvent</a>) =&gt; void</code> |\n\n**Returns:** <code>any</code>\n\n--------------------\n\n\n### addListener('server-error', ...)\n\n```typescript\naddListener(eventName: 'server-error', listener: (event: ServerErrorEvent) => void) => Promise<PluginListenerHandle> & PluginListenerHandle\n```\n\nSubscribe to server-level errors that are not tied to a specific request\n(e.g. the underlying socket died, port was stolen, permission revoked).\nThe server is considered dead when this fires with `fatal: true`.\n\n| Param           | Type                                                                              |\n| --------------- | --------------------------------------------------------------------------------- |\n| **`eventName`** | <code>'server-error'</code>                                                       |\n| **`listener`**  | <code>(event: <a href=\"#servererrorevent\">ServerErrorEvent</a>) =&gt; void</code> |\n\n**Returns:** <code>any</code>\n\n--------------------\n\n\n### removeAllListeners()\n\n```typescript\nremoveAllListeners() => any\n```\n\nRemove every listener registered on this plugin.\n\n**Returns:** <code>any</code>\n\n--------------------\n\n\n### Interfaces\n\n\n#### StartOptions\n\n| Prop                         | Type                                                                | Description                                                                                                                                                 |\n| ---------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`port`**                   | <code>number</code>                                                 | If omitted or 0, the OS picks a free port in the dynamic range.                                                                                             |\n| **`maxBodyBytes`**           | <code>number</code>                                                 | Max request body size in bytes. Bodies above this return 413. Default: 50 * 1024 * 1024 (50 MB).                                                            |\n| **`fileBodyThresholdBytes`** | <code>number</code>                                                 | Threshold above which the plugin stores the body in a temp file and exposes it via `bodyFilePath` instead of `bodyBase64`. Default: 1 * 1024 * 1024 (1 MB). |\n| **`android`**                | <code><a href=\"#startoptionsandroid\">StartOptionsAndroid</a></code> | Android only. Title / text / small icon used by the foreground service notification (mandatory on Android 13+). Ignored on iOS.                             |\n\n\n#### StartOptionsAndroid\n\n| Prop                        | Type                | Description                                                     |\n| --------------------------- | ------------------- | --------------------------------------------------------------- |\n| **`notificationTitle`**     | <code>string</code> | Foreground-service notification title. Required on Android 13+. |\n| **`notificationText`**      | <code>string</code> | Foreground-service notification body text.                      |\n| **`smallIconResourceName`** | <code>string</code> | Android drawable resource name, e.g. \"ic_notification\".         |\n| **`channelId`**             | <code>string</code> | Notification channel ID. Plugin creates the channel if missing. |\n| **`channelName`**           | <code>string</code> | Notification channel display name.                              |\n\n\n#### StartResult\n\n| Prop            | Type                             | Description                                                                                                                                                                                                                                                                                                                                                                        |\n| --------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`port`**      | <code>number</code>              | Chosen port (same as options.port when provided).                                                                                                                                                                                                                                                                                                                                  |\n| **`url`**       | <code>string</code>              | URL IPv4 LAN principale (comportement historique). Ex: \"http://192.168.1.42:49281\". **Empty string** when no LAN-reachable IPv4 interface was found (e.g. cellular only). The server is still listening on the port. Prefer `urls` when you need IPv6 or multiple candidates. A `server-error` event with `fatal: false` is emitted when both `localIp` and `addresses` are empty. |\n| **`localIp`**   | <code>string</code>              | Primary LAN IPv4 (comportement historique). **Empty string** when no LAN-reachable IPv4 interface was found. See `url`.                                                                                                                                                                                                                                                            |\n| **`addresses`** | <code>Array&lt;string&gt;</code> | All candidate IP addresses for reaching the server, without port or scheme. Includes LAN IPv4 plus routable IPv6 (global and ULA). Ex: `[\"192.168.1.42\", \"2001:db8::1\"]`. Excludes loopback and link-local (`fe80::/10`, `169.254.0.0/16`). Sorted by reachability score (Wi‑Fi IPv4 first, then Ethernet, hotspot, then IPv6, with cellular IPv6 last).                           |\n| **`urls`**      | <code>Array&lt;string&gt;</code> | Ready-to-use HTTP URLs for each entry in `addresses`. IPv6 hosts are bracketed: `\"http://[2001:db8::1]:18765\"`.                                                                                                                                                                                                                                                                    |\n\n\n#### HttpResponse\n\n| Prop          | Type                                                | Description                                       |\n| ------------- | --------------------------------------------------- | ------------------------------------------------- |\n| **`data`**    | <code>any</code>                                    | Additional data received with the Http response.  |\n| **`status`**  | <code>number</code>                                 | The status code received from the Http response.  |\n| **`headers`** | <code><a href=\"#httpheaders\">HttpHeaders</a></code> | The headers received from the Http response.      |\n| **`url`**     | <code>string</code>                                 | The response URL received from the Http response. |\n\n\n#### HttpHeaders\n\n\n#### HttpRequestEvent\n\n| Prop               | Type                                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| ------------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`requestId`**    | <code>string</code>                               | Opaque ID. Pass back unchanged in `respond`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| **`method`**       | <code><a href=\"#httpmethod\">HttpMethod</a></code> |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| **`path`**         | <code>string</code>                               | Decoded pathname, always starts with \"/\". No querystring.                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| **`query`**        | <code>Record&lt;string, string&gt;</code>         | Parsed querystring. Repeated keys keep the last value.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| **`headers`**      | <code>Record&lt;string, string&gt;</code>         | Lower-cased header names.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| **`clientIp`**     | <code>string</code>                               | Remote peer IP if available (useful for logging only).                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| **`bodyText`**     | <code>string</code>                               | Exactly one of the three body fields is set (undefined when the request has no body). The plugin picks the representation based on content type and size: - UTF-8 body with a text-like content type (text/\\*, application/json, application/x-www-form-urlencoded) below threshold -&gt; bodyText - Any other body below threshold -&gt; bodyBase64 - Body above threshold -&gt; bodyFilePath Temp files referenced by bodyFilePath are deleted automatically once `respond` is called for the same requestId (or on timeout). |\n| **`bodyBase64`**   | <code>string</code>                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n| **`bodyFilePath`** | <code>string</code>                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n\n\n#### PluginListenerHandle\n\n| Prop         | Type                      |\n| ------------ | ------------------------- |\n| **`remove`** | <code>() =&gt; any</code> |\n\n\n#### ServerErrorEvent\n\n| Prop          | Type                 | Description                                                        |\n| ------------- | -------------------- | ------------------------------------------------------------------ |\n| **`message`** | <code>string</code>  |                                                                    |\n| **`fatal`**   | <code>boolean</code> | True when the server is no longer listening and must be restarted. |\n\n\n### Type Aliases\n\n\n#### HttpMethod\n\nHTTP methods that the plugin forwards to JavaScript. Any value outside this\nlist produced by a client is still forwarded as-is (upper-cased) but typed\nas <a href=\"#httpmethod\">`HttpMethod`</a> for convenience of the common cases.\n\n<code>'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'OPTIONS' | 'HEAD'</code>\n\n</docgen-api>\n\n## Limitations\n\n- **No HTTPS.** The plugin listens on plain HTTP. Use it over a trusted\n  LAN or add a reverse proxy if you need TLS.\n- **No chunked transfer encoding** on the request side. Clients must send\n  `Content-Length`; otherwise the server replies with 501.\n- **No WebSocket support** (tracked separately; out of scope here).\n- **iOS background.** The server is suspended when the app leaves the\n  foreground. A `server-error` event is emitted with `fatal: true`.\n- **IPv4 NAT / CGNAT.** Public IPv4 is almost never reachable end-to-end\n  from another network; use LAN IPv4 or routable IPv6 instead.\n- **Cellular firewalls.** Some mobile carriers block inbound connections\n  even when a global IPv6 is advertised — probe `urls` and expect failures.\n- **Link-local IPv6** is never advertised (`fe80::/10`); peers would need\n  the correct zone id and same L2 segment.\n\n## License\n\nMIT © Cantoo Scribe\n","readmeFilename":"README.md"}