{"_id":"@auriclabs/migrations","_rev":"19-7e2545cdd29817cee7cc18b0c8c23827","name":"@auriclabs/migrations","dist-tags":{"latest":"0.4.4"},"versions":{"0.0.1":{"name":"@auriclabs/migrations","version":"0.0.1","_id":"@auriclabs/migrations@0.0.1","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"febc7907e731266ef64451a1243a7836f0d2221a","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.0.1.tgz","fileCount":60,"integrity":"sha512-VqaTMAS0GI/YPBO4S6sqe0jxk5Jh02KPbGEwRimcsHPM4WR/NousQo6xZuebX6s3dHg87bsMfhmrVMX9B9/mAg==","signatures":[{"sig":"MEYCIQDtTz+xHHoxWReJcuiKBu/qOOodkeh68Zn6Iw+YQTIO5wIhAN4hhpgmAlhNw9ZGkbLHwx6J4B+JHMFDsaAxCaWigIBd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1477902},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.0.1.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/7f8165c319bc697b0ebd0f039b9574d3/auriclabs-migrations-0.0.1.tgz","_integrity":"sha512-VqaTMAS0GI/YPBO4S6sqe0jxk5Jh02KPbGEwRimcsHPM4WR/NousQo6xZuebX6s3dHg87bsMfhmrVMX9B9/mAg==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","uuid":"^11.1.0","vite":"^6.0.0","react":"^19.0.0","lodash":"^4.17.21","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","@mui/material":"^7.0.2","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@mui/x-data-grid":"^8.0.0","react-router-dom":"^7.0.0","@mui/icons-material":"^7.0.2","@vitejs/plugin-react":"^4.0.0","@tanstack/react-query":"^5.0.0","@aws-sdk/client-dynamodb":"^3.788.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","@types/uuid":"^10.0.0","@types/react":"^19.0.12","@types/react-dom":"^19.0.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0"},"peerDependencies":{"sst":"^4.3.7","@aws-sdk/client-lambda":"^3.787.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.0.1_1777230800468_0.1375214665491693","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@auriclabs/migrations","version":"0.0.2","_id":"@auriclabs/migrations@0.0.2","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"5e1a102f5ea717973cc171a752c0f5fd442368ac","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.0.2.tgz","fileCount":60,"integrity":"sha512-8WeOQ8G/vDSxakVg/+6EicvPrdwCtwLoXhXH0RfoX1HzYzzjEJEmaULkgXbYWYQWVYiuOnOF8TsZiWi2uTCb7g==","signatures":[{"sig":"MEQCIHiZg5ZDmKrdEFU8+rDGxwE/7W68p04ppVeYgM54B2TvAiAYp9RLX/tPsL9LOExNVjZSwQUq3VJ8K5BslSl0m1oZTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1478952},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.0.2.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/634c1c466b094c4f9273b897d28f0764/auriclabs-migrations-0.0.2.tgz","_integrity":"sha512-8WeOQ8G/vDSxakVg/+6EicvPrdwCtwLoXhXH0RfoX1HzYzzjEJEmaULkgXbYWYQWVYiuOnOF8TsZiWi2uTCb7g==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","uuid":"^11.1.0","vite":"^6.0.0","react":"^19.0.0","lodash":"^4.17.21","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","@mui/material":"^7.0.2","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@mui/x-data-grid":"^8.0.0","react-router-dom":"^7.0.0","@mui/icons-material":"^7.0.2","@vitejs/plugin-react":"^4.0.0","@tanstack/react-query":"^5.0.0","@aws-sdk/client-dynamodb":"^3.788.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","@types/uuid":"^10.0.0","@types/react":"^19.0.12","@types/react-dom":"^19.0.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0"},"peerDependencies":{"sst":"^4.3.7","@aws-sdk/client-lambda":"^3.787.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.0.2_1777233359143_0.6212462064074071","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@auriclabs/migrations","version":"0.0.3","_id":"@auriclabs/migrations@0.0.3","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"f7e4222b4abcb33968b64ed58581ed027aaacb16","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.0.3.tgz","fileCount":60,"integrity":"sha512-MyJy5ye1ioXcAamWSoqRSgj43F0H6eCJkXNQOblwH4oeMWazHO5FgzUHfAAkJyRH9iQsQK4s3F7xo6RsNceYrA==","signatures":[{"sig":"MEQCIE0BlHglzOwe2NCuBhtJaD6YBwgsnSdGRxrtIPvxnAGxAiBtS/876BqgKotCE6qjWYQ6x8ylIAK6I8fP+PIJtQxqmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1480336},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.0.3.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/c3f46cdf99a81fa28df157d844631871/auriclabs-migrations-0.0.3.tgz","_integrity":"sha512-MyJy5ye1ioXcAamWSoqRSgj43F0H6eCJkXNQOblwH4oeMWazHO5FgzUHfAAkJyRH9iQsQK4s3F7xo6RsNceYrA==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","uuid":"^11.1.0","vite":"^6.0.0","react":"^19.0.0","lodash":"^4.17.21","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","@mui/material":"^7.0.2","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@mui/x-data-grid":"^8.0.0","react-router-dom":"^7.0.0","@mui/icons-material":"^7.0.2","@vitejs/plugin-react":"^4.0.0","@tanstack/react-query":"^5.0.0","@aws-sdk/client-dynamodb":"^3.788.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","@types/uuid":"^10.0.0","@types/react":"^19.0.12","@types/react-dom":"^19.0.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0"},"peerDependencies":{"sst":"^4.3.7","@aws-sdk/client-lambda":"^3.787.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.0.3_1777282207603_0.8621751858375439","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@auriclabs/migrations","version":"0.0.4","_id":"@auriclabs/migrations@0.0.4","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"1b145b126c501cb361eb0bacedbcae285f788491","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.0.4.tgz","fileCount":60,"integrity":"sha512-/Bi2EtVsjrjkQmt1mzBqEQNl7yGYryj2zz6XzkZZ7pAskkrBgNLoMFX/9zviwGrGvJbCGIdLv7sN4Q0ASNl2WQ==","signatures":[{"sig":"MEQCIG/PePW4LxIR/AQEDdUhzUCf86RcM2g9ptBzrZaJU44gAiBCboYz4M6V1zv3x2xEsp8CR+5o3DuDuLlT+pwDn7taeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1480645},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.0.4.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/7cf94bd31999461abecce262cb76b53d/auriclabs-migrations-0.0.4.tgz","_integrity":"sha512-/Bi2EtVsjrjkQmt1mzBqEQNl7yGYryj2zz6XzkZZ7pAskkrBgNLoMFX/9zviwGrGvJbCGIdLv7sN4Q0ASNl2WQ==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","uuid":"^11.1.0","vite":"^6.0.0","react":"^19.0.0","lodash":"^4.17.21","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","@mui/material":"^7.0.2","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.0","@mui/x-data-grid":"^8.0.0","react-router-dom":"^7.0.0","@mui/icons-material":"^7.0.2","@vitejs/plugin-react":"^4.0.0","@tanstack/react-query":"^5.0.0","@aws-sdk/client-dynamodb":"^3.788.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","@types/uuid":"^10.0.0","@types/react":"^19.0.12","@types/react-dom":"^19.0.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0"},"peerDependencies":{"sst":"^4.3.7","@aws-sdk/client-lambda":"^3.787.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.0.4_1777310421518_0.6652527162698605","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@auriclabs/migrations","version":"0.0.5","_id":"@auriclabs/migrations@0.0.5","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"cdcec753e4ff8c7198589934ff164577e809ff47","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.0.5.tgz","fileCount":67,"integrity":"sha512-KkAzz9XrOBvXkB/lqNbgjECQeO1SLlAKGEX462zVZBXzHr3/Lic51t8hD/QNt5uSr89e9Q+h5iTxmMs//ZbRIg==","signatures":[{"sig":"MEQCIEZvdAHtfw+ZRGMt4wlgwlGnuLLR7aaiputzCH+KhDqJAiAUod/TM3cQ0oCRLOywYOHEM0uAcbhLHgHUJFfNk4IF4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5942859},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.0.5.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/65c9e1f1c9b7abcc41b335a57bad4d5e/auriclabs-migrations-0.0.5.tgz","_integrity":"sha512-KkAzz9XrOBvXkB/lqNbgjECQeO1SLlAKGEX462zVZBXzHr3/Lic51t8hD/QNt5uSr89e9Q+h5iTxmMs//ZbRIg==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.0.5_1777421116320_0.22420082850077638","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@auriclabs/migrations","version":"0.0.6","_id":"@auriclabs/migrations@0.0.6","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"fa81acc6096d4462f38e611c5d29577d52eed3b5","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.0.6.tgz","fileCount":67,"integrity":"sha512-K1QEfRtQVs+7+2IAEzxvidITcf+odQwdQt8eNafkXTGYzZPTTksBMSS1KR8wI3416iO/jw2WCSWGAlfGDiU7iw==","signatures":[{"sig":"MEUCICZVgHhSlDmp17rT7h8tJsuUGm2UxXOMqD2rgMMOQ3vRAiEAktOG3156a1y9a9vd4zctLpqmWaizlrm2ICxpHek38Bs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5943818},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.0.6.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/a67d6edccb61f704ca5f1589b23ac3fe/auriclabs-migrations-0.0.6.tgz","_integrity":"sha512-K1QEfRtQVs+7+2IAEzxvidITcf+odQwdQt8eNafkXTGYzZPTTksBMSS1KR8wI3416iO/jw2WCSWGAlfGDiU7iw==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.0.6_1777423179012_0.8829043746373633","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@auriclabs/migrations","version":"0.1.0","_id":"@auriclabs/migrations@0.1.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"a1626d81473c3e95be85b582bd32ba3fef368832","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.1.0.tgz","fileCount":70,"integrity":"sha512-q7YiGXMGcdR+CwxcuxGtBrOEBwcaniLl/BsgXKNyE5LoyTo6NJLe/+fsMx0roHrXjZpGBlNooBh2ousHUxRNYQ==","signatures":[{"sig":"MEQCIE8t8PdY6wWT1uc3ah+uSbmkhW+zOT88QlZMN5+WOFb4AiBDAQhjWn+D4qU1Ktc2Ee+ShVsDaxMLIlTg9ftx7nXcTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6175891},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.1.0.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/44aa770e28b6e25b6ac341a38ef4685f/auriclabs-migrations-0.1.0.tgz","_integrity":"sha512-q7YiGXMGcdR+CwxcuxGtBrOEBwcaniLl/BsgXKNyE5LoyTo6NJLe/+fsMx0roHrXjZpGBlNooBh2ousHUxRNYQ==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.1.0_1777580606231_0.4859701143260051","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@auriclabs/migrations","version":"0.1.1","_id":"@auriclabs/migrations@0.1.1","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"00001f96cd8479cfab0cde13b09f569759306b20","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.1.1.tgz","fileCount":70,"integrity":"sha512-gcuemMz9cTyGNDmRUv5Cl0Xsbp+bJvkTA+2jJf+VrGj5l7kBG+iuAPtyP8uBpqFlRLCaFFWLs+VCwpINDZWDvQ==","signatures":[{"sig":"MEUCIQDnZNFM4hfgVHIt5DKV57W87REV8xOWP8zYdninL/u0jQIgCpsVYIBjOXwSQevC2P76VywTrJqasMIL77Dltl3YBGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6214744},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.1.1.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/c411a5d2d9993cc2eaa612109ccd8a49/auriclabs-migrations-0.1.1.tgz","_integrity":"sha512-gcuemMz9cTyGNDmRUv5Cl0Xsbp+bJvkTA+2jJf+VrGj5l7kBG+iuAPtyP8uBpqFlRLCaFFWLs+VCwpINDZWDvQ==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.1.1_1777610553534_0.3117938963984572","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@auriclabs/migrations","version":"0.1.2","_id":"@auriclabs/migrations@0.1.2","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"f5132ab39d5c77f2b7845ceab1db3dda7f097585","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.1.2.tgz","fileCount":70,"integrity":"sha512-oy26AaLSpk1oJG2UMbqqueZounfdV7Of0voHH6RSoK0EA1qkX63ny9McTmXG9J5SAxon2nqRuzAijSbvOxFigg==","signatures":[{"sig":"MEQCIDeVBkcjbptohrmy+gA5PuCdLcAOzXIDhD0g0zFRiF/GAiBEzuVkvx7AWNtv28ttIk19u4aswnvjzrZTLgrTs75AVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6216446},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.1.2.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/164939ec2e1b0f524b1b101965374ef2/auriclabs-migrations-0.1.2.tgz","_integrity":"sha512-oy26AaLSpk1oJG2UMbqqueZounfdV7Of0voHH6RSoK0EA1qkX63ny9McTmXG9J5SAxon2nqRuzAijSbvOxFigg==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.1.2_1777615237659_0.017771795453464856","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@auriclabs/migrations","version":"0.1.3","_id":"@auriclabs/migrations@0.1.3","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"4912c049a1c19450cd3a9617f1ed1415e02516df","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.1.3.tgz","fileCount":70,"integrity":"sha512-uZHiFTXza+rsQCkdAeJ7L7OC8WWIeojhVHk6JTDt1SgCcJwqwrlX67JzDaQm0uVqOBdmFlbJztEzkoWVLvIK/A==","signatures":[{"sig":"MEYCIQCPiHLspHePlolTgVCfnJlmRA2EdIg1U8caSiPjQCeL6AIhAMnBi8+kJ5CRU2wr+m/8BB0GZd1AuRfoZrXcrQrcPIJt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6214092},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.1.3.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/ed442f8ec9c90ee85b84cdf82797fdfc/auriclabs-migrations-0.1.3.tgz","_integrity":"sha512-uZHiFTXza+rsQCkdAeJ7L7OC8WWIeojhVHk6JTDt1SgCcJwqwrlX67JzDaQm0uVqOBdmFlbJztEzkoWVLvIK/A==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.1.3_1777753809525_0.485794582139923","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@auriclabs/migrations","version":"0.1.4","_id":"@auriclabs/migrations@0.1.4","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/bin/auric-migrate.mjs"},"dist":{"shasum":"02fe137f6d8c7488c5a53f933db5c46cc1edf6d9","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.1.4.tgz","fileCount":72,"integrity":"sha512-YKQOeeh6V9UGwkZYqNu9aDvrGLn0fq3g7Bl010R5dPUxQGOdJrhNz2miqPYJ/V4GPfbx92iI6tI+CfpAYJ7ung==","signatures":[{"sig":"MEQCIAT0zOgdMvogjSui8iJQ3VnAO55qsYVqkMwD5jqEhv3kAiA+EfMEmz4FVJCmzGe9L7lERmWOO82g3OFkHVzPlmjFGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6217128},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.1.4.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/d037569e3b48fbdec78b5f2bface6bdc/auriclabs-migrations-0.1.4.tgz","_integrity":"sha512-YKQOeeh6V9UGwkZYqNu9aDvrGLn0fq3g7Bl010R5dPUxQGOdJrhNz2miqPYJ/V4GPfbx92iI6tI+CfpAYJ7ung==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.1.4_1778031406301_0.12430594581827159","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@auriclabs/migrations","version":"0.2.0","_id":"@auriclabs/migrations@0.2.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"5825e36cc1846132e9cf8da3135f2fcc700b1809","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.2.0.tgz","fileCount":120,"integrity":"sha512-O5aI4jG5EerMHaTq+92eMmyVbc0YrS1wOrp8AjgoqEeGjJrKe36O47LmhVHDQP9oFr6+QMCoplq5jopJXWZ17Q==","signatures":[{"sig":"MEYCIQD1Nwg9/wvXZU5e20K5td01eX5SIWzuT2brXGQZBVna6AIhAKjT2w0RUPzGIuDPRsprHDH4c6dZSzwKOt4XoSmgSD5a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8654455},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.2.0.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/3ebf1988e41dc06890972031a321663c/auriclabs-migrations-0.2.0.tgz","_integrity":"sha512-O5aI4jG5EerMHaTq+92eMmyVbc0YrS1wOrp8AjgoqEeGjJrKe36O47LmhVHDQP9oFr6+QMCoplq5jopJXWZ17Q==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@inquirer/prompts":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@aws-sdk/lib-dynamodb":"^3.788.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@aws-sdk/client-lambda":"^3.788.0","@radix-ui/react-dialog":"1.1.15","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"peerDependencies":{"@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.2.0_1778241618395_0.6017208685385906","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@auriclabs/migrations","version":"0.3.0","_id":"@auriclabs/migrations@0.3.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"6fcbd4cd4bc2860d04e9c58963ece6b32e0ee446","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.3.0.tgz","fileCount":123,"integrity":"sha512-RFMvzJ9h5LJHTfyi3ipQF/RyqxJmymB9UAMwlFu00DsuHxFew+XH8wODfPCrTJ9HEV+peHx4raRn8cfbTCbQhA==","signatures":[{"sig":"MEQCICiiBv4p4dkjtQoXPx1AEOgGOCMJ4ioUg/ERD9opBBg1AiBdm3GsFHa8hL/Iaxrk3Hw7fLYZQMD1O6Hwlf4Jz6+S6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9959741},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.3.0.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/cb9d5895d0910b34dbb4c4da442406d1/auriclabs-migrations-0.3.0.tgz","_integrity":"sha512-RFMvzJ9h5LJHTfyi3ipQF/RyqxJmymB9UAMwlFu00DsuHxFew+XH8wODfPCrTJ9HEV+peHx4raRn8cfbTCbQhA==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","vite":"^7.3.2","react":"^19.0.0","esbuild":"^0.27.0","commander":"^13.1.0","electrodb":"^3.4.1","react-dom":"^19.0.0","remark-gfm":"4.0.1","@pulumi/aws":"^7.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","@pulumi/pulumi":"^3.0.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@inquirer/prompts":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@aws-sdk/lib-dynamodb":"^3.788.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@aws-sdk/client-lambda":"^3.788.0","@radix-ui/react-dialog":"1.1.15","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0","@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.787.0","@aws-sdk/client-dynamodb":"^3.788.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true},"@aws-sdk/lib-dynamodb":{"optional":true},"@aws-sdk/client-lambda":{"optional":true},"@aws-sdk/client-dynamodb":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.3.0_1778242614255_0.5791364258563056","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@auriclabs/migrations","version":"0.3.1","_id":"@auriclabs/migrations@0.3.1","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"caed9c320e81f0a997cc7a15afb6542faed35b86","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.3.1.tgz","fileCount":72,"integrity":"sha512-j9VUvdOHSd07zkADt9nHq7yUedKQV14vFEe/LeL+peiTLWq9aScHkR3eUL+5V3+xySEWs09062BYPLP1ybGUAA==","signatures":[{"sig":"MEUCIQCu7+/WqhvJJCLniPSeOpR/D3yHbRjVW/tjqM2UDsLmLwIgEZskczWuaFUkdQDytk4GOgBROHMMA9roktyLn4dpJ1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1314674},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.3.1.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/f1155a030d2fea6f4d7a182476e3af57/auriclabs-migrations-0.3.1.tgz","_integrity":"sha512-j9VUvdOHSd07zkADt9nHq7yUedKQV14vFEe/LeL+peiTLWq9aScHkR3eUL+5V3+xySEWs09062BYPLP1ybGUAA==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","esbuild":"^0.27.0","commander":"^13.1.0","electrodb":"^3.4.1","@inquirer/prompts":"^7.0.0","@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.788.0","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","vite":"^7.3.2","react":"^19.0.0","react-dom":"^19.0.0","remark-gfm":"4.0.1","@pulumi/aws":"^7.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","@pulumi/pulumi":"^3.0.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.3.1_1778243426933_0.0767257858092747","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@auriclabs/migrations","version":"0.4.0","_id":"@auriclabs/migrations@0.4.0","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"66df827b57456afb4b432e9bdc149d4a08a3ee77","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.4.0.tgz","fileCount":72,"integrity":"sha512-tDhUJ26Uhz+R88mMReLXx8+AAiOk76LNET8kkdL8JjBJEWtmxqi+SEDZJdSVgxwJIv+eWz9g3F5NW6KnmtkG5w==","signatures":[{"sig":"MEUCIQDiOeOtU6f8O3NDgnAap81AvNqQO8M/vqYMr1PfsOG5hwIgPHmptrfO5Q+peaAwF/1950fg2Cou6RHP5/KmZyPq7UM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1339253},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.4.0.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/eae6060cf2f0f4df8b4e8c0c2b242067/auriclabs-migrations-0.4.0.tgz","_integrity":"sha512-tDhUJ26Uhz+R88mMReLXx8+AAiOk76LNET8kkdL8JjBJEWtmxqi+SEDZJdSVgxwJIv+eWz9g3F5NW6KnmtkG5w==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","esbuild":"^0.27.0","commander":"^13.1.0","electrodb":"^3.4.1","@inquirer/prompts":"^7.0.0","@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.788.0","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","vite":"^7.3.2","react":"^19.0.0","react-dom":"^19.0.0","remark-gfm":"4.0.1","@pulumi/aws":"^7.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","@pulumi/pulumi":"^3.0.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.4.0_1778523437347_0.262952126027056","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@auriclabs/migrations","version":"0.4.1","_id":"@auriclabs/migrations@0.4.1","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"4b87c55051cf015cca3f5d9b525793570f42a330","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.4.1.tgz","fileCount":72,"integrity":"sha512-G/jCjIBRtVJxRmbQiWjoPu/cjaNMz6Hg1zHlJfUW2S4XTWcSdqsTvN90zWhQDIYpjcKbUwT4UEwnmG5sGAzIiQ==","signatures":[{"sig":"MEUCIGQjkNfsYNQFSNgLtqQzthYC4242lCmJzgdq+H6RQW2gAiEAi5Nh/Fx9CpdGRpRnjx3kSIuII5ltXT3gJHL2zjxI3vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1346126},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.4.1.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/164670fb2abfa32486b691b727d7261a/auriclabs-migrations-0.4.1.tgz","_integrity":"sha512-G/jCjIBRtVJxRmbQiWjoPu/cjaNMz6Hg1zHlJfUW2S4XTWcSdqsTvN90zWhQDIYpjcKbUwT4UEwnmG5sGAzIiQ==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","esbuild":"^0.27.0","commander":"^13.1.0","electrodb":"^3.4.1","@inquirer/prompts":"^7.0.0","@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.788.0","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","vite":"^7.3.2","react":"^19.0.0","react-dom":"^19.0.0","remark-gfm":"4.0.1","@pulumi/aws":"^7.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","@pulumi/pulumi":"^3.0.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.4.1_1778538315335_0.7648990652163803","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@auriclabs/migrations","version":"0.4.2","_id":"@auriclabs/migrations@0.4.2","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"e05858a2945eecbe78ee8e865c8331f78d79692c","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.4.2.tgz","fileCount":72,"integrity":"sha512-/Sxv40PlmGDaT0H1px9MlhUnV2VzyhHI37fCLMaDvOtmC0fgK2Ljm2Mv5Z19jEDuafvPhuaaIeeuJKX3WJhOqA==","signatures":[{"sig":"MEYCIQCXUbV8f9WjZsNj9EDz4trOWqb9MKQhyh9RgRZud7ENqAIhAIc3vfGLvKjtCJzNS2eCbRqQG8bMlNtUsy4SB1RASjKr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1346126},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.4.2.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/d0bad6216694ba99ae7d230ef40f5062/auriclabs-migrations-0.4.2.tgz","_integrity":"sha512-/Sxv40PlmGDaT0H1px9MlhUnV2VzyhHI37fCLMaDvOtmC0fgK2Ljm2Mv5Z19jEDuafvPhuaaIeeuJKX3WJhOqA==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","esbuild":"^0.27.0","commander":"^13.1.0","electrodb":"^3.4.1","@inquirer/prompts":"^7.0.0","@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.788.0","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","vite":"^7.3.2","react":"^19.0.0","react-dom":"^19.0.0","remark-gfm":"4.0.1","@pulumi/aws":"^7.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","@pulumi/pulumi":"^3.0.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.4.2_1778546422045_0.8643606141088098","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@auriclabs/migrations","version":"0.4.3","_id":"@auriclabs/migrations@0.4.3","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"homepage":"https://github.com/auriclabs/packages#readme","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dist":{"shasum":"b43debd34e6008d17dc1371e132d02d2e47b4cbb","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.4.3.tgz","fileCount":72,"integrity":"sha512-EIF9c7TUG3cM0Q0+HDWYOH442PXTkLo3dJwu6IhLm/2vgZSC1d0yds/BYanromt4WzcvcQLfvRSv9tVLtu4Vjg==","signatures":[{"sig":"MEYCIQC39G6OUWz2TmN2qV/w8Dt0g+ym1YMuILQCxCk7HD2jtQIhAKQ2aD2JULzGg7KPjaoCkKIDVljohA+ecLJuOXhuxE4A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1355809},"main":"dist/index.cjs","type":"module","_from":"file:auriclabs-migrations-0.4.3.tgz","types":"dist/index.d.mts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./package.json":"./package.json"},"scripts":{"dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","lint":"eslint .","test":"vitest run --passWithNoTests && pnpm test:ui","build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","build:ui":"cd ui && npx vite build","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test:watch":"vitest"},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"prettier":"@auriclabs/prettier-config","_resolved":"/tmp/4aea5d8c3d09af26814f1e1bc120f28a/auriclabs-migrations-0.4.3.tgz","_integrity":"sha512-EIF9c7TUG3cM0Q0+HDWYOH442PXTkLo3dJwu6IhLm/2vgZSC1d0yds/BYanromt4WzcvcQLfvRSv9tVLtu4Vjg==","repository":{"url":"git+https://github.com/auriclabs/packages.git","type":"git","directory":"packages/migrations"},"_npmVersion":"10.8.2","description":"Migration runner with DynamoDB storage and Lambda support","directories":{},"_nodeVersion":"20.20.2","dependencies":{"glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0","esbuild":"^0.27.0","commander":"^13.1.0","electrodb":"^3.4.1","@inquirer/prompts":"^7.0.0","@aws-sdk/lib-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.788.0","@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"sst":"^4.3.7","vite":"^7.3.2","react":"^19.0.0","react-dom":"^19.0.0","remark-gfm":"4.0.1","@pulumi/aws":"^7.0.0","@types/uuid":"^10.0.0","tailwindcss":"4.2.4","@types/react":"^19.0.12","lucide-react":"1.12.0","@aws-sdk/types":"^3.700.0","@pulumi/pulumi":"^3.0.0","react-markdown":"10.1.0","@types/react-dom":"^19.0.4","react-router-dom":"^7.0.0","@tailwindcss/vite":"4.2.4","@types/aws-lambda":"^8.10.148","@auriclabs/sst-types":"0.1.0","@vitejs/plugin-react":"^5.2.0","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@radix-ui/react-dialog":"1.1.15"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/migrations_0.4.3_1778553910709_0.8768352209593284","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@auriclabs/migrations","version":"0.4.4","description":"Migration runner with DynamoDB storage and Lambda support","prettier":"@auriclabs/prettier-config","type":"module","main":"dist/index.cjs","module":"dist/index.mjs","types":"dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./dynamodb":{"types":"./dist/dynamodb.entry.d.mts","import":"./dist/dynamodb.entry.mjs","require":"./dist/dynamodb.entry.cjs"},"./infra":{"types":"./dist/infra.entry.d.mts","import":"./dist/infra.entry.mjs","require":"./dist/infra.entry.cjs"},"./api":{"types":"./dist/api.entry.d.mts","import":"./dist/api.entry.mjs","require":"./dist/api.entry.cjs"},"./package.json":"./package.json"},"bin":{"auric-migrate":"dist/auric-migrate.mjs","auric-migrate-bundle":"dist/auric-migrate-bundle.mjs","auric-migrate-dashboard":"dist/auric-migrate-dashboard.mjs"},"dependencies":{"@aws-sdk/client-dynamodb":"^3.788.0","@aws-sdk/client-lambda":"^3.788.0","@aws-sdk/credential-providers":"^3.700.0","@aws-sdk/lib-dynamodb":"^3.788.0","@inquirer/prompts":"^7.0.0","commander":"^13.1.0","electrodb":"^3.4.1","esbuild":"^0.27.0","glob":"^11.0.0","open":"^10.0.0","uuid":"^11.1.0"},"devDependencies":{"@aws-sdk/types":"^3.700.0","@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0","@radix-ui/react-dialog":"1.1.15","@tailwindcss/vite":"4.2.4","@tanstack/react-query":"^5.0.0","@tanstack/react-table":"8.21.3","@types/aws-lambda":"^8.10.148","@types/react":"^19.0.12","@types/react-dom":"^19.0.4","@types/uuid":"^10.0.0","@vitejs/plugin-react":"^5.2.0","lucide-react":"1.12.0","react":"^19.0.0","react-dom":"^19.0.0","react-markdown":"10.1.0","react-router-dom":"^7.0.0","remark-gfm":"4.0.1","sst":"^4.3.7","tailwindcss":"4.2.4","vite":"^7.3.2","@auriclabs/sst-types":"0.1.0"},"peerDependencies":{"@pulumi/aws":"^7.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/aws":{"optional":true},"@pulumi/pulumi":{"optional":true}},"publishConfig":{"registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/auriclabs/packages.git","directory":"packages/migrations"},"scripts":{"build":"tsdown src/index.ts --format cjs,esm --dts --no-hash && tsdown src/dynamodb.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown src/infra.entry.ts --format cjs,esm --dts --no-hash --no-clean --tsconfig tsconfig.build.json && tsdown src/api.entry.ts --format cjs,esm --dts --no-hash --no-clean && tsdown bin/auric-migrate.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-bundle.ts --format esm --no-hash --no-clean && tsdown bin/auric-migrate-dashboard.ts --format esm --no-hash --no-clean && pnpm build:ui","build:ui":"cd ui && npx vite build","dev":"concurrently \"pnpm build --watch\" \"pnpm:y:watch\"","y:watch":"chokidar dist --initial --silent -c \"yalc publish --push\"","lint":"eslint .","lint:fix":"eslint . --fix","typecheck":"ts-config-typecheck","test":"vitest run --passWithNoTests && pnpm test:ui","test:ui":"cd ui && npx vitest run --passWithNoTests","test:watch":"vitest"},"_id":"@auriclabs/migrations@0.4.4","bugs":{"url":"https://github.com/auriclabs/packages/issues"},"homepage":"https://github.com/auriclabs/packages#readme","_integrity":"sha512-oA/jlqYMd0IpKM2xb4RdRKhZKyU8B74zGrGkkEwS69Fjemt7me/7gzpm7N0jMOw5j7NKXJdLZJfMHAdiD1ouEw==","_resolved":"/tmp/eaa3681e9f14530ac1cc1655aac8ad0b/auriclabs-migrations-0.4.4.tgz","_from":"file:auriclabs-migrations-0.4.4.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-oA/jlqYMd0IpKM2xb4RdRKhZKyU8B74zGrGkkEwS69Fjemt7me/7gzpm7N0jMOw5j7NKXJdLZJfMHAdiD1ouEw==","shasum":"650e8a3e014375bc49f3ac513c6cc590e6f36051","tarball":"https://registry.npmjs.org/@auriclabs/migrations/-/migrations-0.4.4.tgz","fileCount":72,"unpackedSize":1412009,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEeF7JHpgECcqPsEPrczKW/71WUITLYbVjpSOcU+YIFbAiBY29yREFi/5e5YSMJOHb6sYdyPDhYVhe2X7Gk5SAuwcw=="}]},"_npmUser":{"name":"kevupton","email":"kevin@upton.tech"},"directories":{},"maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/migrations_0.4.4_1779240203215_0.1433966838717049"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-26T19:13:20.403Z","modified":"2026-05-20T01:23:23.512Z","0.0.1":"2026-04-26T19:13:20.664Z","0.0.2":"2026-04-26T19:55:59.359Z","0.0.3":"2026-04-27T09:30:07.734Z","0.0.4":"2026-04-27T17:20:21.837Z","0.0.5":"2026-04-29T00:05:16.553Z","0.0.6":"2026-04-29T00:39:39.238Z","0.1.0":"2026-04-30T20:23:26.441Z","0.1.1":"2026-05-01T04:42:33.711Z","0.1.2":"2026-05-01T06:00:37.865Z","0.1.3":"2026-05-02T20:30:09.729Z","0.1.4":"2026-05-06T01:36:46.500Z","0.2.0":"2026-05-08T12:00:18.585Z","0.3.0":"2026-05-08T12:16:54.551Z","0.3.1":"2026-05-08T12:30:27.108Z","0.4.0":"2026-05-11T18:17:17.591Z","0.4.1":"2026-05-11T22:25:15.494Z","0.4.2":"2026-05-12T00:40:22.229Z","0.4.3":"2026-05-12T02:45:10.916Z","0.4.4":"2026-05-20T01:23:23.381Z"},"bugs":{"url":"https://github.com/auriclabs/packages/issues"},"homepage":"https://github.com/auriclabs/packages#readme","repository":{"type":"git","url":"git+https://github.com/auriclabs/packages.git","directory":"packages/migrations"},"description":"Migration runner with DynamoDB storage and Lambda support","maintainers":[{"name":"kevupton","email":"kevin@upton.tech"}],"readme":"# @auriclabs/migrations\n\nA database migration framework with DynamoDB storage, AWS Lambda support, a CLI, and an optional web dashboard.\n\n## Features\n\n- TypeScript-first migration authoring with `up` / `down` functions\n- DynamoDB-backed storage with ElectroDB\n- AWS Lambda handler with automatic timeout detection and self-continuation\n- ECS Fargate runner for migrations exceeding Lambda's 15-minute cap\n- CLI for creating, running, and inspecting migrations\n- Optional React dashboard for visualising status and triggering rollbacks\n- **`auric-migrate-dashboard`** — run the dashboard locally in your browser against any AWS account, gated by your AWS SSO profile and IAM identity (no public surface required)\n- SST infrastructure definitions for one-line provisioning\n\n## Self-hosting migrations on Fargate (>15-minute migrations)\n\nThe package's Lambda runtime caps at 900 s. For migrations that need longer, point a **public, generic** ECS Fargate image at a per-deploy bundle in your S3.\n\nYou write zero Dockerfile. The published image (`auriclabs/migrations-runner:1` on Docker Hub) is universal: it fetches your bundle, verifies its sha256, and execs node. You bundle your migrations directory at deploy time and upload to your own S3.\n\nThe flow:\n\n```ts\n// In your sst.config.ts (consumer side)\nimport { createMigrationBundle, createFargateRunner } from \"@auriclabs/migrations/infra\";\n\nconst bundle = await createMigrationBundle({\n  sst,\n  entryPoint: \"migrations/fargate-entry.ts\", // imports `runMigrationsInFargateAsCli` + your registry\n});\n\nconst runner = createFargateRunner({\n  sst,\n  bundle,                    // wires `s3:GetObject` + env vars onto the Task\n  link: [/* your tables, secrets, KMS, S3 buckets */],\n  // image defaults to `docker.io/auriclabs/migrations-runner:1` — pin by digest in prod.\n});\n```\n\nWhat `createMigrationBundle` does:\n\n1. Calls `bundleMigrations({ entryPoint })` (esbuild — externalises `@aws-sdk/*`, `@smithy/*`, `@aws-crypto/*`).\n2. Creates a private, versioned, SSE-S3 bucket (or uses one you pass in).\n3. Uploads the bundle keyed by SHA256 (`bundles/bundle-<sha>.mjs`) — content-addressed: no-op deploys are no-ops in Pulumi too.\n4. Returns a Linkable. Consumers `link: [bundle.linkable]` it onto their Task / dispatcher Lambda.\n\nWhat `createFargateRunner({ bundle })` does:\n\n- Defaults `image` to `docker.io/auriclabs/migrations-runner:1`.\n- Adds the bundle's linkable to the Task's `link`, granting **only** `s3:GetObject` on the exact bundle key.\n- Pre-fills `MIGRATION_BUNDLE_URL` and `MIGRATION_BUNDLE_SHA256` env vars so the runner image's wrapper finds and verifies the bundle on start.\n\n### Detecting dead Fargate tasks — `attachTaskStoppedRule`\n\nIf a Fargate task crashes before its bundle can write per-migration records\n(e.g. the bundle throws at module-import time), the `MigrationsTable` stays\nempty for that `executionId` and `MigrationRunner.status()` will report\n`pending` forever. To close that visibility gap, wire the EventBridge rule:\n\n```ts\nimport { attachTaskStoppedRule, createFargateRunner } from '@auriclabs/migrations/infra';\n\nconst runner = createFargateRunner({ sst, bundle, link: [...] });\n\nconst migrationFn = new sst.aws.Function('MigrationFn', {\n  handler: 'migrations/handler.handler',\n  link: [..., runner.task],\n});\n\nawait attachTaskStoppedRule({\n  cluster: runner.cluster,\n  dispatcherFn: migrationFn,\n});\n```\n\nEventBridge routes `aws.ecs` / `ECS Task State Change` events with\n`lastStatus: STOPPED` from the migration cluster into `migrationFn`. The\nhandler created by `createLambdaHandler` detects the event shape and, when\nthe task exited non-zero with no per-migration rows yet, writes an\n`execution:<uuid>` failed row capturing `stoppedReason` and `taskArn`.\n`MigrationRunner.status()` surfaces it in `failed[]` via the standard path,\nso CI pollers exit cleanly within seconds instead of timing out at the\nLambda budget.\n\n### Pinning the image by digest\n\n`docker.io/auriclabs/migrations-runner:1` is a mutable major-version alias that picks up patches. For byte-exact production reproducibility, pin to the digest your CI just published:\n\n```ts\ncreateFargateRunner({\n  sst,\n  bundle,\n  image: \"docker.io/auriclabs/migrations-runner@sha256:abc123...\",\n});\n```\n\n### Bundling locally without SST\n\nFor ad-hoc bundling (e.g. testing the bundle output before deploying):\n\n```bash\nnpx auric-migrate-bundle --entry migrations/fargate-entry.ts --out /tmp/bundle.mjs\n```\n\nOr programmatically:\n\n```ts\nimport { bundleMigrations } from \"@auriclabs/migrations\";\n\nconst result = await bundleMigrations({\n  entryPoint: \"migrations/fargate-entry.ts\",\n  outFile: \"migrations/dist/bundle.mjs\",\n});\nconsole.log(`sha256=${result.sha256} size=${result.size}`);\n```\n\n### Trust + permissions\n\n- **Bucket** is private + SSE-S3 + versioned. No public access. No bucket policy granting external principals.\n- **Task role** gets `s3:GetObject` ONLY on `arn:aws:s3:::<bundle-bucket>/<bundle-key>` — no list, no put, no delete, no other keys.\n- **Dispatcher Lambda role** gets no S3 perms — it only forwards string env vars to `RunTask`.\n- **Image pulls** are anonymous from Docker Hub (no AWS-side credentials wired into ECS).\n- **The bundle is privileged code** — it runs in the same trust boundary as your Lambda would. Pin the image by digest in production so a Docker Hub compromise can't silently swap a tag.\n\n### Docker Hub pull-rate caveat\n\nDocker Hub anonymous pulls cap at **200/6h/IP**. For typical migration workloads (one Task per deploy per stage), this is plenty. If you ever hit the cap, mirroring to ECR Public is a single follow-up workflow — let us know and we'll publish there too.\n\n## Local dashboard against any account\n\nProduction deploys typically don't expose the dashboard (the deployed dashboard would require a public API gateway, which is the wrong trust boundary for an admin tool). Use the local dashboard CLI to view migration state — including in production — entirely through your AWS SSO credentials:\n\n```bash\n# pick a profile interactively, autodiscover the deployed Lambda + table\nnpx -y @auriclabs/migrations auric-migrate-dashboard\n\n# or skip the picker\nnpx -y @auriclabs/migrations auric-migrate-dashboard --profile alfe-prod\n```\n\nThe CLI:\n\n1. Lists profiles from `~/.aws/config` and `~/.aws/credentials`; honours `--profile <name>` and `AWS_PROFILE`.\n2. Resolves credentials via `fromIni` (transparently follows SSO sessions and `role_arn` assumed roles). On expired SSO it prompts to confirm and runs `aws sso login --profile <name>` for you.\n3. Discovers the deployed `MigrationFn` Lambda and `MigrationsTable` DynamoDB table; prompts you to choose if multiple match. Override with `--function-name <name>` / `--table-name <name>`.\n4. Spins up an HTTP server on `127.0.0.1:3100` (configurable via `--port`), serves the same dashboard UI the deployed version uses, and opens your browser.\n5. All `/api/*` calls flow through your AWS SDK identity — `Lambda Invoke` for migrate/rollback/status, `DynamoDB` for read queries.\n\nThe CLI requires the AWS CLI on your `$PATH` for the SSO auto-login flow. The local server only listens on `127.0.0.1` — nothing is exposed to the network.\n\n## Installation\n\n```bash\npnpm add @auriclabs/migrations\n```\n\nPeer dependencies (install as needed):\n\n```bash\npnpm add sst                        # required for infra definitions\npnpm add @aws-sdk/client-lambda     # required for Lambda continuation & dashboard rollback\n```\n\n## Writing Migrations\n\nGenerate a timestamped migration file:\n\n```bash\nnpx auric-migrate create add-user-roles\n```\n\nThis creates `migrations/20250601120000_add-user-roles.ts` with a scaffold. Here's what a real migration looks like:\n\n```typescript\n// migrations/20250601120000_add-user-roles.ts\nimport type { Migration } from '@auriclabs/migrations';\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb';\nimport { PutCommand, DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';\n\nconst client = DynamoDBDocumentClient.from(new DynamoDBClient());\n\nexport default {\n  name: 'add-user-roles',\n  async up() {\n    await client.send(new PutCommand({\n      TableName: 'Roles',\n      Item: { pk: 'role#admin', name: 'Admin', permissions: ['read', 'write', 'delete'] },\n    }));\n    await client.send(new PutCommand({\n      TableName: 'Roles',\n      Item: { pk: 'role#viewer', name: 'Viewer', permissions: ['read'] },\n    }));\n  },\n  async down() {\n    const { DeleteCommand } = await import('@aws-sdk/lib-dynamodb');\n    await client.send(new DeleteCommand({ TableName: 'Roles', Key: { pk: 'role#admin' } }));\n    await client.send(new DeleteCommand({ TableName: 'Roles', Key: { pk: 'role#viewer' } }));\n  },\n} satisfies Migration;\n```\n\nEach migration must implement both `up` (apply) and `down` (rollback). The `down` function is what gets called when you trigger a rollback from the CLI, Lambda, or dashboard.\n\n### Documenting and Diagnosing Migrations\n\nEach migration can carry a markdown `description` and emit log output during a run. Both surface on the dashboard's migration detail page so you can see *what* a migration was supposed to do and *what actually happened* without leaving the UI.\n\n```typescript\nexport default {\n  name: 'add-user-roles',\n  description: `## Adds default roles\n\nSeeds \\`role#admin\\` and \\`role#viewer\\` rows into the \\`Roles\\` table.\n\n- Idempotent: re-running has no additional effect.\n- Required before the dashboard auth refactor.`,\n  async up(ctx) {\n    await client.send(/* ... */);\n    ctx.log?.('seeded admin role');\n    ctx.log?.('seeded viewer role');\n  },\n  async down(ctx) {\n    /* ... */\n    ctx.logger?.warn('roles table now empty');\n  },\n} satisfies Migration;\n```\n\nNotes:\n\n- `description` is snapshotted onto every migration record when the migration runs, so historical records always show the description that was true at the time. Editing the source later does not rewrite history.\n- `ctx.log(message, ...rest)` and `ctx.logger.{info,warn,error,debug}` write into a captured output buffer that is persisted on the record. Direct `console.log/warn/error` calls during the migration are also captured.\n- Output is capped at 200 KB per run via a ring buffer (oldest lines drop first; the most recent output is always preserved). When this happens the record's `outputTruncated` flag is set and a banner is shown in the dashboard.\n\n## CLI\n\n```bash\nnpx auric-migrate <command>\n```\n\n| Command | Description |\n|---------|-------------|\n| `create <name>` | Create a new migration file |\n| `up` | Run pending migrations |\n| `down` | Roll back completed migrations |\n| `status` | Show pending, completed, and failed migrations |\n| `list` | List migration files on disk |\n\nOptions common to `up`, `down`, and `status`:\n\n- `--to <name>` — stop after a specific migration\n- `-c, --config <path>` — path to config file (default: `./migrate.config.ts`)\n\n## Programmatic Usage\n\nThere are three ways to run migrations:\n\n| Method | How it works |\n|--------|-------------|\n| **CLI** (`auric-migrate up/down`) | Runs `MigrationRunner` directly in the local Node process |\n| **Lambda** (`createLambdaHandler`) | Runs `MigrationRunner` inside a Lambda with timeout detection and self-continuation |\n| **Dashboard rollback** | Async-invokes the migration Lambda with `direction: 'down'` — does not run migrations itself |\n\nAll three use `MigrationRunner` as the core engine. The dashboard delegates to the migration Lambda rather than running migrations in-process, so timeout handling and continuation work correctly.\n\n### Running Migrations\n\n```typescript\nimport { MigrationRunner } from '@auriclabs/migrations';\nimport { DynamoDBMigrationStorage } from '@auriclabs/migrations/dynamodb';\n\nconst runner = new MigrationRunner({\n  migrationsDir: './migrations',\n  storage: new DynamoDBMigrationStorage(),\n  context: { /* passed to each migration's up/down */ },\n});\n\nconst result = await runner.up();        // run all pending\nconst result = await runner.down();      // roll back all completed\nconst status = await runner.status();    // { pending, completed, failed }\n```\n\n### AWS Lambda Handler\n\n`createLambdaHandler` wraps the runner with timeout detection. When Lambda is about to time out it persists progress and re-invokes itself asynchronously to continue where it left off.\n\n**Important:** Lambda functions are bundled by esbuild, which cannot follow dynamic `import()` calls with variable paths. This means `migrationsDir` (which uses glob + dynamic import) won't work in Lambda — the migration files won't be included in the bundle. Use `defineMigrations` with static imports instead:\n\n```typescript\n// backend/migrations/handler.ts\nimport { createLambdaHandler, defineMigrations } from '@auriclabs/migrations';\nimport { DynamoDBMigrationStorage } from '@auriclabs/migrations/dynamodb';\n\nimport addUserRoles from './migrations/20250601120000_add-user-roles';\nimport addPermissions from './migrations/20250602120000_add-permissions';\n\nconst migrations = defineMigrations({\n  '20250601120000_add-user-roles': addUserRoles,\n  '20250602120000_add-permissions': addPermissions,\n});\n\nexport const handler = createLambdaHandler({\n  createConfig: () => ({\n    migrations,\n    storage: new DynamoDBMigrationStorage(),\n    context: {},\n  }),\n});\n```\n\n`defineMigrations` takes a record keyed by migration filename stem (must match the `{timestamp}_{name}` format used by the CLI). Entries are sorted by key to ensure correct execution order. The IDs are compatible with `migrationsDir`, so you can use the CLI locally and Lambda in production against the same DynamoDB table.\n\nThe handler accepts an event with optional `direction` (`'up'` | `'down'`) and `target` fields. This is the same Lambda the [dashboard](#dashboard-opt-in) invokes for rollback.\n\n> **CLI vs Lambda:** Use `migrationsDir` for the CLI and local Node processes (glob + dynamic import works fine). Use `migrations` with `defineMigrations` for Lambda deployments (static imports are bundled by esbuild).\n\n## Infrastructure (SST)\n\nThe package ships SST resource definitions. Import from the `/infra` subpath:\n\n```typescript\n// sst.config.ts\nimport { table } from '@auriclabs/migrations/infra';\n\n// DynamoDB table with the required primary key and GSIs pre-configured\nconst migrationsTable = table;\n\n// Lambda that runs your migrations (uses the handler from the previous section)\nconst migrationFn = new sst.aws.Function('MigrationFn', {\n  handler: 'backend/migrations/handler.handler',\n  link: [migrationsTable],\n});\n```\n\n`migrationFn` is your migration runner Lambda — it's what executes `up`/`down` migration code. The dashboard (below) can reference it to enable rollback from the UI.\n\n## Dashboard (Opt-in)\n\nThe dashboard adds a React web UI for visualising migration status and triggering rollbacks. It is entirely opt-in — nothing is deployed unless you call `createDashboard()`.\n\n### Architecture\n\nThe dashboard uses two Lambdas, each with a single responsibility:\n\n```\n┌─────────────────────┐         ┌──────────────────────┐\n│  Dashboard Lambda   │         │  Migration Lambda     │\n│  (API Gateway)      │         │  (createLambdaHandler)│\n│                     │         │                       │\n│  - GET  /api/*      │  async  │  - Runs up/down       │\n│  - POST /api/       │──invoke─│  - Timeout detection  │\n│    rollback         │         │  - Self-continuation   │\n│                     │         │                       │\n│  Read-only queries  │         │  Executes migrations  │\n│  + rollback trigger │         │  against your DB      │\n└─────────────────────┘         └──────────────────────┘\n```\n\n- **Dashboard Lambda** — serves the API (migration status, execution history) and triggers rollbacks. It only reads from DynamoDB and does not execute migration code.\n- **Migration Lambda** — the same Lambda you already deploy for running migrations via `createLambdaHandler`. It handles `up`/`down` execution, timeout detection, and self-continuation.\n\nWhen a rollback is triggered from the dashboard, the dashboard Lambda async-invokes the migration Lambda with `{ direction: 'down' }`. This keeps the migration runner's timeout and continuation logic in one place, and means the dashboard Lambda doesn't need access to your migration files or application context.\n\n### Setup\n\n#### 1. Migration Lambda (you likely already have this)\n\n```typescript\n// backend/migrations/handler.ts\nimport { createLambdaHandler, defineMigrations } from '@auriclabs/migrations';\nimport { DynamoDBMigrationStorage } from '@auriclabs/migrations/dynamodb';\n\nimport addUserRoles from './migrations/20250601120000_add-user-roles';\nimport addPermissions from './migrations/20250602120000_add-permissions';\n\nconst migrations = defineMigrations({\n  '20250601120000_add-user-roles': addUserRoles,\n  '20250602120000_add-permissions': addPermissions,\n});\n\nexport const handler = createLambdaHandler({\n  createConfig: () => ({\n    migrations,\n    storage: new DynamoDBMigrationStorage(),\n    context: {},\n  }),\n});\n```\n\n#### 2. Dashboard API handler\n\n```typescript\n// backend/migrations/dashboard.ts\nimport { createDashboardApiHandler } from '@auriclabs/migrations/api';\nimport { DynamoDBMigrationStorage } from '@auriclabs/migrations/dynamodb';\n\nexport const handler = createDashboardApiHandler({\n  storage: new DynamoDBMigrationStorage(),\n});\n```\n\nNo manual wiring needed — `createDashboard()` automatically sets the `MIGRATION_FUNCTION_NAME` environment variable on the dashboard Lambda when `migrationFn` is provided.\n\n#### 3. SST config\n\nAdd `createDashboard()` alongside the table and migration Lambda defined in the [Infrastructure](#infrastructure-sst) section:\n\n```typescript\n// sst.config.ts\nimport { table, createDashboard } from '@auriclabs/migrations/infra';\n\nconst migrationsTable = table;\n\nconst migrationFn = new sst.aws.Function('MigrationFn', {\n  handler: 'backend/migrations/handler.handler',\n  link: [migrationsTable],\n});\n\n// Dashboard — opt-in\nconst dashboard = createDashboard({\n  table: migrationsTable,\n  handler: 'backend/migrations/dashboard.handler',\n  migrationFn,                               // optional — enables rollback from the UI\n  domain: 'migrations.example.com',          // optional\n});\n```\n\nThis provisions:\n\n- **API Gateway** — single Lambda handling all `/api/*` routes\n- **StaticSite** — pre-built React SPA served via CloudFront\n\n`migrationFn` is the same Lambda defined in the infra section — the one that runs your migration code. Passing it here does two things: grants the dashboard Lambda permission to invoke it, and sets the `MIGRATION_FUNCTION_NAME` environment variable automatically.\n\nWithout `migrationFn`, the dashboard is read-only and the rollback endpoint returns an error.\n\n### Production Safety\n\nThe dashboard has no built-in authentication — it is designed to be **excluded from production deployments** at the infrastructure level. Gate deployment using your environment config:\n\n```typescript\n// infra/migrations.ts\nimport { table, createDashboard } from '@auriclabs/migrations/infra';\n\nconst migrationsTable = table;\n\nconst migrationFn = new sst.aws.Function('MigrationFn', {\n  handler: 'backend/migrations/handler.handler',\n  link: [migrationsTable],\n});\n\n// Dashboard — non-production only\nlet dashboard: ReturnType<typeof createDashboard> | undefined;\n\nif (config.environment !== 'production') {\n  dashboard = createDashboard({\n    table: migrationsTable,\n    handler: 'backend/migrations/dashboard.handler',\n    migrationFn,\n    domain: `migrations.${config.appDomain}`,\n  });\n}\n```\n\nIn production, only the `MigrationsTable` and `MigrationFn` Lambda are deployed. No API Gateway, no StaticSite, no HTTP endpoints — there is nothing to attack.\n\nFor non-production stages that need protection, add CloudFront basic auth or restrict access via WAF/security groups at the infra layer.\n\n### API Endpoints\n\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | `/api/migrations` | Latest state per migration (deduplicated) |\n| GET | `/api/migrations/summary` | Counts: `{ pending, completed, failed, total }` |\n| GET | `/api/migrations/{id}` | Full history for one migration |\n| GET | `/api/executions` | Execution batches with metadata |\n| GET | `/api/executions/{id}` | All migrations in one execution |\n| POST | `/api/rollback` | Body: `{ target?: string }` — async-invokes migration Lambda with `direction: 'down'` |\n\n### Dashboard Pages\n\n- **Dashboard** — summary cards (completed / pending / failed / total) and recent executions\n- **Migrations** — filterable table of all migrations with status, rollback button\n- **Migration Detail** — execution history for a single migration\n- **Executions** — list of execution batches, expandable to individual migrations\n\n## Package Exports\n\n| Import path | Contents |\n|-------------|----------|\n| `@auriclabs/migrations` | Core types, `MigrationRunner`, `createLambdaHandler`, `createDashboardApiHandler` |\n| `@auriclabs/migrations/dynamodb` | `DynamoDBMigrationStorage`, ElectroDB entity |\n| `@auriclabs/migrations/infra` | SST `table`, `createDashboard()` |\n| `@auriclabs/migrations/api` | `createDashboardApiHandler` |\n\n## Development\n\n```bash\npnpm build          # build library (CJS + ESM + DTS)\npnpm build:ui       # build React dashboard (Vite → ui/dist/)\npnpm dev            # watch mode\npnpm lint           # ESLint\npnpm typecheck      # TypeScript\npnpm test           # Vitest\n```\n\n## License\n\nISC\n","readmeFilename":"README.md"}