d1s 0.2.10 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/.next/BUILD_ID +1 -1
- package/dist/.next/.next/app-build-manifest.json +33 -33
- package/dist/.next/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/.next/build-manifest.json +3 -3
- package/dist/.next/.next/cache/.rscinfo +1 -1
- package/dist/.next/.next/cache/.tsbuildinfo +1 -1
- package/dist/.next/.next/cache/webpack/client-production/0.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/1.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/10.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/11.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/12.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/2.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/3.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/4.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/5.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/6.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/7.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/8.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/9.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/index.pack +0 -0
- package/dist/.next/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/dist/.next/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/dist/.next/.next/cache/webpack/server-production/0.pack +0 -0
- package/dist/.next/.next/cache/webpack/server-production/1.pack +0 -0
- package/dist/.next/.next/cache/webpack/server-production/index.pack +0 -0
- package/dist/.next/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/dist/.next/.next/next-minimal-server.js.nft.json +1 -1
- package/dist/.next/.next/next-server.js.nft.json +1 -1
- package/dist/.next/.next/prerender-manifest.json +1 -1
- package/dist/.next/.next/required-server-files.json +1 -1
- package/dist/.next/.next/server/app/_not-found/page.js +1 -1
- package/dist/.next/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/.next/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/_not-found.html +1 -1
- package/dist/.next/.next/server/app/_not-found.rsc +4 -4
- package/dist/.next/.next/server/app/api/cloudflare/route.js +1 -1
- package/dist/.next/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/databases/route.js +1 -1
- package/dist/.next/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/migrations/sync/route.js +5 -5
- package/dist/.next/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/migrations/sync-files/route.js +3 -3
- package/dist/.next/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/pull-data/confirm/route.js +1 -1
- package/dist/.next/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/pull-remote/confirm/route.js +2 -2
- package/dist/.next/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/pull-remote/preview/route.js +4 -4
- package/dist/.next/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/push-remote/confirm/route.js +5 -5
- package/dist/.next/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/push-remote/preview/route.js +4 -4
- package/dist/.next/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/query/route.js +3 -3
- package/dist/.next/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/tables/[name]/route.js +5 -5
- package/dist/.next/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/tables/route.js +2 -2
- package/dist/.next/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/api/update/route.js +1 -1
- package/dist/.next/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app/index.html +3 -3
- package/dist/.next/.next/server/app/index.rsc +5 -5
- package/dist/.next/.next/server/app/page.js +11 -13
- package/dist/.next/.next/server/app/page.js.nft.json +1 -1
- package/dist/.next/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/.next/.next/server/app-paths-manifest.json +3 -3
- package/dist/.next/.next/server/chunks/226.js +12 -12
- package/dist/.next/.next/server/chunks/391.js +5 -5
- package/dist/.next/.next/server/chunks/452.js +1 -1
- package/dist/.next/.next/server/chunks/572.js +1 -0
- package/dist/.next/.next/server/chunks/627.js +3 -3
- package/dist/.next/.next/server/chunks/638.js +3 -3
- package/dist/.next/.next/server/chunks/992.js +3 -3
- package/dist/.next/.next/server/middleware-build-manifest.js +1 -1
- package/dist/.next/.next/server/next-font-manifest.js +1 -1
- package/dist/.next/.next/server/next-font-manifest.json +1 -1
- package/dist/.next/.next/server/pages/404.html +1 -1
- package/dist/.next/.next/server/pages/500.html +1 -1
- package/dist/.next/.next/server/pages/_app.js +1 -1
- package/dist/.next/.next/server/pages/_document.js +1 -1
- package/dist/.next/.next/server/pages/_error.js +1 -1
- package/dist/.next/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/.next/static/chunks/576-18a2209e1ed26aad.js +1 -0
- package/dist/.next/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
- package/dist/.next/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
- package/dist/.next/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
- package/dist/.next/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
- package/dist/.next/.next/static/css/7c16f57d325d0d7d.css +3 -0
- package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_buildManifest.js +1 -0
- package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_ssgManifest.js +1 -0
- package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_buildManifest.js +1 -0
- package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_ssgManifest.js +1 -0
- package/dist/.next/.next/static/media/8d697b304b401681-s.woff2 +0 -0
- package/dist/.next/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
- package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_buildManifest.js +1 -0
- package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_ssgManifest.js +1 -0
- package/dist/.next/.next/trace +3 -3
- package/dist/.next/.next/types/app/api/cloudflare/route.ts +1 -1
- package/dist/.next/.next/types/app/api/databases/route.ts +1 -1
- package/dist/.next/.next/types/app/api/migrations/sync/route.ts +1 -1
- package/dist/.next/.next/types/app/api/migrations/sync-files/route.ts +1 -1
- package/dist/.next/.next/types/app/api/pull-data/confirm/route.ts +1 -1
- package/dist/.next/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
- package/dist/.next/.next/types/app/api/pull-remote/preview/route.ts +1 -1
- package/dist/.next/.next/types/app/api/push-remote/confirm/route.ts +1 -1
- package/dist/.next/.next/types/app/api/push-remote/preview/route.ts +1 -1
- package/dist/.next/.next/types/app/api/query/route.ts +1 -1
- package/dist/.next/.next/types/app/api/tables/[name]/route.ts +1 -1
- package/dist/.next/.next/types/app/api/tables/route.ts +1 -1
- package/dist/.next/.next/types/app/api/update/route.ts +1 -1
- package/dist/.next/.next/types/app/page.ts +1 -1
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +32 -32
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +3 -3
- package/dist/.next/cache/.rscinfo +1 -1
- package/dist/.next/cache/.tsbuildinfo +1 -1
- package/dist/.next/cache/webpack/client-production/0.pack +0 -0
- package/dist/.next/cache/webpack/client-production/1.pack +0 -0
- package/dist/.next/cache/webpack/client-production/2.pack +0 -0
- package/dist/.next/cache/webpack/client-production/index.pack +0 -0
- package/dist/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/dist/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/dist/.next/cache/webpack/server-production/0.pack +0 -0
- package/dist/.next/cache/webpack/server-production/index.pack +0 -0
- package/dist/.next/next-minimal-server.js.nft.json +1 -1
- package/dist/.next/next-server.js.nft.json +1 -1
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/required-server-files.json +1 -1
- package/dist/.next/server/app/_not-found/page.js +1 -1
- package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +4 -4
- package/dist/.next/server/app/api/cloudflare/route.js +1 -1
- package/dist/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/databases/route.js +1 -1
- package/dist/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/migrations/sync/route.js +5 -5
- package/dist/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/migrations/sync-files/route.js +3 -3
- package/dist/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/pull-data/confirm/route.js +1 -1
- package/dist/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/pull-remote/confirm/route.js +2 -2
- package/dist/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/pull-remote/preview/route.js +4 -4
- package/dist/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/push-remote/confirm/route.js +5 -5
- package/dist/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/push-remote/preview/route.js +4 -4
- package/dist/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/query/route.js +3 -3
- package/dist/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/tables/[name]/route.js +5 -5
- package/dist/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/tables/route.js +2 -2
- package/dist/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/update/route.js +1 -1
- package/dist/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/index.html +3 -3
- package/dist/.next/server/app/index.rsc +5 -5
- package/dist/.next/server/app/page.js +11 -13
- package/dist/.next/server/app/page.js.nft.json +1 -1
- package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app-paths-manifest.json +2 -2
- package/dist/.next/server/chunks/226.js +12 -12
- package/dist/.next/server/chunks/391.js +5 -5
- package/dist/.next/server/chunks/452.js +1 -1
- package/dist/.next/server/chunks/572.js +1 -0
- package/dist/.next/server/chunks/627.js +3 -3
- package/dist/.next/server/chunks/638.js +3 -3
- package/dist/.next/server/chunks/992.js +3 -3
- package/dist/.next/server/middleware-build-manifest.js +1 -1
- package/dist/.next/server/next-font-manifest.js +1 -1
- package/dist/.next/server/next-font-manifest.json +1 -1
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/pages/_app.js +1 -1
- package/dist/.next/server/pages/_document.js +1 -1
- package/dist/.next/server/pages/_error.js +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_buildManifest.js +1 -0
- package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_ssgManifest.js +1 -0
- package/dist/.next/static/chunks/576-18a2209e1ed26aad.js +1 -0
- package/dist/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
- package/dist/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
- package/dist/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
- package/dist/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
- package/dist/.next/static/css/7c16f57d325d0d7d.css +3 -0
- package/dist/.next/static/media/8d697b304b401681-s.woff2 +0 -0
- package/dist/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
- package/dist/.next/trace +3 -16
- package/dist/.next/types/app/api/cloudflare/route.ts +1 -1
- package/dist/.next/types/app/api/databases/route.ts +1 -1
- package/dist/.next/types/app/api/migrations/sync/route.ts +1 -1
- package/dist/.next/types/app/api/migrations/sync-files/route.ts +1 -1
- package/dist/.next/types/app/api/pull-data/confirm/route.ts +1 -1
- package/dist/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
- package/dist/.next/types/app/api/pull-remote/preview/route.ts +1 -1
- package/dist/.next/types/app/api/push-remote/confirm/route.ts +1 -1
- package/dist/.next/types/app/api/push-remote/preview/route.ts +1 -1
- package/dist/.next/types/app/api/query/route.ts +1 -1
- package/dist/.next/types/app/api/tables/[name]/route.ts +1 -1
- package/dist/.next/types/app/api/tables/route.ts +1 -1
- package/dist/.next/types/app/api/update/route.ts +1 -1
- package/dist/.next/types/app/page.ts +1 -1
- package/dist/app/api/tables/[name]/route.js +22 -10
- package/dist/app/globals.css +39 -0
- package/dist/app/page.jsx +13 -23
- package/dist/d1-studio.js +34 -4
- package/dist/lib/data-type-handlers.js +426 -0
- package/dist/lib/sql-operations.js +32 -8
- package/dist/lib/sql-sanitizer.js +233 -0
- package/package.json +3 -9
- package/dist/.next/.next/cache/webpack/server-production/2.pack +0 -0
- package/dist/.next/.next/server/chunks/90.js +0 -1
- package/dist/.next/.next/static/chunks/700-dc8f9f08b166c5e6.js +0 -1
- package/dist/.next/.next/static/chunks/app/page-16ec561fc8bebb5d.js +0 -1
- package/dist/.next/.next/static/css/0c512cea5f3d317a.css +0 -3
- package/dist/.next/server/chunks/90.js +0 -1
- package/dist/.next/static/chunks/700-dc8f9f08b166c5e6.js +0 -1
- package/dist/.next/static/chunks/app/page-16ec561fc8bebb5d.js +0 -1
- package/dist/.next/static/css/0c512cea5f3d317a.css +0 -3
- package/dist/app/app/api/cloudflare/route.js +0 -150
- package/dist/app/app/api/databases/route.js +0 -71
- package/dist/app/app/api/migrations/sync/route.js +0 -174
- package/dist/app/app/api/migrations/sync-files/route.js +0 -172
- package/dist/app/app/api/pull-data/confirm/route.js +0 -230
- package/dist/app/app/api/pull-remote/confirm/route.js +0 -278
- package/dist/app/app/api/pull-remote/preview/route.js +0 -144
- package/dist/app/app/api/push-remote/confirm/route.js +0 -196
- package/dist/app/app/api/push-remote/preview/route.js +0 -179
- package/dist/app/app/api/query/route.js +0 -168
- package/dist/app/app/api/tables/[name]/route.js +0 -174
- package/dist/app/app/api/tables/route.js +0 -178
- package/dist/app/app/api/update/route.js +0 -45
- package/dist/app/app/globals.css +0 -93
- package/dist/app/app/layout.jsx +0 -35
- package/dist/app/app/page.jsx +0 -44
- package/next.config.mjs +0 -18
- package/postcss.config.mjs +0 -8
- package/scripts/studio.js +0 -169
- package/scripts/test.js +0 -366
- package/src/app/api/cloudflare/route.js +0 -150
- package/src/app/api/databases/route.js +0 -71
- package/src/app/api/migrations/sync/route.js +0 -174
- package/src/app/api/migrations/sync-files/route.js +0 -172
- package/src/app/api/pull-data/confirm/route.js +0 -230
- package/src/app/api/pull-remote/confirm/route.js +0 -278
- package/src/app/api/pull-remote/preview/route.js +0 -144
- package/src/app/api/push-remote/confirm/route.js +0 -196
- package/src/app/api/push-remote/preview/route.js +0 -179
- package/src/app/api/query/route.js +0 -168
- package/src/app/api/tables/[name]/route.js +0 -174
- package/src/app/api/tables/route.js +0 -178
- package/src/app/api/update/route.js +0 -45
- package/src/app/globals.css +0 -93
- package/src/app/layout.jsx +0 -35
- package/src/app/page.jsx +0 -44
- package/src/components/cloudflare-credentials-modal.jsx +0 -94
- package/src/components/column-selector.jsx +0 -133
- package/src/components/column-sorting.jsx +0 -65
- package/src/components/delete-records-dialog.jsx +0 -64
- package/src/components/download-button.jsx +0 -205
- package/src/components/edit-error-alert.jsx +0 -30
- package/src/components/editable-cell.jsx +0 -163
- package/src/components/editable-row.jsx +0 -169
- package/src/components/environment-handler.jsx +0 -332
- package/src/components/environment-select.jsx +0 -62
- package/src/components/pull-preview-toast.jsx +0 -215
- package/src/components/push-error-alert.jsx +0 -72
- package/src/components/push-preview-toast.jsx +0 -183
- package/src/components/query-results.jsx +0 -112
- package/src/components/refresh-button.jsx +0 -61
- package/src/components/resize-columns.jsx +0 -101
- package/src/components/sidebar.jsx +0 -254
- package/src/components/sql-editor.jsx +0 -411
- package/src/components/sql-error-display.jsx +0 -167
- package/src/components/sync-migrations-button.jsx +0 -87
- package/src/components/table-error-dialog.jsx +0 -65
- package/src/components/table-toolbar.jsx +0 -285
- package/src/components/table-view.jsx +0 -843
- package/src/components/ui/alert.jsx +0 -47
- package/src/components/ui/button.jsx +0 -48
- package/src/components/ui/card.jsx +0 -50
- package/src/components/ui/checkbox.jsx +0 -24
- package/src/components/ui/collapsible.jsx +0 -11
- package/src/components/ui/dialog.jsx +0 -96
- package/src/components/ui/dropdown-menu.jsx +0 -158
- package/src/components/ui/input.jsx +0 -19
- package/src/components/ui/scroll-area.jsx +0 -40
- package/src/components/ui/select.jsx +0 -121
- package/src/components/ui/separator.jsx +0 -25
- package/src/components/ui/sheet.jsx +0 -109
- package/src/components/ui/sidebar.jsx +0 -620
- package/src/components/ui/skeleton.jsx +0 -14
- package/src/components/ui/table.jsx +0 -86
- package/src/components/ui/tabs.jsx +0 -43
- package/src/components/ui/toast.jsx +0 -86
- package/src/components/ui/toaster.jsx +0 -35
- package/src/components/ui/tooltip.jsx +0 -28
- package/src/components/update-banner.jsx +0 -93
- package/src/context/database-context.js +0 -510
- package/src/hooks/use-mobile.jsx +0 -19
- package/src/hooks/use-sql-error.ts +0 -23
- package/src/hooks/use-toast.js +0 -155
- package/src/lib/database-queue.js +0 -37
- package/src/lib/error.js +0 -20
- package/src/lib/find-wrangler-config.js +0 -74
- package/src/lib/license.js +0 -99
- package/src/lib/logger.js +0 -58
- package/src/lib/migrations.js +0 -415
- package/src/lib/parse-sql-error.js +0 -200
- package/src/lib/request-deduplication.js +0 -24
- package/src/lib/schema-operations.js +0 -106
- package/src/lib/sql-error-types.js +0 -14
- package/src/lib/sql-operations.js +0 -647
- package/src/lib/utils.js +0 -6
- package/src/lib/version-utils.js +0 -34
- /package/dist/.next/.next/static/{5dBGGUmK5q7of4h5Rahrg → Y9mYu4WBghepP5oT_3OdR}/_buildManifest.js +0 -0
- /package/dist/.next/.next/static/{5dBGGUmK5q7of4h5Rahrg → Y9mYu4WBghepP5oT_3OdR}/_ssgManifest.js +0 -0
- /package/dist/.next/.next/static/{PflNFnmFsNegSqhzjI6lA → ae3gNmoSGm-R5LJC4UagI}/_buildManifest.js +0 -0
- /package/dist/.next/.next/static/{PflNFnmFsNegSqhzjI6lA → ae3gNmoSGm-R5LJC4UagI}/_ssgManifest.js +0 -0
- /package/dist/.next/.next/static/{p8875OZM4iDNsPzmoyLe7 → bKfUJeuvAQlBmR3TjrfkH}/_buildManifest.js +0 -0
- /package/dist/.next/.next/static/{p8875OZM4iDNsPzmoyLe7 → bKfUJeuvAQlBmR3TjrfkH}/_ssgManifest.js +0 -0
- /package/dist/.next/{static 2/5dBGGUmK5q7of4h5Rahrg → .next/static/ejYPqJ2kVicVp5EFWOZIC}/_buildManifest.js +0 -0
- /package/dist/.next/{static 2/5dBGGUmK5q7of4h5Rahrg → .next/static/ejYPqJ2kVicVp5EFWOZIC}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/cloudflare/route.js
|
|
2
2
|
import * as entry from '../../../../../src/app/api/cloudflare/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/databases/route.js
|
|
2
2
|
import * as entry from '../../../../../src/app/api/databases/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/migrations/sync/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/migrations/sync/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/migrations/sync-files/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/migrations/sync-files/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/pull-data/confirm/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/pull-data/confirm/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/pull-remote/confirm/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/pull-remote/confirm/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/pull-remote/preview/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/pull-remote/preview/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/push-remote/confirm/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/push-remote/confirm/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/push-remote/preview/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/push-remote/preview/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/tables/[name]/route.js
|
|
2
2
|
import * as entry from '../../../../../../src/app/api/tables/[name]/route.js'
|
|
3
3
|
import type { NextRequest } from 'next/server.js'
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// File: /
|
|
1
|
+
// File: /Volumes/ProjectSpace/_wip/d1studio/src/app/page.jsx
|
|
2
2
|
import * as entry from '../../../src/app/page.js'
|
|
3
3
|
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
|
4
4
|
|
|
@@ -6,6 +6,7 @@ import { exec } from 'child_process';
|
|
|
6
6
|
import { findWranglerConfig } from '@/lib/find-wrangler-config.js';
|
|
7
7
|
import { dbQueue } from '@/lib/database-queue';
|
|
8
8
|
import logger from '@/lib/logger';
|
|
9
|
+
import { sanitizeTableName, sanitizeColumnName } from '@/lib/sql-sanitizer.js';
|
|
9
10
|
|
|
10
11
|
const execAsync = promisify(exec);
|
|
11
12
|
|
|
@@ -98,13 +99,18 @@ export async function GET(request, context) {
|
|
|
98
99
|
// Get the first D1 database name from the configuration
|
|
99
100
|
const databaseName = config.d1_databases[0].database_name;
|
|
100
101
|
|
|
101
|
-
//
|
|
102
|
-
const
|
|
102
|
+
// Validate and sanitize table name to prevent SQL injection
|
|
103
|
+
const sanitizedTableName = sanitizeTableName(name);
|
|
104
|
+
|
|
105
|
+
// Get table schema using PRAGMA query (PRAGMA is safe from injection when table name is sanitized)
|
|
106
|
+
const schemaQuery = `PRAGMA table_info(${sanitizedTableName});`;
|
|
103
107
|
const schema = await executeD1Query(schemaQuery, projectDir, databaseName);
|
|
104
108
|
|
|
105
|
-
// Get the CREATE TABLE statement from sqlite_master
|
|
106
|
-
const createTableQuery = `SELECT sql FROM sqlite_master WHERE type='table' AND name=
|
|
107
|
-
|
|
109
|
+
// Get the CREATE TABLE statement from sqlite_master using parameterized query approach
|
|
110
|
+
const createTableQuery = `SELECT sql FROM sqlite_master WHERE type='table' AND name = ?;`;
|
|
111
|
+
// Note: executeD1Query would need to support parameters, for now we sanitize the table name
|
|
112
|
+
const createTableQuerySafe = `SELECT sql FROM sqlite_master WHERE type='table' AND name='${name.replace(/'/g, "''")}';`;
|
|
113
|
+
const tableDefinition = await executeD1Query(createTableQuerySafe, projectDir, databaseName);
|
|
108
114
|
const createTableSQL = tableDefinition[0]?.sql || '';
|
|
109
115
|
|
|
110
116
|
// Extract CHECK constraints from the CREATE TABLE statement
|
|
@@ -116,17 +122,23 @@ export async function GET(request, context) {
|
|
|
116
122
|
check: checkConstraints[column.name] || null
|
|
117
123
|
}));
|
|
118
124
|
|
|
119
|
-
// Get total row count for the table
|
|
120
|
-
const countQuery = `SELECT COUNT(*) as total FROM ${
|
|
125
|
+
// Get total row count for the table (using sanitized table name)
|
|
126
|
+
const countQuery = `SELECT COUNT(*) as total FROM ${sanitizedTableName};`;
|
|
121
127
|
const countResult = await executeD1Query(countQuery, projectDir, databaseName);
|
|
122
128
|
const totalRows = countResult[0]?.total || 0;
|
|
123
129
|
|
|
124
130
|
// Fetch paginated data using the primary key column for ordering
|
|
125
131
|
const primaryKeyColumn = schema.find(col => col.pk === 1)?.name || schema[0]?.name;
|
|
132
|
+
const sanitizedPrimaryKey = primaryKeyColumn ? sanitizeColumnName(primaryKeyColumn) : '*';
|
|
133
|
+
|
|
134
|
+
// Validate limit and offset to prevent injection through URL params
|
|
135
|
+
const safeLimitNum = Math.max(1, Math.min(parseInt(limit) || 50, 1000)); // Cap at 1000 rows
|
|
136
|
+
const safeOffsetNum = Math.max(0, parseInt(offset) || 0);
|
|
137
|
+
|
|
126
138
|
const dataQuery = `
|
|
127
|
-
SELECT * FROM ${
|
|
128
|
-
ORDER BY ${
|
|
129
|
-
LIMIT ${
|
|
139
|
+
SELECT * FROM ${sanitizedTableName}
|
|
140
|
+
ORDER BY ${sanitizedPrimaryKey} DESC
|
|
141
|
+
LIMIT ${safeLimitNum} OFFSET ${safeOffsetNum};
|
|
130
142
|
`;
|
|
131
143
|
const data = await executeD1Query(dataQuery, projectDir, databaseName);
|
|
132
144
|
|
package/dist/app/globals.css
CHANGED
|
@@ -91,3 +91,42 @@ body {
|
|
|
91
91
|
table-layout: fixed;
|
|
92
92
|
width: 100%;
|
|
93
93
|
}
|
|
94
|
+
|
|
95
|
+
/* Custom gray utility classes */
|
|
96
|
+
@layer utilities {
|
|
97
|
+
.bg-gray-custom-50 { background-color: var(--gray-50); }
|
|
98
|
+
.bg-gray-custom-100 { background-color: var(--gray-100); }
|
|
99
|
+
.bg-gray-custom-200 { background-color: var(--gray-200); }
|
|
100
|
+
.bg-gray-custom-300 { background-color: var(--gray-300); }
|
|
101
|
+
.bg-gray-custom-400 { background-color: var(--gray-400); }
|
|
102
|
+
.bg-gray-custom-500 { background-color: var(--gray-500); }
|
|
103
|
+
.bg-gray-custom-600 { background-color: var(--gray-600); }
|
|
104
|
+
.bg-gray-custom-700 { background-color: var(--gray-700); }
|
|
105
|
+
.bg-gray-custom-800 { background-color: var(--gray-800); }
|
|
106
|
+
.bg-gray-custom-900 { background-color: var(--gray-900); }
|
|
107
|
+
.bg-gray-custom-950 { background-color: var(--gray-950); }
|
|
108
|
+
|
|
109
|
+
.text-gray-custom-50 { color: var(--gray-50); }
|
|
110
|
+
.text-gray-custom-100 { color: var(--gray-100); }
|
|
111
|
+
.text-gray-custom-200 { color: var(--gray-200); }
|
|
112
|
+
.text-gray-custom-300 { color: var(--gray-300); }
|
|
113
|
+
.text-gray-custom-400 { color: var(--gray-400); }
|
|
114
|
+
.text-gray-custom-500 { color: var(--gray-500); }
|
|
115
|
+
.text-gray-custom-600 { color: var(--gray-600); }
|
|
116
|
+
.text-gray-custom-700 { color: var(--gray-700); }
|
|
117
|
+
.text-gray-custom-800 { color: var(--gray-800); }
|
|
118
|
+
.text-gray-custom-900 { color: var(--gray-900); }
|
|
119
|
+
.text-gray-custom-950 { color: var(--gray-950); }
|
|
120
|
+
|
|
121
|
+
.border-gray-custom-50 { border-color: var(--gray-50); }
|
|
122
|
+
.border-gray-custom-100 { border-color: var(--gray-100); }
|
|
123
|
+
.border-gray-custom-200 { border-color: var(--gray-200); }
|
|
124
|
+
.border-gray-custom-300 { border-color: var(--gray-300); }
|
|
125
|
+
.border-gray-custom-400 { border-color: var(--gray-400); }
|
|
126
|
+
.border-gray-custom-500 { border-color: var(--gray-500); }
|
|
127
|
+
.border-gray-custom-600 { border-color: var(--gray-600); }
|
|
128
|
+
.border-gray-custom-700 { border-color: var(--gray-700); }
|
|
129
|
+
.border-gray-custom-800 { border-color: var(--gray-800); }
|
|
130
|
+
.border-gray-custom-900 { border-color: var(--gray-900); }
|
|
131
|
+
.border-gray-custom-950 { border-color: var(--gray-950); }
|
|
132
|
+
}
|
package/dist/app/page.jsx
CHANGED
|
@@ -5,7 +5,6 @@ import { useState } from 'react';
|
|
|
5
5
|
import { AppSidebar } from '../components/sidebar';
|
|
6
6
|
import { SQLEditor } from '../components/sql-editor';
|
|
7
7
|
import { TableView } from '../components/table-view';
|
|
8
|
-
import UpdateBanner from '@/components/update-banner';
|
|
9
8
|
|
|
10
9
|
export default function StudioPage() {
|
|
11
10
|
const [currentView, setCurrentView] = useState('sql-editor');
|
|
@@ -17,28 +16,19 @@ export default function StudioPage() {
|
|
|
17
16
|
};
|
|
18
17
|
|
|
19
18
|
return (
|
|
20
|
-
<div className="flex
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{/* Main content with adjusted margin-top and height */}
|
|
35
|
-
<main className="ml-64 flex-1 h-[calc(100vh-var(--banner-height,0px))]">
|
|
36
|
-
{currentView === 'sql-editor' && <SQLEditor />}
|
|
37
|
-
{currentView === 'table-view' && selectedTable && (
|
|
38
|
-
<TableView tableName={selectedTable} />
|
|
39
|
-
)}
|
|
40
|
-
</main>
|
|
41
|
-
</div>
|
|
19
|
+
<div className="flex h-screen bg-background">
|
|
20
|
+
<AppSidebar
|
|
21
|
+
className="w-64 border-r flex-shrink-0"
|
|
22
|
+
currentView={currentView}
|
|
23
|
+
onNavigate={setCurrentView}
|
|
24
|
+
onTableSelect={handleTableSelect}
|
|
25
|
+
/>
|
|
26
|
+
<main className="flex-1 overflow-hidden">
|
|
27
|
+
{currentView === 'sql-editor' && <SQLEditor />}
|
|
28
|
+
{currentView === 'table-view' && selectedTable && (
|
|
29
|
+
<TableView tableName={selectedTable} />
|
|
30
|
+
)}
|
|
31
|
+
</main>
|
|
42
32
|
</div>
|
|
43
33
|
);
|
|
44
34
|
}
|
package/dist/d1-studio.js
CHANGED
|
@@ -6,8 +6,8 @@ import { dirname, join } from 'path';
|
|
|
6
6
|
import express from 'express';
|
|
7
7
|
import { createServer } from 'http';
|
|
8
8
|
import next from 'next';
|
|
9
|
-
import { findWranglerConfig } from '
|
|
10
|
-
import logger from '
|
|
9
|
+
import { findWranglerConfig } from './lib/find-wrangler-config.js';
|
|
10
|
+
import logger from './lib/logger.js';
|
|
11
11
|
import updateNotifier from 'update-notifier';
|
|
12
12
|
import pkg from '../package.json' with { type: 'json' };
|
|
13
13
|
|
|
@@ -18,8 +18,38 @@ if (hasDebugFlag) {
|
|
|
18
18
|
logger.debug('Debug mode enabled');
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const notifier = updateNotifier({
|
|
22
|
-
|
|
21
|
+
const notifier = updateNotifier({
|
|
22
|
+
pkg,
|
|
23
|
+
updateCheckInterval: 1000 * 60 * 60 * 24,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// Check if update is available
|
|
27
|
+
if (notifier.update) {
|
|
28
|
+
// Get current version and latest version
|
|
29
|
+
const currentVersion = pkg.version;
|
|
30
|
+
const latestVersion = notifier.update.latest;
|
|
31
|
+
|
|
32
|
+
// Version-specific messages
|
|
33
|
+
const versionMessages = {
|
|
34
|
+
// Add specific version messages here
|
|
35
|
+
'0.2.11': 'Fixed table toolbar and table view horizontal/vertical scroll issues'
|
|
36
|
+
// Add more version messages as needed
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Create custom message
|
|
40
|
+
let message = `Update available ${chalk.dim(currentVersion)} → ${chalk.green(latestVersion)}`;
|
|
41
|
+
|
|
42
|
+
// Add version-specific message if available
|
|
43
|
+
if (versionMessages[latestVersion]) {
|
|
44
|
+
message += `\n${chalk.cyan('What\'s new:')} ${versionMessages[latestVersion]}`;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Add installation instructions
|
|
48
|
+
message += `\nRun ${chalk.cyan('npm i -g d1s@latest')} to update`;
|
|
49
|
+
|
|
50
|
+
// Display custom notification
|
|
51
|
+
notifier.notify({ message });
|
|
52
|
+
}
|
|
23
53
|
|
|
24
54
|
// Compute the absolute path of this file and its directory
|
|
25
55
|
const __filename = fileURLToPath(import.meta.url);
|