d1s 0.2.11 → 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.
Files changed (312) hide show
  1. package/dist/.next/.next/BUILD_ID +1 -1
  2. package/dist/.next/.next/app-build-manifest.json +28 -28
  3. package/dist/.next/.next/app-path-routes-manifest.json +1 -1
  4. package/dist/.next/.next/build-manifest.json +3 -3
  5. package/dist/.next/.next/cache/.rscinfo +1 -1
  6. package/dist/.next/.next/cache/.tsbuildinfo +1 -1
  7. package/dist/.next/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/dist/.next/.next/cache/webpack/client-production/1.pack +0 -0
  9. package/dist/.next/.next/cache/webpack/client-production/10.pack +0 -0
  10. package/dist/.next/.next/cache/webpack/client-production/11.pack +0 -0
  11. package/dist/.next/.next/cache/webpack/client-production/12.pack +0 -0
  12. package/dist/.next/.next/cache/webpack/client-production/2.pack +0 -0
  13. package/dist/.next/.next/cache/webpack/client-production/3.pack +0 -0
  14. package/dist/.next/.next/cache/webpack/client-production/4.pack +0 -0
  15. package/dist/.next/.next/cache/webpack/client-production/5.pack +0 -0
  16. package/dist/.next/.next/cache/webpack/client-production/6.pack +0 -0
  17. package/dist/.next/.next/cache/webpack/client-production/7.pack +0 -0
  18. package/dist/.next/.next/cache/webpack/client-production/8.pack +0 -0
  19. package/dist/.next/.next/cache/webpack/client-production/9.pack +0 -0
  20. package/dist/.next/.next/cache/webpack/client-production/index.pack +0 -0
  21. package/dist/.next/.next/cache/webpack/client-production/index.pack.old +0 -0
  22. package/dist/.next/.next/cache/webpack/edge-server-production/index.pack +0 -0
  23. package/dist/.next/.next/cache/webpack/server-production/0.pack +0 -0
  24. package/dist/.next/.next/cache/webpack/server-production/1.pack +0 -0
  25. package/dist/.next/.next/cache/webpack/server-production/index.pack +0 -0
  26. package/dist/.next/.next/cache/webpack/server-production/index.pack.old +0 -0
  27. package/dist/.next/.next/next-minimal-server.js.nft.json +1 -1
  28. package/dist/.next/.next/next-server.js.nft.json +1 -1
  29. package/dist/.next/.next/prerender-manifest.json +1 -1
  30. package/dist/.next/.next/required-server-files.json +1 -1
  31. package/dist/.next/.next/server/app/_not-found/page.js +1 -1
  32. package/dist/.next/.next/server/app/_not-found/page.js.nft.json +1 -1
  33. package/dist/.next/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  34. package/dist/.next/.next/server/app/_not-found.html +1 -1
  35. package/dist/.next/.next/server/app/_not-found.rsc +4 -4
  36. package/dist/.next/.next/server/app/api/cloudflare/route.js +1 -1
  37. package/dist/.next/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
  38. package/dist/.next/.next/server/app/api/databases/route.js +1 -1
  39. package/dist/.next/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
  40. package/dist/.next/.next/server/app/api/migrations/sync/route.js +5 -5
  41. package/dist/.next/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/.next/server/app/api/migrations/sync-files/route.js +3 -3
  43. package/dist/.next/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
  44. package/dist/.next/.next/server/app/api/pull-data/confirm/route.js +1 -1
  45. package/dist/.next/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
  46. package/dist/.next/.next/server/app/api/pull-remote/confirm/route.js +2 -2
  47. package/dist/.next/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
  48. package/dist/.next/.next/server/app/api/pull-remote/preview/route.js +4 -4
  49. package/dist/.next/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
  50. package/dist/.next/.next/server/app/api/push-remote/confirm/route.js +5 -5
  51. package/dist/.next/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
  52. package/dist/.next/.next/server/app/api/push-remote/preview/route.js +4 -4
  53. package/dist/.next/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/.next/server/app/api/query/route.js +3 -3
  55. package/dist/.next/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
  56. package/dist/.next/.next/server/app/api/tables/[name]/route.js +5 -5
  57. package/dist/.next/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
  58. package/dist/.next/.next/server/app/api/tables/route.js +2 -2
  59. package/dist/.next/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
  60. package/dist/.next/.next/server/app/api/update/route.js +1 -1
  61. package/dist/.next/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  62. package/dist/.next/.next/server/app/index.html +2 -2
  63. package/dist/.next/.next/server/app/index.rsc +5 -5
  64. package/dist/.next/.next/server/app/page.js +7 -7
  65. package/dist/.next/.next/server/app/page.js.nft.json +1 -1
  66. package/dist/.next/.next/server/app/page_client-reference-manifest.js +1 -1
  67. package/dist/.next/.next/server/app-paths-manifest.json +1 -1
  68. package/dist/.next/.next/server/chunks/226.js +12 -12
  69. package/dist/.next/.next/server/chunks/391.js +1 -1
  70. package/dist/.next/.next/server/chunks/572.js +1 -0
  71. package/dist/.next/.next/server/chunks/992.js +3 -3
  72. package/dist/.next/.next/server/middleware-build-manifest.js +1 -1
  73. package/dist/.next/.next/server/next-font-manifest.js +1 -1
  74. package/dist/.next/.next/server/next-font-manifest.json +1 -1
  75. package/dist/.next/.next/server/pages/404.html +1 -1
  76. package/dist/.next/.next/server/pages/500.html +1 -1
  77. package/dist/.next/.next/server/server-reference-manifest.json +1 -1
  78. package/dist/.next/.next/static/chunks/{576-c4daf274bb6469a1.js → 576-18a2209e1ed26aad.js} +1 -1
  79. package/dist/.next/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
  80. package/dist/.next/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
  81. package/dist/.next/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
  82. package/dist/.next/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
  83. package/dist/.next/.next/static/css/{9f6c25c5400f83d3.css → 7c16f57d325d0d7d.css} +1 -1
  84. package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_buildManifest.js +1 -0
  85. package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_ssgManifest.js +1 -0
  86. package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_buildManifest.js +1 -0
  87. package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_ssgManifest.js +1 -0
  88. package/dist/.next/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  89. package/dist/.next/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  90. package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_buildManifest.js +1 -0
  91. package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_ssgManifest.js +1 -0
  92. package/dist/.next/.next/trace +3 -3
  93. package/dist/.next/.next/types/app/api/cloudflare/route.ts +1 -1
  94. package/dist/.next/.next/types/app/api/databases/route.ts +1 -1
  95. package/dist/.next/.next/types/app/api/migrations/sync/route.ts +1 -1
  96. package/dist/.next/.next/types/app/api/migrations/sync-files/route.ts +1 -1
  97. package/dist/.next/.next/types/app/api/pull-data/confirm/route.ts +1 -1
  98. package/dist/.next/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
  99. package/dist/.next/.next/types/app/api/pull-remote/preview/route.ts +1 -1
  100. package/dist/.next/.next/types/app/api/push-remote/confirm/route.ts +1 -1
  101. package/dist/.next/.next/types/app/api/push-remote/preview/route.ts +1 -1
  102. package/dist/.next/.next/types/app/api/query/route.ts +1 -1
  103. package/dist/.next/.next/types/app/api/tables/[name]/route.ts +1 -1
  104. package/dist/.next/.next/types/app/api/tables/route.ts +1 -1
  105. package/dist/.next/.next/types/app/api/update/route.ts +1 -1
  106. package/dist/.next/.next/types/app/page.ts +1 -1
  107. package/dist/.next/BUILD_ID +1 -1
  108. package/dist/.next/app-build-manifest.json +28 -28
  109. package/dist/.next/app-path-routes-manifest.json +1 -1
  110. package/dist/.next/build-manifest.json +3 -3
  111. package/dist/.next/cache/.rscinfo +1 -1
  112. package/dist/.next/cache/.tsbuildinfo +1 -1
  113. package/dist/.next/cache/webpack/client-production/0.pack +0 -0
  114. package/dist/.next/cache/webpack/client-production/1.pack +0 -0
  115. package/dist/.next/cache/webpack/client-production/2.pack +0 -0
  116. package/dist/.next/cache/webpack/client-production/index.pack +0 -0
  117. package/dist/.next/cache/webpack/client-production/index.pack.old +0 -0
  118. package/dist/.next/cache/webpack/edge-server-production/index.pack +0 -0
  119. package/dist/.next/cache/webpack/server-production/0.pack +0 -0
  120. package/dist/.next/cache/webpack/server-production/index.pack +0 -0
  121. package/dist/.next/next-minimal-server.js.nft.json +1 -1
  122. package/dist/.next/next-server.js.nft.json +1 -1
  123. package/dist/.next/prerender-manifest.json +1 -1
  124. package/dist/.next/required-server-files.json +1 -1
  125. package/dist/.next/server/app/_not-found/page.js +1 -1
  126. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  127. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  128. package/dist/.next/server/app/_not-found.html +1 -1
  129. package/dist/.next/server/app/_not-found.rsc +4 -4
  130. package/dist/.next/server/app/api/cloudflare/route.js +1 -1
  131. package/dist/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
  132. package/dist/.next/server/app/api/databases/route.js +1 -1
  133. package/dist/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
  134. package/dist/.next/server/app/api/migrations/sync/route.js +5 -5
  135. package/dist/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
  136. package/dist/.next/server/app/api/migrations/sync-files/route.js +3 -3
  137. package/dist/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
  138. package/dist/.next/server/app/api/pull-data/confirm/route.js +1 -1
  139. package/dist/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
  140. package/dist/.next/server/app/api/pull-remote/confirm/route.js +2 -2
  141. package/dist/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
  142. package/dist/.next/server/app/api/pull-remote/preview/route.js +4 -4
  143. package/dist/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
  144. package/dist/.next/server/app/api/push-remote/confirm/route.js +5 -5
  145. package/dist/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
  146. package/dist/.next/server/app/api/push-remote/preview/route.js +4 -4
  147. package/dist/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
  148. package/dist/.next/server/app/api/query/route.js +3 -3
  149. package/dist/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
  150. package/dist/.next/server/app/api/tables/[name]/route.js +5 -5
  151. package/dist/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
  152. package/dist/.next/server/app/api/tables/route.js +2 -2
  153. package/dist/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
  154. package/dist/.next/server/app/api/update/route.js +1 -1
  155. package/dist/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  156. package/dist/.next/server/app/index.html +2 -2
  157. package/dist/.next/server/app/index.rsc +5 -5
  158. package/dist/.next/server/app/page.js +7 -7
  159. package/dist/.next/server/app/page.js.nft.json +1 -1
  160. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  161. package/dist/.next/server/app-paths-manifest.json +1 -1
  162. package/dist/.next/server/chunks/226.js +12 -12
  163. package/dist/.next/server/chunks/391.js +1 -1
  164. package/dist/.next/server/chunks/572.js +1 -0
  165. package/dist/.next/server/chunks/992.js +3 -3
  166. package/dist/.next/server/middleware-build-manifest.js +1 -1
  167. package/dist/.next/server/next-font-manifest.js +1 -1
  168. package/dist/.next/server/next-font-manifest.json +1 -1
  169. package/dist/.next/server/pages/404.html +1 -1
  170. package/dist/.next/server/pages/500.html +1 -1
  171. package/dist/.next/server/server-reference-manifest.json +1 -1
  172. package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_buildManifest.js +1 -0
  173. package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_ssgManifest.js +1 -0
  174. package/dist/.next/static/chunks/{576-c4daf274bb6469a1.js → 576-18a2209e1ed26aad.js} +1 -1
  175. package/dist/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
  176. package/dist/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
  177. package/dist/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
  178. package/dist/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
  179. package/dist/.next/static/css/{9f6c25c5400f83d3.css → 7c16f57d325d0d7d.css} +1 -1
  180. package/dist/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  181. package/dist/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  182. package/dist/.next/trace +3 -14
  183. package/dist/.next/types/app/api/cloudflare/route.ts +1 -1
  184. package/dist/.next/types/app/api/databases/route.ts +1 -1
  185. package/dist/.next/types/app/api/migrations/sync/route.ts +1 -1
  186. package/dist/.next/types/app/api/migrations/sync-files/route.ts +1 -1
  187. package/dist/.next/types/app/api/pull-data/confirm/route.ts +1 -1
  188. package/dist/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
  189. package/dist/.next/types/app/api/pull-remote/preview/route.ts +1 -1
  190. package/dist/.next/types/app/api/push-remote/confirm/route.ts +1 -1
  191. package/dist/.next/types/app/api/push-remote/preview/route.ts +1 -1
  192. package/dist/.next/types/app/api/query/route.ts +1 -1
  193. package/dist/.next/types/app/api/tables/[name]/route.ts +1 -1
  194. package/dist/.next/types/app/api/tables/route.ts +1 -1
  195. package/dist/.next/types/app/api/update/route.ts +1 -1
  196. package/dist/.next/types/app/page.ts +1 -1
  197. package/dist/app/api/tables/[name]/route.js +22 -10
  198. package/dist/app/globals.css +39 -0
  199. package/dist/d1-studio.js +2 -2
  200. package/dist/lib/data-type-handlers.js +426 -0
  201. package/dist/lib/sql-operations.js +32 -8
  202. package/dist/lib/sql-sanitizer.js +233 -0
  203. package/package.json +3 -9
  204. package/dist/.next/.next/cache/webpack/server-production/2.pack +0 -0
  205. package/dist/.next/.next/server/chunks/90.js +0 -1
  206. package/dist/.next/.next/static/chunks/app/page-36ed30b2266617f3.js +0 -1
  207. package/dist/.next/server/chunks/90.js +0 -1
  208. package/dist/.next/static/chunks/app/page-36ed30b2266617f3.js +0 -1
  209. package/dist/app/app/api/cloudflare/route.js +0 -150
  210. package/dist/app/app/api/databases/route.js +0 -71
  211. package/dist/app/app/api/migrations/sync/route.js +0 -174
  212. package/dist/app/app/api/migrations/sync-files/route.js +0 -172
  213. package/dist/app/app/api/pull-data/confirm/route.js +0 -230
  214. package/dist/app/app/api/pull-remote/confirm/route.js +0 -278
  215. package/dist/app/app/api/pull-remote/preview/route.js +0 -144
  216. package/dist/app/app/api/push-remote/confirm/route.js +0 -196
  217. package/dist/app/app/api/push-remote/preview/route.js +0 -179
  218. package/dist/app/app/api/query/route.js +0 -168
  219. package/dist/app/app/api/tables/[name]/route.js +0 -174
  220. package/dist/app/app/api/tables/route.js +0 -178
  221. package/dist/app/app/api/update/route.js +0 -45
  222. package/dist/app/app/globals.css +0 -93
  223. package/dist/app/app/layout.jsx +0 -35
  224. package/dist/app/app/page.jsx +0 -34
  225. package/next.config.mjs +0 -18
  226. package/postcss.config.mjs +0 -8
  227. package/scripts/studio.js +0 -199
  228. package/scripts/test.js +0 -366
  229. package/src/app/api/cloudflare/route.js +0 -150
  230. package/src/app/api/databases/route.js +0 -71
  231. package/src/app/api/migrations/sync/route.js +0 -174
  232. package/src/app/api/migrations/sync-files/route.js +0 -172
  233. package/src/app/api/pull-data/confirm/route.js +0 -230
  234. package/src/app/api/pull-remote/confirm/route.js +0 -278
  235. package/src/app/api/pull-remote/preview/route.js +0 -144
  236. package/src/app/api/push-remote/confirm/route.js +0 -196
  237. package/src/app/api/push-remote/preview/route.js +0 -179
  238. package/src/app/api/query/route.js +0 -168
  239. package/src/app/api/tables/[name]/route.js +0 -174
  240. package/src/app/api/tables/route.js +0 -178
  241. package/src/app/api/update/route.js +0 -45
  242. package/src/app/globals.css +0 -93
  243. package/src/app/layout.jsx +0 -35
  244. package/src/app/page.jsx +0 -34
  245. package/src/components/cloudflare-credentials-modal.jsx +0 -94
  246. package/src/components/column-selector.jsx +0 -133
  247. package/src/components/column-sorting.jsx +0 -65
  248. package/src/components/delete-records-dialog.jsx +0 -64
  249. package/src/components/download-button.jsx +0 -205
  250. package/src/components/edit-error-alert.jsx +0 -30
  251. package/src/components/editable-cell.jsx +0 -163
  252. package/src/components/editable-row.jsx +0 -169
  253. package/src/components/environment-handler.jsx +0 -332
  254. package/src/components/environment-select.jsx +0 -62
  255. package/src/components/pull-preview-toast.jsx +0 -215
  256. package/src/components/push-error-alert.jsx +0 -72
  257. package/src/components/push-preview-toast.jsx +0 -183
  258. package/src/components/query-results.jsx +0 -112
  259. package/src/components/refresh-button.jsx +0 -61
  260. package/src/components/resize-columns.jsx +0 -101
  261. package/src/components/sidebar.jsx +0 -254
  262. package/src/components/sql-editor.jsx +0 -411
  263. package/src/components/sql-error-display.jsx +0 -167
  264. package/src/components/sync-migrations-button.jsx +0 -87
  265. package/src/components/table-error-dialog.jsx +0 -65
  266. package/src/components/table-toolbar.jsx +0 -285
  267. package/src/components/table-view.jsx +0 -843
  268. package/src/components/ui/alert.jsx +0 -47
  269. package/src/components/ui/button.jsx +0 -48
  270. package/src/components/ui/card.jsx +0 -50
  271. package/src/components/ui/checkbox.jsx +0 -24
  272. package/src/components/ui/collapsible.jsx +0 -11
  273. package/src/components/ui/dialog.jsx +0 -96
  274. package/src/components/ui/dropdown-menu.jsx +0 -158
  275. package/src/components/ui/input.jsx +0 -19
  276. package/src/components/ui/scroll-area.jsx +0 -40
  277. package/src/components/ui/select.jsx +0 -121
  278. package/src/components/ui/separator.jsx +0 -25
  279. package/src/components/ui/sheet.jsx +0 -109
  280. package/src/components/ui/sidebar.jsx +0 -620
  281. package/src/components/ui/skeleton.jsx +0 -14
  282. package/src/components/ui/table.jsx +0 -86
  283. package/src/components/ui/tabs.jsx +0 -43
  284. package/src/components/ui/toast.jsx +0 -86
  285. package/src/components/ui/toaster.jsx +0 -35
  286. package/src/components/ui/tooltip.jsx +0 -28
  287. package/src/components/update-banner.jsx +0 -93
  288. package/src/context/database-context.js +0 -510
  289. package/src/hooks/use-mobile.jsx +0 -19
  290. package/src/hooks/use-sql-error.ts +0 -23
  291. package/src/hooks/use-toast.js +0 -155
  292. package/src/lib/database-queue.js +0 -37
  293. package/src/lib/error.js +0 -20
  294. package/src/lib/find-wrangler-config.js +0 -74
  295. package/src/lib/license.js +0 -99
  296. package/src/lib/logger.js +0 -58
  297. package/src/lib/migrations.js +0 -415
  298. package/src/lib/parse-sql-error.js +0 -200
  299. package/src/lib/request-deduplication.js +0 -24
  300. package/src/lib/schema-operations.js +0 -106
  301. package/src/lib/sql-error-types.js +0 -14
  302. package/src/lib/sql-operations.js +0 -647
  303. package/src/lib/utils.js +0 -6
  304. package/src/lib/version-utils.js +0 -34
  305. /package/dist/.next/.next/static/{OUHnbB-64afrrZQL0Srn5 → Y9mYu4WBghepP5oT_3OdR}/_buildManifest.js +0 -0
  306. /package/dist/.next/.next/static/{OUHnbB-64afrrZQL0Srn5 → Y9mYu4WBghepP5oT_3OdR}/_ssgManifest.js +0 -0
  307. /package/dist/.next/.next/static/{ZBTCAyp1kO5FdEHMU-Dw2 → ae3gNmoSGm-R5LJC4UagI}/_buildManifest.js +0 -0
  308. /package/dist/.next/.next/static/{ZBTCAyp1kO5FdEHMU-Dw2 → ae3gNmoSGm-R5LJC4UagI}/_ssgManifest.js +0 -0
  309. /package/dist/.next/.next/static/{bHYW7fgIBDF8-Q33_WPoE → bKfUJeuvAQlBmR3TjrfkH}/_buildManifest.js +0 -0
  310. /package/dist/.next/.next/static/{bHYW7fgIBDF8-Q33_WPoE → bKfUJeuvAQlBmR3TjrfkH}/_ssgManifest.js +0 -0
  311. /package/dist/.next/{static/ZBTCAyp1kO5FdEHMU-Dw2 → .next/static/ejYPqJ2kVicVp5EFWOZIC}/_buildManifest.js +0 -0
  312. /package/dist/.next/{static/ZBTCAyp1kO5FdEHMU-Dw2 → .next/static/ejYPqJ2kVicVp5EFWOZIC}/_ssgManifest.js +0 -0
@@ -1,101 +0,0 @@
1
- // components/resize-columns.jsx
2
- 'use client';
3
-
4
- import React, { useState, useCallback, useRef } from 'react';
5
-
6
- const MIN_COLUMN_WIDTH = 100;
7
-
8
- /**
9
- * A resizable table header component.
10
- */
11
- export const ResizableHeader = ({
12
- children,
13
- width,
14
- onResize,
15
- className = ""
16
- }) => {
17
- const [isResizing, setIsResizing] = useState(false);
18
- const headerRef = useRef(null);
19
-
20
- const startResizing = useCallback((e) => {
21
- e.preventDefault();
22
- setIsResizing(true);
23
-
24
- const startX = e.clientX;
25
- const startWidth = headerRef.current?.offsetWidth || 0;
26
-
27
- const handleMouseMove = (e) => {
28
- if (!headerRef.current) return;
29
-
30
- // Calculate the new width based on mouse movement
31
- const diff = e.clientX - startX;
32
- const newWidth = Math.max(startWidth + diff, MIN_COLUMN_WIDTH);
33
-
34
- // Update only the current column's width
35
- onResize(newWidth);
36
- };
37
-
38
- const handleMouseUp = () => {
39
- setIsResizing(false);
40
- document.removeEventListener("mousemove", handleMouseMove);
41
- document.removeEventListener("mouseup", handleMouseUp);
42
- };
43
-
44
- document.addEventListener("mousemove", handleMouseMove);
45
- document.addEventListener("mouseup", handleMouseUp);
46
- }, [onResize]);
47
-
48
- return (
49
- <th
50
- ref={headerRef}
51
- className={`relative ${className} ${isResizing ? 'select-none' : ''}`}
52
- style={{ width: `${width}px` }}
53
- >
54
- {children}
55
- <div
56
- className="absolute top-0 right-0 h-full w-1 cursor-col-resize group hover:bg-neutral-300"
57
- onMouseDown={startResizing}
58
- />
59
- </th>
60
- );
61
- };
62
-
63
- /**
64
- * A resizable table wrapper component.
65
- */
66
- export const ResizableTable = ({
67
- columns,
68
- children,
69
- onColumnsResize,
70
- className = ""
71
- }) => {
72
- const [columnWidths, setColumnWidths] = useState(
73
- columns.reduce((acc, col) => ({
74
- ...acc,
75
- [col.key]: col.width || 150
76
- }), {})
77
- );
78
-
79
- const handleColumnResize = useCallback((columnKey, newWidth) => {
80
- setColumnWidths((prev) => {
81
- const updated = { ...prev, [columnKey]: newWidth };
82
- onColumnsResize?.(updated); // Notify parent of updated widths
83
- return updated;
84
- });
85
- }, [onColumnsResize]);
86
-
87
- return (
88
- <div className={`w-full ${className}`}>
89
- {React.Children.map(children, child => {
90
- if (React.isValidElement(child)) {
91
- return React.cloneElement(child, {
92
- onResize: handleColumnResize, // ✅ Only pass valid props
93
- });
94
- }
95
- return child;
96
- })}
97
- </div>
98
- );
99
- };
100
-
101
- export default ResizableTable;
@@ -1,254 +0,0 @@
1
- // components/sidebar.jsx
2
- 'use client';
3
-
4
- import React, { useEffect, useState, useMemo } from 'react';
5
- import {
6
- Table2,
7
- Search,
8
- Loader2,
9
- AlertCircle,
10
- TerminalSquare,
11
- } from 'lucide-react';
12
- import { Input } from '@/components/ui/input';
13
- import { Alert, AlertDescription } from '@/components/ui/alert';
14
- import { useDatabase } from '@/context/database-context';
15
- import { CloudflareCredentialsModal } from './cloudflare-credentials-modal';
16
- import { useEnvironmentController } from './environment-handler';
17
- import { EnvironmentSelect } from './environment-select';
18
-
19
- export function AppSidebar({
20
- className,
21
- currentView,
22
- onNavigate,
23
- onTableSelect,
24
- }) {
25
- const { tables, refreshTables, isLoading: isTablesLoading, error } = useDatabase();
26
- const [databases, setDatabases] = useState([]);
27
- const [searchTerm, setSearchTerm] = useState('');
28
- const [environment, setEnvironment] = useState('local');
29
- const [showCredentialsModal, setShowCredentialsModal] = useState(false);
30
- const [selectedTable, setSelectedTable] = useState(null);
31
- const [isTableLoading, setIsTableLoading] = useState(false);
32
-
33
- const {
34
- isConnecting,
35
- isPushing,
36
- showPreview,
37
- connectToCloudflare,
38
- pushToRemote,
39
- pullFromRemote,
40
- pullToRemotePreview,
41
- validateStoredCredentials,
42
- PreviewUI,
43
- } = useEnvironmentController();
44
-
45
- // Updated filtering logic with d1_migrations priority
46
- const filteredTables = useMemo(() => {
47
- const filtered = tables?.filter((table) =>
48
- table.toLowerCase().includes(searchTerm.toLowerCase())
49
- ) || [];
50
-
51
- // Sort all tables alphabetically first
52
- const sortedTables = [...filtered].sort((a, b) => a.localeCompare(b));
53
-
54
- // If d1_migrations exists in the filtered list, move it to the top
55
- const d1MigrationsIndex = sortedTables.indexOf('d1_migrations');
56
- if (d1MigrationsIndex !== -1) {
57
- sortedTables.splice(d1MigrationsIndex, 1);
58
- sortedTables.unshift('d1_migrations');
59
- }
60
-
61
- return sortedTables;
62
- }, [tables, searchTerm]);
63
-
64
- const handleTableClick = async (table) => {
65
- try {
66
- setIsTableLoading(true);
67
- setSelectedTable(table);
68
- onTableSelect(table);
69
- } catch (error) {
70
- console.error('Error selecting table:', error);
71
- } finally {
72
- setIsTableLoading(false);
73
- }
74
- };
75
-
76
- const handleEnvironmentChange = async (value) => {
77
- console.log('Environment change triggered:', value);
78
- // Immediately update the environment state so the UI reflects the correct label
79
- setEnvironment(value);
80
-
81
- if (value === 'production') {
82
- try {
83
- const credentials = await validateStoredCredentials();
84
- if (!credentials) {
85
- setShowCredentialsModal(true);
86
- return;
87
- }
88
- // Trigger push preview or push directly (as desired)
89
- await pushToRemote();
90
- } catch (error) {
91
- console.error('Environment change failed:', error);
92
- setEnvironment('local');
93
- }
94
- } else if (value === 'pull') {
95
- try {
96
- const credentials = await validateStoredCredentials();
97
- if (!credentials) {
98
- setShowCredentialsModal(true);
99
- return;
100
- }
101
- // Instead of immediately pulling, show the pull preview toast
102
- await pullToRemotePreview();
103
- // Optionally, you may keep the environment value as "pull" until confirmation,
104
- // then revert to "local" in the confirm pull flow.
105
- } catch (error) {
106
- console.error('Pull from remote failed:', error);
107
- setEnvironment('local');
108
- }
109
- } else {
110
- setEnvironment(value);
111
- }
112
- };
113
-
114
- useEffect(() => {
115
- const fetchDatabases = async () => {
116
- try {
117
- const response = await fetch('/api/databases');
118
- const data = await response.json();
119
-
120
- if (!response.ok) {
121
- throw new Error(data.error || 'Failed to fetch databases');
122
- }
123
-
124
- setDatabases(data.databases || []);
125
- } catch (error) {
126
- console.error('Error fetching databases:', error);
127
- }
128
- };
129
-
130
- fetchDatabases();
131
- refreshTables();
132
- }, [refreshTables]);
133
-
134
- return (
135
- <>
136
- {/* The sidebar now has top position adjusted for the banner */}
137
- <aside className={`${className} top-[var(--banner-height,0px)] left-0 h-[calc(100vh-var(--banner-height,0px))] bg-neutral-50 p-4`}>
138
- <div className="flex flex-col h-full font-sans">
139
- {/* Header */}
140
- <div className="flex items-center gap-2 mb-4">
141
- <Table2 className="h-5 w-5" />
142
- <span className="font-mono font-bold text-sm">d1-studio</span>
143
- </div>
144
-
145
- {/* Error Message */}
146
- {error && (
147
- <Alert variant="destructive" className="mb-4">
148
- <AlertCircle className="h-4 w-4" />
149
- <AlertDescription className="text-sm ml-2">{error}</AlertDescription>
150
- </Alert>
151
- )}
152
-
153
- {/* Database Section */}
154
- <div className="mb-2">
155
- <div className="text-xs text-muted-foreground mb-1">Database name</div>
156
- <div className="font-semibold text-sm">
157
- {databases[0]?.database_name || 'No database found'}
158
- </div>
159
- </div>
160
-
161
- {/* Environment Section - Full Width */}
162
- <div className="mb-6">
163
- <EnvironmentSelect className="w-full"
164
- value={environment}
165
- onValueChange={handleEnvironmentChange}
166
- isLoading={isPushing}
167
- disabled={isConnecting}
168
- showPreview={showPreview}
169
- />
170
- </div>
171
-
172
- {/* SQL Editor Section */}
173
- <div className="mb-3">
174
- <button
175
- className={`w-full flex items-center gap-x-1 border rounded-md text-sm font-medium transition-colors px-2 py-2
176
- ${currentView === 'sql-editor' ? 'bg-neutral-900 text-white' : 'bg-white hover:bg-neutral-100'}`}
177
- onClick={() => onNavigate('sql-editor')}
178
- disabled={isTableLoading}
179
- >
180
- <TerminalSquare className="h-[16px] w-[16px]" />
181
- SQL editor
182
- </button>
183
- </div>
184
-
185
- {/* Search Section */}
186
- <div className="relative mb-3 bg-white">
187
- <Search className="absolute left-2 top-2.5 h-4 w-4 text-neutral-500" />
188
- <Input
189
- placeholder="Search tables"
190
- value={searchTerm}
191
- onChange={(e) => setSearchTerm(e.target.value)}
192
- className="pl-7"
193
- />
194
- </div>
195
-
196
- {/* Scrollable Tables Section - Updated */}
197
- <div className="flex-1 min-h-0 flex flex-col">
198
- {/* Tables Header */}
199
- <div className="flex items-center justify-between mb-1 flex-none">
200
- <h3 className="text-sm font-medium text-muted-foreground">
201
- Tables {tables?.length ? `(${tables.length})` : ''}
202
- </h3>
203
- {isTablesLoading && <Loader2 className="h-4 w-4 animate-spin text-muted-foreground" />}
204
- </div>
205
-
206
- {/* Tables List - Scrollable - Updated with padding bottom */}
207
- <div className="overflow-y-auto flex-1">
208
- <div className="pr-2 pb-4"> {/* Added pb-4 for bottom padding */}
209
- {!isTablesLoading && filteredTables.length === 0 && (
210
- <div className="text-sm font-medium text-muted-foreground px-2 py-2">
211
- {searchTerm
212
- ? 'No matching tables found'
213
- : error
214
- ? 'Error loading tables'
215
- : 'No tables available'
216
- }
217
- </div>
218
- )}
219
-
220
- {filteredTables.map((table) => (
221
- <button
222
- key={table}
223
- className={`w-full text-left text-sm font-medium rounded-md transition-colors px-2 py-2
224
- ${currentView === 'table-view' && selectedTable === table
225
- ? 'bg-[#F0F0F0] text-neutral-900 font-semibold'
226
- : 'text-neutral-700 hover:bg-[#F2F2F2]'}
227
- ${isTableLoading && 'opacity-50 cursor-not-allowed'}`}
228
- onClick={() => handleTableClick(table)}
229
- disabled={isTableLoading}
230
- >
231
- {table}
232
- </button>
233
- ))}
234
- </div>
235
- </div>
236
- </div>
237
- </div>
238
-
239
- {/* Cloudflare Credentials Modal */}
240
- <CloudflareCredentialsModal
241
- open={showCredentialsModal}
242
- onClose={() => {
243
- setShowCredentialsModal(false);
244
- setEnvironment('local');
245
- }}
246
- onSubmit={connectToCloudflare}
247
- />
248
- </aside>
249
-
250
- {/* Preview UI */}
251
- {PreviewUI}
252
- </>
253
- );
254
- }