{"_id":"@animb1996/cds-data-drift","name":"@animb1996/cds-data-drift","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@animb1996/cds-data-drift","version":"0.1.0","description":"Read-only CSV and database drift reporting for SAP CAP projects","author":{"name":"Anim Basu"},"repository":{"type":"git","url":"git+https://github.com/abasu1996/cds-data-drift.git"},"bugs":{"url":"https://github.com/abasu1996/cds-data-drift/issues"},"homepage":"https://github.com/abasu1996/cds-data-drift#readme","main":"cds-plugin.js","type":"commonjs","bin":{"cds-data-drift":"bin/cds-data-drift.js"},"engines":{"node":">=20"},"peerDependencies":{"@sap/cds":">=9 <10"},"devDependencies":{"@sap/cds":"9.9.1"},"dependencies":{"csv-parse":"^6.1.0"},"scripts":{"test":"node --test","check":"node --check bin/cds-data-drift.js && node --check cds-plugin.js && node --check lib/run.js"},"keywords":["sap","cap","hana","cds","csv","data-drift"],"license":"Apache-2.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"505b44759536903e4e36fc86324c32d4c4ae010f","_id":"@animb1996/cds-data-drift@0.1.0","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-2K+R89ZkqMB0VzRA8J5BvqEfgLUw8GuIk4BVO+oMSRjiKyO8qcy6bIDFRcAaVwm90TY/QBR3HnKs/CuOTG1fRw==","shasum":"fe33809392f3195a0a0aae8632b98eb2320bad0a","tarball":"https://registry.npmjs.org/@animb1996/cds-data-drift/-/cds-data-drift-0.1.0.tgz","fileCount":15,"unpackedSize":27685,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCXRuKkQRDfTG7UG29GejyB8Aohi1M9eqgxH8TuU9q9wwIgcTsLbb6Ps3Z5ZOh1C+D46X/uKUl3Pi2nbHMGApAojHQ="}]},"_npmUser":{"name":"animb1996","email":"animbasu1996@outlook.com"},"directories":{},"maintainers":[{"name":"animb1996","email":"animbasu1996@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cds-data-drift_0.1.0_1789852080760_0.03797845296066149"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-19T21:08:00.549Z","0.1.0":"2026-09-19T21:08:00.916Z","modified":"2026-09-19T21:08:01.095Z"},"maintainers":[{"name":"animb1996","email":"animbasu1996@outlook.com"}],"description":"Read-only CSV and database drift reporting for SAP CAP projects","homepage":"https://github.com/abasu1996/cds-data-drift#readme","keywords":["sap","cap","hana","cds","csv","data-drift"],"repository":{"type":"git","url":"git+https://github.com/abasu1996/cds-data-drift.git"},"author":{"name":"Anim Basu"},"bugs":{"url":"https://github.com/abasu1996/cds-data-drift/issues"},"license":"Apache-2.0","readme":"# CDS Data Drift\n\n`@animb1996/cds-data-drift` is a read-only seed-data drift reporter for SAP CAP. It compares local `db/data` CSV records with the database configured as the CAP `db` service.\n\nPhase one never updates the database and never rewrites a CSV.\n\nThe current release targets SAP CAP 9 (`@sap/cds >=9 <10`) and supports Node.js 20 or newer. CAP 10 is intentionally excluded because it requires Node.js 22 or newer and has not yet been certified with this release.\n\n## Reported conditions\n\n- `LOCAL_ONLY`: a key exists only in the CSV.\n- `DATABASE_ONLY`: a key exists only in the database.\n- `CHANGED`: the key exists in both sources but one or more compared fields differ.\n- `DUPLICATE_KEY`: a comparison key occurs more than once.\n- Validation errors such as unknown entities, columns, or missing keys.\n\n## Install locally\n\nFrom a consuming CAP project:\n\n```sh\nnpm install --save-dev ../cds-data-drift\n```\n\nAfter publication:\n\n```sh\nnpm install --save-dev @animb1996/cds-data-drift\n```\n\n## Configure\n\nAdd `cds.dataDrift` to the consuming project's `package.json`:\n\n```json\n{\n  \"cds\": {\n    \"dataDrift\": {\n      \"folders\": [\"db/data\"],\n      \"dbService\": \"db\",\n      \"ignoreManagedColumns\": true,\n      \"emptyStringEqualsNull\": true,\n      \"excludeEntities\": [\n        \"flowmate.db.ProcessRequests\",\n        \"flowmate.db.ProcessTasks\"\n      ],\n      \"entities\": {\n        \"flowmate.db.ProcessSubTypes\": {\n          \"keys\": [\"code\"]\n        },\n        \"flowmate.ca.db.WorkflowStepConfigs\": {\n          \"keys\": [\"requestType_code\", \"requestVariant_code\", \"stepNo\"],\n          \"ignoreColumns\": [\"ID\"]\n        }\n      }\n    }\n  }\n}\n```\n\nCDS keys are used automatically when an entity does not have an explicit key configuration.\n\n## Run locally\n\nAgainst the project's configured local database:\n\n```sh\nnpx cds-data-drift\n```\n\nAgainst a bound SAP HANA Cloud HDI container:\n\n```sh\ncds bind db --to flowmate-db:data-drift --for ci --kind hana\ncds bind --exec --profile ci -- npx cds-data-drift\n```\n\nCompare one entity:\n\n```sh\nnpx cds-data-drift --entity flowmate.db.ProcessSubTypes\n```\n\nCreate reports:\n\n```sh\nnpx cds-data-drift --format json --out data-drift.json\nnpx cds-data-drift --format markdown --out data-drift.md\n```\n\nUse `--warn-only` during initial CI adoption to report mismatches without returning exit code `1`.\n\n## Exit codes\n\n| Code | Meaning |\n|---:|---|\n| 0 | Synchronized, or `--warn-only` was used |\n| 1 | Drift or validation mismatch detected |\n| 2 | Configuration, connection, or execution failure |\n\n## Defaults\n\n- Managed fields `createdAt`, `createdBy`, `modifiedAt`, and `modifiedBy` are ignored.\n- Empty CSV values and database `null` are considered equal.\n- Strings are not trimmed unless `trimStrings` is enabled.\n- At most 100,000 records are read per entity by default.\n- At most 100 mismatched records per category are printed by default.\n\n## Security and scope\n\nThe command executes database `SELECT` queries only. The service binding should still use the minimum privileges necessary. This tool is a deployment drift check, not a substitute for SAP HANA Cloud backup and recovery.\n","readmeFilename":"README.md","_rev":"1-d27bce05c1ad97b01d98aa388996c091"}