{"_id":"mograte","_rev":"45-313dd4aeb5fb0d3b80600b63f2443643","name":"mograte","dist-tags":{"latest":"2.0.2","beta":"2.0.3-beta.18"},"versions":{"0.0.1":{"name":"mograte","version":"0.0.1","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/index.min.js dist/single.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","typescript-require":"^0.3.0"},"gitHead":"38b517105693e7b6e4e5b59704a1e3f9d9dfad7d","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.1","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-MsXC3ml/rUYyUpiOdMouztDNsF5rB62KA5hN5n6bXU+sa3P/nAVYpRIG2LnAtf8Y7qKrkXFjeiqpztoQXW2dHQ==","shasum":"df7053f1f5aec68c0c1f331e1014c8cbba065620","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.1.tgz","fileCount":54,"unpackedSize":94848,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCc7cBIavwS/kfOmIeM02KJ5k5AllRW1fLF50SaFHDo+AIhAMRCE0ZXXohAfEqo6jGN2H5GKBo2ZGmhGPK4oHW0twkp"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicFLmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUPQ//QQp/XydtKm/EgengFwjukiMsYPni1s1cNmgeDHGWJ2S6qSq0\r\nS7fdBl0phnB29ipd2ior3CMb8692L8GaL26mWa/XIb5ECADurCVHuhRYIH51\r\nNmvDkHhJOHwCHICxp1fbj1iBGILBShBAgZsbK1SeUByaJUFuY88ZrCdduNeG\r\n6EK2FCnWRGXtJHnQtIZcj6oCs4eJSar+W7T2hhvGIH/eelrTPLgqJ9pjTCxg\r\nzdt3eaGZ/xcSl3d7H2A10AUSTLyBYswmjVGsqMFed3q6bD3dtbli0auw5wmQ\r\nOEdOfxqNQaTVduzARKEPEPUr7O1MzhPFdkqloK4qROD+VSaq1Z3iBD1h28kG\r\nDxp9BZuhWsXJwlpTahfhEtiZunbU89x53hzaguVGylx6QBg+uFAjufFrJXNE\r\nJz3yNuIkMq8Y7oXR1kVlO2Cs/CqfdTlIjOhgcQAS2LZ+nxVY9NPgzl93ZJ6N\r\nEsflKOdQkPlLRG+q9IY2W/eSfFMksfAPbCFxxU4rYng5ovUq3VimQtCE6RcO\r\n83hyQ4t7hrWF/U2ZTi2Ub2hjgjbQrNdePI32jQGz7En6xmwFns/9sQCvaj8d\r\n95LDXYXXnVBcV3Us72ItcvWa5wJowpT82pQqqcCDcRUeXoF/j0eOsXdzqpUt\r\nd+0Oai5VzGmRGGx5Qdz1Kly6YMEdvkZpokE=\r\n=9TOo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.1_1651528422358_0.6215227503616074"},"_hasShrinkwrap":false},"0.0.2":{"name":"mograte","version":"0.0.2","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/index.min.js dist/single.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","typescript-require":"^0.3.0"},"gitHead":"5eb6a15ab030a0da4e02a52ff45339fc86a7ca8c","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.2","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-OxccY0HZezyROchFW/Ui2Mb2O39DVfnA4Y4DmoVVuTiZkoLxfLvP3Dz2ajncbZSiW2CwxFHUYIGoFhCOw/M9gQ==","shasum":"7954b6e23139c60d7df78c165667896999214755","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.2.tgz","fileCount":54,"unpackedSize":94839,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9a3XQZqcUgo7Kx8v3kmVk0liTs6Z7eTjO0c4IEOimBwIhAPh0VrhyPpIYtXY4mqWI7+tlreqde+vVa8OuEyB/dIFe"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicH7cACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBkw//TmxBGue2M6cdanREkPOtY04LRojlTg7ztsguzkrB37ilHOwL\r\nl6INS8yXij/+xh4PslfpHT8zhk/vh9mIYs1HsAPGPdGPsZvmLvYetwUC508I\r\nYmIuy8NQFQtvdRa+1MbOxzaX8/RtFmQAS6w9cOvvDmkj2vc0jnfGuuhyCNz4\r\nl2e6o/y+s7NBUYlrf1gGC8pYrZH/51R/KCQ4/plIaGxSu60md9atgwhS85hD\r\nK6WFB+jwmfvB6sW+6hE3uU0lLcG5u8h3viYhA8K3MzcToYDw99QIUiQM2Vg+\r\nW2ivlujSCF0USXVI2MW5t+mqXvJcVj8sUTMPGGj19ze6lhdr7Eu3isHEWilo\r\n0Pv5YdJEGsRUH5dA7I5iQmvP+aCiO3JFbCyevBnKoOSGBAmXwc1O+TyzcqjS\r\noIv12Lh9B4LWcnT4s6YexizlW92tXgDaV00MDhk67nn724fGG0yVjxG6qCBj\r\nul2dF0b/hBGXpD/uP585C49ioqMhV4XN4jtfNhnSx+FlAXn7NOxs+x+a1wKy\r\nFpj6o1uGi5arIMiJJkYuoWf3sw/2XQOttb0PykkYpxwsTYZEKBslfYfAySgC\r\n+69a+BMzjgebTTbIhLlPUyZtyLPdc9vaj24QDYFNEUrcQXffajiDy8DZCbTE\r\n6hKz0ygKJY7N1A0AUB1ZIh+f6KmVii2HPOw=\r\n=ri7j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.2_1651539676321_0.10800146922968401"},"_hasShrinkwrap":false},"0.0.3":{"name":"mograte","version":"0.0.3","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/index.min.js dist/single.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","typescript-require":"^0.3.0"},"gitHead":"d169a561246fbf2651cb2272a1f5e2f884caca28","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.3","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-SS6WDadXez1ByG1XsYvbrVBPrQqJFuqCA3D+7rItQH9yn6Tct0fbQpuRZsZ+ImIeI8CcAUrEKCdcoeOEzB61sA==","shasum":"100761f46811b3d807f983cc9c503f7ed4d4e299","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.3.tgz","fileCount":54,"unpackedSize":94839,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpvM/eWKkSeUEPqXjVa/nfSGNtsywSXjLHMcgsYg2UagIhAM4Zt12zTFNO+SKUyU74zTu7qIqLVCdZC89J6zSilF4g"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicH9TACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnsRAAho5oDFWR0CUUJJ9kQmTto8EbXEcQGG16xtc6WMGGQhFW2/fC\r\nz/c5lejwDVbkXDOjfl03SEiEaWPf0vJE+/ULuFZoVJ+NsnOy4w2Op79rxIe5\r\n19ILqoR6mGqp1q2eqerMC9PYeb9UHkRnzNZnZCfh0viJoIq9L3R3QLZZnUbr\r\nKvM3wUXoSfmWDQL+XjVK92xLz/cG/zsS9NOFr6067vhx3R8iSv7/xE8YQy44\r\n6JAXH79mGplJxYZWb7S+XiHyhGwYzCx0+K/JNmHFcDh0bwfNacwf4lsOL/Jd\r\ngg6Qq7Pa/izMFaGBDHYInlRVSqb0ZdY+X8D0L3grHXwqn1qHncFciHtr25nK\r\n+kejVRpNMrFjQs5aGq2pIbCHA7eWmmpNujNUNQs5tGT1bOXCYh7cjnt17ujA\r\n1BTfRYn8U+TTp0FV+gr0T4Vpd5QGRr0g0/x6S6Zxw7Bw6fhAyA5GyfUxJMKj\r\njk1ZapvsZuaLDdZaqh2MbDb4pFTdCLqAwW3zzANvpvnWg5d9Scfd1omLWvVR\r\nP+rr/pZo6GEyccPGtKUNhpxbevLBBjNn3JQvSNqe4BVVSxOQpKBAxMey9Sxi\r\nnDPUN+yzTzHFF43ZhDvwHXPNatF+a9uDmtuw1M5u22vHSpImq7Vk4ZiN2ESc\r\n+maQXpjSFtPEsUi/AVodzWn13+i0Zgt9tnM=\r\n=sCeh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.3_1651539795509_0.667053941426252"},"_hasShrinkwrap":false},"0.0.4":{"name":"mograte","version":"0.0.4","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/index.min.js dist/single.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","typescript-require":"^0.3.0"},"gitHead":"44b286541732edb9bd6dd426de4bfe9ce7d9370a","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.4","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-7Cd748sFE1LfeQy6A9YSaaJcGjT4Z3qYo+Q2UGmMzJj+BwhGzNQofzwu+e1KyF8Zw02WIO8xl6lAs0aKpDX/uA==","shasum":"97dee9a14aba56cbca5f7e2589edc4841a6c1572","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.4.tgz","fileCount":54,"unpackedSize":94817,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDl69mnPxlQ0M6QBWdFulrb9zYmFEdrlNSV+thVH+1i0gIhALTI9fIOxNWUWLIcHyVNfqkzyoe7VAHF5ly6jkPWsxD9"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicH+bACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpP6A/9EM7Gbf/9AIzF4bjFJ2ecLejsTjYndUAeYGEljtcPHId9Peks\r\njT5t4fe9ypQFsEa2eF5EiaHRtnAvnyAxlIt+bGOY/Je8PXqXWOw89ztycx/+\r\n6SKvYNAoUX+ffSm+3OncMu3gInQGldT7qXuZZP0fpW5Qu+uubJym3jbMfXHn\r\ntFl0gtVcrPMRPRkutYNJVFA4HzKLYZM5OVQiT3G5qKMHoN1JJJvAvj4CQ8wK\r\nrYjTCi6NXf4bYWvOxasRG4BnBlB/xkbZsLUlryASqB2DGyTHm50pzw1nlnVh\r\nOwKqnQ8fcw9iCnIYJWdKGD9WdQb3DbeNz5KMR65VN5Hbfcv7RbTaW90GqH4r\r\nwLLgPGMGf3w+H6QISSyByQ9EqEscWkJDnSaFnSAa4JT4VmUsi2aRIi2F8a6I\r\n4etxQswjRUJCQXk+l0BSLXplwlAXfIQsAKdX5WW2U52ZsxBFoi889L3GLlOL\r\nhTzcSeKCKohJ/bjXQdQ5uH6etZRt6t6BNoivdL/8gMI/pXpy/RgnKQ3kLl5X\r\nqh+2mP26ak7xNQLd8JjOzmosN/C6K3i7qMytbrmkzVvc/qzF0XvLw5kUtm0f\r\n571xV0SHErgSGRPrXm8QQh4DJ/iNwZj7o+2MZkBPz9I+iHpk1kKObzgkDsH2\r\njpy+3lHNSbzy1u/8jemvmFhQa3DfvcNiNsQ=\r\n=PkCO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.4_1651539867726_0.5830011094003693"},"_hasShrinkwrap":false},"0.0.5":{"name":"mograte","version":"0.0.5","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"d75987e121dbac0699372cd362d41f7d675dec99","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.5","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-daVJcYnDvg1IefNqhZR7eo4/+ERUR9Kuq+rcgQfa4YSGoF3cZtZo1YeefdOgktKfQm08gKfd/L7WkSDxZ+16Xg==","shasum":"7f5cdc2f6864b09b7a9e8c508bc89f4be876e1aa","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.5.tgz","fileCount":54,"unpackedSize":94831,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBrH2xX0tJZPfB5VfSDrm4hI/FaUYlhDGEqNaLQuOFstAiEA9VSYnqyz65pVq3djdNptHaIF5pI5P6w+70u8z3q1yuE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicIRpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqm0Q/+K3EbpkoYfhPNoJPqbYEujG2ZvmByxW1BWM81soK8+u6wraa1\r\na0RU/fF2L2lMNT50R7sX16rdyB9PLWojQaDxwZlvEi3b/DCA+COpa+T4fqUn\r\nmZ9FoVGf2HJJmE52EY/hJK4DdZnGy1q9qHW3bgeYR29j17NLAx8EKWEuJWaW\r\nscDdQwjAwSbJyeuiNPBQkDIUFXI8y7ZO+bb34oBOrWWGN7o0BRXi42TfBwch\r\n6GFXkYT4aHAxrlvI9dAASj6717iAvsysiHcP9gOjXnQJO8wuDW+Zf86ngdP8\r\n2L0UHDPVXVQEItfBH8C7Pfr1ZZAgInN4L8Yl/n06KTxoHZNIS8prW9RqfQ/F\r\ndLGv7ANBEj2eLakVGEcz5H+LIl55yJUtsVMLV2UCuOLsc4kh7ivcEx6fcW2k\r\nCvnbLpS1yMGL+5Jb8SCmGtLG4LiEuhDNJ1Q/fmm/bTsLAsa2LK+oxNHW8C00\r\nNkst1vEi6m4kiiDfnteZl/nB2KIZuTKRMTQvwf2kYUxGIhpIQ7Z1wJAuYVjD\r\nmtIgby3c9i7ryKYN8rqENiOAXH2+fyrwCiU4H6TGB0XJs+2/mpvmSBOl6HzL\r\ncQvM8rlV2+n55jiN3ET8Chs8pybftuFLH5Ms9RW4TjhI7hi9+Qo2sEzTpmju\r\nBziT5Uj6ut6/Cr/DlHKl/8/J000qhR7f5b0=\r\n=OTkg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.5_1651541097214_0.9153010308546712"},"_hasShrinkwrap":false},"0.0.6":{"name":"mograte","version":"0.0.6","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"d8816f59a5543d46d331ac24d7cc8eada2508ca6","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.6","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-QyN03gOmB/ilG9dnYWZZ6UQmyTGWU1h1fDK+ssRJnz3ZNJUoHSHl+ITnsaU97HhkqayxG82IzVLWkjv+e4bXKA==","shasum":"ab9624beb7e4d9f58490b5b5dcf383ea16535083","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.6.tgz","fileCount":54,"unpackedSize":94877,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5oq1IHkDX4aS1B0sQBLQrxL/16xF6CfDbb0tWvswJZAIgFxQjebbIMSEtlujR6ZCzZX5Xzs4ixM3lA0b7y0qvBG8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicIXkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSGg/7BTvYY+elDo7Bjs8DVZrfFvE4QSj+s6Tl7Fgz/bEWqUDcX80X\r\nrIuVswXrt+sGIThi4q0vKD41rRKa0NvGAmc+jKi56yWoMn11+mjZBQ1vCZiV\r\nko+N4HCDM7MMliWIy7KfNWI62LSKCUrZ4ulnUNHiONzMcah2jCAsXQnMjegf\r\nCEt47hl5WLK+w7PYKrtk8SL0c5C4/3trKO9eriFGk9KohR1Hys6cu5cVhlCu\r\n/QBO6k0ec7dRHwu7Cmngz4pNnlunt+b8zQg3tZeh1zReqkIkHrnarHvgxC5d\r\nW4huZFVqJjD8M4TaqcxuNbzdvL4YT+yBK10rCpk1/dLQovROv3vBUqjJ5+6Q\r\nQgMk7HcmOPu/IcuwxWj6sLY73XQXDXxL5IHWp6fdZTNsIHtMul+Ypc6OlXYZ\r\nsnoNKEFN55WGBB7+/sibqMbiMz5AP7DP1FrIUQFNeaXRCV3nkj4eRF2MbKsT\r\ncIAXNbWUzxrOdyuXUQ2tUyarDL+lcvHzzZEwoX3plW201VYq2sByFvliUMKa\r\nu/SYLBKu/brzUSKbn/p6UrA6d7APhTJ6rJJkzC7Iy6ov8icJF+ENrkz6geC0\r\n67z1ATzxDJ4kZHLPI4V4siAOOFH0VaUIrsc5VLeSboLYvpmTHlHVtqo05w15\r\nNxDo6XrVJQJ3krGBakaPQAAWiGTNKL4KRjk=\r\n=H0gH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.6_1651541476339_0.022136792612792"},"_hasShrinkwrap":false},"0.0.6-beta-1":{"name":"mograte","version":"0.0.6-beta-1","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"6d9b5d2d299c097a26b2dd39f3882a799bf98637","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.6-beta-1","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-Uowqqfv8RpLuzHUTD6VLEZC5AKshusIFHE006e0VRJYlWgJS1x9/yUsudGvxG8HsrRFjl7kTE2fuUiCn2RDsIQ==","shasum":"9814c16373d9c846eae6610b8b985672aa488192","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.6-beta-1.tgz","fileCount":54,"unpackedSize":94886,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3O2at6KNc7WKY02+38ZA0VRSRscx6YQQcuwK4xP54GwIgXtCRfySWIalgdZpiFz6I+NgULV/UvyC+gCJbWFOGkno="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicIssACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr03A/9EEQPNO62ITUEUi7MIgFICSEGY/GVnV5TU5HFMHa7aGFfIE/K\r\n+9L1+RJCjahZpuPma/GRPDM0jhIIYhqLmGj5QYeK1q2d86IlLzB0uuJXICIo\r\n5Iu0RWknRVrrhKKzQJfGGq+0AID611t/r6aLoLXWcjSS+UgLCUb635EInUru\r\n7bPl4Rgkshpl8HmG6GeOvGD7fM42A15vtO098vBpYlxYvLRqdOHImA5/ogCG\r\n5odL1jM8R85F9NqZWP0J+6D3LwD2nvwpCA2uKiCMI00pIOXT16oN5eA+e2zR\r\nEfzVCgtzD1aQ74i985wDxxZdjKRJxV+vZFnLoiOCJHsuFsu1qDbLMe6gE0mh\r\n/lmnQwJu2nBtwUzBkm2WKijoIa89jjM5lpx038wVpzhXEpjQraw7yU5m9W5j\r\n8oAElyrjLDvby4+Z46HUTMIO04ZsMAHTAkVymjrqjmmdDomK2d9IMuF5F28S\r\njA3bJafWJh+inIQ/8J+jxixUwE50fU8fyV89xPpCYBeoMO0Dnd0sNOdSTtK7\r\nIQnK6ftbUnz/4Vy/G5hMlvsqSsbUFfZkNXRaUCrYolv+7krLrrtCvpRlG3Cs\r\nyr8FkXaQMXfGk5kb1QjuMo3KdHoE/Zg9HSaFj1YBR0bF7Td2hMJYIbTEeKr0\r\n9EgTT7U6swZ9u9GAagjbwCX3uTpemBqIEP0=\r\n=uAqA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.6-beta-1_1651542828362_0.7213600528223407"},"_hasShrinkwrap":false},"0.0.6-beta-2":{"name":"mograte","version":"0.0.6-beta-2","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/mograge.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"c672cd97b512e12fb91ca489927e019e6fa7ebcc","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.6-beta-2","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-Mud1nntX9HJm6QhjfYMna97icuzZakDMIqgy71Nf3kz/aa+kbG2WHhQbYFtPCkeNcLNP9RLXK7Xjze3V3/lU7A==","shasum":"7c21b594d9a045cd1c9526516a20dea26502a231","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.6-beta-2.tgz","fileCount":55,"unpackedSize":94952,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEzbVnbGNrw0FZCxQBYVWaPumPFNOADt8323WcEx66eTAiEArxm5ZSHMzr1hWqZ8T7T8RIVHOSU5LTqdo5T8XRHuwiw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicJEbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqOA/6A+a/HEM/2ft2wbkQaXg5Skhseplrlgbotx2tWLqk+YuzOtlR\r\nfMkMNV3YV8JNzQJFXUtGpfH/jO1K4Y07XTW0L4biefeB22PkDStT9lrj6Hnc\r\nQCKabLp69AhZPUTHvhba+9LT1kM5Znk0Aw47t5dSwGx1JcjDslOAM87nZf/0\r\nnIjzVocVk2ssCn+eWHRe4847GfbXBOorwYdyOgKT6MVA+mswURUeyxClZs2d\r\n+bTutGIIr9SWgH3bksRg/Mh1+wFZBOJhybsvXHTdK8xhBf0y75QDZVeuDoqs\r\nadg5m5N019f0ZawAQApHBbF/xCDTZmYMADWFezAnisT7IXVcr8botz+TGMvn\r\n4jPprWm/mREO/l2Nm05O02wJgxMdTQiqsUphhyTJ3hBkZBfhYnzm46jUjUiR\r\nJIm+cyNNzDtUiNUp3+t/VjhZ7dTyS4+URWZDsbBJ+ImGFlXIx4K2m+jKwPJR\r\nqkiCIH0mtvGY3imjvq4CltvXrQ5xS/NSN8V7SAnYSsYeRyJ0i0200Fk1sYZu\r\n8xoMiCJq0LjFpulBEgHPlCIOUKBbh/OoGtUpQ3jMnka9W6rzKRNvpFP42enb\r\nsPeOes2hv7xgyRMSMsskj9+YBlkwS1u+rXykanTyW9sWz9CBGR4QhqyokdWi\r\nJpCtNZZ4DXq2l2ceZ1Imsx0hl6v4uxkO+ss=\r\n=V+Dq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.6-beta-2_1651544347183_0.6187695615099735"},"_hasShrinkwrap":false},"0.0.6-beta-3":{"name":"mograte","version":"0.0.6-beta-3","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/mograge.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"ec5a8d33d5715535b4d2a4ffc2bfab27755dc234","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.6-beta-3","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-wztfv66PMlxCybJ2tAVpCOKIgAZ6DTu+JQ/CB5gwVPok1Va4XX+DrWnjevNTBLrErDexHD536G5dPTCVRbwu6Q==","shasum":"fdc3df618cbd120f79185034415047cefc60d3c2","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.6-beta-3.tgz","fileCount":55,"unpackedSize":94973,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCKy8oKTJaQZ1ywbFkke9i42UrC7UXxoQHmavsLuql91wIgMG/ysgWgNsezIvEH35wEwvJ1DN10kqUpTt9aWLF50zc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicJGZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBnA//cIlIwIyI1LXiKWvJf65Neu5EzeU7Ar5wdn3mXcW7GRtJ3IX7\r\n9F0MH2dGuKpTDVbclPG36ExFSqKibDOo5DATjRr3jJwb2reZVJI9eg1CEqih\r\n1wBgYYxS/oZUQKRaCeB2tMVjBNL9Qr/2nE5k/xb/uj8R9tbj2j2r9WJmEmS9\r\n5uDOs7/9W5Qqo4YvSAM2UovxZfl5D+t/xJ3DlEh7YVarG6wMdEbXBN8OcOQP\r\nF5RCpPbi12WShNVwMcaw539NyuAFk3EYX13IX7mz2KhD2tiaVRk8ug4UrVFB\r\nUiZT3aKH3nAuioVdF4Qce4cHpq3XwlLU/31mxiIKMmvdjnkq3ZqVMNDUXT8k\r\nHQgHpw8CqT40FAJ7q8o43A9+pUD0TSmLmtZz9YQGgD76IzYxa5zFuqZuUn/j\r\nSRro+bx7+jPQT4oLCdaSSfn8DMtLtUuTx0drYLsl7ZeBC5+R+JP+4TIY8Pcb\r\nrOG/kvZYoxL0rrzoaFrcsB8WAt5R6aVKFaIgNYXODzt9L4lfLTpsK/tJYa3j\r\n4eddljVw1wcHeE4iXneWPFWy7CxJPPE5oN4dSSkIaeOmoBkg6HPXNdyoSewr\r\nyLJugRG2RvPXZRqnvm+KD1cbIt7+Yk4t0sBtBRbmFHhZKEhMjOx7ERFK5q+M\r\nACCDDVBtnz2y3NXLKku00bPQ8A7FCzPB7OU=\r\n=H7JK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.6-beta-3_1651544473053_0.13218823147473757"},"_hasShrinkwrap":false},"0.0.6-beta-4":{"name":"mograte","version":"0.0.6-beta-4","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"2d0d9c52210bf330babf14fc5b7376728061b7cf","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.6-beta-4","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-gYWg13CcPzAIpiEKnSGPT7OLXboA80fjAHSWw3krNUVKmT1F3+cBU3FCUsDB3azpdi1GJQWWJ1ZyR6UxkOaT3g==","shasum":"f0789d53c781b0a40a3e77c73011e58c4720709b","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.6-beta-4.tgz","fileCount":55,"unpackedSize":94972,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoeOUmXx92szNc0LbtSRDRT/NNwKeQJQXiWnhPiiG1mAIhALyaPdCbfkeQSdc2bvsgaMOiV/3750VYwc/6axqrydbQ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicRHrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmovpxAAlhcojIQUR6KE2eGPFu1hDuGoR0IFaCpfTo3A5l+p26SNTWqk\r\n+z3BZ7QJM5j3plkpzDhjX2GjQeMoeiR9r6jRgGOJIqsCdleJ25OG99u6VRUL\r\nO+8e4y1S+KgbqqbrBZr4Ofr0QkfARFWNbP26/Y7/Cyffhb0L2ys1s07HNpUW\r\nNeenwIXGqFk4RW/UvIuOSTfWkdC+iY3VILoYWQCSm2IZ9Cb0+2Fk8JFFhLcw\r\nLTk/c3XS1oQEM7syzrnsIlyBTceLoNWcOWzaX7fflxLh0THH/GyYpFNIRHr3\r\n8ii1KL/VTW7c+5mZrmhHczN71DU6aL4S2Wsmun/nHpbCl3IwVSXTL2yJ6qHK\r\nlMum8tkf2KvevClkDfhQyv4aiZeInzKMja16fcMH5TzcwXppMifbKOehdUj+\r\nloIAhqfF2frVrDY/UQdFfeiBExHKk4s8vwRExjhW+Xa+84JDbl710x6c+M8X\r\nQ3DVoi0sROnrvHKpaOu9DjwwUXNEfcidBAqLwkanOnu6MSxJtEYLGPML7rAf\r\nbsMm3BLzrGJwhQxH09giKlfohJd9IOpp9vN+3fuQvPpRCX1NGi2Dw2Aeyyc5\r\nYJz4PYnqXJhDTMVa8qERB7YLQb0EmdhZFmPucB2iCCyI3uXcz8+K/6AXd40p\r\nIY2ofAgKrTUPlAxMrGSXq2fFarUCRrd8fo8=\r\n=oRCx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.6-beta-4_1651577322792_0.3742457789394553"},"_hasShrinkwrap":false},"0.0.7":{"name":"mograte","version":"0.0.7","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","browserify":"^17.0.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@animus-bi/redxs":"^0.0.1-beta.28","aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","lodash.template":"^4.5.0","minimist":"^1.2.6","tsify":"^5.0.4","typescript-require":"^0.3.0"},"gitHead":"25c4b9344e307331cc475717252f155feebc56c6","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.7","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-84XLC5qlKRzjw5ookFm0+TzghiIQZcyhuYUTAYz3+OZ7ckCuaJvt7vtew/EHgOiKm+ObXxOcbUmLvQ6tvqztvA==","shasum":"a24fbb73e89c81947ddd51b5fe48d9dcc3f65604","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.7.tgz","fileCount":55,"unpackedSize":96038,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB9RbUtB10doJn3B1rnZEFPkKHS/vVIT8vGRpsOpvvybAiEAw/V9X4uoILwBzEHCZoHXW/Z9ZX/yYOVyeQT5RkvPhFI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicRq2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5cRAAncYi9p1Mo2FssZDg3uM1Vq7cboohYHEgqi6x9vDFVDdDfxk8\r\nbyUZ28S2Kya+dyjbfVjd7lnWCKl/btPuRL826mk+wvlfCzpUaR61W5wYG3hD\r\ny19Zv2sA/ThQnVOnPDsGSL4SqwJz7EdrZhiq2vzBUCVHgzA2IlATxUzR9mTz\r\npqpH5mHj4Uw3X2J3WVmFl0xp3v1G29Low+KZE2++WIOz120hxURG6id3xufH\r\nHHZEdqxyOhOL2ZklDAjstinLpMnTYijdJR6cJ73GKfRcNKz1ik//8UL10q02\r\nKcDIr2MLXwvLiIH6aNgcO748rQBrXmNsUc6LMX1ua8xWPYL0//aGpAyoFaqO\r\nQjoNk0NwD2lFciMzbXfxEaOlNl7TrlK53AUUckUbhOtlAeKPEuKzTLkqMYEz\r\n0YwxUdZAQOFkoVEClDxj16p/lPQdOoTen3/CG0/5q70Ol3qhQcolBAZWTtPO\r\nlBf1ojQ/DzvEXveXlUidl8Uh7QTkJ7Y70EWTCjYsAS+98VDPbsd8mpWMbca1\r\nMUsLHW5tJ/L7vbIlbQZVEK9BY3JoyBeGItI5YiwfQwGI2E7u2ZbcVkTU3PKS\r\nveZWuVeKqeLEMY+AZKkmEDF6qmG4I+BWsehOWafoz+BKdb3PAGq4Dje4ySZo\r\nNO11dQr5TBMuuMnyJ+xOuFaTy6SvNVf3Gn8=\r\n=k/gQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.7_1651579574547_0.8025659862860584"},"_hasShrinkwrap":false},"0.0.8":{"name":"mograte","version":"0.0.8","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles && npm run minify3","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","typescript-require":"^0.3.0"},"gitHead":"713f0a56b1a58cc363109db9e6177c2e2e845252","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.8","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-ZV7rfUg4vYnQ4NNdR5c3LBgzogjVR3gptLwOOX7aaVt3xgH76TVLe3b8C0aHWZt6n9DgzXzrrZEQeUSzY5v+ag==","shasum":"8a130a52103ff758cbe0408785757b825c6f51fd","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.8.tgz","fileCount":56,"unpackedSize":98115,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8n4UqmxhXpyQPvzWCqKyn3aeE4hZA/0a3W0YoEGv1oAiAHbhGvFuJ8vrucMn3kbjVqOHQ5r7A3NxKlYKM/rrJkzg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicWxkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoC4A//cL1h4xjmHe4BUh7vLjs9+Luos+04v/yuoZJ/TJHTeMLg1tJh\r\nApXrlTpL5hhK8UA+2ZowIIXL4MXO29KcMPTkLAESw2t82Q61vzfTdrxlgPlm\r\nD3KGYLlXIjerhE5CU0CoscOILChURYpjuO7xWQbAgMB/IwWWzBtCA60fuV+D\r\ntdKLGqff65nwzP7UfPyGOOy/1Ex3b19h1SanJWbwM1FjWC+PkC47UihnmI+T\r\nqAY/jbp4GepYN4RBefOV/9tbrWSZT8a67/8oF1dnfbxPgSbU9YS9O0b4VKpy\r\ncTtcA/wggkpwivGgBrjattULFMV6XGFVKLY4Xotwu/J10Qk8BPeTzUXv1e1v\r\nMy76G+cS4PRUFmqkZCsJjBVJRhEDyl4iZoNmSXbOh67zSpee1sYAZbbgvc1C\r\nVTQBvztbxl8xgIJ4B9+jJbsJHgLtVXb1QHqCJP4ojTUcHyv/4Xrs8r/wpUD1\r\n56/cTq3RqPInBfNcUjY2TtFLr+sccuopc1eLB4xet/71uKVVe6oliTuBE1aH\r\n9F3q+ciZwufrv1s5gIkfSXAtJWbVYmmSuB2hznhjBb+QGZSCuvh3kyIDeoCW\r\nOFOCN+NpVir4/7ZOz05R45iv36Hs74ot+8Lnv7KKQiVQstaazqjwxc6mZuRU\r\nl52/Lek9sy37JhLhUdR8PePXKrWcMf+9xvE=\r\n=9euN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.8_1651600484105_0.4920923502728196"},"_hasShrinkwrap":false},"0.0.9":{"name":"mograte","version":"0.0.9","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles && npm run minify3","watch":"tsc -w","start":"npm run build && node dist/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","typescript-require":"^0.3.0"},"gitHead":"a134c53b9827f775df074c5386d1c69cc1cd6885","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.9","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-SZ1V4PuGymT0PP7l/ukSoVR8ROMNj6bZOo0w1SU6DLhBbphjk9nKIo6sAm8JuNgMqXYnnTsrPV39VAAwaiGgJA==","shasum":"f3c854f39d995742edc507314e1edcf299968981","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.9.tgz","fileCount":59,"unpackedSize":99985,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDgkgvNhPrSGuH3SFOkSDCwYjnICadu1HwVT3YJQIUNNAiBCJzu4WtIY8fyS76i82CRmedCo3OcM0siuPKVBXB/nFg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicW6zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmphOg//YO1wkkVg35rCYtnQgq2jXv+Cuxl8KrXM4LiAn8w6nGVoQ/uO\r\nCrUMWTOeIIq5UwnLyytRUqKXOGz2c24Mk016hRRL448HsghHt8TDabFxjy8E\r\nhUwxLVZbbH1ul7KahZ5ip85N6yu1VSioTOyJ9NWZcOxsyMpMbsyRqS3TR9Ip\r\nyyQ0j13D9Hc/JKM7A6Kpi3UW70qENRssD36ePw98TRBHU60ldbI99rWzD99P\r\nqQfQBygTeHVV113C0SNEfiYsvoKaEKsw4Ji7+r3oZ0Lfv/jKzKhYSwhvBMkN\r\n3omRLJwgQPnnOoTKBU+ZV4CEKnd29y8wGyosg7Ag2FSB8Yt0RxQ+2rotqU+G\r\nMs8QZyI4rpX7akAAvE/3NBWvHdqGle28gdBs1sayIwGhk3Lx4cMmcnJhyaw+\r\nCXUhJHVUA3zFamwNZAaYEQlS90yMT0DJNC0wZqnLZcq5EOTUQxqVZzZlxk5y\r\ndxb+iyu5kFsk7Zyu72ufBy0btRiMXTz5cME6N9uwgn1QVohN7jfebjJ86uLk\r\nIghZJxgQfRxjapDd2WChnDhRMoQdVHCOfoCkwKXMOby0NLAblCSVUOzhy//4\r\n3ch1++BKfVpaLnY0w1rMqC5N8baKBmGBT6aHGqGjlnYd93+970J/NBE8VHgN\r\nW/jcTTMJ/DDHgtqhdRa131ni9pKl5R/5v8A=\r\n=3nzm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.9_1651601075573_0.3380105417613013"},"_hasShrinkwrap":false},"0.0.10":{"name":"mograte","version":"0.0.10","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"9d982c2d48495dd510524c7b8e0a2a205302bf7f","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.10","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-v/F+LX2f7xe1LevuuHwUueXXC0l4iqsi9OK386wd4TnXdGNsnPRIX/y+FBDO4QYvtAumrlhMWIvDYvIv8rQTgQ==","shasum":"0af8ecc34cd24ae23b13ab08a9c28d0e577f222f","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.10.tgz","fileCount":58,"unpackedSize":99039,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7jUGRjSQ8YgF/q29V/jbD0gw+75hoJLxTfstwydSfXAiEArb+bWsKr85gq5tCjLiPMHKXEieqXYiF3GLedc9NvT7s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicZ1FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFWxAAhulnKEaTo2AqhRWn1yEDuKqw1yLijWKIntgMVNwNohsAYj+I\r\nn9q9IwtmNoIvGDr9e6X+Ap8+0nYXJNo/NbKccXyNz0q0gKVmiCQTF4vXugjg\r\n5sxGkMJsMLFxU8K4Wgv5oY494H6/xTlE3G7HiNTPey3d9wTfIDbLsgzXh1gw\r\nVp3Ce0OTtN+GhN+Vmi90rjl0j6fMuD8RXAModlYF5PCUsaeyZo5l4bN9FdxK\r\nWUCe4TQmKStUDA44wx5rxyWaSaPZPOr+zLXjYclskHt7ZaHOsVCkZ564z+ZV\r\nz1gqDyKhriWECn6HTKXEEV35BmK9H26kb33jRAjsD28J2brXjMWtB4/WOfDN\r\n53MjBh4Tp4mpHRtn++cJNpay9grO6C8icxCsXA0vatx0IuzXbtY+NtnKFbfC\r\nVdmMfua2R3c39YEiEdqzH/L5zSnbJL7yQh5OoSMKYxqjRNCzDK8UVkqsyMJ1\r\nHKhxWuuqW8GXC3N55cVz/ucTCh20IsFTVd6SFSK2KpbjuEjEqY1epAasOlAj\r\nfzC9ZSajGQkex7xIG6HxKUTFLP6LvQGPH+WPQFMGI2Uw5Ya/tOvvYu035ejK\r\ntsEgqNlK+P1uj2/tHadFgvDmHwZG1u5we24KSfyIL6A3VjRrgbP1V7qgCpK/\r\nkEm4+uwrThW247zLGmO7EpJM82BmpA7mt+k=\r\n=PndI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.10_1651612997351_0.755315054856778"},"_hasShrinkwrap":false},"0.0.11":{"name":"mograte","version":"0.0.11","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"c7eef5b47c54cbae57b89a9e833a4b1b55f8e990","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.11","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-ECHXu7Judpp25lqEdoCNpF3A/mqZcIb3/jNRSS5VUdddpf8Zf9EG6+WFhJmha2j2voAZNurVEAXdhRB4UHE3Pg==","shasum":"6401e7b29e78f9a3a6d85e855d71563da1eba1dd","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.11.tgz","fileCount":58,"unpackedSize":99052,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEjTZa8aLkhGo/NcPlILuMIgPoqJqOqS2hNL7wkuTU4tAiAHnWUQ77rJteqlaPfp0hVDceT3sdI+0ziK9FbACk/vtg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicZ8HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrAjQ//VKXhf71yvmeKZxzIdU0Z1I8RISWYNK7svtcSqs+e3ifPHOTk\r\nNIqgYL4M/syT+MjRffaH3nLAkuhNtgRqRvutiULAI5IahOWJOU/t7zwLm82T\r\nHEA38TPUR64ugk7bqsev0wtZuweAYKX6piYPWUbDaHctoMrUXC4v1xErxKdJ\r\n9G4iTvd/WePF85GmEIcIK59HxgsRosMhnxY8rzwC+C7NFMgMGUaKiBhh8Vwy\r\nHuM/eBCzxcurpYaK7YgH4uSSoKDD6VXCl0yK6jX41Y8ovn+WerHSX4J4BZmG\r\nkh0Y+xSuDBLPX6NOcPZz4DIO4W23unIHlYmEExD+gHpjo8hLikv2PcLkiyfS\r\ne7hSKM+kNy6WFWbjmSwgrwh/rxHV5ISJUYCgA0t9GU/FYbVXNn9ZG7pzxGmM\r\npFFSd1qJ9R93y0c2iTPr/8uNzootJs6oomvDnOlSS/lV4r7mqrBIJvvBr6yN\r\nUd3DUoHplJA3zEHafmvJZOunL6Uz1Yc2wtlYejTqK6qDfL27jKe+GdytJdnk\r\nTSzJ7lwq3L63saWyobYa9uCIJYMvSzt6a2rJkXlddrl9NqcC0FcIf2GDETjG\r\nP/vj//xlF0zQr+ZSzvlk2fBWNn6q/AzT0QkrSHusevaaCaEpeJp1FUuygrYE\r\nP53PJUduL62/T8qo14kl+cAGyNwWIhYz1sQ=\r\n=F+H+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.11_1651613447257_0.5010525387163931"},"_hasShrinkwrap":false},"0.0.12":{"name":"mograte","version":"0.0.12","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"3c04226096b021a4740d9d773c27f5711eae7501","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.12","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-l2BALOh9DTl0RyczdN8yXmEhee2FwTXObAiHxd1EcaX9BEePN4Or3FwUsC+UtuI+ELgHokUU8WhmU0TJl2EcPQ==","shasum":"11d3b9da41d455f9d73c8fa1e367ac3b0ea6f8c2","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.12.tgz","fileCount":58,"unpackedSize":98670,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCia57jIvTMYfbgycyzHevYOk5LA3gWb+uTu6tSf1g2JgIgetbtVQy+O9hpBgJyjNCq94ZadwmqyY1ReQTGesqrEMA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicaG2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmotvQ/9ErqJ71DuFYKx2CmPZvysouChZ2Ndsy/E/T4SN0uw6i+5x6eY\r\nf7l+ehzUdjZmUEICNJT8V9gmiPd2WdzgzdIuNJi9SDAHJukOpX9i8u9vtelW\r\ntW+gauiXtxv2ePvkgRI/8wDhdlnWHE93o7+bpBDLduqFj320HBBN4j7rVfKv\r\nwJgfYzFU1SaAI199OoOZYKUkzNkOZERnPoxct1iHO2uwAY0oTtN4IS5WFfd7\r\nAS1Z/BYkNmE7aPFAPhYWNnwdFRAPskbQHkwk5qIsaIrAnHKzSxO7UOsPIKAb\r\nmQ5rWjDl8scLHJkSkAn23OgKgZB6xBvSvS35omGTRCVLl1DAZhrxhcmWGQFK\r\n1CLE64LxHw8EXKYboKHmiBWDyc70+lgjw6UrLIyMft1zDLXVahWCaHV5SqrR\r\nEQ6mOhiRPH+AtqpKsbu4g1ChAghthdTvL40PCGqssqi3EztTkV+jjLwB7RXD\r\nJwnVTdWXcYq5UvdugL4zvfxo3b2ySD/PQmUKji5uYwyU1w5XBGcILP/Wcn+7\r\nGlpjk6gT5qfAYorXHRSV4KOPQskepSCfeabDTMSKvmK8J9epfi9SQ3wNAvzh\r\nv74Kir4HcrKIhaoPqFJ9NMCRKskvXnR6SSjo7QrxTNOH5x4q5xYN1gHDsHp7\r\n1+JX36wqnADQvuQXL0OFBxl0znpp9tS97/I=\r\n=sKls\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.12_1651614134091_0.18915253369773022"},"_hasShrinkwrap":false},"0.0.13":{"name":"mograte","version":"0.0.13","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"7dcddb69b8b413cd535e1e8d4efce45176698d75","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.13","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-ddTqW/I9UGMELmmry64NZ76gQqiA0DREmNRqnjOZR1w6I1wyJ+tmjEgUOvq7X1ruDbv9+i2I0c06zwekeaBOwQ==","shasum":"30bf323e81b953afc9f0a09a5b5821d284d86398","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.13.tgz","fileCount":58,"unpackedSize":99676,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsmEoBS5E5q6vponO6mQVX0YnjrrYCoVeTStIFHiCSGwIhAIXLxO3/TV8HtGgmli8+fZL2B7itaKKF4M0IVSXIiYjB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicaW0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgPA//RoxhLqWAJUEraRco8rEFzqNANPyryu6PBg0EAZrYeQSW6O/t\r\njlU5BqAwZctG11lZaJ+AArjTeyP1Oq5+dnlJ4Eiq/+3giXbGo/+y9Si0R7Vt\r\nnk1kXkfLa/+//RtnNONB5hNYx5kEI+r0fcfjK8E3n+F6BeRMvGH72y4Ym/4t\r\n0ZuA57VfX3AEMIJN2ZsV71sFhNSQzGFX/Ih6yG2nnX6jBbp+skuvjLRgD2jO\r\nu37ug25jvRkINUV7w7rKvSX1VVx0ZpzDzzQBAOcduUgWfzF3Z2VRM1u5H2q9\r\n/Iywyjx6lj6GJHtQ5VVsjxiSLTa1xmttbNIMxrnaCufCzqbftKmPYoleQE9i\r\n7yMtzfF7gFVWuNy61p3uONk4EcNy06mUmW64h3GgoMtrkkWtWIjPjb2qqJXE\r\nlwqWsT9C9j/Ue7A/4ZNGbL3ez5GgCiR9qrQjODw3l5vvpoD0iecdJjwXsWNE\r\nO/aDMFjlMKPrQdD2fG9emQnqEMmsaZ2G6vI5ejcF5Q84u7ZafT/1sk5eq7am\r\n0crcMCXF3bezcuaJt3w/d/bx/pW/Zl19Jt5U3a9LAFhJs1NhpPgzV4FOnNH1\r\nDSRaMJLtktfAJnZN8BNPFPGsxHvgTslPGYeZCnQ39cRog7RuOT8bPi1nyLj/\r\nLol00Xveo9rSDW9VbxmklSwJAL4LoCZrWuk=\r\n=869T\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.13_1651615156052_0.5984461548710778"},"_hasShrinkwrap":false},"0.0.14":{"name":"mograte","version":"0.0.14","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"5822ad2c04dea8c28c540d1d3213c3baa01b3693","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.14","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-ljkouU/UoqY+dLIQxCOdTEJYA4zZzSabtpY1fPBmbfa3jAYjqbot1UBf248t/iSha9BCbTyVTDNV6mrfBcmRhw==","shasum":"c3ef65da6844cd24f2751e12b95898a61165606a","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.14.tgz","fileCount":58,"unpackedSize":99663,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFuO+uhzxal0BI24OqTkJ61g5fQqHJc1Kb0zBfSFyR+6AiA8wfWlRBPqraPzPMX1qvnH2qDzNSRQTmObXLa0hLrJOw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicag3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAWA//T+RKGfqSudtaP/C1PkVYMHBVriciV94roz9AyMNXzKrckQaB\r\ns74kipnATJyK3uCsHmv4z0koH/UAmFVPgHIFYNR9V7GmbOUQZ7ZLWNh8I0BB\r\n89RMDfYKVpXLI74wiCz2TBs7HYPnmsj0E3/KS1smyvHCszfXrz327SdMrZ6k\r\nEJ2pf2M5pMBhscHLcOxFmvmGGEriWcpL05MSfNLupGuzow89nuj1l/ZwuFga\r\nD1uZgA+Ae03rcGiOLSMzctnrIAxO9MxRAEmVOAeSn/5ZWiZsbPRWb4yUL40d\r\n7OyHOruGPTMO5dXscw8p+lYxaaECE/Z9xysFuTgQjM87vr7nCD5cYBVpAEE2\r\nk/JnCt5awiKQsvC868YpRa8D4oIG3gTK0zy88se2Ju4xqfCx/QB2ICwv7rJY\r\nqsMDXqCOqKaNIhQHeL3nkIbi/fGK2q01WITB88sPwQTFFeBXlvv0mASLfXxJ\r\nErs1w9m4UMevi26F1wrPxmuaI/cV8QbxHDypRdQAIPPkww8W6fLIVUhaciDb\r\nZxcCE5YGQY5ndjg+DKEphUdbYSq/lJ+bh645hwYXXmySilUCezxCGzzqN4+l\r\n+6nriBlJWJUCSooCfhXjyxTaLXljRqG28X4sdVxToO1/3zpysW3TF78x5IR0\r\nzFzduqcoEhR4EQFSK7Cfw4taxNbZ5EvPFYo=\r\n=ZqLF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.14_1651615799246_0.05919701625888618"},"_hasShrinkwrap":false},"0.0.15":{"name":"mograte","version":"0.0.15","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"b8eb008d4b3eb605bc3144743512865cf227bd8b","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@0.0.15","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-rtBThoaxV3vyYPCD8Ah3fp+JhJxD+rHyL+Dekc3OBRwcWDqkH/rtSR/9HbiZu4dHlr9cLq6urVzQtFlg5sweUQ==","shasum":"8f8a927b31d945e35a177693f0ce11c52ae9ba18","tarball":"https://registry.npmjs.org/mograte/-/mograte-0.0.15.tgz","fileCount":58,"unpackedSize":102228,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4fq4r9o0SvqWnv3ShkHEzuFCBetFyxZXKuemZHlzj3AiAz956gsgzVkV3WL6qkg4his5mqxEsOKPHwyLBi1LHAJg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicnlaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfMg//dduMlyzcVByKbb4KSC7chQZdlNFT9OJmUHO8KcWVAbGoyuFd\r\n/EBCRLhKUxxGQxI6J5QlHk1hzsEnT0wY6fcU+NcL4dOhQS3UBZ81ZkWs6Tm8\r\nZRciQ/zHlSJze4mMM2kfccVukty+NQc7/b6wgRvJV9lRogWbVp8nPCOJaTen\r\nHaYW0cmUIMSGqpmtgDKKdEdG07XKq6HRIfSiQhtZhKYXaUnsC24zJZYIcDQ1\r\nOMO4HkVARabwc46hznI0b5aoFqYpkZPyAQrHsWiWUOD7b0Cep17IRto5j0V/\r\nHTeBj4MJHQ1aGrF/QZ4yoALjmCGhs6wGfkrXM4sGE3+JuFAQ5TJy1FKhLOtm\r\nDSc+zF8AggiBTfGveyYRHpWzuf43ouHwmy+XFpAD9CkUxeNBNAIyfJrkx1S4\r\nVm6ZyHZtIX9hAHPdhidhdsfwU9RBYqkfeI69W/LbUMDZVvfIGJkMiaT2y2WU\r\nYLxcQxFclPhOT77wbUJykWNtIwHOUCWGDJzW3caEPzyBlkcMdaVlUJVQCFoB\r\nd3vMqebgFR47jT7RFhhiFuK5fFecLIFZJuM9JNFHREwByAtzd4oEqyhfl2bU\r\n+Ltn8yXlCTX68odld+0Fik3AkJHJLD6n41WUewOte0LvM1RfyNIm2FuJwv8b\r\n8abeomI9Jh4q2PSNU9OupfCnygujAKFofJQ=\r\n=9Qa7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_0.0.15_1651669338287_0.3347887499400888"},"_hasShrinkwrap":false},"1.0.0":{"name":"mograte","version":"1.0.0","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"24306c8659689acda00cf13cf4c2a9c8cde33747","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@1.0.0","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-yLGsRZy3fxZopH437njH3ovOaQu+b/Y6mIuHCPUVXcN7X5+qsM/uK8kh79JfEDMrknApOQVoD3HQxyMDw0CJvA==","shasum":"64f3bb2344f6fa61f8f8014f11fe5ad9c7ba49c9","tarball":"https://registry.npmjs.org/mograte/-/mograte-1.0.0.tgz","fileCount":58,"unpackedSize":102729,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMkP0JZ/pMQyni2tFdDt21AAlS8ZslHtdLAuCGmdeQ1gIhAOmkkwHZC2mZSG4JvrUkguPEIsSIK0tsB9nt6wy1M7Fb"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic+9kACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp06A//ZiaIN/TDXWD0QXSyF2g/E/eD9vZli7CIoUTfLSMMc0JlYvr3\r\n+6H5hqcGN6aoBHiZJUE7Hbfk5/Znr2pqiln8690QBS3DjPPKeN1xCHxpXHrP\r\nLfy/uz4/vOZ+1IlmHHiaOi4BEvQJGwC05zXLWAWroLBk9O05TXdZjPZNrYKy\r\nqL+DmuFXAekMvd0nrGVk323zxCSYx4sHtuiHh7EMrk5WfDqeJ/XH6+lbCZrs\r\nDePx3sou2dLmd6DTaSq4AY7jTQ+q1/9zIwG4uLoUXDyOfg+yx9p0qt8UUoki\r\nB7PEY5N100NIow76+aWTfTMTPbFuwvmPa6RxvpnX36ekO2OA9fPL9ebM/A6O\r\nLc7W2MYUrCanjTTFpp7PmaEy88tudmWstTUO1vwC8igjk2s2mR/mE7VuPXIg\r\nrvPPX26llkcRURFtLTnayF7s8P2HzovtUKT+D1P5rtpoAeKJ6cW0guNdYIRb\r\ntj/lH+D8x8nvT0Li49h15xniEzaYQfVgnYUcJEND+9vzQvO0HBite3cqZFjb\r\n356vDThuE8M1CHwTCdgXx1yhigSi4yFn6D9LnGd0FAUeKStZA42jtL8MzKcE\r\ntVMuadHYouPS5qiI8RZSK8Vcwj55xaKHLY2cX0wF3hf60PByfbn2H8nhCMrC\r\nveQ9QWo6Mx1fDv87dmoRYmks9DCy3pCJFOA=\r\n=z/mu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_1.0.0_1651765092158_0.46782897717532035"},"_hasShrinkwrap":false},"1.0.1":{"name":"mograte","version":"1.0.1","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*.template' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"e7c9d98c91fa1b28de0a2af5c4ebb275c98fab41","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@1.0.1","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-SdJGA11tBUY7jf/FlqWmelolCUg8vKlFitJ3BKQisug+M+lzEUJfJuGbd0vCHpsBwVRWmGzjFO7yub1PuhpIqQ==","shasum":"f7bd85a28b857f072f84660c11c6047b6b9463f7","tarball":"https://registry.npmjs.org/mograte/-/mograte-1.0.1.tgz","fileCount":58,"unpackedSize":102729,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGz0xqW9Pb7kKQfVeYXqZA4LM83vXbCUuyt7SuBFpUzSAiBfFsMNB/lME6r8/hUTTe1c/2ddDQIqq5taHglUXdkYlw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJic/10ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoaTA/+LyhUYmoD02uqt2MK2lQKP3L0QUcgrmvHseFoMh3ZNTCg1paB\r\n2H96NNtki+k3NoCXhnF9MsrQAVeGnxE6bVZ5g4q2ifai8HiRMFSFTLejKTv4\r\ngjzpq6eqqULleHeQpf68i9fMXYpCvAVbHjnWzi9WNpDwf4QkDDqirOOauz9P\r\nsmz/TFo0j/2vt+yxl6wIfSB487uriZu6zv3h824fkDvlcXLWyjfoITBV6Vra\r\nO2asczFOcwXaLRFw7faopnBPlefMG5NQLsqzKNoZy/C0gm6SvnrYtrxPErqI\r\n4KmPvyUj5ieyUkQkQewMvBqjI0cQDfriPbXOEcHwaX9/7Z10wWdHec22lQ08\r\nhyYsgnAQ0R+TCw2R7fCPZ/jd/1QI4w0JNdnCQ1uNBIbcLopgg9x3NOxxSEOW\r\nI+ggZ6o5ie5vOQzxh0Vwh9Ag6t6AjGMXQqs1HXb/3NLqiVIeUoVLUDjb/v0n\r\nCzO9r9s4uPeN1oKvoHWM0/E/zBETaxrzPEyPdJAmZ61MfZJIvg2gwVFX5qTX\r\ngxBo2uEl77uYxqK9vfhZ9YGRrtrdwddEukAz0k7M6HRDvcCY+2CZeoIOwqHU\r\nZul3QvjGyZKOH9ASX5pE3jnsb4UfVEz5cxUG9G0hyGKGSqi8ZIR6Xs+FXuKN\r\nRXAx7Ydd24gw4MA/awLV9Ul8g4jz/O+CkfY=\r\n=YuSx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_1.0.1_1651768692728_0.8557150705453647"},"_hasShrinkwrap":false},"1.1.1":{"name":"mograte","version":"1.1.1","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"6c3daa9fbed1bfe38e52accddc079e52702b9cdd","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@1.1.1","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-2csbj5Z2oZJT2/rw65szuNkPa8izYtSi6MOqXeVQXAYjkECZT9pLUCZ5U2s3JA4z/sRZ3sjD1lmZupo9YXY6mA==","shasum":"c5c3810a32009921bd6a665c4d40a046d6d93968","tarball":"https://registry.npmjs.org/mograte/-/mograte-1.1.1.tgz","fileCount":59,"unpackedSize":106730,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9hixRcaMtxNCRhrn9ijFehDip6j6kW6fju55y01kFXAiAPGpQQefdPfbQMb1jfCCw0E3pC8jqYvLLoJEznGw+qYw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiikuyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoR+g/+NenBiLv26rWvzbbpRYE2tFFISPvGHxcs0rJdRYs/w+CcRTha\r\njT5YecuyL7Z7AnLkDmldiGKGTgFJ+BTRN4GRRQ5sURzglKu+TVAmcFpnCOYH\r\nQnT4WXQqf5872R86NykBaDmqn/saqGUnzhzOFIPAKMp7NJY7SG7iyQloM5Vc\r\n9XtwEh3Ktqa1+1RJVu/myZNx1uw79UhyP9u07z7B57H1DWskTLQcf/wT7aRX\r\n9bSwOCQ0CEJVt0/Mbpl52/wHrmQe/1OOEDJh2osMioTo6XcWsH3zjF16iEq8\r\n5J5cQfckqFIuLtEz6wU3lj+qtDle8E+mK9Dd9rY0gpHXQ8R4t5TdaU5Hkqxl\r\nwH6pVXnQ/U13yrJbjqrR3an6lUXtxtUeyClhz+Cyp/2cqI2ujWzoeqNLaLCp\r\nEpZlhQTS0LxEv0rhaJUvrdJ1kUh8WWYxTuCfifTc32KYGFgzU0eMkWhTRKfV\r\nZDkXABb+QZ0BkBfexBomXXWbcDIbuD+YSAoznlXOyXpRw5tTmvCVLRF51sEE\r\nlAiijzB7Gll7ghSlNSeFhKiHzoBMPQQhRqO5LiPjljnbxXyIc3WJdkx83FV7\r\nnqXVZo3A3GKo3igysPQHWKfnnpIlwPibLe15zPeJgsjLxv7/NvOgyAoZajU1\r\nWRI8lYDOIEXncbTeIbWF4pdTV66mYnDb1RY=\r\n=JmJv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_1.1.1_1653230513898_0.5245258974420643"},"_hasShrinkwrap":false},"1.1.2":{"name":"mograte","version":"1.1.2","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","ts-node":"^10.7.0"},"gitHead":"691377f0da48d97327aa0d29e9ac7fd113a385bd","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@1.1.2","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-U/yecE4kUUuF6B1dK0GWDlKR8oSSYOYy77F+bjYHYTFK9d6ZXuhPYhWk5wBtY46NLdLwe8KfVonZiAOYSoK05g==","shasum":"792d313d15745935d53831d061addddf261c271a","tarball":"https://registry.npmjs.org/mograte/-/mograte-1.1.2.tgz","fileCount":59,"unpackedSize":106730,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhfu5M/zJEHcLwpCykhrYsBmniDcbpofEbCZHfg9q3nAiEA2QzoOl4r37RtQmTWrfSGgwLmhiIHEbpw13Ql5eh0C6Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiil0+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqs9Q//d/+kLEthHaCoLLvhATzwIZwbXu2WiVINtrdVx8s1tEAp1WX0\r\noPCi9s1utmPxY9UQkh9Ga+9CXRtCDru8TlI8ALeq+pVayTxN8kRsN/q6VG5v\r\nmjszSfhLBZnROVBdBVf+FKX7vVxDNHCCxmWteITWhwX9A1rENthrkwyePqSh\r\n43CInq5Dm/uYTK2IhUBneS6Lp1xM3Tz5+WqZZdgtk1P30HV+T0qYl4JD2JtI\r\n+w+/ef4HQQQVxUkd7Q750XYbfZH+Jwpzoh5sPFnhkF2F+CUgAEfTgq+vqbyj\r\nxPF6WxiXJeBDyN2CWAUEaLQ8kpf/MQSRopkGzpZ9bVXkcTnhWlpG4cYFMMnL\r\nbykEuSR42HJLmoCFoV+kqcZWbePF9dLUC4z3L7HYFxABq0UVJ7iu6P8d1LxN\r\nMGuLR09mQzmd3J8SXh4H1KGZ2z8PHaCgU4C3RzLk7fkk7ci/XrpbfAKKv9Vz\r\nvzqvN5vTceLrrDi1gcwQq7EPX3ECuZN1VOU9a5Ywz9BpT8G/yYpmn3HthI23\r\n9aiFm5QIRjzWnB+JUJZfMmbB/bYVJrn4E6gw9qyUK/xk7T1kCYf+/Me39auj\r\nPSKHK+Fxornu5M4OyJ8lA5FJG0fV4uPzs/c9ET1UAZDDNzm1/s1rtbqM9alt\r\ngJXgtSPIm7hKGID8U8AUAjLIITnr64R/AjU=\r\n=+teg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_1.1.2_1653235006699_0.5237720410992124"},"_hasShrinkwrap":false},"1.2.1":{"name":"mograte","version":"1.2.1","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-node":"^10.7.0"},"gitHead":"41eb54e78e88387a8ea469b6574424c16d613bcc","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@1.2.1","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-YbZ4b8JQdQtEccYfscjqiY79TUWq9YJZfs9fRNcVawc24zhix5vGkkQjaEST5ZJ92+7+VcdQYjoTXJ3exZlgHg==","shasum":"518dba42630428d2ea54e39b352003d6213add88","tarball":"https://registry.npmjs.org/mograte/-/mograte-1.2.1.tgz","fileCount":59,"unpackedSize":108560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDqR9vSsu0yPkTnVFQOfC4M2n5fIpnkY3ITyzm0FzpwfAiAaTsQhFj/i0DTw6CjviND1ozZUyKTCFT36IJWZ4mGB9g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiimyPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp1sg/+NdzzeXZQSrymc12EB8w5W9+n3jr562ND6NxaOrYLGAm2JOvg\r\nKNG00kGP53TBvk5LoGBebAdHstp6QgmjzXXzv5xwiQttFOVpYiGtEGX5z36P\r\njfzY6OPw+ovb6h5BpHY0eXtGvqh/3VFnxZn2akQtcxZ3aaeZazp3Fmebcmx+\r\nG3RifXC3Ci8yD383HONacy5bRDuExRwG0IKAf+2xxJn/1ji+qEMBf0jRqyZI\r\n6Q3BVS3XyUHHN+vt3w63Qk8makF82ZWQVzljcK91NB8IFW8QfnLSQdawV4xv\r\nMtHSdjwGdLn1k/QSbObypgkglMkm7jxXbn4gV4o113n0Kk/7pNBQ+k3Y/neL\r\nW6RRBmaCO/bZxEVzhM0fn+JvmsRqEqo4DNwCocOBBN6JrLQLrwqaIgPXnAaJ\r\nYOBIJ9hZH48ioFGKZ8IBpHKm3JYy7dHr6Y46nnVBJoHcmp/SrJFgSJziEha6\r\nfLKzw5Wa6ayCDILCAA1tzCPIghOqr8EW1z9/MjgE82qlPyNA1xZy4cEKgQKf\r\nJwX7Xx9KpxsZVtTShQ7iF8O9UJbUQ5KL2Q0sMJjhpgQEX+iKSeo9bYk4CE0d\r\nSMRgzwATJGQv7S0LJJCtpSa7/E0cUSRhJDodQfocPqW6Afxb2qULbWyTcppv\r\nc0kHwsfyTnERTI9lGr8lIVNQnrgrJe+H3nM=\r\n=Gn7j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_1.2.1_1653238927688_0.6030445253847674"},"_hasShrinkwrap":false},"1.2.2":{"name":"mograte","version":"1.2.2","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"aws-sdk":"^2.1124.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-node":"^10.7.0"},"gitHead":"995194e2165b1e5ce3779b591e1b90dd9aca5ec6","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@1.2.2","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-dgm3ZS76xlgSgB7aKr3OrH8Crc/pUFoLO8Knbx/FBjTe/zDmhcvF1vOB9fQRH+jr1q0PS/WMigT1AStfrljymQ==","shasum":"a775a34414b2a75cbb9058bec771fcd1d4414ad1","tarball":"https://registry.npmjs.org/mograte/-/mograte-1.2.2.tgz","fileCount":59,"unpackedSize":108463,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7OrjBbtFAjO73eowcryci6dLOkOAyXllEsd/qtxl17AiAKGseu/nZYtLm/Y8Qg2rUq0ZsE/G9Nin/24LuA5cdh0g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiim91ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+WxAAgY5grm29wtPMoFhsws7G1P1Hs820sKq0cs2t4aJBFqjkRoOb\r\npPxFEuFYeoNo8G4L6dr7cVpDDL0/W+lWJb/JIvREJTsMjKh+WpK6Ngnl8Dgj\r\nCZLLBm9LG93fJ/jjCwtB3ALwfreoK4TNhksBwFPpHFwPhuLUGMvxkg3maISj\r\nTUQ5KB1QAGQLFK49AMg3E8xUI3G9wWJv2nFahlRX0DIIPyE6GtQZnUdsu5dm\r\n6bis70nJ9Apej6c5Xgjfqftkd8nBcFc82C2eR4tPBaceAX5iXt4sly3VEhzl\r\n2s03DSTgiEl328sbj4zpNAN0cinC8LexEybDrpbefARRciQdp0MqS6VAKcR2\r\nGuadggBBPzAiPVFQZQk9crW6z+oiYK3X79ApwTi3dHT+lNGaWXchyTQJTBzs\r\naRIn5vlsNAWfP7JAKwM3nTfkpUOGr92oTGvEFmRHNgTcW4b26bLPaFFrCdvo\r\nh7Dd50ngacsS/zJEib983jRAbgYhQAUOcKXJxV84UX0L/+sV8PPofaYF0Y/I\r\n+rVBh8rOuLckFeuPd132psVLO3CK9yI2dPYfBZ44d1LHDKfA3zsOVy+jGWEm\r\nM2AEeTY8eGrh9vxtOnO79EeJAkf9adlHlk3Q12+SyNzETHvA0xrGzFZ+nwHg\r\nDlSp2jy1rsC4YBwXdXP7Zlttfg24CYnRF/A=\r\n=lQed\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_1.2.2_1653239669608_0.8463495600668376"},"_hasShrinkwrap":false},"2.0.0":{"name":"mograte","version":"2.0.0","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","aws-sdk":"^2.1140.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"gitHead":"4c1b3b0f491bdae101999448e1be48fe03de59cc","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.0","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-yMFZ/mgxAme9NjyuO6cZ8JHDcD9wmK3ajxHRF+RNKUQKItT0ZKPO7xOvLRHDiCyapIaQFHJTlMaj5bCI/hjNqA==","shasum":"8f7935c3b0b59cf7b997372e0ba245c740a21415","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.0.tgz","fileCount":61,"unpackedSize":112122,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9m0GkUZ4LmzSNY8JHozzXNREQokLExe8/QJHRUSNJRAIhAKEhbK81kWb3tFsLL+cMKZyh9OhuFYD0S3mEoGbCpz3o"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJii6WuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpt3Q/+L5NBCjlUzWgy6bbbgK620xBT02HugAtdxxLy3fYmIWiIvq2O\r\nKvjir30le65AimTX8wMg1x7GotFs36uP5HEpW2OPYVtdfCNGrDsAtADu/0iu\r\nkrqOqkZwS2zwzh4kTpHBy1opTvjZT65waOunVYX9lXsurbHE1Jc8anv906j2\r\n8DjvVFF3qfp1ToMbAU32l1nLzAoH7VbYPeKxOlS+y6JHQfa5bQzp8/3scsbv\r\nHO1i9Hm5rSJgsSZ3rLrQANh93b+X4xZfc4KIRUyMbAMGNAezqXxj9vElIa7U\r\n1CJ5a31/+ACJy7A/n9Xqv3t4yvFQNkl4bm843ZrFe0bzE57PlivwulFXzz8n\r\nIcncNBXJgRnW4VVfPxfkTKNBHRMf0JAxGiqgEaylDgus8nsbE1W1vaeG2Y5E\r\npKqSmcz6n//wq/wmyX5AxxcJC2+9bhiRUrycUV5VpK0WhtJvqCSnXxhga2fO\r\nI72eamlR0wXujzM0WXr1RpmzCFVHvUKRSGLTBSdyXcSggxblD5oE/GTyVsvP\r\nQqZA+b+Wjp5M/uJwf1OtHdYCbsO/dvlHfgc0ySbjwR6rzT92OmeE/TUKIxZc\r\ntkyygJ08JKw/9dXYH67qbP2v2yimoXpUiRUnxGhJ+uFJGe8LfpbNowHuaplJ\r\nOkv7BEWfdupAc779KPb3C49bsVIWd5xzx1o=\r\n=QOH6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.0_1653319085877_0.8505917856610254"},"_hasShrinkwrap":false},"2.0.1":{"name":"mograte","version":"2.0.1","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","aws-sdk":"^2.1140.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"gitHead":"7b5e598a40894e4581d4584ee5303fe20772454a","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.1","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-ItVXzDv1IpWLUVQaIZ23KUvQqShz6tT9TpyiQt4UlgwknNTZ9DBC1Lud5+5t9jBrAuiFCc3z8KnwLNMul09J5w==","shasum":"18819e48e12f8fbaf71ad83ea77a8e877731a9d4","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.1.tgz","fileCount":60,"unpackedSize":110979,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFhNS8OKiXdVyJwks8FKvyOwtZsSOw23awA8fITzoh2LAiABfpyuhGXublOjP8lVPWYqFY0Zam1nbTpdXwCZU1I24Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJii+q2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr87g/9Fbo+mAjW85Alzwb+cl0bmNUi59+Hr13Ur0SDcQuTcuuwrd3f\r\nocjn4cKvZLEGt12KjCAxSEGYVM0bZ8pfil5BpK0skXDwQseK8nZJYACnzc5O\r\nOhwGTelTXJ8NEmn5Z+9wPr2Ft2yCz/9u2FpR+koLQRy3tHvDVgJYjTrXmRgQ\r\nXA3BqJJeRRONq1R/s9TMhZe87+MTNYPGBA9NonnSL8VyCMzTFR+Nutye/naJ\r\nm5oAXbVwImcxUTYqcALy18LROCY6cRg8s/JMq60oixfye9+U2EE54Ic5WYrR\r\nkYw6GkxeJ5C/W7O2c414r5R/zrqAZLsD3DaxsTik9ZYWUlwiFVPGyoaF8BAp\r\nXPCi+drgGK20Hlnu2pikPTC73pXAMNw+FPm0cZ8pXI4mkYxCh8+he9sxiXEb\r\nPaoQSDVPE6aEVM5AHXjwUoqwPe6qUum+qfEUqbi0pjgX5RVBdV3khwOnBlVK\r\nGUYeLLU7/W8+xyvCq62LGDiCNh4dkhWnhOry6FXltKWrvJUbVPtWa+c8QS5b\r\neBhLd4lJDp8aLrGtq7TT5ChNTXpnMXnMpr9HQ9YJHGTybuODp2Pm3RwaDsTV\r\ndSbpPyYGyIBqX6TOgIRYjnis7qjA1qHyOd69+rGvN60NRraSK/DvJz4vbAH+\r\n2VcuqdmTS2pB6XRESE58kMgRRS5F7685Tco=\r\n=qttx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.1_1653336757851_0.5363116249242827"},"_hasShrinkwrap":false},"2.0.2":{"name":"mograte","version":"2.0.2","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","aws-sdk":"^2.1140.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"gitHead":"ad8085f286a06e50010a0484e8b7eb5889dfb984","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.2","_nodeVersion":"14.19.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-wZgGzIAPHLc0b3avbyYPASwXg/WgKSb7Eko+kaKHAM/4XMfWC2W1P/XBVDIS7XeGLIl8QROqXjRde9gVz1z/0A==","shasum":"1bc873a9a47f3ee7229fd6d69cd7311c0b2c0b5e","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.2.tgz","fileCount":60,"unpackedSize":111248,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOE/98SrpUpRdbkBBcnvfqrhd8wis74KcINiraGwG7fAiEAw5M+aPpJp0A+Yc5e4GYi2vimheu3sZzuDIWL84Ga2GM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJii+ycACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqn2A//fJjVUz5EQZCm9so10XBN28PzG5GipH2+GFhgWh6wkfhyr9Bx\r\nTG8ikcHHiTlTYlglq6yz2Rw8XomOlGa/RfnIAyb7hdM55uKLGKaiKP9Vi0Yi\r\nqx5GV2CVQUe2K+/kLifcM/l8pVYGWBeDWmir7vHrThA/GuCZW7WPw3hVsa9o\r\n/6U+b4OvtGcArUoB/QNt3ubShv40JcQP3KVJWf2lYa5i5OSPSYu780mcRNqW\r\nJVMEgekyQS2B6H8YOFrWFUbHWeGYCK7q+F8uPc/G7MwkgA9n4Mx7BWj47gOZ\r\nMPGC5D2MCgcN7G1sa3IUdvUo8HANPydAM0xkKZC1XS03dWYvvhM1jjideH3u\r\ngXnctNoD8CYaPTnYCQaeJU3BkWX87zXQGdPzikqSVXD4xzfNjQY220kjTVvI\r\nKxVlqrB+v6wSp20rXmo5renSQKCFBt0ox2gLOQliVC2vdPnpuefrMnoZOqo+\r\nN4Y+ksu9HsKRhiPcT3bB4SKPWmGi/14747lKQ10uVXy2krBGV4xJh4q3yf01\r\n3+KeQBRIs25aNVC4eMb67qPJyICG0+fGOgmzgcAE82m2i3QpYr2v3YlaCE3p\r\nexx7N1WpvuuWJM+u1SWwV3Tu1NvKrL7ncwTi21EF7LcT53aNv0YgyTKASLub\r\n/jVCdMeoizVF5xNybZWSBvXk+vlFNcrIAAQ=\r\n=Ve89\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.2_1653337244024_0.8123185915087185"},"_hasShrinkwrap":false},"2.0.3-beta.0":{"name":"mograte","version":"2.0.3-beta.0","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","aws-sdk":"^2.1140.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"aa57f53a362eb9989b17fadb5df1c45a8a3f2b72","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.0","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-NqhnwQzSrhaYH82+DBo/IBiWqTcJLVoygyWaKQcweayHyvqCgtvyJzW75v0W0Cl1PImJqw6E+JL4yzZ5YVAJfQ==","shasum":"5e8a5c79c956edc99d47237b7fc0b52e19e1b010","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.0.tgz","fileCount":60,"unpackedSize":114210,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0EB6YEWhR/Aul64cbxwe5wrjzv6jGgeJBur5F0ctYiAiBuzswwrGf+rJWorateI4xmt/BZKGjVArPY9Y1LMkn09g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHMD1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoMdhAAn5wuogpYltujsO/MJ4fJhNG1fcDlsRkchMLrk219r/sIJ5H/\r\nEkjUfoM6VdkZeMJOa9m57cwvn6SCiwjBz3xqeqmOxMbhgVI8+kZdMBjyZXuN\r\njP6yOIsgsGFFWZov8K5EznCi/W/RmRzyVercqgCiQahEmda5/ZR3SZWif37i\r\nnPjutiHjRxHphhxUcesPPTk6cgPYsbNTNf5RzNgEOEWvo3O+HeIzzjE8f7qK\r\np4SIkwMf+gnirsngQ4n7E3nzrAOxqmIeFf9QiqyKGIGoLFdtFqRnxu9yNpqX\r\nuqIPC61+NSRmkn3yCeSmdN715yRYdKG7mcMIjZria7hzneSeGIdG7mq27bG4\r\njzsR8oct4X+Y7a9EynzNlxP7fJKqQston35+ZrzIMieKf9hyMQxmN6PoHqW+\r\nCO1DnvCYKb2zUFm7ZyulbdNzMm2cZY/wtxcWPrO2BEnw7ll8mIQgNe6WfF0V\r\ncdSdNtbILfjs5GI3vi/vUk1F4mzOMnMznthnKzfTDEVPBaxhpGFA6Fv/crz0\r\nRLuiOFloenxtrjJtFC5D/Wk+ay0mVYaO+2wChr5W24BKYsG6RlcfkNjiFUBT\r\nYQmpDUNwaYG5fGLfwQsSfmOeW8OGC4GQHYKDUmdLk3UiZz/itfj30sJKAcy+\r\nStMOoo2bCPvOSwUAZu6TzcWEYlLnC6z6ysU=\r\n=TjRm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.0_1679606005605_0.36456228117730816"},"_hasShrinkwrap":false},"2.0.3-beta.2":{"name":"mograte","version":"2.0.3-beta.2","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","ts-mocha":"^7.0.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.301.0","@aws-sdk/lib-dynamodb":"^3.301.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"040ceeb9f882635d3df95f5a2841cd0323e64118","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.2","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-sBW44ZfGf1PcdNj6gcVwVqN25E1jH9vnxPLUgrleVb5KjV33KNAMbTLLtTtGYYtST6gBboJpWFSBsMgxrUe3rg==","shasum":"901a62c71d3e2ad36eb93931e3d13151a2903769","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.2.tgz","fileCount":60,"unpackedSize":163027,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAadCZg8KPfP57oAQwXUTPLZmnemRR9DGEWjq4I7QPrnAiEAsxYEoWRW9ymjQfeh8mCGa+FBQu/XzKbIM+kOqImfSYY="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.2_1713628210396_0.7221270386004559"},"_hasShrinkwrap":false},"2.0.3-beta.3":{"name":"mograte","version":"2.0.3-beta.3","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.301.0","@aws-sdk/lib-dynamodb":"^3.301.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"d2be4cc702061d334314e40210857a138214b597","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.3","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-a2S9lgSZuaE9xM5B41yrfvqN3bX7IYKQGA522e0Na4xYRzY0ptKfJ3oPWmCRJ15vLMCWC7saRJzTh8HkykUE6Q==","shasum":"37e4e38893f6e8889d7d62b19afee1de9988b1ce","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.3.tgz","fileCount":60,"unpackedSize":163047,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAeIcW9n3O8yd4SQchFZwcK242XStqdPEf/0xFmZyZ1GAiBziooiNnxksdqXrZoK2PnHoq1DmyklAoIT4JhKLmmk6g=="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.3_1713628424368_0.03307490771908417"},"_hasShrinkwrap":false},"2.0.3-beta.4":{"name":"mograte","version":"2.0.3-beta.4","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.301.0","@aws-sdk/lib-dynamodb":"^3.301.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"27afe26b0184495bbfa13bf8af674bd583e0e696","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.4","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-D2DOZDOYa6sFePuPwynJSsZIjDVRxVU3dTwgHTsuv8Oc06LrZgbqdK3nNZYYHWFVO6N55oXBZa6I8tBj1qMnCw==","shasum":"968b22ed8f10b803093afc496f77423cb660b1b3","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.4.tgz","fileCount":60,"unpackedSize":163047,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHfaz+hwVtFNqYzWFDV92ZusKLf+upaJO0mR1DueAcUsAiEAvyP3RHbX/34dJ+Dhu7DMYzblHMuG/R3/6kfApr8qmUY="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.4_1713629145651_0.948957676920235"},"_hasShrinkwrap":false},"2.0.3-beta.5":{"name":"mograte","version":"2.0.3-beta.5","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.301.0","@aws-sdk/lib-dynamodb":"^3.301.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"3ccffb2882f481d2685150aabe25aef56bf86b10","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.5","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-sAwVSmh2wzP3TGln4eW+FWV2/qTtY9km5v+KeHbLEGaaHoDsRqX74KpiTROkZnYfJaguWie40jfDBF3pFrPxrw==","shasum":"d5a42ec60b7d59f31392d1d4ee166194cae457ec","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.5.tgz","fileCount":60,"unpackedSize":163047,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCSZp3o0D45qcrxW2RYhTjPOzHbtZUTTe+feUM4H1z5QIgBfFGpZFND1MVepxIcpaug7Qi8w8JfYOzDag3c+MVj4c="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.5_1713629271358_0.5283540487647147"},"_hasShrinkwrap":false},"2.0.3-beta.6":{"name":"mograte","version":"2.0.3-beta.6","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.301.0","@aws-sdk/lib-dynamodb":"^3.301.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"ec67f7f5e437252affd7ded28589d2c95474451a","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.6","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-0AX3EtjtLJzLH1GQl2689gOT3WjH0r+frP/DeFxU2JWeThuPRaGd6pvcxYRO999xwDllLL0Ib+Zso7UIwbgA+A==","shasum":"10043220a22391d965bf0157055b75eda21431b3","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.6.tgz","fileCount":60,"unpackedSize":164232,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpFwo4A3WYnWdGz+S3bQqqtBIgHufuKeqT0zjAm1Qx+AIhANv4jp10IUcbO1Vljle8OWriOfL1rjn1uRHas0ZgzE1b"}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.6_1713629398236_0.39968097370757794"},"_hasShrinkwrap":false},"2.0.3-beta.7":{"name":"mograte","version":"2.0.3-beta.7","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.301.0","@aws-sdk/lib-dynamodb":"^3.301.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"dc746d2296f0668ed3d648aaafd78d3d2239a1c3","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.7","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-5ShjmBT079iwDBUGGkkjZr1uTeBJKB6QBvnPxsgDEYU7uBtmiZD+EmU3nVka85O/dYePESrsqi+H+o5XXrpTaw==","shasum":"2617c61d38ffa0c43f96bb5b5df581c0a2ccdf1b","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.7.tgz","fileCount":60,"unpackedSize":164262,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGDn68Ez09UmTI2lBUjtx/NjcxoD4x5Kl7s5STAqL8fRAiEA8xVpcKusqO5R3/gvExCRrVkrimWA5AujfQ1QyZ2DUY0="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.7_1713630495695_0.6342576778165434"},"_hasShrinkwrap":false},"2.0.3-beta.8":{"name":"mograte","version":"2.0.3-beta.8","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"50449a32c7b5fda13ac109eab1cc63b921c6d4b3","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.8","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-bSuyvN/i3DOo1q2Q9rjzAlS8AmJVIkzlD1EB7d5Z845ZXZpn0NZvpWlGuUq4K7lbnh3jqQuigE0JMnhfbH8MLQ==","shasum":"5895d0bfa40cd50124b85ffe4778d2ce4c9950fa","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.8.tgz","fileCount":60,"unpackedSize":184584,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHHsLf6qI7wzdAWBcgwdqpM5F+QQhooGXcg5zygJzXdSAiBDSWfDAbMlbJ++cKezCVGvyJ6n+WgR7CIBSo9tYz++pw=="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.8_1713632222446_0.027011512733322807"},"_hasShrinkwrap":false},"2.0.3-beta.9":{"name":"mograte","version":"2.0.3-beta.9","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.11.2","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.0.3","uglify-js":"^3.15.4"},"dependencies":{"@aws-sdk/client-dynamodb":"3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack":"^5.72.1","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"62061ce3d242a4dfa2af3078c9b7bf40c4188e09","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.9","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-FuxybXuIlVNOItHYEwe29x08uESU5qPZiH/KnsikG9Nm7YdfEglv5xpOS5ZE5h48sHT9iZiaPssGJEl74nVnfw==","shasum":"ac1b07be8893e11d0af22b555e9abaa31e2087c4","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.9.tgz","fileCount":60,"unpackedSize":185006,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgkAC+8HFDzDDNlTYtxjnVdBu67BAvFoQw7z8LSf8mEQIgCYV3h0pnBYjGAxSdbDoGtzEotUjHhYeTpMZBTwMqWts="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.9_1713632945650_0.33973412058042496"},"_hasShrinkwrap":false},"2.0.3-beta.10":{"name":"mograte","version":"2.0.3-beta.10","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"af498839cbc11a9586d2071c41295f47ce0ee8a9","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.10","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-Am19Nc8f8XmNbRHA3kI2eOfosPzecuLwKzwWtN7zBJPBHjyN2IZbJS5YHzCvTlY5XVznemLeGmR1jiMkH+zM/A==","shasum":"41977b18bcb86a565643ee984511a1533d32640e","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.10.tgz","fileCount":65,"unpackedSize":226116,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFuN2ureiqlShlZfNHGBwjOlrxwauuvs5XJhomN49ENaAiEArviyH6vheP3vYKzc0FbmXf9rp8Qf56sF0XCUIkNo51A="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.10_1713895090758_0.3454359710444135"},"_hasShrinkwrap":false},"2.0.3-beta.11":{"name":"mograte","version":"2.0.3-beta.11","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"ccfb1fd17106aef5447cc9e033d73125a1758d01","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.11","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-OVUaX/PATBuViSQ6ExxNjyNxZ54tZSeqix+n5SyTBoODBcZ1O5nzFvt+utr0iUaWRKAqIsNJYif1kJjStnQJBw==","shasum":"cafd438105dd9b0c5207a4de0398da6337416ab4","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.11.tgz","fileCount":108,"unpackedSize":994673,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaJuQVSdvDlaQt0812zJcuxawj7ckdaLbOL1BwIGQ5CgIhAPcRvLasZdB6YU7IooMOjqdtPLmzKJKCp9bjO+c7/HAs"}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.11_1713896651605_0.341698249939719"},"_hasShrinkwrap":false},"2.0.3-beta.12":{"name":"mograte","version":"2.0.3-beta.12","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"76e32fd5d5367fa483428cf1880529d5405f8aaf","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.12","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-a2gRdOf5IF7QOLHjRP7LgN2ROXdhMHVeVq9SUi2QIXJaP9/hj7oCXbEngekKAk4IKt6Xaom/z2GZjTf2OffEtA==","shasum":"083ef50db8069df0c6dc2bd692604bfc494f1785","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.12.tgz","fileCount":108,"unpackedSize":995068,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJUJNYeP022QexP9nQtcJ3nirhbc9z+jl5oB8hJ08y4QIhAI9SkJiBGpHVVsdJPw5iBPX+vU8kzVbWmH7MLHX0ZRWg"}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.12_1713897277612_0.6190624995221057"},"_hasShrinkwrap":false},"2.0.3-beta.13":{"name":"mograte","version":"2.0.3-beta.13","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"7cd960c5eba7437c64bc93624c04e97d4a8fb1cf","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.13","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-rLOcf4jhggRglkT36+fGxV3mqIaZajzKzuYGapc61mFsCcsf0xs+MkR8DNtfPe4CpOMMhGU7huNxh1xlvUaEvA==","shasum":"81efb274ca144c22a6e9a9f60b5911811f7d0ab9","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.13.tgz","fileCount":108,"unpackedSize":996245,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkCylQRw/p0X8C6PfluYAk4ATSKXE0ZxBtknR/q+08MQIgKjPmKNH57hCmyxOkISG/GLul0L77N5VnrtN0jqVGRTk="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.13_1713897977216_0.2664885815053395"},"_hasShrinkwrap":false},"2.0.3-beta.14":{"name":"mograte","version":"2.0.3-beta.14","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"06e7d60dd880275cd0647897564c181c663c8d3a","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.14","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-slMUkOYHCW+1IBY+qFHYR1rEiPdJxhMj2o1NX3XV0I+KiJz+KPJayUXizGGm3kPubr4tENckt/2UTT1u+4Vz4g==","shasum":"748b0793cf31eca313aaf33d9908b9e851d6f5e5","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.14.tgz","fileCount":103,"unpackedSize":976143,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDFjKwdwakLu0v92SB86iexfGcXP6zwPs01+YtBsVSQqwIhANo3D6mma5ZfOAKki0owUgCDwFMcYTje4x+HYcCb22kr"}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.14_1713954415592_0.699702191825984"},"_hasShrinkwrap":false},"2.0.3-beta.15":{"name":"mograte","version":"2.0.3-beta.15","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"9f26c4491f08c82890ecb832dea863c12049db06","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.15","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-0jfpVCLIYswObj/rfr4pzVY0F3S5mlrTsvEGbTGL1M2s+5GW3ZvPMHiI21/S6wFGAqn9bS770EqP9g/oamIMsQ==","shasum":"fa325d8fd0ebda1c9ef1c57e2cfdde6a68e8010e","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.15.tgz","fileCount":103,"unpackedSize":976172,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzY2pMEADisCu68rSXAInzNGReIXReaU2wLo9jZeUt+wIhAJneI6cQOIutuaw5Efku0hsiBO9ywJlDYJUMSCMkjaDr"}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.15_1713955840636_0.7472858018978088"},"_hasShrinkwrap":false},"2.0.3-beta.16":{"name":"mograte","version":"2.0.3-beta.16","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"5691cec71d4a5791bdbb744b1ffbad115665dc2b","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.16","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-QnU+/kaqpDxwJySeInpJvZNAzhEjf/2Jlpm2dTpzIg2lUiqsysjoc+gFn6lciuXLqawO6I0KwKMn9B6D3ORR3g==","shasum":"158c56ec82cee23db0cddd50edee7515f6d1e200","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.16.tgz","fileCount":103,"unpackedSize":976733,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEQtb8EqHbUkAxaGQhS7teTk4/IXMkXcQ3idM4kgRVKOAiEA+Ipk9xOr/5lXXYS9RtwhFW0q6PWgmjA5DNkW34Y0t0Q="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.16_1714162706025_0.8836234084211394"},"_hasShrinkwrap":false},"2.0.3-beta.17":{"name":"mograte","version":"2.0.3-beta.17","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"06f05babeae4690cc7e44ea04b5a98bb5780f19d","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.17","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-X0oiqPP1U6kZnMdTuoJ7tUNQvVcJGBN+A1uyONpWx1y0KcGVzep4wUk5WaFxulAcZ8MDaCECwfedDuVbWssw5g==","shasum":"a2880302e4b94a7d2228da607d244675a4623ef6","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.17.tgz","fileCount":103,"unpackedSize":976965,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtzdVZviH+WnuB4VdSXXNtKB0/SvOn5Te/ZeiSd92twwIhAIgu/Lc5S36pGXiDBi6rIg1YZtbhTWFmDjsvX/pcQ/96"}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.17_1714164525564_0.8589485839141979"},"_hasShrinkwrap":false},"2.0.3-beta.18":{"name":"mograte","version":"2.0.3-beta.18","description":"A package to handle DynamoDB migrations","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"main":"dist/index.js","bin":{"mograte":"dist/bin/index.js"},"types":"dist/index.d.ts","scripts":{"lint":"eslint './src/**/*.{js,ts}'","test":"ts-mocha -p tsconfig.json tests/**/*.test.ts","test:ci":"nyc ts-mocha -p tsconfig.json tests/**/*.test.ts","test:watch":"ts-mocha -p tsconfig.json tests/**/*.test.ts,tests/*.test.ts --watch","clean:dist":"node -e \"require('del').sync(['dist/**'])\"","prebuild":"npm run clean:dist && copyfiles -a -u 1 'src/templates/*' dist && copyfiles -a -u 1 'src/bin/*.js' dist && copyfiles -a -u 1 'node_modules/@types/node/*.d.ts' dist","minify":"jsmin -o dist/*.min.js dist/*.js","minify2":"uglifyjs --compress --mangle -o dist/ugly.js -- dist/**/*.js","minify3":"rollup ./dist/index.js --file ./dist/bundle.js --format es","build":"tsc --listFiles","watch":"tsc -w","prepublish":"npm run build","start":"npm run build && node dist/bin/index.js","amendCommit":"git add . -A && git commit --amend --no-edit","version:branch":"npm version prerelease --preid $(git rev-parse --short=8 HEAD^) --no-git-tag","prepublish:branch":"npm run version:branch","publish:branch":"npm publish --tag $(git rev-parse --short=8 HEAD^) --access public","postpublish:branch":"npm run amendCommit","version:beta":"npm version prerelease --preid beta --no-git-tag","prepublish:beta":"npm run version:beta","publish:beta":"npm publish --tag beta --access public","postpublish:beta":"npm run amendCommit","buildAndPublishBranch":"npm run build && npm run publish:branch","buildAndPublishBeta":"npm run build && npm run publish:beta && npm dist-tag add @animus-bi/redxs@$(npm -s run env echo '$npm_package_version') latest","babel":"babel"},"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"license":"MIT","homepage":"https://github.com/11sis/mograte#readme","devDependencies":{"@aws-sdk/node-http-handler":"^3.374.0","@babel/cli":"^7.24.1","@babel/core":"^7.24.4","@babel/plugin-transform-modules-commonjs":"^7.24.1","@babel/preset-env":"^7.24.4","@babel/preset-typescript":"^7.24.1","@types/chai":"^4.2.13","@types/expect":"^24.3.0","@types/mocha":"^8.2.3","@types/node":"^14.18.63","@types/sinon":"^9.0.8","@typescript-eslint/eslint-plugin":"^4.3.0","@typescript-eslint/parser":"^4.3.0","babel-loader":"^9.1.3","chai":"^4.2.0","copyfiles":"^2.4.1","del":"^6.0.0","eslint":"^7.10.0","eslint-config-prettier":"^6.12.0","eslint-plugin-prettier":"^3.1.4","jsmin":"^1.0.1","mocha":"^8.1.3","nyc":"^15.1.0","prettier":"^2.1.2","rollup":"^2.71.1","sinon":"^9.1.0","typescript":"^4.9.5","uglify-js":"^3.15.4","webpack":"^5.91.0","webpack-cli":"^5.1.4"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.556.0","@aws-sdk/lib-dynamodb":"3.556.0","@babel/plugin-syntax-top-level-await":"^7.14.5","@smithy/node-http-handler":"^2.5.0","esbuild":"^0.20.2","esrun":"^3.2.26","http2":"^3.3.7","inquirer":"^8.2.4","javascript-stringify":"^2.1.0","minimist":"^1.2.6","node-polyfill-webpack-plugin":"^3.0.0","stream":"^0.0.2","strip-json-trailing-commas":"^1.1.0","ts-loader":"^9.3.0","ts-node":"^10.7.0","webpack-node-externals":"^3.0.0"},"readme":"#### dyna\n\n# Mograte\n\nA simple little utility that provides DynamoDB context to store migrations state in a DynamoDB table, and migrate tables and seed data for your application -- up and down.\n\nIt's so simple that when it migrates up, it really just reads files in a particular order, reads records from a DynamoDB table, and then pairs them together. If a given file hasn't been run, this will run them, and add a record to the DynamoDB table. When it migrates down, any existing records are deleted from the DynamoDB table. Bingo bango wango tango. That's all she wrote. Bob's your uncle.\n\n## Installation\n\n  ```\n  $ npm install -g mograte\n  ```\n  ... **or** ...\n  ```\n  $ npm install mograte --save-dev\n  ```\n\n\n## Getting Started\n\n  If you installed as a global npm package, you should call\n\n    $ mograte init\n\n  If you installed as a local project dependency, you should call\n\n    $ npx mograte init\n\n> You will be taken through a series of questions in an interactive shell in order to generate the `.mogrc` file that will be used to drive your migrations behaviors. \n>\n> You may select between the following formats: `.js`, `.ts`, `.json`, or `package.json`.\n>\n> Make a note: generated configuration will be called `mogConfig` in the rest of this document.\n>\n> If you installed as a package dependency, prefix all calls mentioned in this doc with `npx`.\n\nYour `mogConfig` will look something like this when you're done:\n```typescript\n    export default {\n      language: 'ts', // determines the format of the migrations generated\n      migrationsDir: './src/db/migrations', // determines where to read and write migrations to/from\n      migrationsTable: 'migrations', // name of the DynamoDB table to write migrations info to\n      awsConfig: {\n        profile: 'SomeCoolProfileName', // mutually exclusive with other properties in same hash; may also be read from process.env.AWS_PROFILE\n        accessKeyId: '*******', // may also be read from process.env.AWS_ACCESS_KEY_ID\n        secretAccessKey: '*******', // may also be read from process.env.AWS_SECRET_ACCESS_KEY;\n        region: '**-****-*', // may also be read from process.env.AWS_REGION\n      },\n      user: () => require('os').userInfo().username || 'unknown' // in json formats, this will be a string, but we will eval it for you. This is useful for keeping track of who ran a given migration. Customize or tailor it to your needs (ie. process.env.GITHUB_ACTOR in GH Actions)\n    }\n```\n\n## Usage\n\n```\nUsage: mograte [options] [command]\n\nOptions:\n\n  -h, --help     output usage information\n\nCommands:\n\n  init                  Initalize the migrations tool in a project\n  list                  List migrations and their status\n  create <name>         Create a new migration\n  delta                 Gets the number of un-run migrations for reversion purposes\n  up [name | number]    Migrate up to a given migration by id, filename, or number\n  down [name | number]  Migrate down to a given migration by id, filename, or number\n  help                  display help\n```\n\n## Creating Migrations\n\nTo create a migration, execute `mograte create <title>` with an optional title. You should make the meaningful/atomic so that when you're reasoning about the migrations over time, you have an idea of what you're creating and/or tearing down.\n\nWhen you ran `mograte init`, you selected a language for your project: `js` or `ts`. You also chose a directory to contain your migrations (`migrationDir`). If you look in your `migrationDir`, you will have a file for your chosen language, what contains two functions: `up` and `down`. You should use them to create any data stuffs you want in your DynamoDB database and/or tear down any such stuffs. They will resemble the following...\n\n### JS example:\n```javascript\n'use strict'\n\nmodule.exports.up = async (context) => {\n\n}\n\nmodule.exports.down = async (context) => {\n\n}\n```\n### TS example:\n```typescript\nimport { MigrationContext } from 'mograte';\n\nexport default {\n    up: async (context: MigrationContext): Promise<any> => {\n\n    },\n    down: async (context: MigrationContext): Promise<any> => {\n        \n    }\n}\n```\n\n### Dynamo Context\n\nEach `up` and `down` migration function is passed a [`context`](./docs/migration-context.md) object when it executes. The context object has some useful abstractions for DynamoDB create/delete/read behaviors. Its contents will help you on your way. Use it to crud DynamoDB tables and items until your heart finds peace.\n\nFor example:\n\n```\n$ mograte create add-pets\n$ mograte create add-owners\n```\n\nThe first call creates `./{mogConfig.migrationDir}/{timestamp in milliseconds}-add-pets.{mogConfig.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'pets';\n\nexports.up = async (context) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const petSeed = JSON.parse(fs.readFileSync('./path/to/some/pets.file'));\n  await context.item.writeAsync(petSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\nThe second creates `./{mogrc.migrationDir}/{timestamp in milliseconds}-add-owners.{mogrc.language}`, which we can populate:\n\n```javascript\nconst fs = require('fs');\nconst TableName = 'owners';\n\nexports.up = async (next) => {\n  await context.table.createAsync({ TableName, ...someTableDefinition });\n  const pets = await context.item.getAllAsync({ someQuery: 'here', thatIs: 'awsScanParams' });\n  const petOwnersSeed = JSON.parse(fs.readFileSync('./path/to/some/pet-owners.file'));\n  for (let i = 0; i < pets.length; i++) {\n    const pet = pets[i];\n    const petOwner = (petOwnersSeed.filter((po) => po.name === pet.ownerName) || [])[0];\n    petOwner.petIds = [...(petOwner.petIds || []), pet.id];\n  }\n  await context.item.writeAsync(petOwnersSeed, TableName);\n}\n\nexports.down = async (next) => {\n  await context.table.deleteAsync({ TableName, ...someTableDefinition });\n}\n```\n\n## Running Migrations\n\nWhen first running the migrations, all will be executed in sequence.\n\n```\n$ mograte\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  migration : complete\n```\n\nSubsequent attempts will simply output `...No work... Migrations are up to date` because the tables and other artifacts are presumed created until you `mograte down`\n\n```\n$ mograte\n  ...No work...\n  Migrations are up to date\n```\n\nIf we were to create another migration using `mograte create`, and then execute migrations again, we would execute only those not previously executed:\n\n```\n$ mograte\n  up : 1316027433455-coolest-owner.js\n```\n\nYou can also run migrations incrementally by specifying a migration or the number of migration it is\n\n```\n$ mograte up 1316027433425-coolest-pet.js # or mograte up 3\n  up : 1316027432511-add-pets.js\n  up : 1316027432575-add-owners.js\n  up : 1316027433425-coolest-pet.js\n  migration : complete\n```\n\nThis will run migrations up to (and including) `1316027433425-add-owners.js`. Similarly you can run down-migrations to (and including) a specific migration, instead of migrating all the way down. When migrating down, remember the migrations are run in reverse order. Also, you may think running `mograte down 1` repeatedly will move the cursor back to each subsequent migration. That is only true if the migration file is also deleted; otherwise, mograte looks at the most recent migration file, sees there is no migration record for it in the database, and considers the work done.\n\n```\n$ mograte down 1316027433425-add-owners.js # or mograte down 2\n  down : 1316027433425-coolest-pet.js\n  down : 1316027432575-add-owners.js\n  migration : complete\n```\n\nAny time you want to see the current state of the migrations, you can run `mograte list` to see an output like:\n\n```\n$ mograte list\n  1316027432511-add-pets.js migrated on May 2, 2022, 1:57:46 PM by firstnamelastname\n  1316027433425-coolest-pet.js migrated on May 2, 2022, 1:57:46 PM by crazygithubhandle\n```\n## Rolling Migrations Back\n\nBefore you migrate up, you can run `mograte delta`, which will give you the number of migrations that have not been migrated. This number can be used to rollback migrations in case they fail or don't pass any post-migration tests you may have written.\n\n```\n$ set MIGRATION_DELTA=$(mograte delta)\n\n$ mograte up\n    up : 1316027432511-add-pets.js\n    up : 1316027432575-add-owners.js\n    migration : complete\n  \n# do some smoke testing - discover you migrated some data wrong\n\n$ mograte down $MIGRATION_DELTA\n    down : 1316027432575-add-owners.js\n    down : 1316027432511-add-pets.js\n    migration : complete\n```\n","readmeFilename":"README.md","gitHead":"892ec54dcd699a958a0cc731a815a75217e04fd5","bugs":{"url":"https://github.com/11sis/mograte/issues"},"_id":"mograte@2.0.3-beta.18","_nodeVersion":"18.16.0","_npmVersion":"9.0.0","dist":{"integrity":"sha512-El7AZhkQjwzJejM3BSgVEaW5E87UVfIXuMg1b+AFn4S38PkLOzlz0YMlMfeIvin6b55rNhUSk3Nl2mjR/UpyLQ==","shasum":"0f240b2460fb82b8ea09d77e8292d099b32c2e63","tarball":"https://registry.npmjs.org/mograte/-/mograte-2.0.3-beta.18.tgz","fileCount":103,"unpackedSize":977181,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID5XYuy2sA6DB7ZgHZt1VPcNlGCqcootixNHvQiWobRDAiAre6NTHzG5qm/8CusLJbFrruKAzprZNvDGZbFHscI8Aw=="}]},"_npmUser":{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"},"directories":{},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mograte_2.0.3-beta.18_1714194207878_0.04174008744100344"},"_hasShrinkwrap":false}},"time":{"created":"2022-05-02T21:53:42.358Z","0.0.1":"2022-05-02T21:53:42.521Z","modified":"2024-04-27T05:03:28.301Z","0.0.2":"2022-05-03T01:01:16.532Z","0.0.3":"2022-05-03T01:03:15.687Z","0.0.4":"2022-05-03T01:04:27.936Z","0.0.5":"2022-05-03T01:24:57.379Z","0.0.6":"2022-05-03T01:31:16.498Z","0.0.6-beta-1":"2022-05-03T01:53:48.526Z","0.0.6-beta-2":"2022-05-03T02:19:07.398Z","0.0.6-beta-3":"2022-05-03T02:21:13.208Z","0.0.6-beta-4":"2022-05-03T11:28:43.005Z","0.0.7":"2022-05-03T12:06:14.709Z","0.0.8":"2022-05-03T17:54:44.300Z","0.0.9":"2022-05-03T18:04:35.718Z","0.0.10":"2022-05-03T21:23:17.498Z","0.0.11":"2022-05-03T21:30:47.473Z","0.0.12":"2022-05-03T21:42:14.304Z","0.0.13":"2022-05-03T21:59:16.397Z","0.0.14":"2022-05-03T22:09:59.451Z","0.0.15":"2022-05-04T13:02:18.440Z","1.0.0":"2022-05-05T15:38:12.322Z","1.0.1":"2022-05-05T16:38:12.890Z","1.1.1":"2022-05-22T14:41:54.102Z","1.1.2":"2022-05-22T15:56:46.876Z","1.2.1":"2022-05-22T17:02:07.820Z","1.2.2":"2022-05-22T17:14:29.785Z","2.0.0":"2022-05-23T15:18:06.015Z","2.0.1":"2022-05-23T20:12:38.031Z","2.0.2":"2022-05-23T20:20:44.165Z","2.0.3-beta.0":"2023-03-23T21:13:25.792Z","2.0.3-beta.2":"2024-04-20T15:50:10.565Z","2.0.3-beta.3":"2024-04-20T15:53:44.540Z","2.0.3-beta.4":"2024-04-20T16:05:45.851Z","2.0.3-beta.5":"2024-04-20T16:07:51.577Z","2.0.3-beta.6":"2024-04-20T16:09:58.416Z","2.0.3-beta.7":"2024-04-20T16:28:15.958Z","2.0.3-beta.8":"2024-04-20T16:57:02.583Z","2.0.3-beta.9":"2024-04-20T17:09:05.815Z","2.0.3-beta.10":"2024-04-23T17:58:10.900Z","2.0.3-beta.11":"2024-04-23T18:24:11.875Z","2.0.3-beta.12":"2024-04-23T18:34:37.804Z","2.0.3-beta.13":"2024-04-23T18:46:17.443Z","2.0.3-beta.14":"2024-04-24T10:26:55.835Z","2.0.3-beta.15":"2024-04-24T10:50:40.788Z","2.0.3-beta.16":"2024-04-26T20:18:26.184Z","2.0.3-beta.17":"2024-04-26T20:48:45.788Z","2.0.3-beta.18":"2024-04-27T05:03:28.104Z"},"maintainers":[{"name":"jeremymwells","email":"jmw.jeremymwells@gmail.com"}],"description":"A package to handle DynamoDB migrations","homepage":"https://github.com/11sis/mograte#readme","keywords":["aws","dynamodb","dynamo","migrations","bootstrapper","aws-sdk","migrate","seed data"],"repository":{"type":"git","url":"git+https://github.com/11sis/mograte.git"},"author":{"name":"Jeremy Wells","email":"jmw.jeremymwells@gmail.com"},"bugs":{"url":"https://github.com/11sis/mograte/issues"},"license":"MIT","readme":"","readmeFilename":""}