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
package/scripts/studio.js DELETED
@@ -1,199 +0,0 @@
1
- #!/usr/bin/env node
2
- import chalk from 'chalk';
3
- import open from 'open';
4
- import { fileURLToPath } from 'url';
5
- import { dirname, join } from 'path';
6
- import express from 'express';
7
- import { createServer } from 'http';
8
- import next from 'next';
9
- import { findWranglerConfig } from '../src/lib/find-wrangler-config.js';
10
- import logger from '../src/lib/logger.js';
11
- import updateNotifier from 'update-notifier';
12
- import pkg from '../package.json' with { type: 'json' };
13
-
14
- // Check for debug flag
15
- const hasDebugFlag = process.argv.includes('--debug');
16
- if (hasDebugFlag) {
17
- process.env.DEBUG = 'true';
18
- logger.debug('Debug mode enabled');
19
- }
20
-
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
- }
53
-
54
- // Compute the absolute path of this file and its directory
55
- const __filename = fileURLToPath(import.meta.url);
56
- const __dirname = dirname(__filename);
57
-
58
- async function startServer(port, projectDirectory) {
59
- return new Promise((resolvePromise, rejectPromise) => {
60
- // Determine Next.js app directory based on environment:
61
- // In production (published package) __dirname is used.
62
- // In development (npm link), assume the build is in the parent folder.
63
- const isProduction = process.env.NODE_ENV !== 'development';
64
- const nextAppDir = isProduction ? __dirname : join(__dirname, '..');
65
-
66
- const dev = process.env.NODE_ENV === 'development';
67
- const app = next({
68
- dev,
69
- dir: nextAppDir,
70
- conf: {
71
- distDir: '.next',
72
- experimental: { appDir: true }
73
- }
74
- });
75
- const handle = app.getRequestHandler();
76
-
77
- app.prepare()
78
- .then(() => {
79
- const server = express();
80
- process.env.PORT = port.toString();
81
- process.env.D1_PROJECT_DIR = projectDirectory;
82
- const httpServer = createServer((req, res) => handle(req, res));
83
-
84
- server.all('*', (req, res) => handle(req, res));
85
-
86
- httpServer.listen(port, (err) => {
87
- if (err) {
88
- logger.error(chalk.red(`Failed to start server: ${err}`));
89
- rejectPromise(err);
90
- return;
91
- }
92
- logger.info(chalk.green(`Server started on port ${port}`));
93
- resolvePromise(httpServer);
94
- });
95
-
96
- httpServer.on('error', (err) => {
97
- logger.error(chalk.red(`Server error: ${err}`));
98
- rejectPromise(err);
99
- });
100
- })
101
- .catch((err) => {
102
- logger.error(chalk.red(`Failed to prepare Next.js app: ${err}`));
103
- rejectPromise(err);
104
- });
105
- });
106
- }
107
-
108
- async function startStudio() {
109
- try {
110
- logger.info(chalk.green('Initializing D1 Studio...'));
111
-
112
- // Get wrangler configuration
113
- try {
114
- const userProjectPath = process.cwd();
115
- if (!userProjectPath) {
116
- logger.error(chalk.red('Error: Could not determine project directory'));
117
- process.exit(1);
118
- }
119
-
120
- const wranglerResult = await findWranglerConfig(userProjectPath);
121
- if (!wranglerResult || !wranglerResult.config) {
122
- logger.error(chalk.red('\nError: No wrangler.toml found in current directory'));
123
- logger.info(chalk.yellow('Make sure you are in a Cloudflare Workers project directory'));
124
- logger.info(chalk.yellow('with a valid wrangler.toml file.'));
125
- process.exit(1);
126
- }
127
-
128
- const { config, projectPath } = wranglerResult;
129
- if (!config.d1_databases?.length) {
130
- logger.error(chalk.red('\nError: No D1 databases configured in wrangler.toml'));
131
- logger.info(chalk.yellow('\nAdd D1 configuration to your wrangler.toml:'));
132
- logger.info(chalk.gray(`
133
- [[d1_databases]]
134
- binding = "DB"
135
- database_name = "my-database"
136
- database_id = "<your-database-id>"
137
- `));
138
- process.exit(1);
139
- }
140
-
141
- logger.info(chalk.green('\nFound D1 databases:'));
142
- config.d1_databases.forEach((db) => {
143
- logger.info(chalk.blue(` - ${db.database_name} (${db.binding})`));
144
- });
145
-
146
- const port = 4000;
147
- const url = `http://localhost:${port}`;
148
-
149
- await startServer(port, projectPath);
150
-
151
- logger.info(chalk.green(`
152
- ┌─────────────────────────────────────────┐
153
- │ │
154
- │ D1 Studio is running on port ${port} │
155
- │ │
156
- │ Local: ${url} │
157
- │ │
158
- └─────────────────────────────────────────┘
159
- `));
160
-
161
- await new Promise(resolve => setTimeout(resolve, 2000));
162
-
163
- try {
164
- await open(url, {
165
- wait: false,
166
- url: true,
167
- app: { name: open.apps.chrome }
168
- }).catch(() => {
169
- return open(url, { wait: false, url: true });
170
- });
171
- } catch (browserError) {
172
- logger.info(chalk.yellow('\nCould not automatically open browser.'));
173
- logger.info(chalk.blue(`Please open your browser and navigate to: ${url}`));
174
- }
175
- } catch (configError) {
176
- logger.error(chalk.red(`\nConfiguration error: ${configError.message}`));
177
- process.exit(1);
178
- }
179
- } catch (error) {
180
- logger.error(chalk.red(`\nFailed to start D1 Studio: ${error}`));
181
- process.exit(1);
182
- }
183
- }
184
-
185
- // Handle termination
186
- process.on('SIGINT', () => {
187
- logger.info(chalk.yellow('\nShutting down D1 Studio...'));
188
- process.exit(0);
189
- });
190
-
191
- process.on('SIGTERM', () => {
192
- logger.info(chalk.yellow('\nShutting down D1 Studio...'));
193
- process.exit(0);
194
- });
195
-
196
- startStudio().catch((error) => {
197
- logger.error(chalk.red(`\nFailed to start D1 Studio: ${error}`));
198
- process.exit(1);
199
- });
package/scripts/test.js DELETED
@@ -1,366 +0,0 @@
1
- // scripts/test.js
2
- import { findWranglerConfig } from '../src/lib/find-wrangler-config.js';
3
- import { fileURLToPath } from 'url';
4
- import { dirname, join } from 'path';
5
- import chalk from 'chalk';
6
- import fs from 'fs/promises';
7
- import os from 'os';
8
- import { exec, execSync } from 'child_process';
9
- import { promisify } from 'util';
10
- import winston from 'winston';
11
- import logger from '../src/lib/logger.js';
12
-
13
- const execAsync = promisify(exec);
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = dirname(__filename);
16
-
17
- // Mock license data for testing
18
- const mockLicenseData = {
19
- licenseKey: 'test-license-key',
20
- email: 'test@example.com',
21
- hardwareId: 'mock-hardware-id',
22
- end_date: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(), // 30 days from now
23
- subscription_status: 'active',
24
- type: 'test',
25
- activatedAt: new Date().toISOString()
26
- };
27
-
28
- // Test configuration file contents
29
- const mockNextConfig = `
30
- /** @type {import('next').NextConfig} */
31
- const nextConfig = {
32
- output: 'standalone',
33
- }
34
- module.exports = nextConfig
35
- `;
36
-
37
- const mockTailwindConfig = `
38
- /** @type {import('tailwindcss').Config} */
39
- module.exports = {
40
- content: [
41
- './src/**/*.{js,ts,jsx,tsx,mdx}',
42
- ],
43
- theme: {
44
- extend: {},
45
- },
46
- plugins: [],
47
- }
48
- `;
49
-
50
- // Test Wrangler config file contents
51
- const mockWranglerConfig = `
52
- [[d1_databases]]
53
- binding = "DB"
54
- database_name = "test_db"
55
- database_id = "test-id"
56
- `;
57
-
58
- // Create mock configuration files in a given directory.
59
- async function createMockConfigs(testDir) {
60
- await fs.writeFile(join(testDir, 'next.config.js'), mockNextConfig);
61
- await fs.writeFile(join(testDir, 'tailwind.config.js'), mockTailwindConfig);
62
- await fs.writeFile(join(testDir, 'wrangler.toml'), mockWranglerConfig);
63
- }
64
-
65
- async function createMockPackageAndDist(testDir) {
66
- const packageJsonPath = join(testDir, 'package.json');
67
- const packageJsonContent = JSON.stringify({
68
- name: "d1-studio",
69
- version: "1.0.0",
70
- main: "dist/d1-studio.js"
71
- }, null, 2);
72
- await fs.writeFile(packageJsonPath, packageJsonContent);
73
-
74
- const distDir = join(testDir, 'dist');
75
- await fs.mkdir(distDir, { recursive: true });
76
- const d1StudioPath = join(distDir, 'd1-studio.js');
77
- const d1StudioContent = `#!/usr/bin/env node
78
- if (process.argv.includes('--version')) {
79
- console.log('1.0.0');
80
- } else {
81
- console.log('D1 Studio CLI');
82
- }
83
- `;
84
- await fs.writeFile(d1StudioPath, d1StudioContent);
85
- await fs.chmod(d1StudioPath, 0o755);
86
- }
87
-
88
- async function testProjectStructure() {
89
- console.log('\nTesting project structure...');
90
- const requiredDirs = ['src', 'scripts', 'dist'];
91
- for (const dir of requiredDirs) {
92
- try {
93
- await fs.access(join(__dirname, '..', dir));
94
- console.log(chalk.green(`✓ ${dir} directory exists`));
95
- } catch {
96
- console.warn(chalk.yellow(`⚠ ${dir} directory missing`));
97
- }
98
- }
99
- const testDir = await fs.mkdtemp(join(os.tmpdir(), 'd1-studio-test-'));
100
- await createMockConfigs(testDir);
101
- await createMockPackageAndDist(testDir);
102
- const requiredFiles = [
103
- 'package.json',
104
- 'next.config.js',
105
- 'tailwind.config.js',
106
- 'scripts/studio.js'
107
- ];
108
- for (const file of requiredFiles) {
109
- try {
110
- await fs.access(join(testDir, file));
111
- console.log(chalk.green(`✓ ${file} exists`));
112
- } catch {
113
- console.warn(chalk.yellow(`⚠ ${file} missing or not copied`));
114
- }
115
- }
116
- return testDir;
117
- }
118
-
119
- async function testWranglerConfig(testDir) {
120
- console.log('\nTesting Wrangler configuration...');
121
- try {
122
- const config = await findWranglerConfig(testDir);
123
- if (!config || !config.config.d1_databases) {
124
- console.warn(chalk.yellow('⚠ Valid wrangler.toml test: Config parsing incomplete'));
125
- } else {
126
- console.log(chalk.green('✓ Valid wrangler.toml test passed'));
127
- }
128
- } catch (error) {
129
- console.warn(chalk.yellow('⚠ Valid wrangler.toml test issues:'), error.message);
130
- }
131
- try {
132
- await fs.writeFile(join(testDir, 'wrangler.toml'), 'invalid: config: {');
133
- await findWranglerConfig(testDir);
134
- console.warn(chalk.yellow('⚠ Invalid wrangler.toml test: Did not catch invalid config'));
135
- } catch (error) {
136
- console.log(chalk.green('✓ Invalid wrangler.toml handling test passed'));
137
- }
138
- }
139
-
140
- async function testCaching(testDir) {
141
- console.log('\nTesting caching of findWranglerConfig...');
142
- const config1 = await findWranglerConfig(testDir);
143
- console.log(chalk.green('✓ First call completed.'));
144
- const config2 = await findWranglerConfig(testDir);
145
- console.log(chalk.green('✓ Second call completed.'));
146
- if (JSON.stringify(config1) === JSON.stringify(config2)) {
147
- console.log(chalk.green('✓ Caching works: configurations are identical'));
148
- } else {
149
- console.warn(chalk.yellow('⚠ Caching issue: configurations differ'));
150
- }
151
- const newTestDir = await fs.mkdtemp(join(os.tmpdir(), 'new-d1-studio-test-'));
152
- await fs.writeFile(join(newTestDir, 'wrangler.toml'), mockWranglerConfig);
153
- const configNew = await findWranglerConfig(newTestDir);
154
- console.log(chalk.green('✓ New project configuration loaded.'));
155
- await fs.rm(newTestDir, { recursive: true, force: true });
156
- }
157
-
158
- async function testLoggerBehavior() {
159
- console.log('\nTesting logger behavior in production mode...');
160
- const { combine, timestamp, colorize, printf } = winston.format;
161
- const logFormat = printf(({ level, message, timestamp }) => {
162
- return `${timestamp} ${level}: ${message}`;
163
- });
164
- const originalNodeEnv = process.env.NODE_ENV;
165
- const originalDebug = process.env.DEBUG;
166
- process.env.NODE_ENV = 'production';
167
- process.env.DEBUG = 'false';
168
- class MemoryTransport extends winston.Transport {
169
- constructor(opts) {
170
- super(opts);
171
- this.logs = [];
172
- }
173
- log(info, callback) {
174
- this.logs.push(info);
175
- callback();
176
- }
177
- }
178
- const memTransport = new MemoryTransport({ level: 'warn' });
179
- logger.configure({
180
- level: 'warn',
181
- format: combine(
182
- timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
183
- colorize(),
184
- logFormat
185
- ),
186
- transports: [
187
- new winston.transports.Console({ level: 'warn', silent: true }),
188
- memTransport
189
- ]
190
- });
191
- logger.debug('Test debug message');
192
- logger.info('Test info message');
193
- logger.warn('Test warn message');
194
- logger.error('Test error message');
195
- await new Promise(resolve => setTimeout(resolve, 100));
196
- const messages = memTransport.logs.map(log => log.message);
197
- if (messages.includes('Test debug message') || messages.includes('Test info message')) {
198
- console.warn(chalk.yellow('⚠ Logger behavior failed in production mode: debug or info messages were logged.'));
199
- } else {
200
- console.log(chalk.green('✓ Logger behavior in production mode passed: only warn/error messages logged.'));
201
- }
202
- logger.clear();
203
- process.env.NODE_ENV = originalNodeEnv;
204
- process.env.DEBUG = originalDebug;
205
- }
206
-
207
- async function testPackageExecution(testDir) {
208
- console.log('\nTesting package execution...');
209
- try {
210
- const destDir = join(testDir, 'node_modules', 'd1studio');
211
- await fs.mkdir(destDir, { recursive: true });
212
- await fs.cp(join(testDir, 'dist'), destDir, { recursive: true });
213
- const d1StudioPath = join(destDir, 'dist', 'd1-studio.js');
214
- try {
215
- await fs.access(d1StudioPath);
216
- console.log(chalk.green(`✓ Found d1-studio.js at ${d1StudioPath}`));
217
- } catch (err) {
218
- throw new Error(`d1-studio.js not found at ${d1StudioPath}`);
219
- }
220
- process.env.NODE_ENV = 'development';
221
- await execAsync('node ./dist/d1-studio.js --version', { cwd: testDir });
222
- console.log(chalk.green('✓ Development mode execution test passed'));
223
- process.env.NODE_ENV = 'production';
224
- await execAsync('node ./node_modules/d1studio/dist/d1-studio.js --version', { cwd: testDir });
225
- console.log(chalk.green('✓ Production mode execution test passed'));
226
- } catch (error) {
227
- console.error(chalk.red('Package execution test failed:', error));
228
- }
229
- }
230
-
231
- async function setupTestPackage(testDir) {
232
- console.log('\nSetting up test package structure...');
233
- try {
234
- const packageDir = join(testDir, 'node_modules', 'd1studio');
235
- await fs.mkdir(packageDir, { recursive: true });
236
- await fs.cp(join(__dirname, '..', 'dist'), packageDir, { recursive: true, force: true });
237
- const packageJson = JSON.parse(
238
- await fs.readFile(join(__dirname, '..', 'package.json'), 'utf8')
239
- );
240
- await fs.writeFile(join(packageDir, 'package.json'), JSON.stringify(packageJson, null, 2));
241
- await fs.chmod(join(packageDir, 'd1-studio.js'), 0o755);
242
- console.log(chalk.green('✓ Package structure created successfully'));
243
- return packageDir;
244
- } catch (error) {
245
- console.error(chalk.red('Failed to setup test package:', error));
246
- throw error;
247
- }
248
- }
249
-
250
- async function copyStudioScript(testDir) {
251
- try {
252
- await fs.mkdir(join(testDir, 'scripts'), { recursive: true });
253
- await fs.copyFile(join(__dirname, 'studio.js'), join(testDir, 'scripts', 'studio.js'));
254
- await fs.chmod(join(testDir, 'scripts', 'studio.js'), 0o755);
255
- console.log(chalk.green('✓ studio.js copied and made executable'));
256
- } catch (error) {
257
- console.error(chalk.red('Failed to copy studio.js:', error));
258
- throw error;
259
- }
260
- }
261
-
262
- async function testStudioScript(testDir) {
263
- console.log('\nTesting studio.js script...');
264
- try {
265
- await copyStudioScript(testDir);
266
- const studioPath = join(testDir, 'scripts', 'studio.js');
267
- const stats = await fs.stat(studioPath);
268
- const isExecutable = (stats.mode & 0o111) !== 0;
269
- if (!isExecutable) {
270
- console.warn(chalk.yellow('⚠ studio.js is not executable'));
271
- await fs.chmod(studioPath, 0o755);
272
- console.log(chalk.green('✓ Made studio.js executable'));
273
- } else {
274
- console.log(chalk.green('✓ studio.js has correct permissions'));
275
- }
276
- const content = await fs.readFile(studioPath, 'utf8');
277
- const requiredImports = ['chalk', 'open', 'findWranglerConfig'];
278
- let missingImports = [];
279
- for (const imp of requiredImports) {
280
- if (!content.includes(imp)) {
281
- missingImports.push(imp);
282
- }
283
- }
284
- if (missingImports.length > 0) {
285
- console.warn(chalk.yellow(`⚠ studio.js missing imports: ${missingImports.join(', ')}`));
286
- } else {
287
- console.log(chalk.green('✓ studio.js contains required imports'));
288
- }
289
- try {
290
- await execAsync('node ./scripts/studio.js --version', {
291
- cwd: testDir,
292
- env: { ...process.env, NODE_PATH: join(testDir, 'node_modules') }
293
- });
294
- console.log(chalk.green('✓ studio.js execution test passed'));
295
- } catch (execError) {
296
- console.warn(chalk.yellow('⚠ studio.js execution test failed:', execError.message));
297
- }
298
- } catch (error) {
299
- console.warn(chalk.yellow('⚠ studio.js test issues:'), error.message);
300
- }
301
- }
302
-
303
- async function testLicenseValidation(testDir) {
304
- console.log('\nTesting license validation...');
305
- const d1StudioDir = join(testDir, '.d1studio');
306
- const licenseFile = join(d1StudioDir, 'license.json');
307
- try {
308
- await fs.mkdir(d1StudioDir, { recursive: true });
309
- await fs.writeFile(licenseFile, JSON.stringify(mockLicenseData, null, 2));
310
- console.log(chalk.green('✓ Successfully created test license file'));
311
- const license = JSON.parse(await fs.readFile(licenseFile, 'utf8'));
312
- const requiredFields = ['licenseKey', 'email', 'hardwareId', 'subscription_status', 'end_date'];
313
- const missingFields = requiredFields.filter(field => !license[field]);
314
- if (missingFields.length > 0) {
315
- console.warn(chalk.yellow(`⚠ License file missing fields: ${missingFields.join(', ')}`));
316
- } else {
317
- console.log(chalk.green('✓ License file structure validated'));
318
- }
319
- const expiredLicense = {
320
- ...mockLicenseData,
321
- end_date: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString() // 1 day ago
322
- };
323
- await fs.writeFile(licenseFile, JSON.stringify(expiredLicense, null, 2));
324
- console.log(chalk.green('✓ Successfully tested expired license scenario'));
325
- const expiringSoonLicense = {
326
- ...mockLicenseData,
327
- end_date: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000).toISOString() // 5 days from now
328
- };
329
- await fs.writeFile(licenseFile, JSON.stringify(expiringSoonLicense, null, 2));
330
- console.log(chalk.green('✓ Successfully tested expiring soon scenario'));
331
- } catch (error) {
332
- console.error(chalk.red('License validation test failed:', error));
333
- }
334
- }
335
-
336
- async function runTests() {
337
- console.log(chalk.blue('Running D1 Studio tests...'));
338
- let testDir = null;
339
- try {
340
- testDir = await testProjectStructure();
341
- await testWranglerConfig(testDir);
342
- await testCaching(testDir);
343
- await testStudioScript(testDir);
344
- await testLicenseValidation(testDir);
345
- await testPackageExecution(testDir);
346
- await testLoggerBehavior();
347
- console.log(chalk.green('\nAll tests completed successfully! 🎉'));
348
- console.log(chalk.blue('\nTest Summary:'));
349
- console.log(chalk.blue('============'));
350
- console.log(chalk.yellow('Check warnings above for any issues that need attention.'));
351
- console.log(chalk.blue('\nTest directory:', testDir));
352
- } catch (error) {
353
- console.error(chalk.red('\nTests failed:', error));
354
- process.exit(1);
355
- } finally {
356
- if (testDir) {
357
- console.log(chalk.blue('\nCleaning up test directory...'));
358
- await fs.rm(testDir, { recursive: true, force: true }).catch(() => {});
359
- }
360
- }
361
- }
362
-
363
- runTests().catch(error => {
364
- console.error(chalk.red('Test suite failed:', error));
365
- process.exit(1);
366
- });