{"_id":"@autotelic/fastify-csv-import","_rev":"4-c1eab2fda031a4c6678aaa85cc44dc05","name":"@autotelic/fastify-csv-import","description":"Plugin for Fastify","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@autotelic/fastify-csv-import","version":"0.1.0","keywords":[],"author":{"name":"Autotelic Development Ltd","email":"info@autotelic.com"},"license":"MIT","_id":"@autotelic/fastify-csv-import@0.1.0","maintainers":[{"name":"autotelic","email":"info+npm@autotelic.com"}],"homepage":"https://github.com/autotelic/fastify-csv-import#readme","bugs":{"url":"https://github.com/autotelic/fastify-csv-import/issues"},"tsd":{"directory":"types"},"dist":{"shasum":"dd006acf048c2e8f3953428e0536f1bc34a36807","tarball":"https://registry.npmjs.org/@autotelic/fastify-csv-import/-/fastify-csv-import-0.1.0.tgz","fileCount":5,"integrity":"sha512-nTZMkn64WQRTRv9pzu3B7I1sxRx8Rx+VbwOt5XKoxzpY2S/tUJ2yv0P6Pf+oJJwWHTUQBdYTEqKLQrKVV+8jiw==","signatures":[{"sig":"MEUCIQCW0JmJbfVcYhRxxk+gWBemmn2MPUz7EAPvkk3kvSwheAIgK0DfRyqOlFJ5Bji6g9RpXVk+FD42E9AVkbR0p3M/Jqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7176},"main":"index.js","type":"module","types":"types/index.d.ts","engines":{"node":">=20"},"gitHead":"87297e0f8dbb8956cc269ce9c8c46cc96e4fbc97","scripts":{"lint":"eslint .","test":"tap --allow-incomplete-coverage","start":"cd ./example && ts-node index.ts","validate":"npm run lint && npm test && npm run test:types","test:types":"tsd"},"_npmUser":{"name":"autotelic","email":"info+npm@autotelic.com"},"repository":{"url":"git+https://github.com/autotelic/fastify-csv-import.git","type":"git"},"_npmVersion":"10.2.3","description":"Plugin for Fastify","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ajv":"^8.12.0","fastify-plugin":"^4.5.1","@fast-csv/parse":"^5.0.0","@fastify/multipart":"^8.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^18.6.1","tsd":"^0.30.3","eslint":"^8.56.0","fastify":"^4.25.2","ts-node":"^10.9.2","typescript":"^5.3.3","@typescript-eslint/parser":"^6.18.1","@autotelic/eslint-config-js":"^0.2.1","@autotelic/fastify-injector":"^0.3.0","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1"},"_npmOperationalInternal":{"tmp":"tmp/fastify-csv-import_0.1.0_1706229530991_0.18322427409897268","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@autotelic/fastify-csv-import","version":"0.2.0","keywords":[],"author":{"name":"Autotelic Development Ltd","email":"info@autotelic.com"},"license":"MIT","_id":"@autotelic/fastify-csv-import@0.2.0","maintainers":[{"name":"autotelic","email":"info+npm@autotelic.com"}],"homepage":"https://github.com/autotelic/fastify-csv-import#readme","bugs":{"url":"https://github.com/autotelic/fastify-csv-import/issues"},"tsd":{"directory":"types"},"dist":{"shasum":"cbc9d41147091164a9e1d4a8a6768d6bcb899a5d","tarball":"https://registry.npmjs.org/@autotelic/fastify-csv-import/-/fastify-csv-import-0.2.0.tgz","fileCount":5,"integrity":"sha512-Fks9a/o8LfCrzvchvBseoT+G3JiffmkK2EyHaO6nrcLG33Yb/XchJKTcxI/3AbW0wSBRr7aNqztu3ohwmcCRGA==","signatures":[{"sig":"MEQCICpgO9APSiZISwD10Cp01ZqiAaVdSYFJJEGLNtZ6XSQzAiAPv/FQuVnxXszsRgyp703zi+UtY+ZoxlwS1eWT6+XGTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7176},"main":"index.js","type":"module","types":"types/index.d.ts","engines":{"node":">=20"},"gitHead":"371ed3236551489cce15993ae8313427b1d99a2a","scripts":{"lint":"eslint .","test":"tap --allow-incomplete-coverage","start":"cd ./example && ts-node index.ts","validate":"npm run lint && npm test && npm run test:types","test:types":"tsd"},"_npmUser":{"name":"autotelic","email":"info+npm@autotelic.com"},"repository":{"url":"git+https://github.com/autotelic/fastify-csv-import.git","type":"git"},"_npmVersion":"10.2.3","description":"Plugin for Fastify","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ajv":"^8.12.0","fastify-plugin":"^4.5.1","@fast-csv/parse":"^5.0.0","@fastify/multipart":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^18.6.1","tsd":"^0.30.3","eslint":"^8.56.0","fastify":"^3.29.5","ts-node":"^10.9.2","typescript":"^5.3.3","@typescript-eslint/parser":"^6.18.1","@autotelic/eslint-config-js":"^0.3.0","@autotelic/fastify-injector":"^0.3.0","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1"},"_npmOperationalInternal":{"tmp":"tmp/fastify-csv-import_0.2.0_1706312485562_0.5262748555371424","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@autotelic/fastify-csv-import","version":"0.3.0","keywords":[],"author":{"name":"Autotelic Development Ltd","email":"info@autotelic.com"},"license":"MIT","_id":"@autotelic/fastify-csv-import@0.3.0","maintainers":[{"name":"autotelic","email":"info+npm@autotelic.com"}],"homepage":"https://github.com/autotelic/fastify-csv-import#readme","bugs":{"url":"https://github.com/autotelic/fastify-csv-import/issues"},"tsd":{"directory":"types"},"dist":{"shasum":"45da7363c575c79515d529d1e4de71915994868e","tarball":"https://registry.npmjs.org/@autotelic/fastify-csv-import/-/fastify-csv-import-0.3.0.tgz","fileCount":5,"integrity":"sha512-cU0kBtt345YvPDWW42+EhJsScDS8aIw4UoWxHPFkX1Es1cdEWHPp4/K3gOepB0KvyHhYfmLNfxGfiv2feSKR6w==","signatures":[{"sig":"MEYCIQDMLFJL4Kit1KmynyfhaInjV7K3JlgCPtGR4Ig6YGOJxgIhANobE8X59qrWb+9i31StoUoBI3zcI05CVRG3yswP3JY5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848},"main":"index.js","type":"module","types":"types/index.d.ts","engines":{"node":">=20"},"gitHead":"cc5f962a189284dd419b505197fdda1efc9772a3","scripts":{"lint":"eslint .","test":"tap --allow-incomplete-coverage","start":"cd ./example && ts-node index.ts","validate":"npm run lint && npm test && npm run test:types","test:types":"tsd"},"_npmUser":{"name":"autotelic","email":"info+npm@autotelic.com"},"repository":{"url":"git+https://github.com/autotelic/fastify-csv-import.git","type":"git"},"_npmVersion":"10.2.3","description":"Plugin for Fastify","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ajv":"^8.12.0","fastify-plugin":"^4.5.1","@fast-csv/parse":"^5.0.0","@fastify/multipart":"^8.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^18.6.1","tsd":"^0.30.3","eslint":"^8.56.0","fastify":"^4.25.2","ts-node":"^10.9.2","typescript":"^5.3.3","@typescript-eslint/parser":"^6.18.1","@autotelic/eslint-config-js":"^0.3.0","@autotelic/fastify-injector":"^0.3.0","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1"},"_npmOperationalInternal":{"tmp":"tmp/fastify-csv-import_0.3.0_1706314051099_0.4249890334621351","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@autotelic/fastify-csv-import","version":"0.4.0","keywords":[],"author":{"name":"Autotelic Development Ltd","email":"info@autotelic.com"},"license":"MIT","_id":"@autotelic/fastify-csv-import@0.4.0","maintainers":[{"name":"autotelic","email":"info+npm@autotelic.com"}],"homepage":"https://github.com/autotelic/fastify-csv-import#readme","bugs":{"url":"https://github.com/autotelic/fastify-csv-import/issues"},"tsd":{"directory":"types"},"dist":{"shasum":"ed4b0012fa4aaf68309967cce153b08ca5835865","tarball":"https://registry.npmjs.org/@autotelic/fastify-csv-import/-/fastify-csv-import-0.4.0.tgz","fileCount":5,"integrity":"sha512-Eho29kqAa4BQY2PYiUO6u2jqDzYi6pYE05xyHn+R30LRdatQAfdYFRaYbQYhpeqitAOI1/AsFcDSO0MaKsxWTA==","signatures":[{"sig":"MEYCIQCINjKX3IcoKhb2E7iu4Sq1VVAkTMGff4DD4aLZcY2hkQIhAJVQxPNxJtfnu5/tWI9r+itW8gODpepjkbCZv01Kuua3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7910},"main":"index.js","type":"module","types":"types/index.d.ts","engines":{"node":">=20"},"gitHead":"6cd913c2412222ee82c77d3beb0d5811f6d54831","scripts":{"lint":"eslint .","test":"tap --allow-incomplete-coverage","start":"cd ./example && ts-node index.ts","validate":"npm run lint && npm test && npm run test:types","test:types":"tsd"},"_npmUser":{"name":"autotelic","email":"info+npm@autotelic.com"},"repository":{"url":"git+https://github.com/autotelic/fastify-csv-import.git","type":"git"},"_npmVersion":"10.2.3","description":"Plugin for Fastify","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ajv":"^8.12.0","ajv-formats":"^3.0.1","fastify-plugin":"^4.5.1","@fast-csv/parse":"^5.0.0","@fastify/multipart":"^8.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^18.6.1","tsd":"^0.30.3","sinon":"^18.0.0","eslint":"^8.56.0","fastify":"^4.25.2","ts-node":"^10.9.2","typescript":"^5.3.3","@typescript-eslint/parser":"^6.18.1","@autotelic/eslint-config-js":"^0.3.0","@autotelic/fastify-injector":"^0.3.0","@typescript-eslint/eslint-plugin":"^6.18.1","eslint-import-resolver-typescript":"^3.6.1"},"_npmOperationalInternal":{"tmp":"tmp/fastify-csv-import_0.4.0_1717180492940_0.3426205341286259","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@autotelic/fastify-csv-import","version":"0.5.0","description":"Plugin for Fastify","main":"index.js","types":"types/index.d.ts","type":"module","engines":{"node":">=20"},"scripts":{"lint":"eslint .","test":"tap --allow-incomplete-coverage","validate":"npm run lint && npm test && npm run test:types","test:types":"tsd","start":"cd ./example && ts-node index.ts"},"repository":{"type":"git","url":"git+https://github.com/autotelic/fastify-csv-import.git"},"keywords":[],"author":{"name":"Autotelic Development Ltd","email":"info@autotelic.com"},"license":"MIT","bugs":{"url":"https://github.com/autotelic/fastify-csv-import/issues"},"homepage":"https://github.com/autotelic/fastify-csv-import#readme","dependencies":{"@fast-csv/parse":"^5.0.0","@fastify/multipart":"^8.1.0","ajv":"^8.12.0","ajv-formats":"^3.0.1","fastify-plugin":"^4.5.1"},"devDependencies":{"@autotelic/eslint-config-js":"^0.3.0","@autotelic/fastify-injector":"^0.3.0","@typescript-eslint/eslint-plugin":"^6.18.1","@typescript-eslint/parser":"^6.18.1","eslint":"^8.56.0","eslint-import-resolver-typescript":"^3.6.1","fastify":"^4.25.2","sinon":"^18.0.0","tap":"^18.6.1","ts-node":"^10.9.2","tsd":"^0.30.3","typescript":"^5.3.3"},"tsd":{"directory":"types"},"_id":"@autotelic/fastify-csv-import@0.5.0","gitHead":"e40f2d22901ada2311fcb82f388f04ae4cb7d368","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-kt7d9qj/zuuqKrwQ2EWxzCgF81ueCp4rETOnmQEg8qncsypu1vNw70DJEWJc5jHAsNqKMtN5E3TFbOZFN0a3mw==","shasum":"141d444043ec77ade1ecca94eaaf96f4e53ec76d","tarball":"https://registry.npmjs.org/@autotelic/fastify-csv-import/-/fastify-csv-import-0.5.0.tgz","fileCount":5,"unpackedSize":7975,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFkz7otzl0T2TWqTyXcbf4naEuhp4WylAcBd0nhYmhRFAiAi58Q+HrEwRRUSzzbm9f3crOKB/epmeOs3raSEiPvDPQ=="}]},"_npmUser":{"name":"autotelic","email":"info+npm@autotelic.com"},"directories":{},"maintainers":[{"name":"autotelic","email":"info+npm@autotelic.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fastify-csv-import_0.5.0_1717182216969_0.17734965439701855"},"_hasShrinkwrap":false}},"time":{"created":"2024-01-26T00:38:50.896Z","modified":"2024-05-31T19:03:37.301Z","0.1.0":"2024-01-26T00:38:51.204Z","0.2.0":"2024-01-26T23:41:25.720Z","0.3.0":"2024-01-27T00:07:31.246Z","0.4.0":"2024-05-31T18:34:53.095Z","0.5.0":"2024-05-31T19:03:37.146Z"},"maintainers":[{"name":"autotelic","email":"info+npm@autotelic.com"}],"author":{"name":"Autotelic Development Ltd","email":"info@autotelic.com"},"repository":{"type":"git","url":"git+https://github.com/autotelic/fastify-csv-import.git"},"keywords":[],"license":"MIT","homepage":"https://github.com/autotelic/fastify-csv-import#readme","bugs":{"url":"https://github.com/autotelic/fastify-csv-import/issues"},"readme":"# fastify-csv-import\n\nA Fastify plugin that enables Fastify applications to parse CSV files and validate their content against a specified schema. It is built using `fast-csv` for parsing, `Ajv` for validation, and `fastify-multipart` for handling file uploads.\n\n## Install\n\n```sh\nnpm install @autotelic/fastify-csv-import\n```\n\n## Usage\n\n```js\nimport Fastify from 'fastify'\nimport fastifyCsvImport from 'fastify-csv-import'\n\nconst PORT = 3000\nconst fastify = Fastify()\n\n// Define your CSV validation schema\nconst validationSchema = {\n  type: 'object',\n  properties: {\n    'Catalog Title': { type: 'string' },\n    SKU: { type: 'string' },\n    'Fixed Price': { type: 'string', format: 'price' }\n  },\n  required: ['Catalog Title', 'SKU', 'Fixed Price']\n}\n\nfastify.register(fastifyCsvImport)\n\nfastify.post('/csv/import', async (req, reply) => {\n  if (!fastify.csvImport) {\n    throw new Error('fastify-csv-import plugin is not available')\n  }\n  const { rows, errors } = await fastify.csvImport({ req, validationSchema })\n  reply.send(rows || errors)\n})\n\nfastify.listen({ port: PORT }, (_, address) => {\n  console.log(`Server listening at ${address}`)\n})\n```\n\n## Example\n\nFor a more detailed example, including how to handle various scenarios and errors, please refer to our [usage example](./example/README.md).\n\n## API\n\n### fastify.csvImport({ req, validationSchema })\n\n- `req`: The request object from Fastify.\n- `validationSchema`: A schema object used for validating the CSV data. It must conform to the JSON Schema standard.\n\n`fastify-csv-import` decorates fastify with `csvImport`. The function parses the CSV file from the request, validates each row against the provided schema, and returns an object containing `rows` and `errors`. Rows that pass validation are included in `rows`, while validation errors are recorded in `errors`.\n\n### Configuration Options\n\n- `MAX_CSV_IMPORT`: An optional environment variable to set the maximum CSV file size. If not set, defaults to 50MB.\n","readmeFilename":"README.md"}