{"_id":"@adamduffy/anonymize","_rev":"2-f8a980283773bceb8bc649430caeaafd","name":"@adamduffy/anonymize","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@adamduffy/anonymize","version":"1.0.0","description":"Anonymize a SQL database","main":"anonymizer.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"anonymize":"./anonymize.sh"},"keywords":["sql","mysql","postgres","postgresql","anonymize"],"author":{"name":"Adam Duffy","email":"duffy.adam@gmail.com","url":"https://github.com/adamduffy/"},"license":"MIT","gitHead":"93560d0def1a1694a7af4938da6c823ae21cbffd","_id":"@adamduffy/anonymize@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"adamduffy","email":"duffy.adam@gmail.com"},"dist":{"integrity":"sha512-LTCPrqt6LkbW+d+TF9QhUiRBWmLIgliHBy1aIT1vsh1l9vQM0Og3XJyGypN3ME0y9AF+ZWulRq95ijXzJWXCEg==","shasum":"dfa6ba95c340804c2176401538a86f180b7ca231","tarball":"https://registry.npmjs.org/@adamduffy/anonymize/-/anonymize-1.0.0.tgz","fileCount":7,"unpackedSize":9413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLRTZCRA9TVsSAnZWagAAWusP/AvKUm9t/6gy+YUjS3f+\nXlbGs1X5iNGjs3mm7DkcTRzZxEmU5Ur3D7ng/hHXUx+d160oxEGQcGKoqgUW\nN03LWguSSQvrp/4zob1xxa0eKY7IqTMupYONTqc9VC7qp6aPZjuxOJgBQZGZ\nwhfgLK+iBJgrnb8ijasrdCh1t3oWRhGlX3cUO3AjEgbWpDpOYHZy+ASYf7zu\nQHCo5cB9g4Yl3HVstDyZmFPeqXmbnNsU/hgYM9OjYyA97wgRIn6VcaIo5Kl4\npHhlXnZGkapjhatjyQbNsP4QXevh9TFPeB88QOr3nUpq3rD3kWpsFOs3e9jz\nNhQ5nyP8YzbduYCUQKnaWBUkS2nZgFdAIMJOmBZBSaRSHZInsVKRnVZduLKl\nU6PDEsoavAcaM9qAhg4BkISCJTpnO4x8hzY7TijqE7l7Je/RP2mr+iNPUcMG\nSHGuYAp7J650atpFUojJlk2Y4m/c1HT/9XSGH60P6+MspbdxWrOLqCcnP06v\nRGsJH/+Gsh/uRRG4GxL/6ImftRh2Rw2IRLOl568o6DjIaBvgybVnBvmB7aD+\nzwWCC4LGt4oC7p+1mUO4FLY5uRXE972128I0rb926LsTlgA3fsjQbpaxLJYR\nGnBF9Lc0Rt3paVEGYSPveQq/G6N+YHFZ7k/gwLS9r8L2thFhb8ZVzCQp4gWJ\nEj7N\r\n=a0zB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID5ITH1H9Jt8jPtVjhpuLYXtF4otjCzZzl9YrJ4vqm53AiEAqlS6VJ5H7BVoURAgG78ylXy72aib3+SOTG72e59Teco="}]},"maintainers":[{"name":"adamduffy","email":"duffy.adam@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/anonymize_1.0.0_1546458326140_0.9082530690987196"},"_hasShrinkwrap":false},"1.0.1":{"name":"@adamduffy/anonymize","version":"1.0.1","description":"Anonymize a SQL database","main":"anonymizer.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"anonymize":"./anonymize.sh"},"keywords":["sql","mysql","postgres","postgresql","anonymize"],"author":{"name":"Adam Duffy","email":"duffy.adam@gmail.com","url":"https://github.com/adamduffy/"},"license":"MIT","gitHead":"0fdbde006ca38affeee750f1d3c9255cddfc562e","_id":"@adamduffy/anonymize@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"adamduffy","email":"duffy.adam@gmail.com"},"dist":{"integrity":"sha512-fX2acAJ6iq2veTSpthVCnb41+rz9u4uOhWfiYM5fns/9RKhIJH/AOxlU2xY0fqEcZPWLw3cESPz0FIu9p4bXNA==","shasum":"b40950f3834e57a394f2fb860daa557eefa46229","tarball":"https://registry.npmjs.org/@adamduffy/anonymize/-/anonymize-1.0.1.tgz","fileCount":7,"unpackedSize":9397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLa57CRA9TVsSAnZWagAAiG8P/Arw1ni4XUzyFawKj4dB\naziJLJSOnrMtii9WHlVBtV77I7nZ1SRccUUJdtfEBNYCys4ZI9yqUXIF3tIi\nGXtk+6RrNBtkqDlNnt6UdTr8qNBGINjJ+MLfWsMeVIyamQTH1sT7CBfwFQ5l\ns/OUvzKRVbeKOB92yRVLN8g01pHtKHV+h0oUg6H9UkchQdvb/Dmq+sKSXWEq\nTCKSfCsgj4hnj9uLh/RbFZKggH2lTbdkMisfbPLdkSiR/yWd5APiyMeAbJS9\nnFmggnhMoOuv60Xy9w8yeCjmdWw3EmfX98XfIOZ3L+MqtNlRdY5E/76F08JX\nGRk4+1Tz1/5VQRqo/A34v533LMisB6oW7Q/C02s1dgD4nKBdy9JkP2OiLaKD\nhk4OAB1Llm08KHNBZ3RG8j3rFSi2PIV9noI1TD6wfdW60KXrzEhf3U1K47fQ\n/CXyEJpNI8JV5gMZ5VLTM3EzUtVULfFg090ZlfsJAlyXaf5sVBp2bU7QTGiN\nhjOKxgjitV0o3SnE7AC1KXwsiKfxgtsdGI8Wrc+MdGY/bSozHa0bJbFiptkx\nRQpI4ho/3Guy51MCMXARJYgAdEnaHdkau+OcJkmX+5U9rKmXPG1iTGpG/M9Z\nQEV+4uX0Uuf/Ig59UNdaaDm452L7c92qWfChdOs3m58XW8M6vb1iq5drz2Vy\ne+/c\r\n=auix\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqlpMflNw7uB4FA+qzTANwDMLIGvN6kSO5zmvV2MpLvAiBovbsQW+vjsAn6jILi7pK9S231HNrkqiWr3KrBvHPNKw=="}]},"maintainers":[{"name":"adamduffy","email":"duffy.adam@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/anonymize_1.0.1_1546497658838_0.09237022913263915"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-02T19:45:26.139Z","1.0.0":"2019-01-02T19:45:26.245Z","modified":"2022-04-04T11:25:11.495Z","1.0.1":"2019-01-03T06:40:58.970Z"},"maintainers":[{"name":"adamduffy","email":"duffy.adam@gmail.com"}],"description":"Anonymize a SQL database","keywords":["sql","mysql","postgres","postgresql","anonymize"],"author":{"name":"Adam Duffy","email":"duffy.adam@gmail.com","url":"https://github.com/adamduffy/"},"license":"MIT","readme":"# anonymize\n\nAnonymize a SQL database (currently only postgresql)\n\n# simple usage\n\n`./anonymize.sh [psql_command] [config_filename]`\n\nsee anonymize.sh for implementation details.\n\n# how it works\n\nanonymize will analyze your sql schema to generate a set of update statements and apply to the given database. All nullable fields become `null`, all character based fields become `CONCAT(table_name, column_name, id)`, all numerics become `1`, etc. primary key fields and relationships will remain intact. there is only one update statement per table (i.e. bulk update). defaults and specific table/column values can be customized.\n\n# configuration\n\nanonymize requires a config file to run (example provided).\nthe config is a javascript object that consists of 3 parts:\n\n1.  `_default_type_values`\n    format: `[ {types: [string], value: string}, ... ]`.\n    types is a list of sql data types, value is a sql expression.\n2.  `_skip_all`\n    format: `{tables: [string], types: [string], columns: [string]}`.\n    skips anonymizing specified tables, types, or columns.\n3.  custom table and column values:\n    format: `table_name: {column_name: value, ...}`.\n    `value` must be a sql expression that will apply to all rows in the column.\n    optional: `table_name: {_skip: [string]}` to skip specified columns.\n\nwhen working with the config file, keep in mind you can and should use raw sql statements on the `value` properties. for example:\n`{email: \"CONCAT('user', id, '@domain.com')\"}` will be per row, whereas `{email: 'user${id}@domain.com'}` will be per table (and id is undefined).\n\n# debugging\n\n`anonymize.sh` is a three step process:\n\n1.  generate the schema template json.\n2.  generate the update statements.\n3.  apply the update statements.\n\nthese can be broken down during initial setup and debugging:\n\n1.  `psql -d my_database -t -c \"$(node anonymize.js -gen postgres)\" > _schema.json` should create a recognizable json file of your schema\n2.  `node anonymize.js _schema.json ./config.js > _updates.sql` should generate a list of update statements.\n3.  `psql -d my_database -c \"$(cat _updates.sql)\"` should run the updates.\n","readmeFilename":"README.md"}