{"_id":"@codeinkit/http-trigger","_rev":"7-e410220b914168121852a7384ce64be5","name":"@codeinkit/http-trigger","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@codeinkit/http-trigger","version":"1.0.0","keywords":["typescript","node"],"author":"","license":"ISC","_id":"@codeinkit/http-trigger@1.0.0","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"dist":{"shasum":"9d75abd1588bc81ed14841c1621337349b6306b8","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.0.0.tgz","fileCount":8,"integrity":"sha512-RiQtGngQu6N4FJ+dwLlW/eYBae0e59t5ROK15F2nIccvWTPptnZNCqjCri4IXJiEb8k69y6kuZqlg3jV3gefAQ==","signatures":[{"sig":"MEUCIF6IEQH+mAMR8aDm6m/3ZmHqlMMNSL23/GLY9ZPzQJWQAiEAhvQHurIiVP1JDgdUBa4Se+43vXLq1b4E4HcjFsXyiAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40594},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"39cfa947a71d1ca70358824c5ccc84a91f371f3e","scripts":{"dev":"ts-node src/index.ts","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"_npmVersion":"10.8.2","description":"A basic TypeScript project","directories":{},"_nodeVersion":"22.8.0","dependencies":{"qs":"^6.14.0","debug":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/qs":"^6.14.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/debug":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/http-trigger_1.0.0_1753346749312_0.12393306965958817","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@codeinkit/http-trigger","version":"1.0.1","keywords":["typescript","node"],"author":"","license":"ISC","_id":"@codeinkit/http-trigger@1.0.1","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"dist":{"shasum":"868a76962d8b30040ee6a75d1704a6f9362d4cfe","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.0.1.tgz","fileCount":8,"integrity":"sha512-/ixNC+xwpIG/90BlmR32jPkjLbr7mWTJMNHMYrkU9VLqAve42iuyT9o3SyNHDQI3vw763nw4phGptkR72Aaq3w==","signatures":[{"sig":"MEUCICcHA+Ehy7wuJu2gwvw2ohuR0y3kRmom4rtZCnoBcfoPAiEAizqXNLlrYX0kwzQQmdrNQWBLOc669Exy0SpkOycegrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40737},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"f09f14fd41ce1101685975383a83f7e8af0ada3a","scripts":{"dev":"ts-node src/index.ts","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"_npmVersion":"10.8.2","description":"A basic TypeScript project","directories":{},"_nodeVersion":"22.8.0","dependencies":{"qs":"^6.14.0","debug":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/qs":"^6.14.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/debug":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/http-trigger_1.0.1_1753356762163_0.51431565649808","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@codeinkit/http-trigger","version":"1.0.2","keywords":["typescript","node"],"author":"","license":"ISC","_id":"@codeinkit/http-trigger@1.0.2","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"dist":{"shasum":"25e6cc73066429db4f3335388e6f2bb3725f5ed8","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.0.2.tgz","fileCount":8,"integrity":"sha512-FWSt4fVCXRChFc+RZdM1+S9/pKGFXNEobUyfpaM2A/5+SkZjAn7sIVjAQC4YUDUVx6lEQILZjzuURBj+ecSBUA==","signatures":[{"sig":"MEUCIHgA1mppeGdEjXtanJPQvPgI1qaWlZDiNuYDXl0GCIZaAiEA6YDsr3JbZ+FLrs6xmco7lwBPqCyqaIXl6/8itj4L8Fg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40752},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"2af6c3d993b72634c0eb724f8d3462c1fbf2047e","scripts":{"dev":"ts-node src/index.ts","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"_npmVersion":"10.8.2","description":"A basic TypeScript project","directories":{},"_nodeVersion":"22.8.0","dependencies":{"qs":"^6.14.0","debug":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/qs":"^6.14.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/debug":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/http-trigger_1.0.2_1759143015473_0.6929930553397736","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@codeinkit/http-trigger","version":"1.0.3","keywords":["typescript","node"],"author":"","license":"ISC","_id":"@codeinkit/http-trigger@1.0.3","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"dist":{"shasum":"2eedbab0d9505d8427637f9b04fb287a1c845a88","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.0.3.tgz","fileCount":8,"integrity":"sha512-suN8S6VgGZJuwqYKjqODLAC5Rs0kB75+pVYPt4IO+GI5+cfzuN8rjO9hyRn8rGTmX7XZ7H7WLPRJmUoR9RNK6g==","signatures":[{"sig":"MEYCIQC8ae1QV40MxhtAXQsC99qBjzyAshG6eI1r5HCp4/uKdQIhAIuTQpDmtjYQXRLAGMeRI+/xensotepoTdcxT4yyXXNO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40837},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"7307985e6158639e376a2b86fb9875fd55e3bea9","scripts":{"dev":"ts-node src/index.ts","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"_npmVersion":"10.8.2","description":"A basic TypeScript project","directories":{},"_nodeVersion":"22.8.0","dependencies":{"qs":"^6.14.0","debug":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/qs":"^6.14.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/debug":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/http-trigger_1.0.3_1759143967534_0.6482715688850751","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@codeinkit/http-trigger","version":"1.0.4","keywords":["typescript","node"],"author":"","license":"ISC","_id":"@codeinkit/http-trigger@1.0.4","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"dist":{"shasum":"6a3af8073872954a21d053a079de387ec335e1c7","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.0.4.tgz","fileCount":8,"integrity":"sha512-+ubj1XwaBfoRfwbH9qNPpNOJQjjB01b9ZqudNXcJWcRx88vs7ZJyMFgdwKCd6ydCCnu/bpiCQbpa9ZCCqfN+CA==","signatures":[{"sig":"MEQCIDDKpzmqpIyUtwGFuvVlZICGl2TSrf0BlSM64XNeoWy/AiBdGJsVFyksm711tP/5U9m1pIlR0RjFCZte57P+YLG3Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41348},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"b84a0f49ab13d496d7362bb6c70a4d787fa8a2a5","scripts":{"dev":"ts-node src/index.ts","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"_npmVersion":"10.8.2","description":"A basic TypeScript project","directories":{},"_nodeVersion":"22.8.0","dependencies":{"qs":"^6.14.0","debug":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/qs":"^6.14.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/debug":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/http-trigger_1.0.4_1759145032526_0.43785256328280586","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@codeinkit/http-trigger","version":"1.1.0","keywords":["typescript","node"],"author":"","license":"ISC","_id":"@codeinkit/http-trigger@1.1.0","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"dist":{"shasum":"40b1fce55691fc200fa01ecec0bf72fd7fe6f8c5","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.1.0.tgz","fileCount":8,"integrity":"sha512-2aZL+5XrlR7SKa5Qi9Liv4yrE3Dew5qSx5jF4QNxBrmkt/o68Colffcu5LDDG2+HQphuUmpPEhC/rY6h99r+lQ==","signatures":[{"sig":"MEUCIQC9WrQQ4csepDEk/wbwq8KIkSmEqMlsA3fyEgEFIeAGfQIgN5F3nwR2LIRSfpqyZNQy4KKrXwa3N8BTZn0p6MDMyP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41640},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"9dd56b7c550b401bca260007d266fc4bab182238","scripts":{"dev":"ts-node src/index.ts","test":"echo \"Error: no test specified\" && exit 1","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","watch":"tsc --watch"},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"_npmVersion":"10.8.2","description":"A basic TypeScript project","directories":{},"_nodeVersion":"22.8.0","dependencies":{"qs":"^6.14.0","debug":"^4.4.1"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","@types/qs":"^6.14.0","typescript":"^5.3.0","@types/node":"^20.10.0","@types/debug":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/http-trigger_1.1.0_1759443363282_0.15041195642513117","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@codeinkit/http-trigger","version":"1.1.1","description":"A basic TypeScript project","main":"dist/index.js","scripts":{"build":"tsc","start":"node dist/index.js","dev":"ts-node src/index.ts","watch":"tsc --watch","clean":"rm -rf dist","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["typescript","node"],"author":"","license":"ISC","devDependencies":{"@types/debug":"^4.1.12","@types/node":"^20.10.0","@types/qs":"^6.14.0","ts-node":"^10.9.1","typescript":"^5.3.0"},"dependencies":{"debug":"^4.4.1","qs":"^6.14.0"},"_id":"@codeinkit/http-trigger@1.1.1","gitHead":"dc9243e60e6d253002b0aeaba985669b3aa5a2ba","types":"./dist/index.d.ts","_nodeVersion":"22.8.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-misxICwyMDNJMTj6rZaS1qK2fBGqfFrJ6QxDNNFrg2s8UDAHLAazYiK1120OWjl86CWGITqIlrp6+dJ/l7hFLQ==","shasum":"e77bb4c715feb5f3f1a572de40a058c23762dbc8","tarball":"https://registry.npmjs.org/@codeinkit/http-trigger/-/http-trigger-1.1.1.tgz","fileCount":8,"unpackedSize":42728,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFUBRxWvoIH+zBjRn72JzSTnDbtsW9aRHsEFUAzKt/MDAiBlIuXwDOtWXFsBQ21cJhFSo/kE98j+HtYbDWWo2cQAiQ=="}]},"_npmUser":{"name":"amitmtrn","email":"amit7000@gmail.com"},"directories":{},"maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/http-trigger_1.1.1_1760618535689_0.6463141989258807"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-24T08:45:49.206Z","modified":"2025-10-16T12:42:16.052Z","1.0.0":"2025-07-24T08:45:49.490Z","1.0.1":"2025-07-24T11:32:42.376Z","1.0.2":"2025-09-29T10:50:15.658Z","1.0.3":"2025-09-29T11:06:07.735Z","1.0.4":"2025-09-29T11:23:52.750Z","1.1.0":"2025-10-02T22:16:03.538Z","1.1.1":"2025-10-16T12:42:15.869Z"},"license":"ISC","keywords":["typescript","node"],"description":"A basic TypeScript project","maintainers":[{"name":"amitmtrn","email":"amit7000@gmail.com"}],"readme":"# HTTP Trigger\n\nA simple HTTP server for handling API routes with support for URL parameters, CORS, and static file serving.\n\n## Features\n\n- **URL Parameter Support**: Routes can include dynamic parameters using `:paramName` syntax\n- **CORS Support**: Configurable CORS headers\n- **Static File Serving**: Serve static files from a specified directory\n- **Query Parameters**: Automatic parsing of query string parameters\n- **JSON Body Parsing**: Built-in JSON request body parsing\n- **URL-encoded Body Parsing**: Support for form data parsing\n\n## URL Parameters\n\nYou can define routes with dynamic parameters using the `:paramName` syntax:\n\n```typescript\n// Example route file: users/[id].ts\nexport const triggers = [\n  {\n    type: 'http',\n    method: 'GET',\n    path: '/users/:id'\n  }\n];\n\nexport default async function(data: any, unsafe: any) {\n  const { id } = data; // URL parameter is available in data\n  return {\n    status: 200,\n    response: { userId: id, message: `User ${id} details` }\n  };\n}\n```\n\n### Parameter Examples\n\n- `/users/:id` - matches `/users/123`, `/users/abc`, etc.\n- `/posts/:postId/comments/:commentId` - matches `/posts/123/comments/456`\n- `/api/products/:category/:productId` - matches `/api/products/electronics/laptop`\n\n## Usage\n\n```typescript\nimport HttpTrigger from './src/index';\n\nconst httpTrigger = new HttpTrigger(flows, unsafe, {\n  origin: '*',\n  methods: ['GET', 'POST', 'PUT', 'DELETE'],\n  allowedHeaders: ['Content-Type', 'Authorization']\n}, './public');\n\nawait httpTrigger.registerFolder('./routes');\nhttpTrigger.listen(3000);\n```\n\n## Route Definition\n\nRoutes are defined in TypeScript files with the following structure:\n\n```typescript\nexport const triggers = [\n  {\n    type: 'http',\n    method: 'GET', // HTTP method (GET, POST, PUT, DELETE, etc.)\n    path: '/api/users/:id' // Route path with optional parameters\n  }\n];\n\nexport default async function(data: any, unsafe: any) {\n  // data contains:\n  // - URL parameters (e.g., { id: '123' })\n  // - Query parameters (e.g., { page: '1', limit: '10' })\n  // - Request body (if parsed)\n  \n  // unsafe contains:\n  // - req: http.IncomingMessage\n  // - res: http.ServerResponse\n  // - headers: request headers\n  \n  return {\n    status: 200,\n    response: { message: 'Success' },\n    headers: { 'Custom-Header': 'value' }, // optional\n    redirect: '/new-location', // optional\n    httpSent: false // set to true if you manually send response\n  };\n}\n```\n\n## Body Parsing\n\nUse the provided helper functions to parse request bodies:\n\n```typescript\nimport { handleJson, handleUrlEncodedExtended } from './src/index';\n\nexport default async function(data: any, unsafe: any) {\n  // Parse JSON body\n  const jsonData = await handleJson(data, unsafe);\n  \n  // Parse URL-encoded form data\n  const formData = await handleUrlEncodedExtended(data, unsafe);\n  \n  return {\n    status: 200,\n    response: { received: jsonData.body }\n  };\n}\n``` ","readmeFilename":"README.md"}