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.
Files changed (329) hide show
  1. package/dist/.next/.next/BUILD_ID +1 -1
  2. package/dist/.next/.next/app-build-manifest.json +33 -33
  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 +3 -3
  63. package/dist/.next/.next/server/app/index.rsc +5 -5
  64. package/dist/.next/.next/server/app/page.js +11 -13
  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 +3 -3
  68. package/dist/.next/.next/server/chunks/226.js +12 -12
  69. package/dist/.next/.next/server/chunks/391.js +5 -5
  70. package/dist/.next/.next/server/chunks/452.js +1 -1
  71. package/dist/.next/.next/server/chunks/572.js +1 -0
  72. package/dist/.next/.next/server/chunks/627.js +3 -3
  73. package/dist/.next/.next/server/chunks/638.js +3 -3
  74. package/dist/.next/.next/server/chunks/992.js +3 -3
  75. package/dist/.next/.next/server/middleware-build-manifest.js +1 -1
  76. package/dist/.next/.next/server/next-font-manifest.js +1 -1
  77. package/dist/.next/.next/server/next-font-manifest.json +1 -1
  78. package/dist/.next/.next/server/pages/404.html +1 -1
  79. package/dist/.next/.next/server/pages/500.html +1 -1
  80. package/dist/.next/.next/server/pages/_app.js +1 -1
  81. package/dist/.next/.next/server/pages/_document.js +1 -1
  82. package/dist/.next/.next/server/pages/_error.js +1 -1
  83. package/dist/.next/.next/server/server-reference-manifest.json +1 -1
  84. package/dist/.next/.next/static/chunks/576-18a2209e1ed26aad.js +1 -0
  85. package/dist/.next/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
  86. package/dist/.next/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
  87. package/dist/.next/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
  88. package/dist/.next/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
  89. package/dist/.next/.next/static/css/7c16f57d325d0d7d.css +3 -0
  90. package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_buildManifest.js +1 -0
  91. package/dist/.next/.next/static/gABGrAoO8IPArDo_Ns_7g/_ssgManifest.js +1 -0
  92. package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_buildManifest.js +1 -0
  93. package/dist/.next/.next/static/gh-QfIUVo4FTTduYCVKT6/_ssgManifest.js +1 -0
  94. package/dist/.next/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  95. package/dist/.next/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  96. package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_buildManifest.js +1 -0
  97. package/dist/.next/.next/static/ybCx6L6gHqtODbKmlhU-d/_ssgManifest.js +1 -0
  98. package/dist/.next/.next/trace +3 -3
  99. package/dist/.next/.next/types/app/api/cloudflare/route.ts +1 -1
  100. package/dist/.next/.next/types/app/api/databases/route.ts +1 -1
  101. package/dist/.next/.next/types/app/api/migrations/sync/route.ts +1 -1
  102. package/dist/.next/.next/types/app/api/migrations/sync-files/route.ts +1 -1
  103. package/dist/.next/.next/types/app/api/pull-data/confirm/route.ts +1 -1
  104. package/dist/.next/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
  105. package/dist/.next/.next/types/app/api/pull-remote/preview/route.ts +1 -1
  106. package/dist/.next/.next/types/app/api/push-remote/confirm/route.ts +1 -1
  107. package/dist/.next/.next/types/app/api/push-remote/preview/route.ts +1 -1
  108. package/dist/.next/.next/types/app/api/query/route.ts +1 -1
  109. package/dist/.next/.next/types/app/api/tables/[name]/route.ts +1 -1
  110. package/dist/.next/.next/types/app/api/tables/route.ts +1 -1
  111. package/dist/.next/.next/types/app/api/update/route.ts +1 -1
  112. package/dist/.next/.next/types/app/page.ts +1 -1
  113. package/dist/.next/BUILD_ID +1 -1
  114. package/dist/.next/app-build-manifest.json +32 -32
  115. package/dist/.next/app-path-routes-manifest.json +1 -1
  116. package/dist/.next/build-manifest.json +3 -3
  117. package/dist/.next/cache/.rscinfo +1 -1
  118. package/dist/.next/cache/.tsbuildinfo +1 -1
  119. package/dist/.next/cache/webpack/client-production/0.pack +0 -0
  120. package/dist/.next/cache/webpack/client-production/1.pack +0 -0
  121. package/dist/.next/cache/webpack/client-production/2.pack +0 -0
  122. package/dist/.next/cache/webpack/client-production/index.pack +0 -0
  123. package/dist/.next/cache/webpack/client-production/index.pack.old +0 -0
  124. package/dist/.next/cache/webpack/edge-server-production/index.pack +0 -0
  125. package/dist/.next/cache/webpack/server-production/0.pack +0 -0
  126. package/dist/.next/cache/webpack/server-production/index.pack +0 -0
  127. package/dist/.next/next-minimal-server.js.nft.json +1 -1
  128. package/dist/.next/next-server.js.nft.json +1 -1
  129. package/dist/.next/prerender-manifest.json +1 -1
  130. package/dist/.next/required-server-files.json +1 -1
  131. package/dist/.next/server/app/_not-found/page.js +1 -1
  132. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  133. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  134. package/dist/.next/server/app/_not-found.html +1 -1
  135. package/dist/.next/server/app/_not-found.rsc +4 -4
  136. package/dist/.next/server/app/api/cloudflare/route.js +1 -1
  137. package/dist/.next/server/app/api/cloudflare/route_client-reference-manifest.js +1 -1
  138. package/dist/.next/server/app/api/databases/route.js +1 -1
  139. package/dist/.next/server/app/api/databases/route_client-reference-manifest.js +1 -1
  140. package/dist/.next/server/app/api/migrations/sync/route.js +5 -5
  141. package/dist/.next/server/app/api/migrations/sync/route_client-reference-manifest.js +1 -1
  142. package/dist/.next/server/app/api/migrations/sync-files/route.js +3 -3
  143. package/dist/.next/server/app/api/migrations/sync-files/route_client-reference-manifest.js +1 -1
  144. package/dist/.next/server/app/api/pull-data/confirm/route.js +1 -1
  145. package/dist/.next/server/app/api/pull-data/confirm/route_client-reference-manifest.js +1 -1
  146. package/dist/.next/server/app/api/pull-remote/confirm/route.js +2 -2
  147. package/dist/.next/server/app/api/pull-remote/confirm/route_client-reference-manifest.js +1 -1
  148. package/dist/.next/server/app/api/pull-remote/preview/route.js +4 -4
  149. package/dist/.next/server/app/api/pull-remote/preview/route_client-reference-manifest.js +1 -1
  150. package/dist/.next/server/app/api/push-remote/confirm/route.js +5 -5
  151. package/dist/.next/server/app/api/push-remote/confirm/route_client-reference-manifest.js +1 -1
  152. package/dist/.next/server/app/api/push-remote/preview/route.js +4 -4
  153. package/dist/.next/server/app/api/push-remote/preview/route_client-reference-manifest.js +1 -1
  154. package/dist/.next/server/app/api/query/route.js +3 -3
  155. package/dist/.next/server/app/api/query/route_client-reference-manifest.js +1 -1
  156. package/dist/.next/server/app/api/tables/[name]/route.js +5 -5
  157. package/dist/.next/server/app/api/tables/[name]/route_client-reference-manifest.js +1 -1
  158. package/dist/.next/server/app/api/tables/route.js +2 -2
  159. package/dist/.next/server/app/api/tables/route_client-reference-manifest.js +1 -1
  160. package/dist/.next/server/app/api/update/route.js +1 -1
  161. package/dist/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  162. package/dist/.next/server/app/index.html +3 -3
  163. package/dist/.next/server/app/index.rsc +5 -5
  164. package/dist/.next/server/app/page.js +11 -13
  165. package/dist/.next/server/app/page.js.nft.json +1 -1
  166. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  167. package/dist/.next/server/app-paths-manifest.json +2 -2
  168. package/dist/.next/server/chunks/226.js +12 -12
  169. package/dist/.next/server/chunks/391.js +5 -5
  170. package/dist/.next/server/chunks/452.js +1 -1
  171. package/dist/.next/server/chunks/572.js +1 -0
  172. package/dist/.next/server/chunks/627.js +3 -3
  173. package/dist/.next/server/chunks/638.js +3 -3
  174. package/dist/.next/server/chunks/992.js +3 -3
  175. package/dist/.next/server/middleware-build-manifest.js +1 -1
  176. package/dist/.next/server/next-font-manifest.js +1 -1
  177. package/dist/.next/server/next-font-manifest.json +1 -1
  178. package/dist/.next/server/pages/404.html +1 -1
  179. package/dist/.next/server/pages/500.html +1 -1
  180. package/dist/.next/server/pages/_app.js +1 -1
  181. package/dist/.next/server/pages/_document.js +1 -1
  182. package/dist/.next/server/pages/_error.js +1 -1
  183. package/dist/.next/server/server-reference-manifest.json +1 -1
  184. package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_buildManifest.js +1 -0
  185. package/dist/.next/static/IX-QLbm7scYnyqWeeimal/_ssgManifest.js +1 -0
  186. package/dist/.next/static/chunks/576-18a2209e1ed26aad.js +1 -0
  187. package/dist/.next/static/chunks/{92-c4466e0f1ca8a3a8.js → 92-5f7522943fcb72a8.js} +1 -1
  188. package/dist/.next/static/chunks/app/{layout-be6ee67cf0c92654.js → layout-40ec07d04681ba81.js} +1 -1
  189. package/dist/.next/static/chunks/app/page-f05cd0fc436bf9bc.js +1 -0
  190. package/dist/.next/static/chunks/{main-app-fa35024de9bd9284.js → main-app-4506e88db72db4b7.js} +1 -1
  191. package/dist/.next/static/css/7c16f57d325d0d7d.css +3 -0
  192. package/dist/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  193. package/dist/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  194. package/dist/.next/trace +3 -16
  195. package/dist/.next/types/app/api/cloudflare/route.ts +1 -1
  196. package/dist/.next/types/app/api/databases/route.ts +1 -1
  197. package/dist/.next/types/app/api/migrations/sync/route.ts +1 -1
  198. package/dist/.next/types/app/api/migrations/sync-files/route.ts +1 -1
  199. package/dist/.next/types/app/api/pull-data/confirm/route.ts +1 -1
  200. package/dist/.next/types/app/api/pull-remote/confirm/route.ts +1 -1
  201. package/dist/.next/types/app/api/pull-remote/preview/route.ts +1 -1
  202. package/dist/.next/types/app/api/push-remote/confirm/route.ts +1 -1
  203. package/dist/.next/types/app/api/push-remote/preview/route.ts +1 -1
  204. package/dist/.next/types/app/api/query/route.ts +1 -1
  205. package/dist/.next/types/app/api/tables/[name]/route.ts +1 -1
  206. package/dist/.next/types/app/api/tables/route.ts +1 -1
  207. package/dist/.next/types/app/api/update/route.ts +1 -1
  208. package/dist/.next/types/app/page.ts +1 -1
  209. package/dist/app/api/tables/[name]/route.js +22 -10
  210. package/dist/app/globals.css +39 -0
  211. package/dist/app/page.jsx +13 -23
  212. package/dist/d1-studio.js +34 -4
  213. package/dist/lib/data-type-handlers.js +426 -0
  214. package/dist/lib/sql-operations.js +32 -8
  215. package/dist/lib/sql-sanitizer.js +233 -0
  216. package/package.json +3 -9
  217. package/dist/.next/.next/cache/webpack/server-production/2.pack +0 -0
  218. package/dist/.next/.next/server/chunks/90.js +0 -1
  219. package/dist/.next/.next/static/chunks/700-dc8f9f08b166c5e6.js +0 -1
  220. package/dist/.next/.next/static/chunks/app/page-16ec561fc8bebb5d.js +0 -1
  221. package/dist/.next/.next/static/css/0c512cea5f3d317a.css +0 -3
  222. package/dist/.next/server/chunks/90.js +0 -1
  223. package/dist/.next/static/chunks/700-dc8f9f08b166c5e6.js +0 -1
  224. package/dist/.next/static/chunks/app/page-16ec561fc8bebb5d.js +0 -1
  225. package/dist/.next/static/css/0c512cea5f3d317a.css +0 -3
  226. package/dist/app/app/api/cloudflare/route.js +0 -150
  227. package/dist/app/app/api/databases/route.js +0 -71
  228. package/dist/app/app/api/migrations/sync/route.js +0 -174
  229. package/dist/app/app/api/migrations/sync-files/route.js +0 -172
  230. package/dist/app/app/api/pull-data/confirm/route.js +0 -230
  231. package/dist/app/app/api/pull-remote/confirm/route.js +0 -278
  232. package/dist/app/app/api/pull-remote/preview/route.js +0 -144
  233. package/dist/app/app/api/push-remote/confirm/route.js +0 -196
  234. package/dist/app/app/api/push-remote/preview/route.js +0 -179
  235. package/dist/app/app/api/query/route.js +0 -168
  236. package/dist/app/app/api/tables/[name]/route.js +0 -174
  237. package/dist/app/app/api/tables/route.js +0 -178
  238. package/dist/app/app/api/update/route.js +0 -45
  239. package/dist/app/app/globals.css +0 -93
  240. package/dist/app/app/layout.jsx +0 -35
  241. package/dist/app/app/page.jsx +0 -44
  242. package/next.config.mjs +0 -18
  243. package/postcss.config.mjs +0 -8
  244. package/scripts/studio.js +0 -169
  245. package/scripts/test.js +0 -366
  246. package/src/app/api/cloudflare/route.js +0 -150
  247. package/src/app/api/databases/route.js +0 -71
  248. package/src/app/api/migrations/sync/route.js +0 -174
  249. package/src/app/api/migrations/sync-files/route.js +0 -172
  250. package/src/app/api/pull-data/confirm/route.js +0 -230
  251. package/src/app/api/pull-remote/confirm/route.js +0 -278
  252. package/src/app/api/pull-remote/preview/route.js +0 -144
  253. package/src/app/api/push-remote/confirm/route.js +0 -196
  254. package/src/app/api/push-remote/preview/route.js +0 -179
  255. package/src/app/api/query/route.js +0 -168
  256. package/src/app/api/tables/[name]/route.js +0 -174
  257. package/src/app/api/tables/route.js +0 -178
  258. package/src/app/api/update/route.js +0 -45
  259. package/src/app/globals.css +0 -93
  260. package/src/app/layout.jsx +0 -35
  261. package/src/app/page.jsx +0 -44
  262. package/src/components/cloudflare-credentials-modal.jsx +0 -94
  263. package/src/components/column-selector.jsx +0 -133
  264. package/src/components/column-sorting.jsx +0 -65
  265. package/src/components/delete-records-dialog.jsx +0 -64
  266. package/src/components/download-button.jsx +0 -205
  267. package/src/components/edit-error-alert.jsx +0 -30
  268. package/src/components/editable-cell.jsx +0 -163
  269. package/src/components/editable-row.jsx +0 -169
  270. package/src/components/environment-handler.jsx +0 -332
  271. package/src/components/environment-select.jsx +0 -62
  272. package/src/components/pull-preview-toast.jsx +0 -215
  273. package/src/components/push-error-alert.jsx +0 -72
  274. package/src/components/push-preview-toast.jsx +0 -183
  275. package/src/components/query-results.jsx +0 -112
  276. package/src/components/refresh-button.jsx +0 -61
  277. package/src/components/resize-columns.jsx +0 -101
  278. package/src/components/sidebar.jsx +0 -254
  279. package/src/components/sql-editor.jsx +0 -411
  280. package/src/components/sql-error-display.jsx +0 -167
  281. package/src/components/sync-migrations-button.jsx +0 -87
  282. package/src/components/table-error-dialog.jsx +0 -65
  283. package/src/components/table-toolbar.jsx +0 -285
  284. package/src/components/table-view.jsx +0 -843
  285. package/src/components/ui/alert.jsx +0 -47
  286. package/src/components/ui/button.jsx +0 -48
  287. package/src/components/ui/card.jsx +0 -50
  288. package/src/components/ui/checkbox.jsx +0 -24
  289. package/src/components/ui/collapsible.jsx +0 -11
  290. package/src/components/ui/dialog.jsx +0 -96
  291. package/src/components/ui/dropdown-menu.jsx +0 -158
  292. package/src/components/ui/input.jsx +0 -19
  293. package/src/components/ui/scroll-area.jsx +0 -40
  294. package/src/components/ui/select.jsx +0 -121
  295. package/src/components/ui/separator.jsx +0 -25
  296. package/src/components/ui/sheet.jsx +0 -109
  297. package/src/components/ui/sidebar.jsx +0 -620
  298. package/src/components/ui/skeleton.jsx +0 -14
  299. package/src/components/ui/table.jsx +0 -86
  300. package/src/components/ui/tabs.jsx +0 -43
  301. package/src/components/ui/toast.jsx +0 -86
  302. package/src/components/ui/toaster.jsx +0 -35
  303. package/src/components/ui/tooltip.jsx +0 -28
  304. package/src/components/update-banner.jsx +0 -93
  305. package/src/context/database-context.js +0 -510
  306. package/src/hooks/use-mobile.jsx +0 -19
  307. package/src/hooks/use-sql-error.ts +0 -23
  308. package/src/hooks/use-toast.js +0 -155
  309. package/src/lib/database-queue.js +0 -37
  310. package/src/lib/error.js +0 -20
  311. package/src/lib/find-wrangler-config.js +0 -74
  312. package/src/lib/license.js +0 -99
  313. package/src/lib/logger.js +0 -58
  314. package/src/lib/migrations.js +0 -415
  315. package/src/lib/parse-sql-error.js +0 -200
  316. package/src/lib/request-deduplication.js +0 -24
  317. package/src/lib/schema-operations.js +0 -106
  318. package/src/lib/sql-error-types.js +0 -14
  319. package/src/lib/sql-operations.js +0 -647
  320. package/src/lib/utils.js +0 -6
  321. package/src/lib/version-utils.js +0 -34
  322. /package/dist/.next/.next/static/{5dBGGUmK5q7of4h5Rahrg → Y9mYu4WBghepP5oT_3OdR}/_buildManifest.js +0 -0
  323. /package/dist/.next/.next/static/{5dBGGUmK5q7of4h5Rahrg → Y9mYu4WBghepP5oT_3OdR}/_ssgManifest.js +0 -0
  324. /package/dist/.next/.next/static/{PflNFnmFsNegSqhzjI6lA → ae3gNmoSGm-R5LJC4UagI}/_buildManifest.js +0 -0
  325. /package/dist/.next/.next/static/{PflNFnmFsNegSqhzjI6lA → ae3gNmoSGm-R5LJC4UagI}/_ssgManifest.js +0 -0
  326. /package/dist/.next/.next/static/{p8875OZM4iDNsPzmoyLe7 → bKfUJeuvAQlBmR3TjrfkH}/_buildManifest.js +0 -0
  327. /package/dist/.next/.next/static/{p8875OZM4iDNsPzmoyLe7 → bKfUJeuvAQlBmR3TjrfkH}/_ssgManifest.js +0 -0
  328. /package/dist/.next/{static 2/5dBGGUmK5q7of4h5Rahrg → .next/static/ejYPqJ2kVicVp5EFWOZIC}/_buildManifest.js +0 -0
  329. /package/dist/.next/{static 2/5dBGGUmK5q7of4h5Rahrg → .next/static/ejYPqJ2kVicVp5EFWOZIC}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- // File: /Users/kona/Desktop/d1studio/src/app/api/cloudflare/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/databases/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/migrations/sync/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/migrations/sync-files/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/pull-data/confirm/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/pull-remote/confirm/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/pull-remote/preview/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/push-remote/confirm/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/push-remote/preview/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/query/route.js
1
+ // File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/query/route.js
2
2
  import * as entry from '../../../../../src/app/api/query/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/kona/Desktop/d1studio/src/app/api/tables/[name]/route.js
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: /Users/kona/Desktop/d1studio/src/app/api/tables/route.js
1
+ // File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/tables/route.js
2
2
  import * as entry from '../../../../../src/app/api/tables/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/kona/Desktop/d1studio/src/app/api/update/route.js
1
+ // File: /Volumes/ProjectSpace/_wip/d1studio/src/app/api/update/route.js
2
2
  import * as entry from '../../../../../src/app/api/update/route.js'
3
3
  import type { NextRequest } from 'next/server.js'
4
4
 
@@ -1,4 +1,4 @@
1
- // File: /Users/kona/Desktop/d1studio/src/app/page.jsx
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
- // Get table schema using PRAGMA query
102
- const schemaQuery = `PRAGMA table_info(${name});`;
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='${name}';`;
107
- const tableDefinition = await executeD1Query(createTableQuery, projectDir, databaseName);
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 ${name};`;
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 ${name}
128
- ORDER BY ${primaryKeyColumn} DESC
129
- LIMIT ${limit} OFFSET ${offset};
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
 
@@ -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 flex-col min-h-screen bg-background">
21
- {/* Banner */}
22
- <UpdateBanner />
23
-
24
- {/* Main layout with adjusted positioning for banner */}
25
- <div className="flex flex-1 mt-[var(--banner-height,0px)]">
26
- {/* Sidebar with adjusted height */}
27
- <AppSidebar
28
- className="w-64 border-r fixed top-[var(--banner-height,0px)] h-[calc(100vh-var(--banner-height,0px))]"
29
- currentView={currentView}
30
- onNavigate={setCurrentView}
31
- onTableSelect={handleTableSelect}
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 '../src/lib/find-wrangler-config.js';
10
- import logger from '../src/lib/logger.js';
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({ pkg, updateCheckInterval: 1000 * 60 * 60 * 24 });
22
- notifier.notify({ defer: false });
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);