d1s 0.2.11 → 0.2.13

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 (318) 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/2.pack +0 -0
  26. package/dist/.next/.next/cache/webpack/server-production/3.pack +0 -0
  27. package/dist/.next/.next/cache/webpack/server-production/index.pack +0 -0
  28. package/dist/.next/.next/cache/webpack/server-production/index.pack.old +0 -0
  29. package/dist/.next/.next/next-minimal-server.js.nft.json +1 -1
  30. package/dist/.next/.next/next-server.js.nft.json +1 -1
  31. package/dist/.next/.next/prerender-manifest.json +1 -1
  32. package/dist/.next/.next/required-server-files.json +1 -1
  33. package/dist/.next/.next/server/app/_not-found/page.js +1 -1
  34. package/dist/.next/.next/server/app/_not-found/page.js.nft.json +1 -1
  35. package/dist/.next/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/dist/.next/.next/server/app/_not-found.html +1 -1
  37. package/dist/.next/.next/server/app/_not-found.rsc +4 -4
  38. package/dist/.next/.next/server/app/api/cloudflare/route.js +1 -1
  39. package/dist/.next/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
  40. package/dist/.next/.next/server/app/api/databases/route.js +1 -1
  41. package/dist/.next/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/.next/server/app/api/migrations/sync/route.js +5 -5
  43. package/dist/.next/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
  44. package/dist/.next/.next/server/app/api/migrations/sync-files/route.js +3 -3
  45. package/dist/.next/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
  46. package/dist/.next/.next/server/app/api/pull-data/confirm/route.js +1 -1
  47. package/dist/.next/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
  48. package/dist/.next/.next/server/app/api/pull-remote/confirm/route.js +2 -2
  49. package/dist/.next/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
  50. package/dist/.next/.next/server/app/api/pull-remote/preview/route.js +4 -4
  51. package/dist/.next/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
  52. package/dist/.next/.next/server/app/api/push-remote/confirm/route.js +5 -5
  53. package/dist/.next/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/.next/server/app/api/push-remote/preview/route.js +4 -4
  55. package/dist/.next/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
  56. package/dist/.next/.next/server/app/api/query/route.js +3 -3
  57. package/dist/.next/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
  58. package/dist/.next/.next/server/app/api/tables/[name]/route.js +5 -5
  59. package/dist/.next/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
  60. package/dist/.next/.next/server/app/api/tables/route.js +2 -2
  61. package/dist/.next/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
  62. package/dist/.next/.next/server/app/api/update/route.js +1 -1
  63. package/dist/.next/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  64. package/dist/.next/.next/server/app/index.html +2 -2
  65. package/dist/.next/.next/server/app/index.rsc +5 -5
  66. package/dist/.next/.next/server/app/page.js +7 -7
  67. package/dist/.next/.next/server/app/page.js.nft.json +1 -1
  68. package/dist/.next/.next/server/app/page_client-reference-manifest.js +1 -1
  69. package/dist/.next/.next/server/app-paths-manifest.json +1 -1
  70. package/dist/.next/.next/server/chunks/226.js +12 -12
  71. package/dist/.next/.next/server/chunks/391.js +1 -1
  72. package/dist/.next/.next/server/chunks/572.js +1 -0
  73. package/dist/.next/.next/server/chunks/992.js +3 -3
  74. package/dist/.next/.next/server/middleware-build-manifest.js +1 -1
  75. package/dist/.next/.next/server/next-font-manifest.js +1 -1
  76. package/dist/.next/.next/server/next-font-manifest.json +1 -1
  77. package/dist/.next/.next/server/pages/404.html +1 -1
  78. package/dist/.next/.next/server/pages/500.html +1 -1
  79. package/dist/.next/.next/server/server-reference-manifest.json +1 -1
  80. package/dist/.next/.next/static/chunks/{576-c4daf274bb6469a1.js → 576-18a2209e1ed26aad.js} +1 -1
  81. package/dist/.next/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
  82. package/dist/.next/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
  83. package/dist/.next/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
  84. package/dist/.next/.next/static/chunks/app/page-f2bc307c0d8acdaa.js +1 -0
  85. package/dist/.next/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
  86. package/dist/.next/.next/static/css/{9f6c25c5400f83d3.css → 7c16f57d325d0d7d.css} +1 -1
  87. package/dist/.next/.next/static/ejYPqJ2kVicVp5EFWOZIC/_buildManifest.js +1 -0
  88. package/dist/.next/.next/static/ejYPqJ2kVicVp5EFWOZIC/_ssgManifest.js +1 -0
  89. package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_buildManifest.js +1 -0
  90. package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_ssgManifest.js +1 -0
  91. package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_buildManifest.js +1 -0
  92. package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_ssgManifest.js +1 -0
  93. package/dist/.next/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  94. package/dist/.next/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  95. package/dist/.next/.next/static/thaCy2qVeNqYYhdayr13C/_buildManifest.js +1 -0
  96. package/dist/.next/.next/static/thaCy2qVeNqYYhdayr13C/_ssgManifest.js +1 -0
  97. package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_buildManifest.js +1 -0
  98. package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_ssgManifest.js +1 -0
  99. package/dist/.next/.next/trace +3 -3
  100. package/dist/.next/.next/types/app/api/cloudflare/route.ts +1 -1
  101. package/dist/.next/.next/types/app/api/databases/route.ts +1 -1
  102. package/dist/.next/.next/types/app/api/migrations/sync/route.ts +1 -1
  103. package/dist/.next/.next/types/app/api/migrations/sync-files/route.ts +1 -1
  104. package/dist/.next/.next/types/app/api/pull-data/confirm/route.ts +1 -1
  105. package/dist/.next/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
  106. package/dist/.next/.next/types/app/api/pull-remote/preview/route.ts +1 -1
  107. package/dist/.next/.next/types/app/api/push-remote/confirm/route.ts +1 -1
  108. package/dist/.next/.next/types/app/api/push-remote/preview/route.ts +1 -1
  109. package/dist/.next/.next/types/app/api/query/route.ts +1 -1
  110. package/dist/.next/.next/types/app/api/tables/[name]/route.ts +1 -1
  111. package/dist/.next/.next/types/app/api/tables/route.ts +1 -1
  112. package/dist/.next/.next/types/app/api/update/route.ts +1 -1
  113. package/dist/.next/.next/types/app/page.ts +1 -1
  114. package/dist/.next/BUILD_ID +1 -1
  115. package/dist/.next/app-build-manifest.json +28 -28
  116. package/dist/.next/app-path-routes-manifest.json +1 -1
  117. package/dist/.next/build-manifest.json +3 -3
  118. package/dist/.next/cache/.rscinfo +1 -1
  119. package/dist/.next/cache/.tsbuildinfo +1 -1
  120. package/dist/.next/cache/webpack/client-production/0.pack +0 -0
  121. package/dist/.next/cache/webpack/client-production/1.pack +0 -0
  122. package/dist/.next/cache/webpack/client-production/2.pack +0 -0
  123. package/dist/.next/cache/webpack/client-production/index.pack +0 -0
  124. package/dist/.next/cache/webpack/client-production/index.pack.old +0 -0
  125. package/dist/.next/cache/webpack/edge-server-production/index.pack +0 -0
  126. package/dist/.next/cache/webpack/server-production/0.pack +0 -0
  127. package/dist/.next/cache/webpack/server-production/index.pack +0 -0
  128. package/dist/.next/next-minimal-server.js.nft.json +1 -1
  129. package/dist/.next/next-server.js.nft.json +1 -1
  130. package/dist/.next/prerender-manifest.json +1 -1
  131. package/dist/.next/required-server-files.json +1 -1
  132. package/dist/.next/server/app/_not-found/page.js +1 -1
  133. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  134. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  135. package/dist/.next/server/app/_not-found.html +1 -1
  136. package/dist/.next/server/app/_not-found.rsc +4 -4
  137. package/dist/.next/server/app/api/cloudflare/route.js +1 -1
  138. package/dist/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
  139. package/dist/.next/server/app/api/databases/route.js +1 -1
  140. package/dist/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
  141. package/dist/.next/server/app/api/migrations/sync/route.js +5 -5
  142. package/dist/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
  143. package/dist/.next/server/app/api/migrations/sync-files/route.js +3 -3
  144. package/dist/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
  145. package/dist/.next/server/app/api/pull-data/confirm/route.js +1 -1
  146. package/dist/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
  147. package/dist/.next/server/app/api/pull-remote/confirm/route.js +2 -2
  148. package/dist/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
  149. package/dist/.next/server/app/api/pull-remote/preview/route.js +4 -4
  150. package/dist/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
  151. package/dist/.next/server/app/api/push-remote/confirm/route.js +5 -5
  152. package/dist/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
  153. package/dist/.next/server/app/api/push-remote/preview/route.js +4 -4
  154. package/dist/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
  155. package/dist/.next/server/app/api/query/route.js +3 -3
  156. package/dist/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
  157. package/dist/.next/server/app/api/tables/[name]/route.js +5 -5
  158. package/dist/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
  159. package/dist/.next/server/app/api/tables/route.js +2 -2
  160. package/dist/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
  161. package/dist/.next/server/app/api/update/route.js +1 -1
  162. package/dist/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  163. package/dist/.next/server/app/index.html +2 -2
  164. package/dist/.next/server/app/index.rsc +5 -5
  165. package/dist/.next/server/app/page.js +7 -7
  166. package/dist/.next/server/app/page.js.nft.json +1 -1
  167. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  168. package/dist/.next/server/app-paths-manifest.json +1 -1
  169. package/dist/.next/server/chunks/226.js +12 -12
  170. package/dist/.next/server/chunks/391.js +1 -1
  171. package/dist/.next/server/chunks/572.js +1 -0
  172. package/dist/.next/server/chunks/992.js +3 -3
  173. package/dist/.next/server/middleware-build-manifest.js +1 -1
  174. package/dist/.next/server/next-font-manifest.js +1 -1
  175. package/dist/.next/server/next-font-manifest.json +1 -1
  176. package/dist/.next/server/pages/404.html +1 -1
  177. package/dist/.next/server/pages/500.html +1 -1
  178. package/dist/.next/server/server-reference-manifest.json +1 -1
  179. package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_buildManifest.js +1 -0
  180. package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_ssgManifest.js +1 -0
  181. package/dist/.next/static/chunks/{576-c4daf274bb6469a1.js → 576-18a2209e1ed26aad.js} +1 -1
  182. package/dist/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
  183. package/dist/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
  184. package/dist/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
  185. package/dist/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
  186. package/dist/.next/static/css/{9f6c25c5400f83d3.css → 7c16f57d325d0d7d.css} +1 -1
  187. package/dist/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  188. package/dist/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  189. package/dist/.next/trace +3 -14
  190. package/dist/.next/types/app/api/cloudflare/route.ts +1 -1
  191. package/dist/.next/types/app/api/databases/route.ts +1 -1
  192. package/dist/.next/types/app/api/migrations/sync/route.ts +1 -1
  193. package/dist/.next/types/app/api/migrations/sync-files/route.ts +1 -1
  194. package/dist/.next/types/app/api/pull-data/confirm/route.ts +1 -1
  195. package/dist/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
  196. package/dist/.next/types/app/api/pull-remote/preview/route.ts +1 -1
  197. package/dist/.next/types/app/api/push-remote/confirm/route.ts +1 -1
  198. package/dist/.next/types/app/api/push-remote/preview/route.ts +1 -1
  199. package/dist/.next/types/app/api/query/route.ts +1 -1
  200. package/dist/.next/types/app/api/tables/[name]/route.ts +1 -1
  201. package/dist/.next/types/app/api/tables/route.ts +1 -1
  202. package/dist/.next/types/app/api/update/route.ts +1 -1
  203. package/dist/.next/types/app/page.ts +1 -1
  204. package/dist/app/api/tables/[name]/route.js +22 -10
  205. package/dist/app/globals.css +39 -0
  206. package/dist/d1-studio.js +2 -2
  207. package/dist/lib/data-type-handlers.js +426 -0
  208. package/dist/lib/sql-operations.js +32 -8
  209. package/dist/lib/sql-sanitizer.js +233 -0
  210. package/package.json +3 -9
  211. package/dist/.next/.next/server/chunks/90.js +0 -1
  212. package/dist/.next/.next/static/chunks/app/page-36ed30b2266617f3.js +0 -1
  213. package/dist/.next/server/chunks/90.js +0 -1
  214. package/dist/.next/static/chunks/app/page-36ed30b2266617f3.js +0 -1
  215. package/dist/app/app/api/cloudflare/route.js +0 -150
  216. package/dist/app/app/api/databases/route.js +0 -71
  217. package/dist/app/app/api/migrations/sync/route.js +0 -174
  218. package/dist/app/app/api/migrations/sync-files/route.js +0 -172
  219. package/dist/app/app/api/pull-data/confirm/route.js +0 -230
  220. package/dist/app/app/api/pull-remote/confirm/route.js +0 -278
  221. package/dist/app/app/api/pull-remote/preview/route.js +0 -144
  222. package/dist/app/app/api/push-remote/confirm/route.js +0 -196
  223. package/dist/app/app/api/push-remote/preview/route.js +0 -179
  224. package/dist/app/app/api/query/route.js +0 -168
  225. package/dist/app/app/api/tables/[name]/route.js +0 -174
  226. package/dist/app/app/api/tables/route.js +0 -178
  227. package/dist/app/app/api/update/route.js +0 -45
  228. package/dist/app/app/globals.css +0 -93
  229. package/dist/app/app/layout.jsx +0 -35
  230. package/dist/app/app/page.jsx +0 -34
  231. package/next.config.mjs +0 -18
  232. package/postcss.config.mjs +0 -8
  233. package/scripts/studio.js +0 -199
  234. package/scripts/test.js +0 -366
  235. package/src/app/api/cloudflare/route.js +0 -150
  236. package/src/app/api/databases/route.js +0 -71
  237. package/src/app/api/migrations/sync/route.js +0 -174
  238. package/src/app/api/migrations/sync-files/route.js +0 -172
  239. package/src/app/api/pull-data/confirm/route.js +0 -230
  240. package/src/app/api/pull-remote/confirm/route.js +0 -278
  241. package/src/app/api/pull-remote/preview/route.js +0 -144
  242. package/src/app/api/push-remote/confirm/route.js +0 -196
  243. package/src/app/api/push-remote/preview/route.js +0 -179
  244. package/src/app/api/query/route.js +0 -168
  245. package/src/app/api/tables/[name]/route.js +0 -174
  246. package/src/app/api/tables/route.js +0 -178
  247. package/src/app/api/update/route.js +0 -45
  248. package/src/app/globals.css +0 -93
  249. package/src/app/layout.jsx +0 -35
  250. package/src/app/page.jsx +0 -34
  251. package/src/components/cloudflare-credentials-modal.jsx +0 -94
  252. package/src/components/column-selector.jsx +0 -133
  253. package/src/components/column-sorting.jsx +0 -65
  254. package/src/components/delete-records-dialog.jsx +0 -64
  255. package/src/components/download-button.jsx +0 -205
  256. package/src/components/edit-error-alert.jsx +0 -30
  257. package/src/components/editable-cell.jsx +0 -163
  258. package/src/components/editable-row.jsx +0 -169
  259. package/src/components/environment-handler.jsx +0 -332
  260. package/src/components/environment-select.jsx +0 -62
  261. package/src/components/pull-preview-toast.jsx +0 -215
  262. package/src/components/push-error-alert.jsx +0 -72
  263. package/src/components/push-preview-toast.jsx +0 -183
  264. package/src/components/query-results.jsx +0 -112
  265. package/src/components/refresh-button.jsx +0 -61
  266. package/src/components/resize-columns.jsx +0 -101
  267. package/src/components/sidebar.jsx +0 -254
  268. package/src/components/sql-editor.jsx +0 -411
  269. package/src/components/sql-error-display.jsx +0 -167
  270. package/src/components/sync-migrations-button.jsx +0 -87
  271. package/src/components/table-error-dialog.jsx +0 -65
  272. package/src/components/table-toolbar.jsx +0 -285
  273. package/src/components/table-view.jsx +0 -843
  274. package/src/components/ui/alert.jsx +0 -47
  275. package/src/components/ui/button.jsx +0 -48
  276. package/src/components/ui/card.jsx +0 -50
  277. package/src/components/ui/checkbox.jsx +0 -24
  278. package/src/components/ui/collapsible.jsx +0 -11
  279. package/src/components/ui/dialog.jsx +0 -96
  280. package/src/components/ui/dropdown-menu.jsx +0 -158
  281. package/src/components/ui/input.jsx +0 -19
  282. package/src/components/ui/scroll-area.jsx +0 -40
  283. package/src/components/ui/select.jsx +0 -121
  284. package/src/components/ui/separator.jsx +0 -25
  285. package/src/components/ui/sheet.jsx +0 -109
  286. package/src/components/ui/sidebar.jsx +0 -620
  287. package/src/components/ui/skeleton.jsx +0 -14
  288. package/src/components/ui/table.jsx +0 -86
  289. package/src/components/ui/tabs.jsx +0 -43
  290. package/src/components/ui/toast.jsx +0 -86
  291. package/src/components/ui/toaster.jsx +0 -35
  292. package/src/components/ui/tooltip.jsx +0 -28
  293. package/src/components/update-banner.jsx +0 -93
  294. package/src/context/database-context.js +0 -510
  295. package/src/hooks/use-mobile.jsx +0 -19
  296. package/src/hooks/use-sql-error.ts +0 -23
  297. package/src/hooks/use-toast.js +0 -155
  298. package/src/lib/database-queue.js +0 -37
  299. package/src/lib/error.js +0 -20
  300. package/src/lib/find-wrangler-config.js +0 -74
  301. package/src/lib/license.js +0 -99
  302. package/src/lib/logger.js +0 -58
  303. package/src/lib/migrations.js +0 -415
  304. package/src/lib/parse-sql-error.js +0 -200
  305. package/src/lib/request-deduplication.js +0 -24
  306. package/src/lib/schema-operations.js +0 -106
  307. package/src/lib/sql-error-types.js +0 -14
  308. package/src/lib/sql-operations.js +0 -647
  309. package/src/lib/utils.js +0 -6
  310. package/src/lib/version-utils.js +0 -34
  311. /package/dist/.next/.next/static/{OUHnbB-64afrrZQL0Srn5 → FEsQ9jwPUQv5A3fwg6Opl}/_buildManifest.js +0 -0
  312. /package/dist/.next/.next/static/{OUHnbB-64afrrZQL0Srn5 → FEsQ9jwPUQv5A3fwg6Opl}/_ssgManifest.js +0 -0
  313. /package/dist/.next/.next/static/{ZBTCAyp1kO5FdEHMU-Dw2 → Y9mYu4WBghepP5oT_3OdR}/_buildManifest.js +0 -0
  314. /package/dist/.next/.next/static/{ZBTCAyp1kO5FdEHMU-Dw2 → Y9mYu4WBghepP5oT_3OdR}/_ssgManifest.js +0 -0
  315. /package/dist/.next/.next/static/{bHYW7fgIBDF8-Q33_WPoE → ae3gNmoSGm-R5LJC4UagI}/_buildManifest.js +0 -0
  316. /package/dist/.next/.next/static/{bHYW7fgIBDF8-Q33_WPoE → ae3gNmoSGm-R5LJC4UagI}/_ssgManifest.js +0 -0
  317. /package/dist/.next/{static/ZBTCAyp1kO5FdEHMU-Dw2 → .next/static/bKfUJeuvAQlBmR3TjrfkH}/_buildManifest.js +0 -0
  318. /package/dist/.next/{static/ZBTCAyp1kO5FdEHMU-Dw2 → .next/static/bKfUJeuvAQlBmR3TjrfkH}/_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
- }