wrangler 0.0.0-e6c9c5c0 → 0.0.0-e6ddf8a7

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 (285) hide show
  1. package/README.md +12 -14
  2. package/bin/wrangler.js +14 -75
  3. package/package.json +210 -194
  4. package/templates/__tests__/tsconfig.json +1 -1
  5. package/templates/checked-fetch.js +19 -4
  6. package/templates/facade.d.ts +4 -1
  7. package/templates/gitignore +1 -0
  8. package/templates/middleware/common.ts +9 -4
  9. package/templates/middleware/loader-modules.ts +64 -11
  10. package/templates/middleware/loader-sw.ts +2 -7
  11. package/templates/middleware/middleware-d1-beta.d.ts +3 -0
  12. package/templates/middleware/middleware-miniflare3-json-error.ts +18 -5
  13. package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
  14. package/templates/middleware/middleware-multiworker-dev.ts +68 -0
  15. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  16. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  17. package/templates/modules-watch-stub.js +4 -0
  18. package/templates/new-worker-scheduled.ts +1 -1
  19. package/templates/new-worker.ts +4 -1
  20. package/templates/pages-dev-util.ts +4 -1
  21. package/templates/pages-shim.ts +0 -3
  22. package/templates/pages-template-plugin.ts +19 -5
  23. package/templates/pages-template-worker.ts +11 -2
  24. package/templates/tsconfig.init.json +1 -2
  25. package/templates/tsconfig.json +1 -1
  26. package/wrangler-dist/cli.d.ts +842 -128
  27. package/wrangler-dist/cli.js +110076 -103044
  28. package/wrangler-dist/wasm-sync.wasm +0 -0
  29. package/import_meta_url.js +0 -3
  30. package/miniflare-config-stubs/.env.empty +0 -0
  31. package/miniflare-config-stubs/package.empty.json +0 -1
  32. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  33. package/miniflare-dist/index.mjs +0 -6364
  34. package/src/__tests__/access.test.ts +0 -25
  35. package/src/__tests__/api-dev.test.ts +0 -238
  36. package/src/__tests__/api-devregistry.test.js +0 -64
  37. package/src/__tests__/api.test.ts +0 -80
  38. package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
  39. package/src/__tests__/config-cache.test.ts +0 -42
  40. package/src/__tests__/configuration.test.ts +0 -4163
  41. package/src/__tests__/d1/d1.test.ts +0 -127
  42. package/src/__tests__/d1/splitter.test.ts +0 -255
  43. package/src/__tests__/delete.test.ts +0 -266
  44. package/src/__tests__/deployments.test.ts +0 -105
  45. package/src/__tests__/dev.test.tsx +0 -1586
  46. package/src/__tests__/generate.test.ts +0 -238
  47. package/src/__tests__/get-host-from-url.test.ts +0 -16
  48. package/src/__tests__/guess-worker-format.test.ts +0 -85
  49. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  50. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  51. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  52. package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
  53. package/src/__tests__/helpers/mock-bin.ts +0 -36
  54. package/src/__tests__/helpers/mock-console.ts +0 -106
  55. package/src/__tests__/helpers/mock-dialogs.ts +0 -139
  56. package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
  57. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  58. package/src/__tests__/helpers/mock-istty.ts +0 -74
  59. package/src/__tests__/helpers/mock-known-routes.ts +0 -12
  60. package/src/__tests__/helpers/mock-kv.ts +0 -46
  61. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
  62. package/src/__tests__/helpers/mock-process.ts +0 -34
  63. package/src/__tests__/helpers/mock-stdin.ts +0 -108
  64. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  65. package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
  66. package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
  67. package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -69
  68. package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
  69. package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
  70. package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
  71. package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
  72. package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
  73. package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
  74. package/src/__tests__/helpers/msw/index.ts +0 -50
  75. package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
  76. package/src/__tests__/helpers/run-in-tmp.ts +0 -38
  77. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  78. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
  79. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
  80. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
  81. package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
  82. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
  83. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  84. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  85. package/src/__tests__/https-options.test.ts +0 -163
  86. package/src/__tests__/index.test.ts +0 -268
  87. package/src/__tests__/init.test.ts +0 -3164
  88. package/src/__tests__/jest.setup.ts +0 -175
  89. package/src/__tests__/kv.test.ts +0 -1788
  90. package/src/__tests__/logger.test.ts +0 -141
  91. package/src/__tests__/logout.test.ts +0 -47
  92. package/src/__tests__/metrics.test.ts +0 -493
  93. package/src/__tests__/middleware.scheduled.test.ts +0 -145
  94. package/src/__tests__/middleware.test.ts +0 -750
  95. package/src/__tests__/package-manager.test.ts +0 -353
  96. package/src/__tests__/pages-deployment-tail.test.ts +0 -955
  97. package/src/__tests__/pages.test.ts +0 -2898
  98. package/src/__tests__/parse.test.ts +0 -330
  99. package/src/__tests__/paths.test.ts +0 -39
  100. package/src/__tests__/publish.test.ts +0 -8117
  101. package/src/__tests__/pubsub.test.ts +0 -490
  102. package/src/__tests__/queues.test.ts +0 -522
  103. package/src/__tests__/r2.test.ts +0 -369
  104. package/src/__tests__/route.test.ts +0 -45
  105. package/src/__tests__/secret.test.ts +0 -693
  106. package/src/__tests__/tail.test.ts +0 -958
  107. package/src/__tests__/test-old-node-version.js +0 -31
  108. package/src/__tests__/tsconfig-sanity.ts +0 -12
  109. package/src/__tests__/tsconfig.json +0 -8
  110. package/src/__tests__/tsconfig.tsbuildinfo +0 -1
  111. package/src/__tests__/type-generation.test.ts +0 -233
  112. package/src/__tests__/user.test.ts +0 -118
  113. package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
  114. package/src/__tests__/validate-dev-props.test.ts +0 -56
  115. package/src/__tests__/version.test.ts +0 -35
  116. package/src/__tests__/whoami.test.tsx +0 -172
  117. package/src/__tests__/worker-namespace.test.ts +0 -334
  118. package/src/abort.d.ts +0 -3
  119. package/src/api/dev.ts +0 -259
  120. package/src/api/index.ts +0 -3
  121. package/src/api/pages/index.ts +0 -5
  122. package/src/api/pages/publish.tsx +0 -321
  123. package/src/bundle-reporter.ts +0 -68
  124. package/src/bundle.ts +0 -875
  125. package/src/cfetch/index.ts +0 -158
  126. package/src/cfetch/internal.ts +0 -258
  127. package/src/cli.ts +0 -28
  128. package/src/config/README.md +0 -107
  129. package/src/config/config.ts +0 -275
  130. package/src/config/diagnostics.ts +0 -80
  131. package/src/config/environment.ts +0 -579
  132. package/src/config/index.ts +0 -358
  133. package/src/config/validation-helpers.ts +0 -597
  134. package/src/config/validation.ts +0 -2151
  135. package/src/config-cache.ts +0 -85
  136. package/src/create-worker-preview.ts +0 -282
  137. package/src/create-worker-upload-form.ts +0 -325
  138. package/src/d1/backups.tsx +0 -219
  139. package/src/d1/constants.ts +0 -2
  140. package/src/d1/create.tsx +0 -63
  141. package/src/d1/delete.ts +0 -56
  142. package/src/d1/execute.tsx +0 -323
  143. package/src/d1/formatTimeAgo.ts +0 -14
  144. package/src/d1/index.ts +0 -101
  145. package/src/d1/list.tsx +0 -48
  146. package/src/d1/migrations/apply.tsx +0 -197
  147. package/src/d1/migrations/create.tsx +0 -77
  148. package/src/d1/migrations/helpers.ts +0 -147
  149. package/src/d1/migrations/index.ts +0 -3
  150. package/src/d1/migrations/list.tsx +0 -79
  151. package/src/d1/migrations/options.ts +0 -18
  152. package/src/d1/options.ts +0 -22
  153. package/src/d1/splitter.ts +0 -161
  154. package/src/d1/types.ts +0 -24
  155. package/src/d1/utils.ts +0 -48
  156. package/src/delete.ts +0 -103
  157. package/src/deployments.ts +0 -93
  158. package/src/deprecated/index.ts +0 -145
  159. package/src/dev/dev-vars.ts +0 -39
  160. package/src/dev/dev.tsx +0 -614
  161. package/src/dev/get-local-persistence-path.ts +0 -31
  162. package/src/dev/local.tsx +0 -923
  163. package/src/dev/remote.tsx +0 -632
  164. package/src/dev/start-server.ts +0 -538
  165. package/src/dev/use-esbuild.ts +0 -205
  166. package/src/dev/validate-dev-props.ts +0 -31
  167. package/src/dev-registry.ts +0 -201
  168. package/src/dev.tsx +0 -949
  169. package/src/dialogs.ts +0 -136
  170. package/src/dispatch-namespace.ts +0 -207
  171. package/src/docs/index.ts +0 -98
  172. package/src/durable.ts +0 -102
  173. package/src/entry.ts +0 -328
  174. package/src/environment-variables/factory.ts +0 -88
  175. package/src/environment-variables/misc-variables.ts +0 -30
  176. package/src/errors.ts +0 -11
  177. package/src/generate/index.ts +0 -300
  178. package/src/git-client.ts +0 -135
  179. package/src/global-wrangler-config-path.ts +0 -26
  180. package/src/https-options.ts +0 -127
  181. package/src/index.ts +0 -694
  182. package/src/init.ts +0 -1024
  183. package/src/inspect.ts +0 -767
  184. package/src/intl-polyfill.d.ts +0 -139
  185. package/src/is-ci.ts +0 -14
  186. package/src/is-interactive.ts +0 -16
  187. package/src/jest.d.ts +0 -4
  188. package/src/kv/helpers.ts +0 -430
  189. package/src/kv/index.ts +0 -596
  190. package/src/logger.ts +0 -104
  191. package/src/metrics/index.ts +0 -5
  192. package/src/metrics/metrics-config.ts +0 -239
  193. package/src/metrics/metrics-dispatcher.ts +0 -96
  194. package/src/metrics/metrics-usage-headers.ts +0 -24
  195. package/src/metrics/send-event.ts +0 -98
  196. package/src/miniflare-cli/README.md +0 -30
  197. package/src/miniflare-cli/assets.ts +0 -250
  198. package/src/miniflare-cli/index.ts +0 -210
  199. package/src/miniflare-cli/request-context.ts +0 -40
  200. package/src/miniflare-cli/tsconfig.json +0 -9
  201. package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
  202. package/src/miniflare-cli/types.ts +0 -11
  203. package/src/module-collection.ts +0 -267
  204. package/src/open-in-browser.ts +0 -17
  205. package/src/package-manager.ts +0 -219
  206. package/src/pages/build.ts +0 -150
  207. package/src/pages/buildFunctions.ts +0 -129
  208. package/src/pages/constants.ts +0 -18
  209. package/src/pages/deployment-tails.ts +0 -284
  210. package/src/pages/deployments.tsx +0 -84
  211. package/src/pages/dev.ts +0 -716
  212. package/src/pages/errors.ts +0 -66
  213. package/src/pages/functions/buildPlugin.ts +0 -90
  214. package/src/pages/functions/buildWorker.ts +0 -288
  215. package/src/pages/functions/filepath-routing.test.ts +0 -234
  216. package/src/pages/functions/filepath-routing.ts +0 -189
  217. package/src/pages/functions/identifiers.ts +0 -78
  218. package/src/pages/functions/routes-consolidation.test.ts +0 -250
  219. package/src/pages/functions/routes-consolidation.ts +0 -73
  220. package/src/pages/functions/routes-transformation.test.ts +0 -282
  221. package/src/pages/functions/routes-transformation.ts +0 -115
  222. package/src/pages/functions/routes-validation.test.ts +0 -403
  223. package/src/pages/functions/routes-validation.ts +0 -202
  224. package/src/pages/functions/routes.ts +0 -151
  225. package/src/pages/functions/tsconfig.json +0 -8
  226. package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
  227. package/src/pages/functions.ts +0 -82
  228. package/src/pages/hash.ts +0 -13
  229. package/src/pages/index.ts +0 -102
  230. package/src/pages/projects.tsx +0 -167
  231. package/src/pages/prompt-select-project.tsx +0 -31
  232. package/src/pages/publish.tsx +0 -263
  233. package/src/pages/types.ts +0 -41
  234. package/src/pages/upload.tsx +0 -447
  235. package/src/pages/utils.ts +0 -23
  236. package/src/parse.ts +0 -286
  237. package/src/paths.ts +0 -71
  238. package/src/proxy.ts +0 -694
  239. package/src/publish/index.ts +0 -270
  240. package/src/publish/publish.ts +0 -1064
  241. package/src/pubsub/index.ts +0 -286
  242. package/src/pubsub/pubsub-commands.ts +0 -624
  243. package/src/queues/cli/commands/consumer/add.ts +0 -71
  244. package/src/queues/cli/commands/consumer/index.ts +0 -22
  245. package/src/queues/cli/commands/consumer/remove.ts +0 -38
  246. package/src/queues/cli/commands/create.ts +0 -25
  247. package/src/queues/cli/commands/delete.ts +0 -26
  248. package/src/queues/cli/commands/index.ts +0 -36
  249. package/src/queues/cli/commands/list.ts +0 -25
  250. package/src/queues/client.ts +0 -135
  251. package/src/queues/utils.ts +0 -18
  252. package/src/r2/constants.ts +0 -4
  253. package/src/r2/helpers.ts +0 -131
  254. package/src/r2/index.ts +0 -289
  255. package/src/routes.ts +0 -140
  256. package/src/secret/index.ts +0 -379
  257. package/src/selfsigned.d.ts +0 -29
  258. package/src/sites.ts +0 -372
  259. package/src/tail/createTail.ts +0 -406
  260. package/src/tail/filters.ts +0 -277
  261. package/src/tail/index.ts +0 -213
  262. package/src/tail/printing.ts +0 -122
  263. package/src/tsconfig-sanity.ts +0 -16
  264. package/src/type-generation.ts +0 -181
  265. package/src/update-check.ts +0 -19
  266. package/src/user/access.ts +0 -68
  267. package/src/user/auth-variables.ts +0 -113
  268. package/src/user/choose-account.tsx +0 -39
  269. package/src/user/generate-auth-url.ts +0 -33
  270. package/src/user/generate-random-state.ts +0 -16
  271. package/src/user/index.ts +0 -2
  272. package/src/user/user.ts +0 -1232
  273. package/src/utils/collectKeyValues.ts +0 -14
  274. package/src/whoami.ts +0 -135
  275. package/src/worker.ts +0 -251
  276. package/src/yargs-types.ts +0 -24
  277. package/src/zones.ts +0 -191
  278. package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
  279. package/templates/d1-beta-facade.js +0 -241
  280. package/templates/first-party-worker-module-facade.ts +0 -19
  281. package/templates/format-dev-errors.ts +0 -33
  282. package/templates/serve-static-assets.ts +0 -65
  283. package/templates/service-bindings-module-facade.js +0 -54
  284. package/templates/service-bindings-sw-facade.js +0 -42
  285. package/templates/tsconfig.tsbuildinfo +0 -1
@@ -1,127 +0,0 @@
1
- import { cwd } from "process";
2
- import { mockConsoleMethods } from "../helpers/mock-console";
3
- import { useMockIsTTY } from "../helpers/mock-istty";
4
- import { runInTempDir } from "../helpers/run-in-tmp";
5
- import { runWrangler } from "../helpers/run-wrangler";
6
- import writeWranglerToml from "../helpers/write-wrangler-toml";
7
-
8
- function endEventLoop() {
9
- return new Promise((resolve) => setImmediate(resolve));
10
- }
11
-
12
- describe("d1", () => {
13
- const std = mockConsoleMethods();
14
- runInTempDir();
15
- const { setIsTTY } = useMockIsTTY();
16
-
17
- it("should show help when no argument is passed", async () => {
18
- await runWrangler("d1");
19
- await endEventLoop();
20
-
21
- expect(std.out).toMatchInlineSnapshot(`
22
- "wrangler d1
23
-
24
- 🗄 Interact with a D1 database
25
-
26
- Commands:
27
- wrangler d1 list List D1 databases
28
- wrangler d1 create <name> Create D1 database
29
- wrangler d1 delete <name> Delete D1 database
30
- wrangler d1 backup Interact with D1 Backups
31
- wrangler d1 execute <database> Executed command or SQL file
32
- wrangler d1 migrations Interact with D1 Migrations
33
-
34
- Flags:
35
- -c, --config Path to .toml configuration file [string]
36
- -e, --env Environment to use for operations and .env files [string]
37
- -h, --help Show help [boolean]
38
- -v, --version Show version number [boolean]
39
-
40
- --------------------
41
- 🚧 D1 is currently in open alpha and is not recommended for production data and traffic
42
- 🚧 Please report any bugs to https://github.com/cloudflare/wrangler2/issues/new/choose
43
- 🚧 To request features, visit https://community.cloudflare.com/c/developers/d1
44
- 🚧 To give feedback, visit https://discord.gg/cloudflaredev
45
- --------------------"
46
- `);
47
- });
48
-
49
- it("should show help when an invalid argument is passed", async () => {
50
- await expect(() => runWrangler("d1 asdf")).rejects.toThrow(
51
- "Unknown argument: asdf"
52
- );
53
-
54
- expect(std.err).toMatchInlineSnapshot(`
55
- "X [ERROR] Unknown argument: asdf
56
-
57
- "
58
- `);
59
- expect(std.out).toMatchInlineSnapshot(`
60
- "
61
- wrangler d1
62
-
63
- 🗄 Interact with a D1 database
64
-
65
- Commands:
66
- wrangler d1 list List D1 databases
67
- wrangler d1 create <name> Create D1 database
68
- wrangler d1 delete <name> Delete D1 database
69
- wrangler d1 backup Interact with D1 Backups
70
- wrangler d1 execute <database> Executed command or SQL file
71
- wrangler d1 migrations Interact with D1 Migrations
72
-
73
- Flags:
74
- -c, --config Path to .toml configuration file [string]
75
- -e, --env Environment to use for operations and .env files [string]
76
- -h, --help Show help [boolean]
77
- -v, --version Show version number [boolean]
78
-
79
- --------------------
80
- 🚧 D1 is currently in open alpha and is not recommended for production data and traffic
81
- 🚧 Please report any bugs to https://github.com/cloudflare/wrangler2/issues/new/choose
82
- 🚧 To request features, visit https://community.cloudflare.com/c/developers/d1
83
- 🚧 To give feedback, visit https://discord.gg/cloudflaredev
84
- --------------------"
85
- `);
86
- });
87
-
88
- describe("migrate", () => {
89
- describe("apply", () => {
90
- it("should not attempt to login in local mode", async () => {
91
- setIsTTY(false);
92
- writeWranglerToml({
93
- d1_databases: [
94
- { binding: "DATABASE", database_name: "db", database_id: "xxxx" },
95
- ],
96
- });
97
- // If we get to the point where we are checking for migrations then we have not been asked to log in.
98
- await expect(
99
- runWrangler("d1 migrations apply --local DATABASE")
100
- ).rejects.toThrowError(
101
- `No migrations present at ${cwd().replaceAll("\\", "/")}/migrations.`
102
- );
103
- });
104
-
105
- it("should try to read D1 config from wrangler.toml", async () => {
106
- setIsTTY(false);
107
- writeWranglerToml();
108
- await expect(
109
- runWrangler("d1 migrations apply DATABASE")
110
- ).rejects.toThrowError(
111
- "Can't find a DB with name/binding 'DATABASE' in local config. Check info in wrangler.toml..."
112
- );
113
- });
114
-
115
- it("should not try to read wrangler.toml in local mode", async () => {
116
- setIsTTY(false);
117
- writeWranglerToml();
118
- // If we get to the point where we are checking for migrations then we have not checked wrangler.toml.
119
- await expect(
120
- runWrangler("d1 migrations apply --local DATABASE")
121
- ).rejects.toThrowError(
122
- `No migrations present at ${cwd().replaceAll("\\", "/")}/migrations.`
123
- );
124
- });
125
- });
126
- });
127
- });
@@ -1,255 +0,0 @@
1
- import splitSqlQuery, { mayContainMultipleStatements } from "../../d1/splitter";
2
-
3
- describe("mayContainMultipleStatements()", () => {
4
- it("should return false if there is only a semi-colon at the end", () => {
5
- expect(mayContainMultipleStatements(`SELECT * FROM my_table`)).toBe(false);
6
- expect(
7
- mayContainMultipleStatements(`SELECT * FROM my_table WHERE id = 42;`)
8
- ).toBe(false);
9
- expect(
10
- mayContainMultipleStatements(`SELECT * FROM my_table WHERE id = 42; `)
11
- ).toBe(false);
12
- });
13
-
14
- it("should return true if there is a semi-colon before the end of the string", () => {
15
- expect(
16
- mayContainMultipleStatements(
17
- `SELECT * FROM my_table WHERE val = "foo;bar";`
18
- )
19
- ).toBe(true);
20
- });
21
-
22
- it("should return true if there is more than one statement", () => {
23
- expect(
24
- mayContainMultipleStatements(
25
- `
26
- INSERT INTO my_table (id, value) VALUES (42, 'foo');
27
- SELECT * FROM my_table WHERE id = 42;
28
- `
29
- )
30
- ).toBe(true);
31
- });
32
- });
33
-
34
- describe("splitSqlQuery()", () => {
35
- it("should return original SQL if there are no real statements", () => {
36
- expect(splitSqlQuery(`;;;`)).toMatchInlineSnapshot(`
37
- Array [
38
- ";;;",
39
- ]
40
- `);
41
- });
42
-
43
- it("should not split single statements", () => {
44
- expect(splitSqlQuery(`SELECT * FROM my_table`)).toMatchInlineSnapshot(`
45
- Array [
46
- "SELECT * FROM my_table",
47
- ]
48
- `);
49
- expect(splitSqlQuery(`SELECT * FROM my_table WHERE id = 42;`))
50
- .toMatchInlineSnapshot(`
51
- Array [
52
- "SELECT * FROM my_table WHERE id = 42;",
53
- ]
54
- `);
55
- expect(
56
- splitSqlQuery(
57
- `
58
- SELECT * FROM my_table WHERE id = 42;
59
- `
60
- )
61
- ).toMatchInlineSnapshot(`
62
- Array [
63
- "
64
- SELECT * FROM my_table WHERE id = 42;
65
- ",
66
- ]
67
- `);
68
- });
69
-
70
- it("should handle strings", () => {
71
- expect(
72
- splitSqlQuery(
73
- `
74
- SELECT * FROM my_table WHERE val = "foo;bar";
75
- `
76
- )
77
- ).toMatchInlineSnapshot(`
78
- Array [
79
- "SELECT * FROM my_table WHERE val = \\"foo;bar\\"",
80
- ]
81
- `);
82
- });
83
-
84
- it("should handle inline comments", () => {
85
- expect(
86
- splitSqlQuery(
87
- `SELECT * FROM my_table -- semicolons; in; comments; don't count;
88
- WHERE val = 'foo;bar'
89
- AND "col;name" = \`other;col\`; -- or identifiers (Postgres or MySQL style)`
90
- )
91
- ).toMatchInlineSnapshot(`
92
- Array [
93
- "SELECT * FROM my_table -- semicolons; in; comments; don't count;
94
- WHERE val = 'foo;bar'
95
- AND \\"col;name\\" = \`other;col\`",
96
- "-- or identifiers (Postgres or MySQL style)",
97
- ]
98
- `);
99
- });
100
-
101
- it("should handle block comments", () => {
102
- expect(
103
- splitSqlQuery(
104
- `/****
105
- * Block comments are ignored;
106
- ****/
107
- SELECT * FROM my_table /* semicolons; in; comments; don't count; */
108
- WHERE val = 'foo;bar' AND count / 2 > 0`
109
- )
110
- ).toMatchInlineSnapshot(`
111
- Array [
112
- "/****
113
- * Block comments are ignored;
114
- ****/
115
- SELECT * FROM my_table /* semicolons; in; comments; don't count; */
116
- WHERE val = 'foo;bar' AND count / 2 > 0",
117
- ]
118
- `);
119
- });
120
-
121
- it("should split multiple statements", () => {
122
- expect(
123
- splitSqlQuery(
124
- `
125
- INSERT INTO my_table (id, value) VALUES (42, 'foo');
126
- SELECT * FROM my_table WHERE id = 42 - 10;
127
- `
128
- )
129
- ).toMatchInlineSnapshot(`
130
- Array [
131
- "INSERT INTO my_table (id, value) VALUES (42, 'foo')",
132
- "SELECT * FROM my_table WHERE id = 42 - 10",
133
- ]
134
- `);
135
- });
136
-
137
- it("should handle whitespace between statements", () => {
138
- expect(
139
- splitSqlQuery(`
140
- CREATE DOMAIN custom_types.email AS TEXT CHECK (VALUE ~ '^.+@.+$');
141
- CREATE TYPE custom_types.currency AS ENUM('USD', 'GBP');
142
-
143
- CREATE TYPE custom_types.money_with_currency AS (
144
- value NUMERIC(1000, 2),
145
- currency custom_types.currency,
146
- description TEXT
147
- );
148
- CREATE TYPE custom_types.balance_pair AS (
149
- income custom_types.money_with_currency,
150
- expenditure custom_types.money_with_currency
151
- );
152
-
153
- CREATE TABLE custom_types.accounts (
154
- email custom_types.email NOT NULL PRIMARY KEY,
155
- balance custom_types.money_with_currency
156
- );
157
- CREATE TABLE custom_types.balance_pairs (
158
- balance custom_types.balance_pair
159
- );
160
- `)
161
- ).toMatchInlineSnapshot(`
162
- Array [
163
- "CREATE DOMAIN custom_types.email AS TEXT CHECK (VALUE ~ '^.+@.+$')",
164
- "CREATE TYPE custom_types.currency AS ENUM('USD', 'GBP')",
165
- "CREATE TYPE custom_types.money_with_currency AS (
166
- value NUMERIC(1000, 2),
167
- currency custom_types.currency,
168
- description TEXT
169
- )",
170
- "CREATE TYPE custom_types.balance_pair AS (
171
- income custom_types.money_with_currency,
172
- expenditure custom_types.money_with_currency
173
- )",
174
- "CREATE TABLE custom_types.accounts (
175
- email custom_types.email NOT NULL PRIMARY KEY,
176
- balance custom_types.money_with_currency
177
- )",
178
- "CREATE TABLE custom_types.balance_pairs (
179
- balance custom_types.balance_pair
180
- )",
181
- ]
182
- `);
183
- });
184
-
185
- it("should handle $...$ style string markers", () => {
186
- expect(
187
- splitSqlQuery(`
188
- CREATE OR REPLACE FUNCTION update_updated_at_column()
189
- RETURNS TRIGGER AS $$
190
- BEGIN
191
- NEW.updated_at = now();
192
- RETURN NEW;
193
- END;
194
- $$ language 'plpgsql';
195
- CREATE TRIGGER <trigger_name> BEFORE UPDATE ON <table_name> FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
196
- `)
197
- ).toMatchInlineSnapshot(`
198
- Array [
199
- "CREATE OR REPLACE FUNCTION update_updated_at_column()
200
- RETURNS TRIGGER AS $$
201
- BEGIN
202
- NEW.updated_at = now();
203
- RETURN NEW;
204
- END;
205
- $$ language 'plpgsql'",
206
- "CREATE TRIGGER <trigger_name> BEFORE UPDATE ON <table_name> FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column()",
207
- ]
208
- `);
209
- expect(
210
- splitSqlQuery(
211
- `$SomeTag$Dianne's$WrongTag$;$some non tag an$identifier;; horse$SomeTag$;$SomeTag$Dianne's horse$SomeTag$`
212
- )
213
- ).toMatchInlineSnapshot(`
214
- Array [
215
- "$SomeTag$Dianne's$WrongTag$;$some non tag an$identifier;; horse$SomeTag$",
216
- "$SomeTag$Dianne's horse$SomeTag$",
217
- ]
218
- `);
219
- });
220
-
221
- it("should handle compound statements", () => {
222
- expect(
223
- splitSqlQuery(`
224
- CREATE TRIGGER IF NOT EXISTS update_trigger AFTER UPDATE ON items
225
- BEGIN
226
- DELETE FROM updates WHERE item_id=old.id;
227
- END;
228
- CREATE TRIGGER IF NOT EXISTS actors_search_fts_update AFTER UPDATE ON actors
229
- BEGIN
230
- DELETE FROM search_fts WHERE rowid=old.rowid;
231
- INSERT INTO search_fts (rowid, type, name, preferredUsername)
232
- VALUES (new.rowid,
233
- new.type,
234
- json_extract(new.properties, '$.name'),
235
- json_extract(new.properties, '$.preferredUsername'));
236
- END;`)
237
- ).toMatchInlineSnapshot(`
238
- Array [
239
- "CREATE TRIGGER IF NOT EXISTS update_trigger AFTER UPDATE ON items
240
- BEGIN
241
- DELETE FROM updates WHERE item_id=old.id;
242
- END",
243
- "CREATE TRIGGER IF NOT EXISTS actors_search_fts_update AFTER UPDATE ON actors
244
- BEGIN
245
- DELETE FROM search_fts WHERE rowid=old.rowid;
246
- INSERT INTO search_fts (rowid, type, name, preferredUsername)
247
- VALUES (new.rowid,
248
- new.type,
249
- json_extract(new.properties, '$.name'),
250
- json_extract(new.properties, '$.preferredUsername'));
251
- END",
252
- ]
253
- `);
254
- });
255
- });
@@ -1,266 +0,0 @@
1
- import { rest } from "msw";
2
- import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
3
- import { mockConsoleMethods } from "./helpers/mock-console";
4
- import { mockConfirm } from "./helpers/mock-dialogs";
5
- import { useMockIsTTY } from "./helpers/mock-istty";
6
- import { msw } from "./helpers/msw";
7
- import { runInTempDir } from "./helpers/run-in-tmp";
8
- import { runWrangler } from "./helpers/run-wrangler";
9
- import writeWranglerToml from "./helpers/write-wrangler-toml";
10
- import type { KVNamespaceInfo } from "../kv/helpers";
11
- describe("delete", () => {
12
- mockAccountId();
13
- mockApiToken();
14
- runInTempDir();
15
- const { setIsTTY } = useMockIsTTY();
16
- beforeEach(() => {
17
- setIsTTY(true);
18
- });
19
- const std = mockConsoleMethods();
20
-
21
- it("should delete an entire service by name", async () => {
22
- mockConfirm({
23
- text: `Are you sure you want to delete my-script? This action cannot be undone.`,
24
- result: true,
25
- });
26
- mockListKVNamespacesRequest();
27
- mockDeleteWorkerRequest({ name: "my-script" });
28
- await runWrangler("delete --name my-script");
29
-
30
- expect(std).toMatchInlineSnapshot(`
31
- Object {
32
- "debug": "",
33
- "err": "",
34
- "out": "Successfully deleted my-script",
35
- "warn": "",
36
- }
37
- `);
38
- });
39
-
40
- it("should delete a script by configuration", async () => {
41
- mockConfirm({
42
- text: `Are you sure you want to delete test-name? This action cannot be undone.`,
43
- result: true,
44
- });
45
- writeWranglerToml();
46
- mockListKVNamespacesRequest();
47
- mockDeleteWorkerRequest();
48
- await runWrangler("delete");
49
-
50
- expect(std).toMatchInlineSnapshot(`
51
- Object {
52
- "debug": "",
53
- "err": "",
54
- "out": "Successfully deleted test-name",
55
- "warn": "",
56
- }
57
- `);
58
- });
59
-
60
- it("shouldn't delete a service when doing a --dry-run", async () => {
61
- await runWrangler("delete --name xyz --dry-run");
62
-
63
- expect(std).toMatchInlineSnapshot(`
64
- Object {
65
- "debug": "",
66
- "err": "",
67
- "out": "--dry-run: exiting now.",
68
- "warn": "",
69
- }
70
- `);
71
- });
72
-
73
- it('shouldn\'t delete when the user says "no"', async () => {
74
- mockConfirm({
75
- text: `Are you sure you want to delete xyz? This action cannot be undone.`,
76
- result: false,
77
- });
78
-
79
- await runWrangler("delete --name xyz");
80
-
81
- expect(std).toMatchInlineSnapshot(`
82
- Object {
83
- "debug": "",
84
- "err": "",
85
- "out": "",
86
- "warn": "",
87
- }
88
- `);
89
- });
90
-
91
- it("should delete a site namespace associated with a worker", async () => {
92
- const kvNamespaces = [
93
- {
94
- title: "__my-script-workers_sites_assets",
95
- id: "id-for-my-script-site-ns",
96
- },
97
- // this one isn't associated with the worker
98
- {
99
- title: "__test-name-workers_sites_assets",
100
- id: "id-for-another-site-ns",
101
- },
102
- ];
103
-
104
- mockConfirm({
105
- text: `Are you sure you want to delete my-script? This action cannot be undone.`,
106
- result: true,
107
- });
108
- mockListKVNamespacesRequest(...kvNamespaces);
109
- // it should only try to delete the site namespace associated with this worker
110
- msw.use(
111
- rest.delete(
112
- "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
113
- (req, res, ctx) => {
114
- expect(req.params.accountId).toEqual("some-account-id");
115
- return res.once(
116
- ctx.status(200),
117
- ctx.json({ success: true, errors: [], messages: [], result: null })
118
- );
119
- }
120
- )
121
- );
122
-
123
- mockDeleteWorkerRequest({ name: "my-script" });
124
- await runWrangler("delete --name my-script");
125
- expect(std).toMatchInlineSnapshot(`
126
- Object {
127
- "debug": "",
128
- "err": "",
129
- "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
130
- Successfully deleted my-script",
131
- "warn": "",
132
- }
133
- `);
134
- });
135
-
136
- it("should delete a site namespace associated with a worker, including it's preview namespace", async () => {
137
- // This is the same test as the previous one, but it includes a preview namespace
138
- const kvNamespaces = [
139
- {
140
- title: "__my-script-workers_sites_assets",
141
- id: "id-for-my-script-site-ns",
142
- },
143
- // this is the preview namespace
144
- {
145
- title: "__my-script-workers_sites_assets_preview",
146
- id: "id-for-my-script-site-preview-ns",
147
- },
148
-
149
- // this one isn't associated with the worker
150
- {
151
- title: "__test-name-workers_sites_assets",
152
- id: "id-for-another-site-ns",
153
- },
154
- ];
155
-
156
- mockConfirm({
157
- text: `Are you sure you want to delete my-script? This action cannot be undone.`,
158
- result: true,
159
- });
160
- mockListKVNamespacesRequest(...kvNamespaces);
161
- // it should only try to delete the site namespace associated with this worker
162
-
163
- msw.use(
164
- rest.delete(
165
- "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
166
- (req, res, ctx) => {
167
- expect(req.params.accountId).toEqual("some-account-id");
168
- return res.once(
169
- ctx.status(200),
170
- ctx.json({
171
- success: true,
172
- errors: [],
173
- messages: [],
174
- result: {},
175
- })
176
- );
177
- }
178
- )
179
- );
180
-
181
- msw.use(
182
- rest.delete(
183
- "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-preview-ns",
184
- (req, res, ctx) => {
185
- expect(req.params.accountId).toEqual("some-account-id");
186
- return res.once(
187
- ctx.status(200),
188
- ctx.json({
189
- success: true,
190
- errors: [],
191
- messages: [],
192
- result: {},
193
- })
194
- );
195
- }
196
- )
197
- );
198
-
199
- mockDeleteWorkerRequest({ name: "my-script" });
200
- await runWrangler("delete --name my-script");
201
- expect(std).toMatchInlineSnapshot(`
202
- Object {
203
- "debug": "",
204
- "err": "",
205
- "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
206
- 🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets_preview\\"
207
- Successfully deleted my-script",
208
- "warn": "",
209
- }
210
- `);
211
- });
212
- });
213
-
214
- /** Create a mock handler for the request to upload a worker script. */
215
- function mockDeleteWorkerRequest(
216
- options: {
217
- name?: string;
218
- env?: string;
219
- legacyEnv?: boolean;
220
- } = {}
221
- ) {
222
- const { env, legacyEnv, name } = options;
223
- msw.use(
224
- rest.delete(
225
- "*/accounts/:accountId/workers/services/:scriptName",
226
- (req, res, ctx) => {
227
- expect(req.params.accountId).toEqual("some-account-id");
228
- expect(req.params.scriptName).toEqual(
229
- legacyEnv && env
230
- ? `${name ?? "test-name"}-${env}`
231
- : `${name ?? "test-name"}`
232
- );
233
-
234
- expect(req.url.searchParams.get("force")).toEqual("true");
235
-
236
- return res.once(
237
- ctx.status(200),
238
- ctx.json({
239
- success: true,
240
- errors: [],
241
- messages: [],
242
- result: null,
243
- })
244
- );
245
- }
246
- )
247
- );
248
- }
249
-
250
- /** Create a mock handler for the request to get a list of all KV namespaces. */
251
- function mockListKVNamespacesRequest(...namespaces: KVNamespaceInfo[]) {
252
- msw.use(
253
- rest.get("*/accounts/:accountId/storage/kv/namespaces", (req, res, ctx) => {
254
- expect(req.params.accountId).toEqual("some-account-id");
255
- return res.once(
256
- ctx.status(200),
257
- ctx.json({
258
- success: true,
259
- errors: [],
260
- messages: [],
261
- result: namespaces,
262
- })
263
- );
264
- })
265
- );
266
- }