wrangler 0.0.0-e33294b0 → 0.0.0-e351afcf
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.
- package/bin/wrangler.js +1 -1
- package/miniflare-dist/index.mjs +183 -92
- package/package.json +15 -10
- package/src/__tests__/api-devregistry.test.ts +121 -0
- package/src/__tests__/api.test.ts +27 -5
- package/src/__tests__/configuration.test.ts +294 -18
- package/src/__tests__/constellation.test.ts +371 -0
- package/src/__tests__/d1/execute.test.ts +3 -1
- package/src/__tests__/d1/migrate.test.ts +102 -0
- package/src/__tests__/delete.test.ts +6 -0
- package/src/__tests__/deployments.test.ts +335 -95
- package/src/__tests__/dev.test.tsx +87 -57
- package/src/__tests__/generate.test.ts +3 -4
- package/src/__tests__/guess-worker-format.test.ts +35 -0
- package/src/__tests__/helpers/mock-console.ts +6 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +70 -3
- package/src/__tests__/helpers/msw/index.ts +4 -2
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
- package/src/__tests__/index.test.ts +14 -6
- package/src/__tests__/init.test.ts +136 -104
- package/src/__tests__/jest.setup.ts +4 -0
- package/src/__tests__/kv.test.ts +9 -9
- package/src/__tests__/logger.test.ts +68 -2
- package/src/__tests__/middleware.scheduled.test.ts +2 -2
- package/src/__tests__/middleware.test.ts +4 -3
- package/src/__tests__/mtls-certificates.test.ts +7 -3
- package/src/__tests__/pages/deployment-list.test.ts +2 -0
- package/src/__tests__/pages/functions-build.test.ts +159 -39
- package/src/__tests__/pages/project-list.test.ts +2 -0
- package/src/__tests__/pages/project-upload.test.ts +43 -24
- package/src/__tests__/pages/publish.test.ts +267 -148
- package/src/__tests__/publish.test.ts +1040 -339
- package/src/__tests__/pubsub.test.ts +3 -0
- package/src/__tests__/queues.test.ts +5 -2
- package/src/__tests__/test-old-node-version.js +3 -3
- package/src/__tests__/traverse-module-graph.test.ts +220 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -1
- package/src/__tests__/type-generation.test.ts +1 -0
- package/src/__tests__/user.test.ts +2 -2
- package/src/__tests__/worker-namespace.test.ts +1 -0
- package/src/api/dev.ts +15 -22
- package/src/api/pages/create-worker-bundle-contents.ts +1 -0
- package/src/api/pages/publish.tsx +64 -61
- package/src/bundle.ts +51 -16
- package/src/config/environment.ts +36 -4
- package/src/config/index.ts +30 -2
- package/src/config/validation-helpers.ts +1 -1
- package/src/config/validation.ts +149 -5
- package/src/constellation/createProject.tsx +51 -0
- package/src/constellation/deleteProject.ts +51 -0
- package/src/constellation/deleteProjectModel.ts +68 -0
- package/src/constellation/index.ts +75 -0
- package/src/constellation/listCatalog.tsx +35 -0
- package/src/constellation/listModel.tsx +41 -0
- package/src/constellation/listProject.tsx +28 -0
- package/src/constellation/listRuntime.tsx +28 -0
- package/src/constellation/options.ts +17 -0
- package/src/constellation/types.ts +17 -0
- package/src/constellation/uploadModel.tsx +64 -0
- package/src/constellation/utils.ts +90 -0
- package/src/create-worker-preview.ts +19 -8
- package/src/create-worker-upload-form.ts +28 -3
- package/src/d1/backups.tsx +19 -15
- package/src/d1/create.tsx +45 -39
- package/src/d1/delete.ts +1 -1
- package/src/d1/execute.tsx +23 -20
- package/src/d1/list.tsx +14 -12
- package/src/d1/migrations/apply.tsx +36 -30
- package/src/d1/migrations/create.tsx +15 -12
- package/src/d1/migrations/helpers.ts +5 -8
- package/src/d1/migrations/list.tsx +10 -7
- package/src/deployments.ts +260 -8
- package/src/dev/dev.tsx +6 -4
- package/src/dev/local.tsx +65 -40
- package/src/dev/start-server.ts +57 -52
- package/src/dev/use-esbuild.ts +59 -52
- package/src/dev/validate-dev-props.ts +9 -0
- package/src/dev-registry.ts +2 -1
- package/src/dev.tsx +38 -18
- package/src/docs/helpers.ts +50 -0
- package/src/docs/index.ts +25 -68
- package/src/entry.ts +19 -9
- package/src/environment-variables/factory.ts +2 -1
- package/src/generate/index.ts +2 -2
- package/src/index.ts +87 -24
- package/src/init.ts +144 -134
- package/src/inspect.ts +16 -1
- package/src/kv/helpers.ts +7 -4
- package/src/logger.ts +23 -4
- package/src/metrics/send-event.ts +2 -1
- package/src/miniflare-cli/assets.ts +8 -7
- package/src/miniflare-cli/index.ts +3 -3
- package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -1
- package/src/module-collection.ts +92 -26
- package/src/pages/build.ts +290 -100
- package/src/pages/buildFunctions.ts +20 -10
- package/src/pages/deployments.tsx +3 -5
- package/src/pages/dev.ts +44 -26
- package/src/pages/errors.ts +1 -0
- package/src/pages/functions/buildPlugin.ts +57 -34
- package/src/pages/functions/buildWorker.ts +91 -31
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -1
- package/src/pages/projects.tsx +2 -5
- package/src/pages/publish.tsx +1 -10
- package/src/pages/upload.tsx +29 -9
- package/src/paths.ts +1 -1
- package/src/publish/index.ts +1 -1
- package/src/publish/publish.ts +29 -34
- package/src/queues/cli/commands/consumer/add.ts +6 -0
- package/src/queues/client.ts +1 -0
- package/src/r2/helpers.ts +1 -0
- package/src/secret/index.ts +2 -1
- package/src/sites.ts +164 -52
- package/src/traverse-module-graph.ts +53 -0
- package/src/type-generation.ts +1 -1
- package/src/user/user.ts +2 -1
- package/src/utils/render.ts +93 -0
- package/src/worker.ts +18 -1
- package/templates/d1-beta-facade.js +5 -2
- package/templates/gitignore +1 -0
- package/templates/middleware/middleware-miniflare3-json-error.ts +17 -5
- package/templates/pages-template-plugin.ts +7 -3
- package/templates/tsconfig.init.json +1 -2
- package/templates/tsconfig.tsbuildinfo +1 -1
- package/wrangler-dist/cli.d.ts +552 -16
- package/wrangler-dist/cli.js +32141 -24052
- package/src/__tests__/api-devregistry.test.js +0 -64
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import { rest } from "msw";
|
|
3
|
+
import { endEventLoop } from "./helpers/end-event-loop";
|
|
4
|
+
import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
|
|
5
|
+
import { mockConsoleMethods } from "./helpers/mock-console";
|
|
6
|
+
import { clearDialogs, mockConfirm } from "./helpers/mock-dialogs";
|
|
7
|
+
import { useMockIsTTY } from "./helpers/mock-istty";
|
|
8
|
+
import { createFetchResult, msw } from "./helpers/msw";
|
|
9
|
+
import { runInTempDir } from "./helpers/run-in-tmp";
|
|
10
|
+
import { runWrangler } from "./helpers/run-wrangler";
|
|
11
|
+
|
|
12
|
+
describe("constellation help", () => {
|
|
13
|
+
const std = mockConsoleMethods();
|
|
14
|
+
runInTempDir();
|
|
15
|
+
|
|
16
|
+
it("should show help when no argument is passed", async () => {
|
|
17
|
+
await runWrangler("constellation");
|
|
18
|
+
await endEventLoop();
|
|
19
|
+
|
|
20
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
21
|
+
"wrangler constellation
|
|
22
|
+
|
|
23
|
+
🤖 Interact with Constellation AI models
|
|
24
|
+
|
|
25
|
+
Commands:
|
|
26
|
+
wrangler constellation project Manage your projects
|
|
27
|
+
wrangler constellation model Manage your models
|
|
28
|
+
wrangler constellation catalog Check the curated model catalog
|
|
29
|
+
wrangler constellation runtime Check the suported runtimes
|
|
30
|
+
|
|
31
|
+
Flags:
|
|
32
|
+
-j, --experimental-json-config Experimental: Support wrangler.json [boolean]
|
|
33
|
+
-c, --config Path to .toml configuration file [string]
|
|
34
|
+
-e, --env Environment to use for operations and .env files [string]
|
|
35
|
+
-h, --help Show help [boolean]
|
|
36
|
+
-v, --version Show version number [boolean]"
|
|
37
|
+
`);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("should show help when an invalid argument is passed", async () => {
|
|
41
|
+
await expect(() => runWrangler("constellation asdf")).rejects.toThrow(
|
|
42
|
+
"Unknown argument: asdf"
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
expect(std.err).toMatchInlineSnapshot(`
|
|
46
|
+
"[31mX [41;31m[[41;97mERROR[41;31m][0m [1mUnknown argument: asdf[0m
|
|
47
|
+
|
|
48
|
+
"
|
|
49
|
+
`);
|
|
50
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
51
|
+
"
|
|
52
|
+
wrangler constellation
|
|
53
|
+
|
|
54
|
+
🤖 Interact with Constellation AI models
|
|
55
|
+
|
|
56
|
+
Commands:
|
|
57
|
+
wrangler constellation project Manage your projects
|
|
58
|
+
wrangler constellation model Manage your models
|
|
59
|
+
wrangler constellation catalog Check the curated model catalog
|
|
60
|
+
wrangler constellation runtime Check the suported runtimes
|
|
61
|
+
|
|
62
|
+
Flags:
|
|
63
|
+
-j, --experimental-json-config Experimental: Support wrangler.json [boolean]
|
|
64
|
+
-c, --config Path to .toml configuration file [string]
|
|
65
|
+
-e, --env Environment to use for operations and .env files [string]
|
|
66
|
+
-h, --help Show help [boolean]
|
|
67
|
+
-v, --version Show version number [boolean]"
|
|
68
|
+
`);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe("constellation commands", () => {
|
|
73
|
+
mockAccountId();
|
|
74
|
+
mockApiToken();
|
|
75
|
+
runInTempDir();
|
|
76
|
+
const { setIsTTY } = useMockIsTTY();
|
|
77
|
+
|
|
78
|
+
const std = mockConsoleMethods();
|
|
79
|
+
|
|
80
|
+
beforeEach(() => {
|
|
81
|
+
// @ts-expect-error we're using a very simple setTimeout mock here
|
|
82
|
+
jest.spyOn(global, "setTimeout").mockImplementation((fn, _period) => {
|
|
83
|
+
setImmediate(fn);
|
|
84
|
+
});
|
|
85
|
+
setIsTTY(true);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
afterEach(() => {
|
|
89
|
+
clearDialogs();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("should handle project creation", async () => {
|
|
93
|
+
mockConstellationRequest();
|
|
94
|
+
await runWrangler("constellation project create new_project ONNX");
|
|
95
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
96
|
+
"--------------------
|
|
97
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
98
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
99
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
100
|
+
--------------------
|
|
101
|
+
|
|
102
|
+
✅ Successfully created Project \\"new_project3\\"!"
|
|
103
|
+
`);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("should handle project listing", async () => {
|
|
107
|
+
mockConstellationRequest();
|
|
108
|
+
await runWrangler("constellation project list");
|
|
109
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
110
|
+
"--------------------
|
|
111
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
112
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
113
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
114
|
+
--------------------
|
|
115
|
+
|
|
116
|
+
┌──────────────────────────────────────┬──────────────┬─────────┬─────────────────────────────┐
|
|
117
|
+
│ id │ name │ runtime │ created_at │
|
|
118
|
+
├──────────────────────────────────────┼──────────────┼─────────┼─────────────────────────────┤
|
|
119
|
+
│ 4806cdcf-9aa7-4fa2-b6a1-77fe9e196680 │ new_project3 │ ONNX │ 2023-04-28T13:25:58.513105Z │
|
|
120
|
+
└──────────────────────────────────────┴──────────────┴─────────┴─────────────────────────────┘"
|
|
121
|
+
`);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it("should handle project deletion", async () => {
|
|
125
|
+
mockConstellationRequest();
|
|
126
|
+
mockConfirm({
|
|
127
|
+
text: "Ok to proceed?",
|
|
128
|
+
result: true,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
await runWrangler("constellation project delete new_project3");
|
|
132
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
133
|
+
"--------------------
|
|
134
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
135
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
136
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
137
|
+
--------------------
|
|
138
|
+
|
|
139
|
+
About to delete Project 'new_project3' (4806cdcf-9aa7-4fa2-b6a1-77fe9e196680).
|
|
140
|
+
Deleting...
|
|
141
|
+
Deleted 'new_project3' successfully."
|
|
142
|
+
`);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it("should handle catalog list", async () => {
|
|
146
|
+
mockConstellationRequest();
|
|
147
|
+
await runWrangler("constellation catalog list");
|
|
148
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
149
|
+
"--------------------
|
|
150
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
151
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
152
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
153
|
+
--------------------
|
|
154
|
+
|
|
155
|
+
┌──────────────────────────────────────┬──────────────────────┬─────────────────┬───────────────┐
|
|
156
|
+
│ project_id │ project_name │ project_runtime │ models │
|
|
157
|
+
├──────────────────────────────────────┼──────────────────────┼─────────────────┼───────────────┤
|
|
158
|
+
│ b162a29d-0a6d-4155-bedf-54a01fc8d0ef │ image-classification │ ONNX │ squeezenet1_1 │
|
|
159
|
+
└──────────────────────────────────────┴──────────────────────┴─────────────────┴───────────────┘"
|
|
160
|
+
`);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it("should handle runtime list", async () => {
|
|
164
|
+
mockConstellationRequest();
|
|
165
|
+
await runWrangler("constellation runtime list");
|
|
166
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
167
|
+
"--------------------
|
|
168
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
169
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
170
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
171
|
+
--------------------
|
|
172
|
+
|
|
173
|
+
┌─────────┐
|
|
174
|
+
│ name │
|
|
175
|
+
├─────────┤
|
|
176
|
+
│ ONNX │
|
|
177
|
+
├─────────┤
|
|
178
|
+
│ XGBoost │
|
|
179
|
+
└─────────┘"
|
|
180
|
+
`);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
it("should handle model upload", async () => {
|
|
184
|
+
mockConstellationRequest();
|
|
185
|
+
await fs.promises.writeFile("model.onnx", `model`);
|
|
186
|
+
await runWrangler(
|
|
187
|
+
"constellation model upload new_project3 model2 model.onnx"
|
|
188
|
+
);
|
|
189
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
190
|
+
"--------------------
|
|
191
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
192
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
193
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
194
|
+
--------------------
|
|
195
|
+
|
|
196
|
+
✅ Successfully uploaded Model \\"model2\\"!"
|
|
197
|
+
`);
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
it("should handle model list", async () => {
|
|
201
|
+
mockConstellationRequest();
|
|
202
|
+
await runWrangler("constellation model list new_project3");
|
|
203
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
204
|
+
"--------------------
|
|
205
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
206
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
207
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
208
|
+
--------------------
|
|
209
|
+
|
|
210
|
+
┌──────────────────────────────────────┬──────────────────────────────────────┬────────┬─────────────┬─────────────────────────────┐
|
|
211
|
+
│ id │ project_id │ name │ description │ created_at │
|
|
212
|
+
├──────────────────────────────────────┼──────────────────────────────────────┼────────┼─────────────┼─────────────────────────────┤
|
|
213
|
+
│ 450bb086-3c09-4991-a0cc-eed48c504ae0 │ 9d478427-dea6-4988-9b16-f6f8888d974c │ model1 │ │ 2023-04-28T11:15:14.806217Z │
|
|
214
|
+
├──────────────────────────────────────┼──────────────────────────────────────┼────────┼─────────────┼─────────────────────────────┤
|
|
215
|
+
│ 2dd35b4e-0c7a-4c7a-a9e2-e33c0e17bc02 │ 9d478427-dea6-4988-9b16-f6f8888d974c │ model2 │ │ 2023-04-28T13:50:37.494090Z │
|
|
216
|
+
└──────────────────────────────────────┴──────────────────────────────────────┴────────┴─────────────┴─────────────────────────────┘"
|
|
217
|
+
`);
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
it("should handle model deletion", async () => {
|
|
221
|
+
mockConstellationRequest();
|
|
222
|
+
mockConfirm({
|
|
223
|
+
text: "Ok to proceed?",
|
|
224
|
+
result: true,
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
await runWrangler("constellation model delete new_project3 model2");
|
|
228
|
+
expect(std.out).toMatchInlineSnapshot(`
|
|
229
|
+
"--------------------
|
|
230
|
+
🚧 Constellation AI is currently in open alpha and is not recommended for production data and traffic
|
|
231
|
+
🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
|
|
232
|
+
🚧 To give feedback, visit https://discord.gg/cloudflaredev
|
|
233
|
+
--------------------
|
|
234
|
+
|
|
235
|
+
About to delete Model 'model2' (2dd35b4e-0c7a-4c7a-a9e2-e33c0e17bc02).
|
|
236
|
+
Deleting...
|
|
237
|
+
Deleted 'model2' successfully."
|
|
238
|
+
`);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
/** Create a mock handler for Constellation API */
|
|
243
|
+
function mockConstellationRequest() {
|
|
244
|
+
msw.use(
|
|
245
|
+
rest.get("*/accounts/:accountId/constellation/project", (req, res, ctx) => {
|
|
246
|
+
return res.once(
|
|
247
|
+
ctx.json(
|
|
248
|
+
createFetchResult(
|
|
249
|
+
[
|
|
250
|
+
{
|
|
251
|
+
id: "4806cdcf-9aa7-4fa2-b6a1-77fe9e196680",
|
|
252
|
+
name: "new_project3",
|
|
253
|
+
runtime: "ONNX",
|
|
254
|
+
created_at: "2023-04-28T13:25:58.513105Z",
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
true
|
|
258
|
+
)
|
|
259
|
+
)
|
|
260
|
+
);
|
|
261
|
+
}),
|
|
262
|
+
rest.post(
|
|
263
|
+
"*/accounts/:accountId/constellation/project",
|
|
264
|
+
(req, res, ctx) => {
|
|
265
|
+
return res.once(
|
|
266
|
+
ctx.json(
|
|
267
|
+
createFetchResult(
|
|
268
|
+
{
|
|
269
|
+
id: "4806cdcf-9aa7-4fa2-b6a1-77fe9e196680",
|
|
270
|
+
name: "new_project3",
|
|
271
|
+
runtime: "ONNX",
|
|
272
|
+
created_at: "2023-04-28T13:25:58.513105Z",
|
|
273
|
+
},
|
|
274
|
+
true
|
|
275
|
+
)
|
|
276
|
+
)
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
),
|
|
280
|
+
rest.delete(
|
|
281
|
+
"*/accounts/:accountId/constellation/project/4806cdcf-9aa7-4fa2-b6a1-77fe9e196680",
|
|
282
|
+
(req, res, ctx) => {
|
|
283
|
+
return res.once(ctx.json(createFetchResult(null, true)));
|
|
284
|
+
}
|
|
285
|
+
),
|
|
286
|
+
rest.get("*/accounts/:accountId/constellation/catalog", (req, res, ctx) => {
|
|
287
|
+
return res.once(
|
|
288
|
+
ctx.json(
|
|
289
|
+
createFetchResult(
|
|
290
|
+
[
|
|
291
|
+
{
|
|
292
|
+
project: {
|
|
293
|
+
id: "b162a29d-0a6d-4155-bedf-54a01fc8d0ef",
|
|
294
|
+
name: "image-classification",
|
|
295
|
+
runtime: "ONNX",
|
|
296
|
+
created_at: "2023-04-27T18:55:38.417187Z",
|
|
297
|
+
},
|
|
298
|
+
models: [
|
|
299
|
+
{
|
|
300
|
+
id: "edb202d3-f4ac-43ab-8762-3ae6b43c4c57",
|
|
301
|
+
project_id: "b162a29d-0a6d-4155-bedf-54a01fc8d0ef",
|
|
302
|
+
name: "squeezenet1_1",
|
|
303
|
+
description: null,
|
|
304
|
+
created_at: "2023-04-27T18:56:15.305087Z",
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
},
|
|
308
|
+
],
|
|
309
|
+
true
|
|
310
|
+
)
|
|
311
|
+
)
|
|
312
|
+
);
|
|
313
|
+
}),
|
|
314
|
+
rest.get("*/accounts/:accountId/constellation/runtime", (req, res, ctx) => {
|
|
315
|
+
return res.once(ctx.json(createFetchResult(["ONNX", "XGBoost"], true)));
|
|
316
|
+
}),
|
|
317
|
+
rest.post(
|
|
318
|
+
"*/accounts/:accountId/constellation/project/4806cdcf-9aa7-4fa2-b6a1-77fe9e196680/model",
|
|
319
|
+
(req, res, ctx) => {
|
|
320
|
+
return res.once(
|
|
321
|
+
ctx.json(
|
|
322
|
+
createFetchResult(
|
|
323
|
+
{
|
|
324
|
+
id: "2dd35b4e-0c7a-4c7a-a9e2-e33c0e17bc02",
|
|
325
|
+
project_id: "4806cdcf-9aa7-4fa2-b6a1-77fe9e196680",
|
|
326
|
+
name: "model2",
|
|
327
|
+
description: null,
|
|
328
|
+
created_at: "2023-04-28T13:50:37.494090Z",
|
|
329
|
+
},
|
|
330
|
+
true
|
|
331
|
+
)
|
|
332
|
+
)
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
),
|
|
336
|
+
rest.get(
|
|
337
|
+
"*/accounts/:accountId/constellation/project/4806cdcf-9aa7-4fa2-b6a1-77fe9e196680/model",
|
|
338
|
+
(req, res, ctx) => {
|
|
339
|
+
return res.once(
|
|
340
|
+
ctx.json(
|
|
341
|
+
createFetchResult(
|
|
342
|
+
[
|
|
343
|
+
{
|
|
344
|
+
id: "450bb086-3c09-4991-a0cc-eed48c504ae0",
|
|
345
|
+
project_id: "9d478427-dea6-4988-9b16-f6f8888d974c",
|
|
346
|
+
name: "model1",
|
|
347
|
+
description: null,
|
|
348
|
+
created_at: "2023-04-28T11:15:14.806217Z",
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
id: "2dd35b4e-0c7a-4c7a-a9e2-e33c0e17bc02",
|
|
352
|
+
project_id: "9d478427-dea6-4988-9b16-f6f8888d974c",
|
|
353
|
+
name: "model2",
|
|
354
|
+
description: null,
|
|
355
|
+
created_at: "2023-04-28T13:50:37.494090Z",
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
true
|
|
359
|
+
)
|
|
360
|
+
)
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
),
|
|
364
|
+
rest.delete(
|
|
365
|
+
"*/accounts/:accountId/constellation/project/4806cdcf-9aa7-4fa2-b6a1-77fe9e196680/model/2dd35b4e-0c7a-4c7a-a9e2-e33c0e17bc02",
|
|
366
|
+
(req, res, ctx) => {
|
|
367
|
+
return res.once(ctx.json(createFetchResult(null, true)));
|
|
368
|
+
}
|
|
369
|
+
)
|
|
370
|
+
);
|
|
371
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { mockConsoleMethods } from "../helpers/mock-console";
|
|
1
2
|
import { useMockIsTTY } from "../helpers/mock-istty";
|
|
2
3
|
import { runInTempDir } from "../helpers/run-in-tmp";
|
|
3
4
|
import { runWrangler } from "../helpers/run-wrangler";
|
|
4
5
|
import writeWranglerToml from "../helpers/write-wrangler-toml";
|
|
5
6
|
|
|
6
7
|
describe("execute", () => {
|
|
8
|
+
mockConsoleMethods();
|
|
7
9
|
runInTempDir();
|
|
8
10
|
const { setIsTTY } = useMockIsTTY();
|
|
9
11
|
|
|
@@ -18,7 +20,7 @@ describe("execute", () => {
|
|
|
18
20
|
await expect(
|
|
19
21
|
runWrangler("d1 execute --command 'select 1;'")
|
|
20
22
|
).rejects.toThrowError(
|
|
21
|
-
`In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN environment variable for wrangler to work. Please go to https://developers.cloudflare.com/api/
|
|
23
|
+
`In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN environment variable for wrangler to work. Please go to https://developers.cloudflare.com/fundamentals/api/get-started/create-token/ for instructions on how to create an api token, and assign its value to CLOUDFLARE_API_TOKEN.`
|
|
22
24
|
);
|
|
23
25
|
});
|
|
24
26
|
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { cwd } from "process";
|
|
2
|
+
import { rest } from "msw";
|
|
2
3
|
import { reinitialiseAuthTokens } from "../../user";
|
|
3
4
|
import { mockAccountId, mockApiToken } from "../helpers/mock-account-id";
|
|
5
|
+
import { mockConsoleMethods } from "../helpers/mock-console";
|
|
6
|
+
import { mockConfirm } from "../helpers/mock-dialogs";
|
|
4
7
|
import { useMockIsTTY } from "../helpers/mock-istty";
|
|
8
|
+
import { mockGetMemberships, mockOAuthFlow } from "../helpers/mock-oauth-flow";
|
|
9
|
+
import { mockSetTimeout } from "../helpers/mock-set-timeout";
|
|
10
|
+
import { msw } from "../helpers/msw";
|
|
5
11
|
import { runInTempDir } from "../helpers/run-in-tmp";
|
|
6
12
|
import { runWrangler } from "../helpers/run-wrangler";
|
|
7
13
|
import writeWranglerToml from "../helpers/write-wrangler-toml";
|
|
8
14
|
|
|
9
15
|
describe("migrate", () => {
|
|
10
16
|
runInTempDir();
|
|
17
|
+
mockConsoleMethods();
|
|
18
|
+
mockSetTimeout();
|
|
19
|
+
|
|
11
20
|
const { setIsTTY } = useMockIsTTY();
|
|
12
21
|
|
|
13
22
|
describe("create", () => {
|
|
@@ -26,6 +35,9 @@ describe("migrate", () => {
|
|
|
26
35
|
});
|
|
27
36
|
|
|
28
37
|
describe("apply", () => {
|
|
38
|
+
mockAccountId({ accountId: null });
|
|
39
|
+
mockApiToken();
|
|
40
|
+
const { mockOAuthServerCallback } = mockOAuthFlow();
|
|
29
41
|
it("should not attempt to login in local mode", async () => {
|
|
30
42
|
setIsTTY(false);
|
|
31
43
|
writeWranglerToml({
|
|
@@ -75,6 +87,96 @@ describe("migrate", () => {
|
|
|
75
87
|
runWrangler("d1 migrations apply --local db --preview")
|
|
76
88
|
).rejects.toThrowError(`Error: can't use --preview with --local`);
|
|
77
89
|
});
|
|
90
|
+
|
|
91
|
+
it("multiple accounts: should throw when trying to apply migrations without an account_id in config", async () => {
|
|
92
|
+
setIsTTY(false);
|
|
93
|
+
|
|
94
|
+
writeWranglerToml({
|
|
95
|
+
d1_databases: [
|
|
96
|
+
{
|
|
97
|
+
binding: "DATABASE",
|
|
98
|
+
database_name: "db",
|
|
99
|
+
database_id: "xxxx",
|
|
100
|
+
migrations_dir: "/tmp/my-migrations-go-here",
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
});
|
|
104
|
+
mockOAuthServerCallback();
|
|
105
|
+
mockGetMemberships([
|
|
106
|
+
{ id: "IG-88", account: { id: "1701", name: "enterprise" } },
|
|
107
|
+
{ id: "R2-D2", account: { id: "nx01", name: "enterprise-nx" } },
|
|
108
|
+
]);
|
|
109
|
+
mockConfirm({
|
|
110
|
+
text: `No migrations folder found.
|
|
111
|
+
Ok to create /tmp/my-migrations-go-here?`,
|
|
112
|
+
result: true,
|
|
113
|
+
});
|
|
114
|
+
await runWrangler("d1 migrations create db test");
|
|
115
|
+
mockConfirm({
|
|
116
|
+
text: `About to apply 1 migration(s)
|
|
117
|
+
Your database may not be available to serve requests during the migration, continue?`,
|
|
118
|
+
result: true,
|
|
119
|
+
});
|
|
120
|
+
await expect(runWrangler("d1 migrations apply db")).rejects.toThrowError(
|
|
121
|
+
`More than one account available but unable to select one in non-interactive mode.`
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
it("multiple accounts: should let the user apply migrations with an account_id in config", async () => {
|
|
125
|
+
setIsTTY(false);
|
|
126
|
+
msw.use(
|
|
127
|
+
rest.post(
|
|
128
|
+
"*/accounts/:accountId/d1/database/:databaseId/query",
|
|
129
|
+
async (req, res, ctx) => {
|
|
130
|
+
return res(
|
|
131
|
+
ctx.status(200),
|
|
132
|
+
ctx.json({
|
|
133
|
+
result: [
|
|
134
|
+
{
|
|
135
|
+
results: [],
|
|
136
|
+
success: true,
|
|
137
|
+
meta: {},
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
success: true,
|
|
141
|
+
errors: [],
|
|
142
|
+
messages: [],
|
|
143
|
+
})
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
);
|
|
148
|
+
writeWranglerToml({
|
|
149
|
+
d1_databases: [
|
|
150
|
+
{
|
|
151
|
+
binding: "DATABASE",
|
|
152
|
+
database_name: "db",
|
|
153
|
+
database_id: "xxxx",
|
|
154
|
+
migrations_dir: "/tmp/my-migrations-go-here",
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
account_id: "nx01",
|
|
158
|
+
});
|
|
159
|
+
mockOAuthServerCallback();
|
|
160
|
+
mockGetMemberships([
|
|
161
|
+
{ id: "IG-88", account: { id: "1701", name: "enterprise" } },
|
|
162
|
+
{ id: "R2-D2", account: { id: "nx01", name: "enterprise-nx" } },
|
|
163
|
+
]);
|
|
164
|
+
mockConfirm({
|
|
165
|
+
text: `No migrations folder found.
|
|
166
|
+
Ok to create /tmp/my-migrations-go-here?`,
|
|
167
|
+
result: true,
|
|
168
|
+
});
|
|
169
|
+
await runWrangler("d1 migrations create db test");
|
|
170
|
+
mockConfirm({
|
|
171
|
+
text: `About to apply 1 migration(s)
|
|
172
|
+
Your database may not be available to serve requests during the migration, continue?`,
|
|
173
|
+
result: true,
|
|
174
|
+
});
|
|
175
|
+
//if we get to this point, wrangler knows the account_id
|
|
176
|
+
await expect(runWrangler("d1 migrations apply db")).rejects.toThrowError(
|
|
177
|
+
`request to https://api.cloudflare.com/client/v4/accounts/nx01/d1/database/xxxx/backup failed`
|
|
178
|
+
);
|
|
179
|
+
});
|
|
78
180
|
});
|
|
79
181
|
|
|
80
182
|
describe("list", () => {
|
|
@@ -31,6 +31,7 @@ describe("delete", () => {
|
|
|
31
31
|
Object {
|
|
32
32
|
"debug": "",
|
|
33
33
|
"err": "",
|
|
34
|
+
"info": "",
|
|
34
35
|
"out": "Successfully deleted my-script",
|
|
35
36
|
"warn": "",
|
|
36
37
|
}
|
|
@@ -51,6 +52,7 @@ describe("delete", () => {
|
|
|
51
52
|
Object {
|
|
52
53
|
"debug": "",
|
|
53
54
|
"err": "",
|
|
55
|
+
"info": "",
|
|
54
56
|
"out": "Successfully deleted test-name",
|
|
55
57
|
"warn": "",
|
|
56
58
|
}
|
|
@@ -64,6 +66,7 @@ describe("delete", () => {
|
|
|
64
66
|
Object {
|
|
65
67
|
"debug": "",
|
|
66
68
|
"err": "",
|
|
69
|
+
"info": "",
|
|
67
70
|
"out": "--dry-run: exiting now.",
|
|
68
71
|
"warn": "",
|
|
69
72
|
}
|
|
@@ -82,6 +85,7 @@ describe("delete", () => {
|
|
|
82
85
|
Object {
|
|
83
86
|
"debug": "",
|
|
84
87
|
"err": "",
|
|
88
|
+
"info": "",
|
|
85
89
|
"out": "",
|
|
86
90
|
"warn": "",
|
|
87
91
|
}
|
|
@@ -126,6 +130,7 @@ describe("delete", () => {
|
|
|
126
130
|
Object {
|
|
127
131
|
"debug": "",
|
|
128
132
|
"err": "",
|
|
133
|
+
"info": "",
|
|
129
134
|
"out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
|
|
130
135
|
Successfully deleted my-script",
|
|
131
136
|
"warn": "",
|
|
@@ -202,6 +207,7 @@ describe("delete", () => {
|
|
|
202
207
|
Object {
|
|
203
208
|
"debug": "",
|
|
204
209
|
"err": "",
|
|
210
|
+
"info": "",
|
|
205
211
|
"out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
|
|
206
212
|
🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets_preview\\"
|
|
207
213
|
Successfully deleted my-script",
|