{"_id":"sqlfu","_rev":"23-24e6d29efc0bccd04266aff98902c2ed","name":"sqlfu","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.0":{"name":"sqlfu","version":"0.0.0","_id":"sqlfu@0.0.0","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"8b5d6481c3bc7a7d742633136df25b945c24cd11","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.0.tgz","fileCount":94,"integrity":"sha512-dOEADq2T3qTZJLD61xxQ+USGrSVt3RukOU5xBrpg6rpgTMinYBE4DwIeqrOIVoFEQav7+G2dGo7zSjcQ160deA==","signatures":[{"sig":"MEUCICT5a71y+77iip56apHq9DZxFgEGxqPOYMKitz9lLQtvAiEA3jFkSsjngo4pVjxDYawKDrKtl+s+J9ukQc24EAPOoT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214364},"type":"module","exports":{".":"./dist/index.js","./api":"./dist/api.js","./cli":"./dist/cli.js","./client":"./dist/client.js"},"gitHead":"064d0d585db59eff62a8fb3f4ab7311c2325ddc4","scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node && pnpm run test:bun","build":"tsc -p tsconfig.build.json","generate":"node ./dist/cli.js generate","test:bun":"bun test ./test/buntest.ts","test:node":"vitest","typecheck":"tsc -p tsconfig.typecheck.json"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"Slim SQLite tooling around libsql, D1, typesql, and sqldef","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","dbmate":"^2.31.0","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0","@libsql/client":"^0.17.2"},"_hasShrinkwrap":false,"devDependencies":{"execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","ts-morph":"^27.0.2","bun-types":"1.3.11","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","typesql-cli":"^0.22.0","better-sqlite3":"^12.8.0"},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.0_1775770751084_0.2845367788604918","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"sqlfu","version":"0.0.1","_id":"sqlfu@0.0.1","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"284bce0c2a392956ccbdc1a17f440c4303e9b554","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.1.tgz","fileCount":288,"integrity":"sha512-Yyh9qwA8onNlalsDUP2Xy/bQjDJZICZdjohcDz9dXYDZ8n7l5CuZHtPs5XMTOdnkfNTkrLANyq+XWL22OtqZew==","signatures":[{"sig":"MEUCIFKQ762eVsXesOo4iRpf3ZpVCqrGFVXKR2qbddUzoZ6+AiEAoLrV+Ng2JVimW8iQtPNc6AqLGzGP0XpVqc3pjWeE94Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17643399},"type":"module","_from":"file:sqlfu-0.0.1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsc -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsc -p tsconfig.build.json","build:vendor-typesql":"rm -rf dist/vendor && tsc -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsc -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/d2e4cd010aeeee2f5e20a2ee37cb62dd/sqlfu-0.0.1.tgz","_integrity":"sha512-Yyh9qwA8onNlalsDUP2Xy/bQjDJZICZdjohcDz9dXYDZ8n7l5CuZHtPs5XMTOdnkfNTkrLANyq+XWL22OtqZew==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","nearley":"^2.20.1","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","devalue":"^5.7.1","ts-morph":"^27.0.2","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0"},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.1_1776432524354_0.943621305358235","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-1":{"name":"sqlfu","version":"0.0.2-1","_id":"sqlfu@0.0.2-1","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"35dd0e102168f27385423cc934c0c1f11f1a9db8","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.2-1.tgz","fileCount":292,"integrity":"sha512-7FBPJ8S42ry+1sbbwQaKtjchd6xGNEXBrKg2eJAqrWOgDNyv1QDHS5iJSY0kTUdoLgsC7Y93RcbcBx0K56verA==","signatures":[{"sig":"MEQCIBiv/TPBEaS2U8fqAxSN/YdhZnYH1YrPybdthYq5VrDrAiBKWhDOE6L5N/yjf1WAEL0XzYfawh8PLP7RZ+DLFSzxMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17654461},"type":"module","_from":"file:sqlfu-0.0.2-1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsc -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsc -p tsconfig.build.json","build:vendor-typesql":"rm -rf dist/vendor && tsc -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsc -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/5caa87ec2f12d4a888841b1ce2e6e0ea/sqlfu-0.0.2-1.tgz","_integrity":"sha512-7FBPJ8S42ry+1sbbwQaKtjchd6xGNEXBrKg2eJAqrWOgDNyv1QDHS5iJSY0kTUdoLgsC7Y93RcbcBx0K56verA==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","nearley":"^2.20.1","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","devalue":"^5.7.1","ts-morph":"^27.0.2","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0"},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.2-1_1776443244860_0.6037222536953417","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-2":{"name":"sqlfu","version":"0.0.2-2","_id":"sqlfu@0.0.2-2","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"aac5453d7b2b4d3314dc0713d58aaaf3846e5e20","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.2-2.tgz","fileCount":292,"integrity":"sha512-EYfjealtaACz0+8ZRksvPSSQXUEDzrm8/yqb16bwXxY0/EWnFiPNtv83LzYMjSljl0KgQ0KrTAXFVX931ya/mQ==","signatures":[{"sig":"MEYCIQD0lK6vy3aipsP7DHATH/Pom/brnIkKqnDs3ZuQgFeoIQIhAOrWBQ5v3RTeYSb6g0XzMXHqMQE3Fka87LTh8m9fQPJN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17654488},"type":"module","_from":"file:sqlfu-0.0.2-2.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsc -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsc -p tsconfig.build.json","build:vendor-typesql":"rm -rf dist/vendor && tsc -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsc -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/ba98576a9eeeeba1eefd8b93e8093656/sqlfu-0.0.2-2.tgz","_integrity":"sha512-EYfjealtaACz0+8ZRksvPSSQXUEDzrm8/yqb16bwXxY0/EWnFiPNtv83LzYMjSljl0KgQ0KrTAXFVX931ya/mQ==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","nearley":"^2.20.1","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","devalue":"^5.7.1","ts-morph":"^27.0.2","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0"},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.2-2_1776444487966_0.3701763071841173","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-3":{"name":"sqlfu","version":"0.0.2-3","_id":"sqlfu@0.0.2-3","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"d7a60a0b77a49f55f718a50cc303e4bc15731ef5","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.2-3.tgz","fileCount":292,"integrity":"sha512-bfIp0jr7eR6lsIaHZfwyHucrKtgN4esDrn4rlMrRJHWn9DxPB8eT2FVAq7brP4tKJZtpX5FYws78xWOP26Z+Jg==","signatures":[{"sig":"MEQCIGlbJcsgp1fC7MoaYHppCzR+9uxYm/8C1xuTcmsneSwsAiA6Se15boynVJegseD9STBtlMAIxuQt7fww+T42SLysqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17673748},"type":"module","_from":"file:sqlfu-0.0.2-3.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsc -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsc -p tsconfig.build.json","build:vendor-typesql":"rm -rf dist/vendor && tsc -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsc -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/f2aa184063ef102346c6e85562abf1ef/sqlfu-0.0.2-3.tgz","_integrity":"sha512-bfIp0jr7eR6lsIaHZfwyHucrKtgN4esDrn4rlMrRJHWn9DxPB8eT2FVAq7brP4tKJZtpX5FYws78xWOP26Z+Jg==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","nearley":"^2.20.1","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","devalue":"^5.7.1","ts-morph":"^27.0.2","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0"},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.2-3_1776453083546_0.8908575872560227","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-0":{"name":"sqlfu","version":"0.0.3-0","_id":"sqlfu@0.0.3-0","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"c3b269c4158f85ddb5fe72a8344a62d3933a89c9","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-0.tgz","fileCount":141,"integrity":"sha512-TZizJl42R6m7nHVLu0gaLrte8w2jQ5sfaMdOIgNBr43t13nLaWtXazCd16oK0BNJR+SJFm/og+KoaoTcrJxnRw==","signatures":[{"sig":"MEUCIQCteQlFag6MPufkUierJ+OQyyyKlLes43F1dMvpGCbwIAIgSZKngHR60KMXz8syeAvcITl6wvdwG9L4HFsZnBMWsiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":964748},"type":"module","_from":"file:sqlfu-0.0.3-0.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/antlr4 dist/vendor/code-block-writer dist/vendor/typesql dist/vendor/typesql-parser && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/9e5ce8f987fb76000b7b167bd3212749/sqlfu-0.0.3-0.tgz","_integrity":"sha512-TZizJl42R6m7nHVLu0gaLrte8w2jQ5sfaMdOIgNBr43t13nLaWtXazCd16oK0BNJR+SJFm/og+KoaoTcrJxnRw==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","arktype":"^2.2.0","valibot":"^1.3.1","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@noble/hashes":"^2.2.0","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","devalue":"^5.7.1","esbuild":"^0.25.0","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@sqlite.org/sqlite-wasm":"3.51.2-build9","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-0"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-0_1776720593792_0.0017737821526795372","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-1":{"name":"sqlfu","version":"0.0.3-1","_id":"sqlfu@0.0.3-1","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"49919951c65f61ad709a7c64a04a64c7f8702c4c","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-1.tgz","fileCount":143,"integrity":"sha512-JQkM9khZSCLGX5k9G6iB5dAOcmtzznV5xY8xDZ+XWDrG1x/uoVY9LrVQTsTLceb18AF/K98UwASGhR/FohPVdQ==","signatures":[{"sig":"MEYCIQDlxpHMG/FWaKnrXVlNjM8KZT38Hs1Mej+sIenbeH9rywIhAJwv9TKNh5nsWQ2GoDD2d8vPXie85jlBcFW8LjZ0GBiJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":969030},"type":"module","_from":"file:sqlfu-0.0.3-1.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/antlr4 dist/vendor/code-block-writer dist/vendor/typesql dist/vendor/typesql-parser && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/5158bc62f156adeed36d7240189143f5/sqlfu-0.0.3-1.tgz","_integrity":"sha512-JQkM9khZSCLGX5k9G6iB5dAOcmtzznV5xY8xDZ+XWDrG1x/uoVY9LrVQTsTLceb18AF/K98UwASGhR/FohPVdQ==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@sqlite.org/sqlite-wasm":"3.51.2-build9","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-1"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-1_1776722144704_0.49975324062990145","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-3":{"name":"sqlfu","version":"0.0.3-3","_id":"sqlfu@0.0.3-3","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"3f3efdf47b5d03a81660a4a9f5ce035929fe50a0","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-3.tgz","fileCount":147,"integrity":"sha512-6GdHAe4JatJkIvUkMWOflAeiI6frp6IWe+7eCgA1WnuWzkC0tJrgLUAM7Z6TVpKKn/fWv5H72MG8waEKjzbqrA==","signatures":[{"sig":"MEYCIQDWf3VZbGplaSbH1MK/gWgXgot2MavhNkqzss4cnZ1cyQIhAISuhnJsnUACXgQGVDNhqgBAUn0AiaFxFiSbeySaBNHM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627090},"type":"module","_from":"file:sqlfu-0.0.3-3.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/88b7a8a011901be770778945da357198/sqlfu-0.0.3-3.tgz","_integrity":"sha512-6GdHAe4JatJkIvUkMWOflAeiI6frp6IWe+7eCgA1WnuWzkC0tJrgLUAM7Z6TVpKKn/fWv5H72MG8waEKjzbqrA==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-3"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-3_1776792285267_0.9513934115326523","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-4":{"name":"sqlfu","version":"0.0.3-4","_id":"sqlfu@0.0.3-4","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"f71d02e16545e439f27c6fc54fca2a905e1394b3","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-4.tgz","fileCount":151,"integrity":"sha512-wzAYY2/524ZJdZzFQhqUNuQ9/mIFg85OEH2F1V44Yjw4k4Z5I87l+aRmXOZXd2C3ymzmaeTDg7/+F05YK47tRQ==","signatures":[{"sig":"MEUCIQD4haPb8s7hb0QJBMBR/MSABKgsp8eBszHjqcflSU3/9wIgBQgZDtMxweV3xxtQrJBjbkfUqOU9P1j7P0Anh8Jg0h0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":656491},"type":"module","_from":"file:sqlfu-0.0.3-4.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/ce4dde12948f24b61b0958f42d3476ad/sqlfu-0.0.3-4.tgz","_integrity":"sha512-wzAYY2/524ZJdZzFQhqUNuQ9/mIFg85OEH2F1V44Yjw4k4Z5I87l+aRmXOZXd2C3ymzmaeTDg7/+F05YK47tRQ==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-4"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-4_1776865908134_0.38039325913322375","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-5":{"name":"sqlfu","version":"0.0.3-5","_id":"sqlfu@0.0.3-5","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"bae123336211e2081139d6be480a62036389a017","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-5.tgz","fileCount":151,"integrity":"sha512-HnckIx/ZWfN6pTkALt215ZIhvVMHsGvjSOfjP98mw1BK7xzRPlI2vIZOW9JDRYvbk5GIrFUm90QETb5p/Lo+SQ==","signatures":[{"sig":"MEQCIHSjwrJ0FcpXz8QLM3rkva+/bz62fwstzeipqiWc41uAAiAXCtYRavAoIlB3RVaZBQRrLiBxFKriaY8/0QWQgJQ4tA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":659863},"type":"module","_from":"file:sqlfu-0.0.3-5.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","browser":"./dist/ui/browser.js","default":"./dist/ui/index.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./cli":{"types":"./dist/cli.d.ts","default":"./dist/cli.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./browser":{"types":"./dist/browser.d.ts","default":"./dist/browser.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/c60e8e3a863aa2ee2abe0b3e7c104cf2/sqlfu-0.0.3-5.tgz","_integrity":"sha512-HnckIx/ZWfN6pTkALt215ZIhvVMHsGvjSOfjP98mw1BK7xzRPlI2vIZOW9JDRYvbk5GIrFUm90QETb5p/Lo+SQ==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-5"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-5_1776878751355_0.034369488401975845","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-6":{"name":"sqlfu","version":"0.0.3-6","_id":"sqlfu@0.0.3-6","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"dist/cli.js"},"dist":{"shasum":"9479c776147c98ebbdd4cc3cc8236565883800f2","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-6.tgz","fileCount":151,"integrity":"sha512-OqEY6pJPslWWAcMS1MIddl7aDVSK301MNZYkbimEhAZxj8H5M5ayO/dWlpPTvQgpgrzySudlgct1LUEgarg4Dg==","signatures":[{"sig":"MEUCIFIYb2vR8h2Ea+O86NSIF28fSdA9qcDcseDtQs63JF2LAiEA3VmkLgu7l9bthpYv5NWrewWWKWILY4HcHz7rxi9AyEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679637},"type":"module","_from":"file:sqlfu-0.0.3-6.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/8029a0fe080aac9bc78e26c5294e588d/sqlfu-0.0.3-6.tgz","_integrity":"sha512-OqEY6pJPslWWAcMS1MIddl7aDVSK301MNZYkbimEhAZxj8H5M5ayO/dWlpPTvQgpgrzySudlgct1LUEgarg4Dg==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-6"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-6_1776944827747_0.9923375003411066","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-7":{"name":"sqlfu","version":"0.0.3-7","_id":"sqlfu@0.0.3-7","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"dist":{"shasum":"3e83c93dd254be1e0da19799d2edde515af103fa","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-7.tgz","fileCount":152,"integrity":"sha512-L6HK6wj+KnCdZL3K/2Joq8Gs0mMJOh63DnsHVm8xVAfR3y0wpT2uKN8wm1HqvfRsvizF8q3C20JnlAw5yxeLtQ==","signatures":[{"sig":"MEUCIQCpg7qlyOkdiiaZMHWZThnfur2sZKeBOiNjWkyzR3odoAIgCfPt4T/nwM2R9tq9vQRDvM5K8NQJAHMGjapEx0ggFAY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":683035},"type":"module","_from":"file:sqlfu-0.0.3-7.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:internal-queries && pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","build:internal-queries":"tsx scripts/generate-internal-queries.ts","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/caab469f002860cabd4ea7830b7d2d53/sqlfu-0.0.3-7.tgz","_integrity":"sha512-L6HK6wj+KnCdZL3K/2Joq8Gs0mMJOh63DnsHVm8xVAfR3y0wpT2uKN8wm1HqvfRsvizF8q3C20JnlAw5yxeLtQ==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-7"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-7_1776949884126_0.6183867045349691","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-8":{"name":"sqlfu","version":"0.0.3-8","_id":"sqlfu@0.0.3-8","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"a525118"},"dist":{"shasum":"42ac9ddd9501dfb5d48f6c36da1a59f6fbbb09c0","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-8.tgz","fileCount":156,"integrity":"sha512-jxHN1FQ7nmantuE4ZzWgotlfp+XJBoiw6mP94AyeSKMAQe0e5ki8Mrfz51vHl60Q6nxeXfp9tvLhwfuaHIPK+Q==","signatures":[{"sig":"MEUCIAwC7NLn+tnHIlrHiR3ofz8DXQyh4RoSgIpOmU5UkB7GAiEA2A3mDa4jU2vzVFN+NTGh9gqsAk6xZZvdyse+NtnLAts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":726086},"type":"module","_from":"file:sqlfu-0.0.3-8.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/2ec0dd11dc07091461ebb951358a237a/sqlfu-0.0.3-8.tgz","_integrity":"sha512-jxHN1FQ7nmantuE4ZzWgotlfp+XJBoiw6mP94AyeSKMAQe0e5ki8Mrfz51vHl60Q6nxeXfp9tvLhwfuaHIPK+Q==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-8"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-8_1777279629331_0.026931260653148215","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-9":{"name":"sqlfu","version":"0.0.3-9","_id":"sqlfu@0.0.3-9","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"446d946"},"dist":{"shasum":"6e030866202be57fe160172a728e7a23cc400285","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-9.tgz","fileCount":162,"integrity":"sha512-9quHkZiE2IhLSOsrr942Lu9RjiCP7zWUU3o71Kn4BaLt6t9nCoYaIO4VKL/c0AGALQFT2uhh3WVkBAI9nz06Ow==","signatures":[{"sig":"MEQCIBQmPwSju3o2jwe8NPMEALlxCqUREy8OEkBlGn1Ihp2FAiAdAjW9ucZ6TIsl/8JektrLWM3t772d0rVTyERFFqahcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":804955},"type":"module","_from":"file:sqlfu-0.0.3-9.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/e19ce6f7d98113c74407f7ce5d28497d/sqlfu-0.0.3-9.tgz","_integrity":"sha512-9quHkZiE2IhLSOsrr942Lu9RjiCP7zWUU3o71Kn4BaLt6t9nCoYaIO4VKL/c0AGALQFT2uhh3WVkBAI9nz06Ow==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-9"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-9_1777367592848_0.22447718418430163","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-10":{"name":"sqlfu","version":"0.0.3-10","_id":"sqlfu@0.0.3-10","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"b25d208"},"dist":{"shasum":"af4b79f5d942c0fcb3aed1f5785b076c0c79a280","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-10.tgz","fileCount":163,"integrity":"sha512-8L/e1ex/jYEyS4IaVDJTLpj9235XQi5cHf1hkdEb0XkQwexvE3gyjPKKhmf+m50d9FyDjfCMMegkDek4V2VCRw==","signatures":[{"sig":"MEYCIQDh68iykLbeB9kfsbPyGs5V6fgZoDCfLqGtAJ9CQGdEXAIhAM09wdHKhiLxauCfIYmIIYJDl5qFdAJ5D/WC4YqKj6dh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":822525},"type":"module","_from":"file:sqlfu-0.0.3-10.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/0edadf6e2caa4f899ac6ffd158af734e/sqlfu-0.0.3-10.tgz","_integrity":"sha512-8L/e1ex/jYEyS4IaVDJTLpj9235XQi5cHf1hkdEb0XkQwexvE3gyjPKKhmf+m50d9FyDjfCMMegkDek4V2VCRw==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-10"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-10_1777371024440_0.16343542139785705","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-11":{"name":"sqlfu","version":"0.0.3-11","_id":"sqlfu@0.0.3-11","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"74c0d83"},"dist":{"shasum":"b590e3c8f20a36daff0b086de10874fea6557bf5","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-11.tgz","fileCount":163,"integrity":"sha512-xdRcS6FFbSLZiJ/2JL9NvL0ncD7Qh7GB25cOPiSXgwBT1ll09CyZJPIm44Zw1l9C+F5k1dqJcF6S9ThWQMZCgA==","signatures":[{"sig":"MEYCIQCp+uKza+1lsfs7JU6fh7z8UQZsQRa7UeRCx3EjveCx3AIhALkO1gSgm1JYKvnqzsT3O14DrEXCVqjXSNDg83P6Jwxt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":823609},"type":"module","_from":"file:sqlfu-0.0.3-11.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api.d.ts","default":"./dist/api.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/9ee5c635b3b8f96e1225546265d59c09/sqlfu-0.0.3-11.tgz","_integrity":"sha512-xdRcS6FFbSLZiJ/2JL9NvL0ncD7Qh7GB25cOPiSXgwBT1ll09CyZJPIm44Zw1l9C+F5k1dqJcF6S9ThWQMZCgA==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-11"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-11_1777454411231_0.4752141583072951","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-12":{"name":"sqlfu","version":"0.0.3-12","_id":"sqlfu@0.0.3-12","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"cd99c25"},"dist":{"shasum":"ee9f98c4a30efa1427677ab601e7d694ea1c8efa","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-12.tgz","fileCount":183,"integrity":"sha512-kArD0+zMhV+oeVdSj7rGez42F9VxZ41SRlRnAFEeYSfH8xdhXGjhNdSdOvZHW43nfhbXPgo6611RgBQaqGx0IA==","signatures":[{"sig":"MEUCIEZvN3CXDmnDZ4nEpmukk6i0xcwbfFxU9gAJUbO8hR0PAiEAxub7oqEwJi0UCzAnEXJeCaJdKZJokLr6IEQFxpZaY6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":896166},"type":"module","_from":"file:sqlfu-0.0.3-12.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./node":{"types":"./dist/node/exports.d.ts","default":"./dist/node/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/ac673c71e3258065422c8b146a5ae0ee/sqlfu-0.0.3-12.tgz","_integrity":"sha512-kArD0+zMhV+oeVdSj7rGez42F9VxZ41SRlRnAFEeYSfH8xdhXGjhNdSdOvZHW43nfhbXPgo6611RgBQaqGx0IA==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@types/node":"^24.5.2","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"@sqlfu/ui":"0.0.3-12"},"peerDependenciesMeta":{"@sqlfu/ui":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-12_1777655248755_0.5707286964098357","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-13":{"name":"sqlfu","version":"0.0.3-13","_id":"sqlfu@0.0.3-13","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"35ba865"},"dist":{"shasum":"d1e566356f1dd96ea9a2c23b60d6c716e0847755","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-13.tgz","fileCount":197,"integrity":"sha512-ZhEkgfFc88HickKF/6N3M2bBVfBEVreDhfbomVLs1jCf/bRAfJXXmIhzvj52NE4hiOnwNf4BvKReNbRqBbHoRg==","signatures":[{"sig":"MEUCIQCfqeISvvE+iSk5eVr/8hRsi+iMsyMQiCr8o5D4Z9r8ZAIgZ1/haQlHWlxFbXOdkJMzda68BIS3NVjrHbwdbFXGAv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":938354},"type":"module","_from":"file:sqlfu-0.0.3-13.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./cloudflare":{"types":"./dist/cloudflare/exports.d.ts","default":"./dist/cloudflare/exports.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./better-auth":{"types":"./dist/better-auth.d.ts","default":"./dist/better-auth.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/af01bbb577b2fa2339a2c6b2793282a2/sqlfu-0.0.3-13.tgz","_integrity":"sha512-ZhEkgfFc88HickKF/6N3M2bBVfBEVreDhfbomVLs1jCf/bRAfJXXmIhzvj52NE4hiOnwNf4BvKReNbRqBbHoRg==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"auth":"1.6.9","hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","effect":"^3.21.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@effect/sql":"^0.51.1","@types/node":"^24.5.2","better-auth":"1.6.9","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@effect/sql-sqlite-node":"^0.52.0","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"effect":"^3.21.2 || ^4.0.0-beta.60","@sqlfu/ui":"0.0.3-13","@effect/sql":"^0.51.1","better-auth":"^1.6.9"},"peerDependenciesMeta":{"effect":{"optional":true},"@sqlfu/ui":{"optional":true},"@effect/sql":{"optional":true},"better-auth":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-13_1777997293190_0.03201290593052497","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-14":{"name":"sqlfu","version":"0.0.3-14","_id":"sqlfu@0.0.3-14","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"5472c94"},"dist":{"shasum":"328b419fe0607990e42876fa9a499aa377d956c1","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-14.tgz","fileCount":197,"integrity":"sha512-0JHD+oksVx2OEbrgFjBmN+nB4Y1q7jkkbHhAVytG/ZzzOcHwmtbxB8Q8Iz7euJ2R28LSTNqS5VfuyBkdZQ8aYQ==","signatures":[{"sig":"MEQCIDFNaXH39lOP4IfotYsNDhb3w9UZhs55nS6RsK0a8M3rAiB1kBu+LvV6ZJgujEv9O+klKmdliovs2p3wfUcF8NWnxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":946134},"type":"module","_from":"file:sqlfu-0.0.3-14.tgz","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./cloudflare":{"types":"./dist/cloudflare/exports.d.ts","default":"./dist/cloudflare/exports.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./better-auth":{"types":"./dist/better-auth.d.ts","default":"./dist/better-auth.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/768c39e04e6bd5750b2f9f8f79338d83/sqlfu-0.0.3-14.tgz","_integrity":"sha512-0JHD+oksVx2OEbrgFjBmN+nB4Y1q7jkkbHhAVytG/ZzzOcHwmtbxB8Q8Iz7euJ2R28LSTNqS5VfuyBkdZQ8aYQ==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.6.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"24.8.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"auth":"1.6.9","hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","effect":"^3.21.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@effect/sql":"^0.51.1","@types/node":"^24.5.2","better-auth":"1.6.9","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@effect/sql-sqlite-node":"^0.52.0","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"effect":"^3.21.2 || ^4.0.0-beta.60","@sqlfu/ui":"0.0.3-14","@effect/sql":"^0.51.1","better-auth":"^1.6.9"},"peerDependenciesMeta":{"effect":{"optional":true},"@sqlfu/ui":{"optional":true},"@effect/sql":{"optional":true},"better-auth":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-14_1778062883466_0.3457324879507402","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-15":{"name":"sqlfu","version":"0.0.3-15","_id":"sqlfu@0.0.3-15","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"fc8bec5"},"dist":{"shasum":"14fac9d72a158d1b5d2b549a3fa3290b02dbe5b2","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.0.3-15.tgz","fileCount":201,"integrity":"sha512-Rh5UzGuPi4ObOeekdhXLbdwTbbT7Sb+cA0LV6Zd1Q6q5qwBB2s3hqWjqg+tox/7JbzWivkus/KzJHLWm9dz+Dg==","signatures":[{"sig":"MEQCIGV4hRCC5gM4/pFu4w3eB3RNqqOyZKjg8vxQyKZcU8yFAiBMnWi6x5tvV0uVMGW/cxGvvbmD+Bz3btKvKHT7t8nGTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":990626},"type":"module","_from":"file:sqlfu-0.0.3-15.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./cloudflare":{"types":"./dist/cloudflare/exports.d.ts","default":"./dist/cloudflare/exports.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./better-auth":{"types":"./dist/better-auth.d.ts","default":"./dist/better-auth.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/1c015cba3b2ac49928627db1f62801a3/sqlfu-0.0.3-15.tgz","_integrity":"sha512-Rh5UzGuPi4ObOeekdhXLbdwTbbT7Sb+cA0LV6Zd1Q6q5qwBB2s3hqWjqg+tox/7JbzWivkus/KzJHLWm9dz+Dg==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.12.1","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"auth":"1.6.9","hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","effect":"^3.21.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@effect/sql":"^0.51.1","@types/node":"^24.5.2","better-auth":"1.6.9","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@effect/sql-sqlite-node":"^0.52.0","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"effect":"^3.21.2 || ^4.0.0-beta.60","@sqlfu/ui":"0.0.3-15","@effect/sql":"^0.51.1","better-auth":"^1.6.9"},"peerDependenciesMeta":{"effect":{"optional":true},"@sqlfu/ui":{"optional":true},"@effect/sql":{"optional":true},"better-auth":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.0.3-15_1778669948182_0.9608314691212849","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"sqlfu","version":"0.1.0","_id":"sqlfu@0.1.0","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"ed9ad0f"},"dist":{"shasum":"2892c54dc531535cdc296ef305a714a56a1628c1","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.1.0.tgz","fileCount":226,"integrity":"sha512-u8iRUg6xE4P5cn+DUetkal2buFgGLYuos3R9CWDXIo95RyB1tYO+xvzAPpb+2sAtOndRdmHDapd2WLoJ5VyWxg==","signatures":[{"sig":"MEUCIQCXmdE0G3h2mSzKFyiwOV6CdfARwMIy75H4ToU4/W7AGgIgOa/7jMNXKjKKDkcM3wdF+86+8W8Imvan3HO8XuJeEzc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1171249},"type":"module","_from":"file:sqlfu-0.1.0.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./api/sync":{"types":"./dist/api/sync.d.ts","default":"./dist/api/sync.js"},"./cloudflare":{"types":"./dist/cloudflare/exports.d.ts","default":"./dist/cloudflare/exports.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./better-auth":{"types":"./dist/better-auth.d.ts","default":"./dist/better-auth.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/cbebcc1b28c002ea4cc3ae8928054c16/sqlfu-0.1.0.tgz","_integrity":"sha512-u8iRUg6xE4P5cn+DUetkal2buFgGLYuos3R9CWDXIo95RyB1tYO+xvzAPpb+2sAtOndRdmHDapd2WLoJ5VyWxg==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.12.1","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"auth":"1.6.9","hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","effect":"^3.21.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@effect/sql":"^0.51.1","@types/node":"^24.5.2","better-auth":"1.6.9","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@effect/sql-sqlite-node":"^0.52.0","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"effect":"^3.21.2 || ^4.0.0-beta.60","@sqlfu/ui":"0.1.0","@effect/sql":"^0.51.1","better-auth":"^1.6.9"},"peerDependenciesMeta":{"effect":{"optional":true},"@sqlfu/ui":{"optional":true},"@effect/sql":{"optional":true},"better-auth":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.1.0_1781197612040_0.14794200059001095","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"sqlfu","version":"0.1.1","_id":"sqlfu@0.1.1","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"homepage":"https://github.com/mmkal/sqlfu#readme","bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"30fa55c"},"dist":{"shasum":"e5ce201d022a79258bca2c60848ea5c2e71981db","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.1.1.tgz","fileCount":226,"integrity":"sha512-WTbp8AXZZ+B3AD5ofTXYR59jQo5f4kP7lUJSou9Mi8zdA+4bQWqZGLHce81dXVHVr5ah9fZ/DOIl0SVAL5miVw==","signatures":[{"sig":"MEQCIGko3e70Rt9wRKEKNdEiFGrui2uXMR4izOXyj1j4Se8qAiBaWMcX25L4O7bsE+mtwtX103WMX2BvMGElf9oB5p1odg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1171956},"type":"module","_from":"file:sqlfu-0.1.1.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./api/sync":{"types":"./dist/api/sync.d.ts","default":"./dist/api/sync.js"},"./cloudflare":{"types":"./dist/cloudflare/exports.d.ts","default":"./dist/cloudflare/exports.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./better-auth":{"types":"./dist/better-auth.d.ts","default":"./dist/better-auth.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/f1632dbeac8c48ee9c10ca5eee850caf/sqlfu-0.1.1.tgz","_integrity":"sha512-WTbp8AXZZ+B3AD5ofTXYR59jQo5f4kP7lUJSou9Mi8zdA+4bQWqZGLHce81dXVHVr5ah9fZ/DOIl0SVAL5miVw==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.12.1","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"auth":"1.6.9","hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","effect":"^3.21.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.59.1","typescript":"^5.9.3","@effect/sql":"^0.51.1","@types/node":"^24.5.2","better-auth":"1.6.9","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@effect/sql-sqlite-node":"^0.52.0","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"effect":"^3.21.2 || ^4.0.0-beta.60","@sqlfu/ui":"0.1.1","@effect/sql":"^0.51.1","better-auth":"^1.6.9"},"peerDependenciesMeta":{"effect":{"optional":true},"@sqlfu/ui":{"optional":true},"@effect/sql":{"optional":true},"better-auth":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sqlfu_0.1.1_1782307327901_0.48464617822564127","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"_id":"sqlfu@0.1.2","bin":{"sqlfu":"bin/sqlfu.js"},"git":{"sha":"0aeca571"},"bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"dist":{"shasum":"c7fb02713ad9ad75f0880b7437058d578bf5431b","tarball":"https://registry.npmjs.org/sqlfu/-/sqlfu-0.1.2.tgz","fileCount":226,"integrity":"sha512-C7q/UJJ90hmtqJrFm+T3u77ZwF5BlozGdvd7DR5BcXlQPYxcDKNOrtbMXO+1Dwf3he5qQlW14bLzqA1EpJXuLg==","signatures":[{"sig":"MEYCIQDre06N+W/+EeMDAyer/sdyxFH5MDZaA75lF2k9F3lQKwIhAK0uU97qsfK6m2QoAha9uLY3hQxYxrgkanToWsDgoJam","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCI6uMaMCaDfgXGxpHpIOE78rNo4cNctostIkfE/xxvRAIgdPikVr7HtCdSLd5OCNIzrPsqadGHaIlVdW6u0abTOyk="}],"unpackedSize":1213721},"name":"sqlfu","type":"module","_from":"file:sqlfu-0.1.2.tgz","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./ui":{"types":"./dist/ui/server.d.ts","default":"./dist/ui/server.js"},"./api":{"types":"./dist/api/exports.d.ts","default":"./dist/api/exports.js"},"./outbox":{"types":"./dist/outbox/index.d.ts","default":"./dist/outbox/index.js"},"./analyze":{"types":"./dist/analyze.d.ts","default":"./dist/analyze.js"},"./api/core":{"types":"./dist/api/core.d.ts","default":"./dist/api/core.js"},"./api/sync":{"types":"./dist/api/sync.d.ts","default":"./dist/api/sync.js"},"./cloudflare":{"types":"./dist/cloudflare/exports.d.ts","default":"./dist/cloudflare/exports.js"},"./ui/browser":{"types":"./dist/ui/browser.d.ts","default":"./dist/ui/browser.js"},"./better-auth":{"types":"./dist/better-auth.d.ts","default":"./dist/better-auth.js"},"./lint-plugin":{"types":"./dist/lint-plugin.d.ts","default":"./dist/lint-plugin.js"}},"scripts":{"cli":"node ./dist/cli.js","test":"pnpm run test:node","build":"pnpm run build:runtime && pnpm run build:vendor-typesql && pnpm run build:bundle-vendor","generate":"node ./dist/cli.js generate","test:node":"vitest","typecheck":"tsgo -p tsconfig.typecheck.json && pnpm run typecheck:vendor-typesql","build:runtime":"rm -f dist/api.js dist/api.d.ts dist/node.js dist/node.d.ts && tsgo -p tsconfig.build.json","build:bundle-vendor":"tsx scripts/bundle-vendor.ts","build:vendor-typesql":"rm -rf dist/vendor/code-block-writer dist/vendor/sqlfu-sqlite-parser dist/vendor/typesql && tsgo -p src/vendor/typesql/tsconfig.json","typecheck:vendor-typesql":"tsgo -p src/vendor/typesql/tsconfig.json --noEmit"},"version":"0.1.2","_npmUser":{"name":"mmkale","email":"mmkal1@outlook.com"},"homepage":"https://github.com/mmkal/sqlfu#readme","_resolved":"/private/var/folders/3f/w1drdpds7ls_09vcg6981cwm0000gn/T/a0548879835ca19c13076372bed0030f/sqlfu-0.1.2.tgz","_integrity":"sha512-C7q/UJJ90hmtqJrFm+T3u77ZwF5BlozGdvd7DR5BcXlQPYxcDKNOrtbMXO+1Dwf3he5qQlW14bLzqA1EpJXuLg==","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"_npmVersion":"11.20.0","description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","directories":{},"maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"_nodeVersion":"26.11.0","dependencies":{"zod":"^4.3.6","trpc-cli":"^0.14.0","@orpc/server":"^1.13.13","@clack/prompts":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"auth":"1.6.9","hono":"^4.12.14","vite":"^7.1.12","execa":"^9.6.1","dedent":"^1.7.2","dotenv":"^17.4.2","effect":"^3.21.2","eslint":"^9.36.0","libsql":"0.5.29","vitest":"^4.1.1","arktype":"^2.2.0","devalue":"^5.7.1","esbuild":"^0.25.0","valibot":"^1.3.1","ts-morph":"^27.0.2","hot-shots":"^14.3.1","miniflare":"^4.20260409.0","playwright":"^1.64.1","typescript":"^5.9.3","@effect/sql":"^0.51.1","@types/node":"^24.5.2","better-auth":"1.6.9","@orpc/client":"1.13.13","@sentry/node":"^10.49.0","posthog-node":"^5.29.2","@types/eslint":"^9.6.1","@types/estree":"^1.0.8","@libsql/client":"^0.17.2","better-sqlite3":"^12.8.0","@hono/node-server":"^1.19.14","@opentelemetry/api":"^1.9.1","@tursodatabase/sync":"^0.5.3","@effect/sql-sqlite-node":"^0.52.0","@sqlite.org/sqlite-wasm":"3.51.2-build9","@tursodatabase/database":"^0.5.3","@tursodatabase/serverless":"^1.1.0","@typescript/native-preview":"^7.0.0-dev.20260414.1","@opentelemetry/sdk-trace-node":"^2.7.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0"},"peerDependencies":{"effect":"^3.21.2 || ^4.0.0-beta.60","@sqlfu/ui":"0.1.2","@effect/sql":"^0.51.1","better-auth":"^1.6.9"},"peerDependenciesMeta":{"effect":{"optional":true},"@sqlfu/ui":{"optional":true},"@effect/sql":{"optional":true},"better-auth":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sqlfu_0.1.2_1793298282548_0.5937504773923302"}}},"time":{"created":"2026-04-09T21:39:11.084Z","modified":"2026-10-29T18:24:42.923Z","0.0.0":"2026-04-09T21:39:11.228Z","0.0.1":"2026-04-17T13:28:44.599Z","0.0.2-1":"2026-04-17T16:27:25.033Z","0.0.2-2":"2026-04-17T16:48:08.167Z","0.0.2-3":"2026-04-17T19:11:23.832Z","0.0.3-0":"2026-04-20T21:29:53.971Z","0.0.3-1":"2026-04-20T21:55:44.887Z","0.0.3-3":"2026-04-21T17:24:45.477Z","0.0.3-4":"2026-04-22T13:51:48.299Z","0.0.3-5":"2026-04-22T17:25:51.506Z","0.0.3-6":"2026-04-23T11:47:07.944Z","0.0.3-7":"2026-04-23T13:11:24.312Z","0.0.3-8":"2026-04-27T08:47:09.528Z","0.0.3-9":"2026-04-28T09:13:13.047Z","0.0.3-10":"2026-04-28T10:10:24.589Z","0.0.3-11":"2026-04-29T09:20:11.482Z","0.0.3-12":"2026-05-01T17:07:28.949Z","0.0.3-13":"2026-05-05T16:08:13.432Z","0.0.3-14":"2026-05-06T10:21:23.679Z","0.0.3-15":"2026-05-13T10:59:08.391Z","0.1.0":"2026-06-11T17:06:52.225Z","0.1.1":"2026-06-24T13:22:08.108Z","0.1.2":"2026-10-29T18:24:42.687Z"},"bugs":{"url":"https://github.com/mmkal/sqlfu/issues"},"homepage":"https://github.com/mmkal/sqlfu#readme","repository":{"url":"git+https://github.com/mmkal/sqlfu.git","type":"git"},"description":"sql-first client, migrator, diff engine, typescript generator, formatter, and ui.","maintainers":[{"name":"mmkale","email":"mmkal1@outlook.com"}],"readme":"# sqlfu\n\n<img src=\"./docs/logo.png\" alt=\"\" align=\"right\" width=\"96\" />\n\n`sqlfu` is a SQLite-first toolkit for teams that want their data layer to stay close to SQL. Postgres support is early and lives in [`@sqlfu/pg`](https://sqlfu.dev/docs/guides/postgres).\n\nIt is built around a simple idea: SQL should be the source language for schema, migrations, queries, formatting, and diffing. TypeScript comes second. You should still get good generated types and wrappers, but without having to push the whole project through an ORM-shaped API.\n\n**New to sqlfu?** Start with the [Getting Started](https://sqlfu.dev/docs/getting-started) walkthrough, or read the [introductory blog post](https://sqlfu.dev/blog/introducing-sqlfu) for the thinking behind it.\n\n![i know sqlfu](./docs/i-know-sqlfu.gif)\n\n- [What Is sqlfu?](#what-is-sqlfu)\n- [Philosophy](#philosophy)\n  - [SQL First](#sql-first)\n  - [TypeScript Second](#typescript-second)\n- [Core Concepts](#core-concepts)\n- [Capabilities](#capabilities)\n  - [Runtime Client](#runtime-client)\n  - [SQL Migrations](#sql-migrations)\n  - [Type Generation from SQL](#type-generation-from-sql)\n  - [Formatter](#formatter)\n  - [Observability](#observability)\n  - [Typed Errors](#typed-errors)\n  - [Outbox (experimental)](#outbox-experimental)\n  - [Admin UI](#admin-ui)\n  - [Lint Plugin](#lint-plugin)\n  - [Agent Skill](#agent-skill)\n- [Quick Start](#quick-start)\n- [Configuration](#configuration)\n- [Command Reference](#command-reference)\n- [Limitations and Non-Goals](#limitations-and-non-goals)\n- [Prior Art and Acknowledgements](#prior-art-and-acknowledgements)\n\n## What Is sqlfu?\n\n`sqlfu` is a set of SQL-first tools that are meant to work together:\n\n- a client for executing checked-in SQL\n- a migrator built around SQL files, not JavaScript migration code\n- a schema diff engine (SQLite built in, Postgres via `@sqlfu/pg`)\n- a type generator for `.sql` queries\n- a SQL formatter\n- an Admin UI for inspecting and working with the project\n\nThe intended shape is simple:\n\n- your desired schema lives in `definitions.sql`\n- your migration history lives in `migrations/`\n- your queries live in a flat `sql/` directory\n- generated TypeScript wrappers live in `sql/.generated/`\n\n## Philosophy\n\n### SQL First\n\nHumans have been writing SQL for decades. Agents are excellent at generating and editing it. SQL is *deep* \"in the weights\". `sqlfu` tries to keep that advantage instead of hiding it behind another abstraction layer.\n\nThat is why the project leans so heavily on SQL artifacts:\n\n- schema in `definitions.sql`\n- migrations as SQL files\n- checked-in `.sql` queries\n- a SQL formatter\n- a SQL diff engine\n\nThe goal is not to make SQL disappear. The goal is to make SQL a better source language for the rest of the toolchain.\n\n### TypeScript Second\n\nTypeScript is the second language in `sqlfu`, not the first one.\n\nYou should still get strong TypeScript output from SQL: generated wrappers, typed params, typed result rows, and a client surface that feels natural in an application. That is why `sqlfu` includes query type generation and why it borrows from vendored TypeSQL analysis instead of asking you to rewrite queries in a TypeScript DSL.\n\n## Core Concepts\n\n- **Runtime client.**\n  The lightweight `Client` interface is usually the only sqlfu runtime surface\n  your app depends on. Adapter factories create it from the SQLite or Postgres\n  driver you already use.\n- **SQL migrations.**\n  Schema history is a sequence of reviewed SQL files, with `sqlfu draft`\n  helping turn `definitions.sql` changes into best-effort migration drafts.\n- **Type generation from SQL.**\n  Checked-in `.sql` query files become TypeScript wrappers with inferred params\n  and result rows.\n- **Admin UI.**\n  The browser interface gives you a view of schema, migrations, queries,\n  generated metadata, and live data.\n\nThe main repo artifacts behind those concepts are:\n\n- `definitions.sql`\n  The desired schema now. Tables, views, triggers, and (if you want them) copy-paste id generators (ULID, KSUID, nanoid, cuid2-shaped) live here alongside your schema. See [docs/id-helpers.md](./docs/id-helpers.md).\n- `migrations/`\n  The ordered history of schema changes.\n- `sql/`\n  A flat directory of checked-in query files.\n- generated query wrappers\n  TypeScript code generated into `sql/.generated/` as `<name>.sql.ts`.\n- `sqlfu_migrations`\n  The table that records applied migrations in a real database. Configurable via `migrations.preset`: set `preset: 'd1'` to use Cloudflare D1's `d1_migrations` table instead, for projects taking over from alchemy/wrangler.\n- live schema\n  The schema the database actually has right now.\n\nThose pieces give `sqlfu` enough information to answer the important questions:\n\n- what should the schema be?\n- how did it get here?\n- what queries exist in the repo?\n- do the repo and the database agree?\n\n## Capabilities\n\n### Runtime Client\n\n`sqlfu` includes a lightweight client layer for executing SQL directly. It works with checked-in SQL rather than replacing it with a query builder.\n\nsqlfu doesn't ship its own database driver. Instead, `sqlfu` exports a thin adapter for each SQLite-compatible driver, plus `pg` for Postgres, so you can bring whichever one fits your runtime and get the same typed client surface on top. One thing sqlfu goes out of its way to preserve: **sync stays sync**. A client built on a synchronous driver (`better-sqlite3`, `node:sqlite`, Durable Objects) is itself synchronous -- no spurious `async` creeping up your call stack.\n\nThat sync/async distinction carries through generated query wrappers and the migrator. Sync-backed generated functions return rows directly, and `applyMigrations()` runs synchronously on a `SyncClient`. Async-backed clients get the same API shape, but with promises where the underlying driver actually needs them.\n\nWhen you need to run SQL outside a generated wrapper, the same client surface gives you `client.all(...)`, `client.run(...)`, `client.iterate(...)`, and `client.prepare(sql)`. Prepared statements are the low-level path for reusable ad-hoc SQL and named parameters without reaching through to `client.driver`. See [Prepared statements](https://sqlfu.dev/docs/adapters#prepared-statements).\n\nSee [Runtime client](https://sqlfu.dev/docs/client) for the shared interface and [Adapters](https://sqlfu.dev/docs/adapters) for the full driver table, copy-paste snippets, and guidance on which to pick.\n\n### SQL Migrations\n\nThe migrator is SQL-only. Migrations are applied in filename order, recorded in `sqlfu_migrations`, and treated as explicit history. The production path is replayed migrations, not direct declarative apply.\n\nThe diff engine powers `draft`, `goto`, and `sync` by comparing replayed migration state against `definitions.sql` and producing the SQL statements that describe the difference. See [SQL migrations](https://sqlfu.dev/docs/migration-model) for the full model.\n\nFor Cloudflare D1 projects already using alchemy or wrangler, set `migrations.preset: 'd1'` and sqlfu reads and writes the same `d1_migrations` table alchemy does. See [Migration Presets](https://sqlfu.dev/docs/migration-model#migration-presets) for the schema detection and checksum tradeoff.\n\n### Type Generation from SQL\n\n`sqlfu generate` reads checked-in `.sql` files and generates TypeScript wrappers into a `.generated/` subdirectory. The implementation uses vendored TypeSQL analysis, with a small sqlfu post-pass to improve some SQLite result types.\n\nBy default, `generate` reads `definitions.sql`, so no live database is required.\nSwitch `generate.authority` when generated types should follow replayed\nmigrations, migration history, or live schema instead.\n\nUse `/** @name listPosts */` comments when one `.sql` file contains multiple queries.\nParameter placeholders can also describe the runtime SQL shape directly:\n\n```sql\n/** @name insertPosts */\ninsert into posts (slug, title)\nvalues :posts;\n\n/** @name listPostsByIds */\nselect id, slug, title\nfrom posts\nwhere id in (:ids);\n```\n\nScalar params stay `:id`; scalar lists are inferred from `IN (:ids)` / `NOT IN (:ids)`;\nrow-value lists from `(slug, title) in (:keys)`; INSERT objects from `values :posts`;\nobject fields use dot paths like `:post.slug`; and empty runtime-expanded arrays throw before SQLite sees the query. See [Type generation from SQL](https://sqlfu.dev/docs/typegen).\n\nOpt in to runtime validation by setting `generate.validator` to `'arktype'`, `'valibot'`, `'zod'`, or `'zod-mini'`. Wrappers then validate params on the way in and rows on the way out, and derive types via the validator's native inference. See [Runtime validation](https://sqlfu.dev/docs/runtime-validation).\n\nSet `generate.runtime` when generated wrappers should target an existing runtime\ninstead of the sqlfu client. `effect-v3` / `effect-v4-unstable` return Effect\nvalues, while `node:sqlite`, `better-sqlite3`, `bun:sqlite`, `libsql`, and\n`@libsql/client` call those drivers directly and do not import `sqlfu` from the\ngenerated query module.\n\n### Formatter\n\n`sqlfu` includes a SQL formatter. It started from a vendored copy of [`sql-formatter`](https://github.com/sql-formatter-org/sql-formatter), then diverged because upstream formatting is more newline-heavy than we want. The current sqlfu defaults are intentionally opinionated: SQLite-first, lowercase by default, and biased toward keeping simple clause bodies inline when they still read well.\n\nHow to use:\n\n- `npx sqlfu format 'queries/**/*.sql'`: rewrite files in place\n- `import {format} from 'sqlfu/api'`: programmatically format a sql string\n- `sqlfu/format-sql` eslint rule: have your editor/CI enforce formatting\n\n[Formatter docs](https://sqlfu.dev/docs/formatter).\n\n### Observability\n\nGenerated queries carry their identity to runtime as a `name` field on the emitted `SqlQuery` (the camelCase function name, matching the symbol you import, e.g. `insertMigration`). That name reaches OpenTelemetry spans, Sentry errors, PostHog events, and Datadog metrics through a single `instrument()` call:\n\n```ts\nimport {instrument} from 'sqlfu';\n\nconst client = instrument(baseClient,\n  instrument.otel({tracer}),\n  instrument.onError(({context, error}) => Sentry.captureException(error, {\n    tags: {'db.query.summary': context.query.name || 'sql'},\n  })),\n);\n```\n\nNo peer dependencies on OpenTelemetry or Sentry. `TracerLike` is structural; hook consumers bring their own SDK. Copy-pasteable recipes live in [Observability](https://sqlfu.dev/docs/observability).\n\n### Typed errors\n\nEvery adapter throws `SqlfuError` with a normalized `.kind` discriminator (`'unique_violation'`, `'missing_table'`, `'syntax'`, `'transient'`, and so on), so application code branches on the outcome instead of string-matching the driver's message.\n\n```ts\nimport {SqlfuError} from 'sqlfu';\n\ntry {\n  await client.run(createUser);\n} catch (error) {\n  if (error instanceof SqlfuError && error.kind === 'unique_violation') {\n    return response.status(409).json({error: 'email already taken'});\n  }\n  throw error;\n}\n```\n\nThe driver error is preserved byte-identical on `.cause`; `.query` and `.system` come along so error reporters can tag events without a parallel `QueryExecutionContext`. Kind names are SQLSTATE-aligned so SQLite and Postgres can share one vocabulary. Postgres errors are wrapped too, but always with `kind: 'unknown'` for now; read the SQLSTATE from `.cause.code`. Full kind list, handler recipes, Sentry-tagging example: [Errors](https://sqlfu.dev/docs/errors).\n\n### Outbox (experimental)\n\n> ⚠️ The shape of this module is still in flux. The basic principle of events + consumers will stay, but expect breaking changes between releases.\n\nA small transactional-outbox / job-queue sits at `sqlfu/outbox`. Emit events in the same transaction as your domain writes; register consumers with retry, delay, `when` filter, and visibility timeout; drive a worker loop by calling `tick()` on a timer. Fan-out, crash recovery, and causation chains all work the way you'd expect, built on the fact that SQLite serialises writers so the queue doesn't need row-locks. See [Outbox](https://sqlfu.dev/docs/outbox).\n\n### Admin UI\n\n`sqlfu` also has an Admin UI package for working with the project interactively. To use it with your DB, run: `npx sqlfu`. This will start a server on your machine, and print a link to the hosted UI at `sqlfu.dev/ui`. The hosted UI talks to the backend running on your dev machine.\n\nThe same UI can be embedded in a fetch server with `@sqlfu/ui` when you want your own auth, route prefix, or Worker/Durable Object database binding. See [Admin UI](https://sqlfu.dev/docs/ui).\n\n### Lint Plugin\n\n`sqlfu` ships a lint plugin as a sub-export (`sqlfu/lint-plugin`). It runs under ESLint (flat config) on both TS/JS source (inline SQL templates) and standalone `.sql` files (via an ESLint processor):\n\n- **`sqlfu/query-naming`** -- flags inline SQL that duplicates a checked-in `.sql` file. Your filename is your query's identity; an inline duplicate loses the name, generated types, and observability metadata.\n- **`sqlfu/format-sql`** -- flags SQL that does not match sqlfu's formatter output. `eslint --fix '**/*.sql'` reformats files in place.\n\nSee [Lint Plugin](https://sqlfu.dev/docs/lint-plugin) for setup and configuration.\n\n### Agent Skill\n\n`sqlfu` ships an agent skill at [`skills/using-sqlfu`](../../skills/using-sqlfu/SKILL.md). It gives an agent the few sqlfu-specific facts it needs before editing a project: find `sqlfu.config.ts`, treat SQL as the authored source, draft migrations instead of inventing them, and regenerate TypeScript outputs from query files.\n\nInstall it into a project:\n\n```sh\nnpx skills add mmkal/sqlfu/skills/using-sqlfu\n```\n\nThe skill is self-contained: it does not depend on the `sqlfu` package itself, and the `SKILL.md` format is agent-agnostic.\n\nIf your coding agent can fetch URLs, point it at the agent docs index before it starts:\n\n```text\nYou are a sqlfu assistant. Read https://sqlfu.dev/llms.txt to load the\nagent-oriented documentation index, then act as my pair on this project.\nKeep SQL as the authored source, inspect sqlfu.config.ts before changing\nbehavior, and regenerate TypeScript wrappers instead of hand-editing generated\nfiles.\n```\n\n## Quick Start\n\n```sh\npnpm add sqlfu\n```\n\nFor a full end-to-end walkthrough -- schema, migrations, query files, typed wrappers, and a working generated-function call -- see [Getting Started](https://sqlfu.dev/docs/getting-started).\n\n## Configuration\n\nCreate `sqlfu.config.ts` in your project root:\n\n```ts\nexport default {\n  migrations: './migrations',\n  definitions: './definitions.sql',\n  queries: './sql',\n};\n```\n\nRequired fields:\n\n- `definitions` -- schema source of truth (`definitions.sql`)\n- `queries` -- directory containing checked-in `.sql` queries\n\nOptional fields:\n\n- `db` -- the database sqlfu talks to for `migrate`, `check`, `sync`, `goto`, `baseline`, and the UI. Either a filesystem path (opens a local sqlite file) or a factory returning a `DisposableAsyncClient`. If omitted, commands that need a database use `.sqlfu/app.db`; this is useful for authoring migrations and generated types before wiring a runtime database. See [Pluggable `db`](#pluggable-db).\n- `migrations` -- directory containing migration files. Omit if you don't use migrations (library-author projects).\n- `dialect` -- which database the toolchain targets. Defaults to SQLite. Set `dialect: pgDialect({adminUrl})` from `@sqlfu/pg` for Postgres. See [Postgres](https://sqlfu.dev/docs/guides/postgres).\n- `generate.authority` -- where `sqlfu generate` reads the schema from. See [`generate.authority`](#generateauthority). Default `'desired_schema'`.\n- `generate.casing` -- generated SQL-derived property casing, either `'camel'` or `'preserve'`. Default `'camel'`.\n- `generate.experimentalJsonTypes` -- opt into experimental JSON logical-type handling. Today this covers SQLite columns declared exactly as `json`; the same flag is reserved for typed JSON metadata/schema support.\n\n`sqlfu` manages its own temporary files under `.sqlfu/`, including scratch databases used for schema diffing. These are generally safe to delete at any time. `sqlfu init` adds `.sqlfu/` to `.gitignore`.\n\nIf a repo has more than one sqlfu project, pass the config file explicitly:\n\n```sh\nsqlfu --config ./durable-objects/counter/sqlfu.config.ts generate\nsqlfu --config ./durable-objects/session/sqlfu.config.ts draft\n```\n\nRelative paths inside that config are resolved from the config file's directory, so each Durable Object can keep its own `definitions.sql`, `migrations/`, and `sql/` directories alongside the config.\n\n### Inline Durable Object configs\n\nFor a self-contained Durable Object, the config can live on a static class\nproperty in the Worker module instead of a separate `sqlfu.config.ts` project:\n\n```ts\nimport {DurableObject} from 'cloudflare:workers';\nimport {createDurableObjectClient, defineConfig, sql} from 'sqlfu';\n\nexport class CounterObject extends DurableObject {\n  static db = defineConfig({\n    definitions: sql`\n      create table counters (\n        name text primary key not null,\n        value integer not null default 0\n      );\n    `,\n    migrations: [],\n    queries: {\n      incrementCounter: sql.one<{ parameters: { name: string }; result: { name: string; value: number } }>`\n        insert into counters (name, value)\n        values (:name, 1)\n        on conflict (name) do update set value = value + 1\n        returning name, value\n      `,\n    },\n  });\n\n  db: typeof CounterObject.db.$type;\n\n  constructor(ctx: DurableObjectState, env: {}) {\n    super(ctx, env);\n    this.db = CounterObject.db(createDurableObjectClient(ctx.storage));\n    this.db.migrate();\n  }\n}\n```\n\nPoint `--config` at the module itself:\n\n```sh\nsqlfu --config src/durable-objects/counter.ts draft\nsqlfu --config src/durable-objects/counter.ts generate\nsqlfu --config src/durable-objects/counter.ts generate --watch\n```\n\n`draft` appends inline migration entries, and `generate` writes each query's\ninferred mode and type into compact tags such as `sql.one<{...}>`,\n`sql.many<{...}>`, or `sql.run<{...}>`. `generate --watch` watches that one\nWorker module and updates it as the inline SQL changes. See [Durable\nObjects](./docs/guides/durable-objects.md) for the full guide.\n\n### Pluggable `db`\n\nWhen your app talks to an adapter-mediated database (Cloudflare D1, Turso, libsql, a miniflare binding), point sqlfu at the same client your app uses by giving `db` a factory instead of a path. Every sqlfu command that touches the DB -- `migrate`, `check`, `sync`, `goto`, `baseline`, the UI, and `generate` when its authority needs a DB -- will then operate on the *real* database, not a scratch file.\n\nYou can also leave `db` out while you are still authoring SQL. sqlfu will use\n`.sqlfu/app.db` as a local dev database for commands that need one. Add a\nfactory when you want those commands to operate on the deployed or\nadapter-managed database instead.\n\n```ts\nimport {defineConfig, createD1Client} from 'sqlfu';\nimport {Miniflare} from 'miniflare';\n\nexport default defineConfig({\n  db: async () => {\n    const mf = new Miniflare({\n      script: '', modules: true,\n      d1Persist: true,\n      d1Databases: {DB: '<dev-db-id>'},\n    });\n    await mf.ready;\n    const d1 = await mf.getD1Database('DB');\n    return {\n      client: createD1Client(d1),\n      async [Symbol.asyncDispose]() { await mf.dispose(); },\n    };\n  },\n  migrations: './migrations',\n  definitions: './definitions.sql',\n  queries: './sql',\n});\n```\n\nThe factory is invoked on every `openDb` call; sqlfu calls `[Symbol.asyncDispose]` when the command scope exits. Memoize inside the factory if the setup is expensive (e.g. spinning up miniflare once per process).\n\nFor an Alchemy-managed local D1 database, sqlfu can talk directly to Alchemy's persisted Miniflare sqlite file:\n\n```ts\nimport {defineConfig} from 'sqlfu';\nimport {findMiniflareD1Path} from 'sqlfu/cloudflare';\n\nexport default defineConfig({\n  db: findMiniflareD1Path('my-dev-app-slug'),\n  migrations: {path: './src/server/db/migrations', preset: 'd1'},\n  definitions: './src/server/db/definitions.sql',\n  queries: './src/server/db/queries',\n});\n```\n\n`findMiniflareD1Path()` walks up from `process.cwd()` until it finds a supported Miniflare v3 persist root. Today that means Alchemy's `.alchemy/miniflare/v3` layout. It then derives the same D1 object sqlite filename Miniflare uses for the slug. Pass `{miniflareV3Root}` as the second argument if your config runs outside that project tree.\n\nFor deployed cloud D1, including [Alchemy v2](https://alchemy.run), which connects `alchemy dev` directly to real D1 instead of a local Miniflare sqlite, point sqlfu at the cloud database over HTTP using `sqlfu/cloudflare`:\n\n```ts\nimport {defineConfig} from 'sqlfu';\nimport {createAlchemyD1Client} from 'sqlfu/cloudflare';\n\nexport default defineConfig({\n  db: () => createAlchemyD1Client({stack: 'my-app', stage: 'dev', fqn: 'database'}),\n  migrations: {path: './migrations', preset: 'd1'},\n});\n```\n\n`createAlchemyD1Client` reads alchemy's local state to discover the deployed `databaseId` and `accountId`, falls back to `process.env.CLOUDFLARE_API_TOKEN` for auth, and produces a sqlfu client that talks to Cloudflare's HTTP D1 query API. Lower-level helpers (`createD1HttpClient`, `readAlchemyD1State`, `findCloudflareD1ByName`) are exported for composing your own factory. See [Cloudflare D1](./docs/cloudflare-d1.md) for the full guide.\n\n### `generate.authority`\n\n`sqlfu generate` needs to know your schema to produce typed query wrappers. The `generate.authority` option controls where it reads the schema from:\n\n- `'desired_schema'` (default) -- read `definitions.sql` directly. No DB required. Fastest, most deterministic. Drift between `definitions.sql` and migrations is surfaced by `sqlfu check`, not silently hidden here.\n- `'migrations'` -- replay `migrations/*.sql` into a scratch DB and extract the resulting schema. No DB required. Types follow what the migrator would actually produce.\n- `'migration_history'` -- read `sqlfu_migrations` from `config.db`, then replay the matching migration files. Requires `db`. Throws if a recorded migration is missing from `migrations/`. Use when types should match what's actually deployed.\n- `'live_schema'` -- extract schema directly from `config.db`. Requires `db` to be populated up-front. This was the default before the factory form of `db` landed; now opt-in.\n\n```ts\nexport default defineConfig({\n  // db optional for desired_schema / migrations authority\n  definitions: './definitions.sql',\n  queries: './sql',\n  migrations: './migrations',\n  generate: {authority: 'migrations'},\n});\n```\n\n## Command Reference\n\nStart the local backend used by the hosted Admin UI:\n\n```sh\nsqlfu\n```\n\nGenerate query wrappers:\n\n```sh\nsqlfu generate\n```\n\nBy default `generate` reads from `definitions.sql` (no DB needed). Switch `generate.authority` if you want types to reflect the live schema or the applied migration history -- see [`generate.authority`](#generateauthority).\n\nDraft a migration:\n\n```sh\nsqlfu draft\n```\n\nApply migrations:\n\n```sh\nsqlfu migrate\n```\n\nStop the local backend process on the default port:\n\n```sh\nsqlfu kill\n```\n\nMove the database and migration history to an exact target:\n\n```sh\nsqlfu goto <target>\n```\n\nRewrite migration history to an exact target without changing live schema:\n\n```sh\nsqlfu baseline <target>\n```\n\nUpdate live schema directly from `definitions.sql`:\n\n```sh\nsqlfu sync\n```\n\nCheck the important repo/database mismatches:\n\n```sh\nsqlfu check\n```\n\nFormat SQL files in place:\n\n```sh\nsqlfu format \"sql/**/*.sql\"\n```\n\n## Limitations and Non-Goals\n\n`sqlfu` deliberately leaves out a few common migration features:\n\n- no repeatable migrations\n- no down migrations\n- no JavaScript migrations\n\nThose are not accidents. The project is trying to keep schema history explicit, SQL-authored, and easy to inspect.\n\nCurrent limits also matter:\n\n- Postgres support is early: `draft`, `check` and `generate` don't yet handle `serial`/identity columns, enums, functions, triggers and more. See [Postgres known gaps](https://sqlfu.dev/docs/guides/postgres#known-gaps)\n- result-type inference is imperfect on some SQLite expressions and views; the sqlfu post-pass that fills gaps in the vendored TypeSQL output is still evolving\n- the formatter is opinionated and still evolving\n\n## Prior Art and Acknowledgements\n\n`sqlfu` is not built in a vacuum. Several existing projects directly shape what it looks like today, either as vendored code or as ideas we lean on.\n\n- [TypeSQL](https://github.com/wsporto/typesql) by Wanderson Camargo (MIT). TypeSQL is vendored under [`src/vendor/typesql`](./src/vendor/typesql) and powers SQL-to-TypeScript analysis for `sqlfu generate`. sqlfu adds a small post-pass for SQLite result typing but otherwise relies on TypeSQL's query analyzer, its ANTLR4-based parser ([`typesql-parser`](https://github.com/wsporto/typesql-parser), vendored under [`src/vendor/typesql-parser`](./src/vendor/typesql-parser)), and its code generator.\n- [sql-formatter](https://github.com/sql-formatter-org/sql-formatter) (MIT). The formatter is essentially vendored whole under [`src/vendor/sql-formatter`](./src/vendor/sql-formatter) and then wrapped by [`src/formatter.ts`](./src/formatter.ts) with sqlfu-specific defaults (SQLite-first, lowercase by default, biased toward keeping simple clause bodies inline).\n- [prettier-plugin-sql-cst](https://github.com/nene/prettier-plugin-sql-cst) by Rene Saarsoo (MIT). The target output shape for `formatSql()` draws on this project's style, and a large set of its upstream tests are imported into sqlfu's formatter fixtures under [`test/formatter/generated-prettier-plugin-sql-cst-*.fixture.sql`](./test/formatter/).\n- [antlr4](https://github.com/antlr/antlr4) JavaScript runtime (BSD-3-Clause). Vendored under [`src/vendor/antlr4`](./src/vendor/antlr4) so TypeSQL's parser can run without loading from `node_modules`.\n- [code-block-writer](https://github.com/dsherret/code-block-writer) by David Sherret (MIT). Vendored under [`src/vendor/code-block-writer`](./src/vendor/code-block-writer) and used by TypeSQL's code generator.\n- [Drizzle](https://orm.drizzle.team/). The [`local.drizzle.studio`](https://local.drizzle.studio/) product model -- hosted UI shell talking to a local backend via a permissioned localhost API -- is the direct inspiration for `sqlfu.dev/ui` and the shape of the sqlfu UI package.\n- [`@pgkit/schemainspect`](https://github.com/mmkal/pgkit/tree/main/packages/schemainspect) and [`@pgkit/migra`](https://github.com/mmkal/pgkit/tree/main/packages/migra). The sqlfu schemadiff engine under [`src/schemadiff`](./src/schemadiff) is structurally inspired by these libraries: materialize both schemas into scratch databases, inspect them into a typed model, diff the inspected models, and emit an ordered statement plan. The SQLite implementation does not copy their code, but the shape is taken from them. `@sqlfu/pg` vendors both directly for Postgres. See [`src/schemadiff/CLAUDE.md`](./src/schemadiff/CLAUDE.md) for more detail.\n- [`djrobstep/schemainspect`](https://github.com/djrobstep/schemainspect) and [`djrobstep/migra`](https://github.com/djrobstep/migra) by Robert Lechte. These are the Python originals that the `@pgkit/*` packages ported to TypeScript, and therefore the upstream lineage of the sqlfu diff engine.\n- [pgkit](https://github.com/mmkal/pgkit) (same author). pgkit is sqlfu's Postgres-focused prior art. A lot of the mental model for sqlfu -- \"SQL as the authored source, generated types next to queries, schema-diff-driven migrations, a web UI that sits on the real client\" -- comes from trying that approach in pgkit first. `@sqlfu/pg` brings that model back to Postgres using vendored pgkit code. See [Coming from pgkit](https://sqlfu.dev/docs/guides/pgkit).\n\nVendored directories each carry a short `CLAUDE.md` that pins the upstream commit or version and lists the local modifications, so future updates from upstream can be applied intelligently.\n","readmeFilename":"README.md"}