alchemy 0.73.0 → 0.74.0
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/alchemy.js +3326 -4424
- package/bin/alchemy.ts +2 -0
- package/bin/commands/configure.ts +4 -1
- package/bin/commands/util.ts +510 -0
- package/bin/services/execute-alchemy.ts +2 -1
- package/bin/trpc.ts +22 -16
- package/lib/cloudflare/bound.d.ts +1 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +6 -14
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/remote-binding-proxy.js +12 -4
- package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.d.ts.map +1 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.js +8 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -1
- package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
- package/lib/cloudflare/vite/plugin.js +23 -9
- package/lib/cloudflare/vite/plugin.js.map +1 -1
- package/lib/planetscale/branch.d.ts +6 -0
- package/lib/planetscale/branch.d.ts.map +1 -1
- package/lib/planetscale/branch.js +2 -1
- package/lib/planetscale/branch.js.map +1 -1
- package/lib/planetscale/database.d.ts +6 -0
- package/lib/planetscale/database.d.ts.map +1 -1
- package/lib/planetscale/database.js +2 -1
- package/lib/planetscale/database.js.map +1 -1
- package/lib/planetscale/password.d.ts +6 -0
- package/lib/planetscale/password.d.ts.map +1 -1
- package/lib/planetscale/password.js +2 -1
- package/lib/planetscale/password.js.map +1 -1
- package/lib/planetscale/role.d.ts +6 -0
- package/lib/planetscale/role.d.ts.map +1 -1
- package/lib/planetscale/role.js +2 -1
- package/lib/planetscale/role.js.map +1 -1
- package/lib/prisma-postgres/api/client.gen.d.ts +13 -0
- package/lib/prisma-postgres/api/client.gen.d.ts.map +1 -0
- package/lib/prisma-postgres/api/client.gen.js +6 -0
- package/lib/prisma-postgres/api/client.gen.js.map +1 -0
- package/lib/prisma-postgres/api/sdk.gen.d.ts +120 -0
- package/lib/prisma-postgres/api/sdk.gen.d.ts.map +1 -0
- package/lib/prisma-postgres/api/sdk.gen.js +219 -0
- package/lib/prisma-postgres/api/sdk.gen.js.map +1 -0
- package/lib/prisma-postgres/api/types.gen.d.ts +957 -0
- package/lib/prisma-postgres/api/types.gen.d.ts.map +1 -0
- package/lib/prisma-postgres/api/types.gen.js +2 -0
- package/lib/prisma-postgres/api/types.gen.js.map +1 -0
- package/lib/prisma-postgres/api.d.ts +29 -0
- package/lib/prisma-postgres/api.d.ts.map +1 -0
- package/lib/prisma-postgres/api.js +49 -0
- package/lib/prisma-postgres/api.js.map +1 -0
- package/lib/prisma-postgres/connection.d.ts +87 -0
- package/lib/prisma-postgres/connection.d.ts.map +1 -0
- package/lib/prisma-postgres/connection.js +73 -0
- package/lib/prisma-postgres/connection.js.map +1 -0
- package/lib/prisma-postgres/database.d.ts +104 -0
- package/lib/prisma-postgres/database.d.ts.map +1 -0
- package/lib/prisma-postgres/database.js +88 -0
- package/lib/prisma-postgres/database.js.map +1 -0
- package/lib/prisma-postgres/index.d.ts +5 -0
- package/lib/prisma-postgres/index.d.ts.map +1 -0
- package/lib/prisma-postgres/index.js +5 -0
- package/lib/prisma-postgres/index.js.map +1 -0
- package/lib/prisma-postgres/project.d.ts +69 -0
- package/lib/prisma-postgres/project.d.ts.map +1 -0
- package/lib/prisma-postgres/project.js +62 -0
- package/lib/prisma-postgres/project.js.map +1 -0
- package/lib/prisma-postgres/workspace.d.ts +18 -0
- package/lib/prisma-postgres/workspace.d.ts.map +1 -0
- package/lib/prisma-postgres/workspace.js +21 -0
- package/lib/prisma-postgres/workspace.js.map +1 -0
- package/lib/util/http.d.ts +5 -2
- package/lib/util/http.d.ts.map +1 -1
- package/lib/util/http.js +71 -26
- package/lib/util/http.js.map +1 -1
- package/package.json +9 -1
- package/src/cloudflare/bound.ts +3 -1
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +10 -13
- package/src/cloudflare/miniflare/remote-binding-proxy.ts +12 -4
- package/src/cloudflare/tanstack-start/tanstack-start.ts +9 -1
- package/src/cloudflare/vite/plugin.ts +24 -10
- package/src/planetscale/branch.ts +9 -1
- package/src/planetscale/database.ts +9 -1
- package/src/planetscale/password.ts +9 -1
- package/src/planetscale/role.ts +9 -1
- package/src/prisma-postgres/api/client.gen.ts +27 -0
- package/src/prisma-postgres/api/sdk.gen.ts +437 -0
- package/src/prisma-postgres/api/types.gen.ts +1096 -0
- package/src/prisma-postgres/api.ts +79 -0
- package/src/prisma-postgres/connection.ts +154 -0
- package/src/prisma-postgres/database.ts +178 -0
- package/src/prisma-postgres/index.ts +4 -0
- package/src/prisma-postgres/project.ts +131 -0
- package/src/prisma-postgres/workspace.ts +27 -0
- package/src/util/http.ts +79 -33
- package/workers/cloudflare-state-store.js +1 -1
- package/workers/tunnel-proxy.js +1 -1
package/bin/alchemy.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { login } from "./commands/login.ts";
|
|
|
9
9
|
import { logout } from "./commands/logout.ts";
|
|
10
10
|
import { run } from "./commands/run.ts";
|
|
11
11
|
import { telemetry } from "./commands/telemetry.ts";
|
|
12
|
+
import { util } from "./commands/util.ts";
|
|
12
13
|
import { getPackageVersion } from "./services/get-package-version.ts";
|
|
13
14
|
import { t } from "./trpc.ts";
|
|
14
15
|
|
|
@@ -23,6 +24,7 @@ const router = t.router({
|
|
|
23
24
|
configure,
|
|
24
25
|
run,
|
|
25
26
|
telemetry,
|
|
27
|
+
util,
|
|
26
28
|
});
|
|
27
29
|
|
|
28
30
|
export type AppRouter = typeof router;
|
|
@@ -85,7 +85,10 @@ export const configure = authProcedure
|
|
|
85
85
|
outro(pc.green(`✅ Configured profile ${pc.bold(name)}`));
|
|
86
86
|
});
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Prompts the user to enter a profile name.
|
|
90
|
+
*/
|
|
91
|
+
export const promptForProfileName = async (input: { profile?: string }) => {
|
|
89
92
|
input.profile = input.profile?.trim();
|
|
90
93
|
if (input.profile) {
|
|
91
94
|
return input.profile;
|
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
import {
|
|
2
|
+
confirm,
|
|
3
|
+
intro,
|
|
4
|
+
isCancel,
|
|
5
|
+
log,
|
|
6
|
+
outro,
|
|
7
|
+
password,
|
|
8
|
+
text,
|
|
9
|
+
} from "@clack/prompts";
|
|
10
|
+
import pc from "picocolors";
|
|
11
|
+
import z from "zod";
|
|
12
|
+
import { Profile, Provider } from "../../src/auth.ts";
|
|
13
|
+
import { CancelSignal, loggedProcedure, t } from "../trpc.ts";
|
|
14
|
+
import { promptForProfileName } from "./configure.ts";
|
|
15
|
+
|
|
16
|
+
const createCloudflareToken = loggedProcedure
|
|
17
|
+
.meta({
|
|
18
|
+
description: "Create a Cloudflare god token with API key and account IDs",
|
|
19
|
+
})
|
|
20
|
+
.input(
|
|
21
|
+
z.object({
|
|
22
|
+
profile: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.meta({ alias: "p" })
|
|
26
|
+
.describe("the profile to use to generate a token"),
|
|
27
|
+
godToken: z
|
|
28
|
+
.boolean()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("if a god token should be created"),
|
|
31
|
+
}),
|
|
32
|
+
)
|
|
33
|
+
.mutation(async ({ input }) => {
|
|
34
|
+
if (input.godToken) {
|
|
35
|
+
await createCloudflareGodToken();
|
|
36
|
+
} else {
|
|
37
|
+
await createCloudflareProfileToken(input);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export const util = t.router({
|
|
42
|
+
"create-cloudflare-token": createCloudflareToken,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
async function createToken(
|
|
46
|
+
keyName: string,
|
|
47
|
+
accountIds: Array<string>,
|
|
48
|
+
permissionGroupIds: Array<string> | undefined,
|
|
49
|
+
credentials: { apiKey: string; accountEmail: string },
|
|
50
|
+
) {
|
|
51
|
+
type PermissionGroup = {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
scopes: Array<string>;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const permissionGroups = await fetch(
|
|
59
|
+
"https://api.cloudflare.com/client/v4/user/tokens/permission_groups",
|
|
60
|
+
{
|
|
61
|
+
headers: {
|
|
62
|
+
"Content-Type": "application/json",
|
|
63
|
+
"X-Auth-Key": credentials.apiKey,
|
|
64
|
+
"X-Auth-Email": credentials.accountEmail,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
)
|
|
68
|
+
.then((res) => res.json())
|
|
69
|
+
.then((data) => data.result as Array<PermissionGroup>)
|
|
70
|
+
.then((data) => {
|
|
71
|
+
//* filter permissions and group by scope
|
|
72
|
+
const groupedByScope = data.reduce(
|
|
73
|
+
(acc, group) => {
|
|
74
|
+
if (
|
|
75
|
+
permissionGroupIds != null &&
|
|
76
|
+
!permissionGroupIds.includes(group.id)
|
|
77
|
+
) {
|
|
78
|
+
return acc;
|
|
79
|
+
}
|
|
80
|
+
const scope = group.scopes[0];
|
|
81
|
+
if (!acc[scope]) {
|
|
82
|
+
acc[scope] = [];
|
|
83
|
+
}
|
|
84
|
+
acc[scope].push(group);
|
|
85
|
+
return acc;
|
|
86
|
+
},
|
|
87
|
+
{} as Record<string, Array<PermissionGroup>>,
|
|
88
|
+
);
|
|
89
|
+
return groupedByScope;
|
|
90
|
+
})
|
|
91
|
+
.catch((err) => {
|
|
92
|
+
log.error(pc.red(`Error fetching permission groups: ${err.message}`));
|
|
93
|
+
throw new CancelSignal();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const apiToken = await fetch(
|
|
97
|
+
"https://api.cloudflare.com/client/v4/user/tokens",
|
|
98
|
+
{
|
|
99
|
+
method: "POST",
|
|
100
|
+
headers: {
|
|
101
|
+
"Content-Type": "application/json",
|
|
102
|
+
"X-Auth-Key": credentials.apiKey,
|
|
103
|
+
"X-Auth-Email": credentials.accountEmail,
|
|
104
|
+
},
|
|
105
|
+
body: JSON.stringify({
|
|
106
|
+
name: `Alchemy Token - ${keyName}`,
|
|
107
|
+
status: "active",
|
|
108
|
+
policies: [
|
|
109
|
+
{
|
|
110
|
+
effect: "allow",
|
|
111
|
+
resources: accountIds.reduce((acc, id) => {
|
|
112
|
+
acc[`com.cloudflare.api.account.${id}`] = "*";
|
|
113
|
+
return acc;
|
|
114
|
+
}, {}),
|
|
115
|
+
permission_groups: permissionGroups[
|
|
116
|
+
"com.cloudflare.api.account"
|
|
117
|
+
].map((group) => ({ id: group.id })),
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
effect: "allow",
|
|
121
|
+
resources: { "com.cloudflare.api.account.zone.*": "*" },
|
|
122
|
+
permission_groups: permissionGroups[
|
|
123
|
+
"com.cloudflare.api.account.zone"
|
|
124
|
+
].map((group) => ({ id: group.id })),
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
}),
|
|
128
|
+
},
|
|
129
|
+
)
|
|
130
|
+
.then((res) => res.json())
|
|
131
|
+
.then((data) => data.result.value)
|
|
132
|
+
.catch((err) => {
|
|
133
|
+
log.error(pc.red(`Error creating cloudflare token: ${err.message}`));
|
|
134
|
+
throw new CancelSignal();
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
return apiToken;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
async function createCloudflareGodToken() {
|
|
141
|
+
intro(pc.cyan("🧪 Create Cloudflare God Token"));
|
|
142
|
+
|
|
143
|
+
const apiKey = await password({
|
|
144
|
+
message: "Enter Cloudflare API Key",
|
|
145
|
+
});
|
|
146
|
+
if (isCancel(apiKey)) {
|
|
147
|
+
throw new CancelSignal();
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const accountEmail = await text({
|
|
151
|
+
message: "Enter account email",
|
|
152
|
+
placeholder: "user@example.com",
|
|
153
|
+
});
|
|
154
|
+
if (isCancel(accountEmail)) {
|
|
155
|
+
throw new CancelSignal();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const accountIds: string[] = [];
|
|
159
|
+
log.info(
|
|
160
|
+
pc.dim("Enter account IDs (press enter with empty value to finish)"),
|
|
161
|
+
);
|
|
162
|
+
|
|
163
|
+
while (true) {
|
|
164
|
+
const accountId = await text({
|
|
165
|
+
message: `Enter account ID ${accountIds.length > 0 ? "(or press enter to finish)" : ""}`,
|
|
166
|
+
placeholder: accountIds.length === 0 ? "account-id" : "",
|
|
167
|
+
defaultValue: "",
|
|
168
|
+
validate: (value) => {
|
|
169
|
+
if (!value?.trim() && accountIds.length === 0) {
|
|
170
|
+
return "Please enter at least one account ID";
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
if (isCancel(accountId)) {
|
|
176
|
+
throw new CancelSignal();
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const trimmedId = (accountId || "").trim();
|
|
180
|
+
|
|
181
|
+
if (!trimmedId && accountIds.length > 0) {
|
|
182
|
+
log.info(pc.dim("Finishing input..."));
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (trimmedId) {
|
|
187
|
+
accountIds.push(trimmedId);
|
|
188
|
+
log.info(pc.dim(`Added account ID: ${trimmedId}`));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
log.error(
|
|
193
|
+
pc.red(
|
|
194
|
+
"🚨 If this token is leaked or compromised, it could result in:\n • Complete account takeover\n • Data breaches\n • Service disruption\n • Financial losses\n",
|
|
195
|
+
),
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
const confirmCreate = await confirm({
|
|
199
|
+
message: "Do you understand the risks and want to proceed?",
|
|
200
|
+
initialValue: false,
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
if (isCancel(confirmCreate) || !confirmCreate) {
|
|
204
|
+
log.info(pc.dim("Token creation cancelled"));
|
|
205
|
+
throw new CancelSignal();
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const apiToken = await createToken("GOD-TOKEN", accountIds, undefined, {
|
|
209
|
+
apiKey,
|
|
210
|
+
accountEmail,
|
|
211
|
+
}).catch((err) => {
|
|
212
|
+
log.error(pc.red(`Error creating cloudflare god token: ${err.message}`));
|
|
213
|
+
throw new CancelSignal();
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
outro(`Cloudflare god token created: ${pc.magenta(apiToken)}`);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
async function createCloudflareProfileToken(input: { profile?: string }) {
|
|
220
|
+
const name = await promptForProfileName(input);
|
|
221
|
+
intro(pc.cyan(`🧪 Create Cloudflare Token for ${pc.bold(name)}`));
|
|
222
|
+
|
|
223
|
+
const profile = await Profile.get(name);
|
|
224
|
+
if (profile == null) {
|
|
225
|
+
throw new Error(`Profile ${pc.bold(name)} not found`);
|
|
226
|
+
}
|
|
227
|
+
const { provider } = await Provider.getWithCredentials({
|
|
228
|
+
profile: name,
|
|
229
|
+
provider: "cloudflare",
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
if (provider.method !== "oauth") {
|
|
233
|
+
throw new Error(
|
|
234
|
+
`Profile ${pc.bold(name)} is not configured to use Cloudflare via OAuth`,
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (provider.scopes == null) {
|
|
239
|
+
throw new Error(
|
|
240
|
+
`Profile ${pc.bold(name)} is not configured with any Cloudflare scopes`,
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
const permissionGroupIds: Array<string> = [];
|
|
245
|
+
for (const scope of provider.scopes) {
|
|
246
|
+
const ids = CLOUDFLARE_OAUTH_SCOPES_TO_PERMISSION_GROUP_IDS[scope];
|
|
247
|
+
if (ids != null) {
|
|
248
|
+
permissionGroupIds.push(...ids);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const apiKey = await password({
|
|
253
|
+
message: "Enter Cloudflare API Key",
|
|
254
|
+
});
|
|
255
|
+
if (isCancel(apiKey)) {
|
|
256
|
+
throw new CancelSignal();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
const accountEmail = await text({
|
|
260
|
+
message: "Enter account email",
|
|
261
|
+
placeholder: "user@example.com",
|
|
262
|
+
});
|
|
263
|
+
if (isCancel(accountEmail)) {
|
|
264
|
+
throw new CancelSignal();
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const apiToken = await createToken(
|
|
268
|
+
name,
|
|
269
|
+
[provider.metadata.id],
|
|
270
|
+
permissionGroupIds,
|
|
271
|
+
{ apiKey, accountEmail },
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
outro(
|
|
275
|
+
`Cloudflare token created for profile ${pc.bold(name)}: ${pc.magenta(apiToken)}`,
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export const CLOUDFLARE_OAUTH_SCOPES_TO_PERMISSION_GROUP_IDS = {
|
|
280
|
+
"access:read": [
|
|
281
|
+
"eb258a38ea634c86a0c89da6b27cb6b6",
|
|
282
|
+
"7ea222f6d5064cfa89ea366d7c1fee89",
|
|
283
|
+
"08e61dabe81a422dab0dea6fdef1a98a",
|
|
284
|
+
"0f4841f80adb4bada5a09493300e7f8d",
|
|
285
|
+
"4f3196a5c95747b6ad82e34e1d0a694f",
|
|
286
|
+
"26bc23f853634eb4bff59983b9064fde",
|
|
287
|
+
"b8b7514ce5364cd8ac0455f3eb16eb5f",
|
|
288
|
+
"de99c87e48d642ce8c985d027905b475",
|
|
289
|
+
"91f7ce32fa614d73b7e1fc8f0e78582b",
|
|
290
|
+
"99ff99e4e30247a99d3777a8c4c18541",
|
|
291
|
+
"e985ca9351db460faebbe8681c48e560",
|
|
292
|
+
],
|
|
293
|
+
"access:write": [
|
|
294
|
+
"a1c0fec57cf94af79479a6d827fa518c",
|
|
295
|
+
"d30c9ad8b5224e7cb8d41bcb4757effc",
|
|
296
|
+
"bc783549a3a741aaa10556faf8b485bb",
|
|
297
|
+
"6d23f290472f4e6fad5c4398c057c356",
|
|
298
|
+
"bfe0d8686a584fa680f4c53b5eb0de6d",
|
|
299
|
+
"7121a0c7e9ed46e3829f9cca2bb572aa",
|
|
300
|
+
"29d3afbfd4054af9accdd1118815ed05",
|
|
301
|
+
"2fc1072ee6b743828db668fcb3f9dee7",
|
|
302
|
+
"4e5fd8ac327b4a358e48c66fcbeb856d",
|
|
303
|
+
"1e13c5124ca64b72b1969a67e8829049",
|
|
304
|
+
"959972745952452f8be2452be8cbb9f2",
|
|
305
|
+
"6c9d1cfcfc6840a987d1b5bfb880a841",
|
|
306
|
+
"6db4e222e21248ac96a3f4c2a81e3b41",
|
|
307
|
+
"eb258a38ea634c86a0c89da6b27cb6b6",
|
|
308
|
+
"7ea222f6d5064cfa89ea366d7c1fee89",
|
|
309
|
+
"08e61dabe81a422dab0dea6fdef1a98a",
|
|
310
|
+
"0f4841f80adb4bada5a09493300e7f8d",
|
|
311
|
+
"4f3196a5c95747b6ad82e34e1d0a694f",
|
|
312
|
+
"26bc23f853634eb4bff59983b9064fde",
|
|
313
|
+
"b8b7514ce5364cd8ac0455f3eb16eb5f",
|
|
314
|
+
"de99c87e48d642ce8c985d027905b475",
|
|
315
|
+
"91f7ce32fa614d73b7e1fc8f0e78582b",
|
|
316
|
+
"99ff99e4e30247a99d3777a8c4c18541",
|
|
317
|
+
"e985ca9351db460faebbe8681c48e560",
|
|
318
|
+
],
|
|
319
|
+
"account:read": ["c1fde68c7bcc44588cbb6ddbc16d6480"],
|
|
320
|
+
"agw:read": ["05a2a65760a546439ed29762b163cece"],
|
|
321
|
+
"agw:run": [
|
|
322
|
+
"05a2a65760a546439ed29762b163cece",
|
|
323
|
+
"5e5d3e8efeec49f3afb67bafecbcd511",
|
|
324
|
+
],
|
|
325
|
+
"ai:read": ["a92d2450e05d4e7bb7d0a64968f83d11"],
|
|
326
|
+
"ai:write": [
|
|
327
|
+
"a92d2450e05d4e7bb7d0a64968f83d11",
|
|
328
|
+
"bacc64e0f6c34fc0883a1223f938a104",
|
|
329
|
+
],
|
|
330
|
+
"aiaudit:read": ["19637fbb73d242c0a92845d8db0b95b1"],
|
|
331
|
+
"aiaudit:write": [
|
|
332
|
+
"19637fbb73d242c0a92845d8db0b95b1",
|
|
333
|
+
"1ba6ab4cacdb454b913bbb93e1b8cb8c",
|
|
334
|
+
],
|
|
335
|
+
"aig:read": ["4dc8917b4b40457d88d3035d5dadb054"],
|
|
336
|
+
"aig:write": [
|
|
337
|
+
"4dc8917b4b40457d88d3035d5dadb054",
|
|
338
|
+
"644535f4ed854494a59cb289d634b257",
|
|
339
|
+
"6c8a3737f07f46369c1ea1f22138daaf",
|
|
340
|
+
],
|
|
341
|
+
"auditlogs:read": ["b05b28e839c54467a7d6cba5d3abb5a3"],
|
|
342
|
+
"browser:read": ["374b03fa229f4eb6b011bb1cd7f235ee"],
|
|
343
|
+
"browser:write": [
|
|
344
|
+
"374b03fa229f4eb6b011bb1cd7f235ee",
|
|
345
|
+
"adddda876faa4a0590f1b23a038976e4",
|
|
346
|
+
],
|
|
347
|
+
"cfone:read": [
|
|
348
|
+
"1cd960c063a0448481343372c963d8c7",
|
|
349
|
+
"c1968d31028d4239976ec3bc4750bbf6",
|
|
350
|
+
"07cf1c1952a84b13b2cd542f3d2f29ab",
|
|
351
|
+
],
|
|
352
|
+
"cfone:write": [
|
|
353
|
+
"5b5c774a5d174ca88d046c8889648b3f",
|
|
354
|
+
"037b9e348b3b42d4b46ea2fcb1cfb3e7",
|
|
355
|
+
"a7030c9c98d544e092d8b099fabb1f06",
|
|
356
|
+
"1cd960c063a0448481343372c963d8c7",
|
|
357
|
+
"c1968d31028d4239976ec3bc4750bbf6",
|
|
358
|
+
"07cf1c1952a84b13b2cd542f3d2f29ab",
|
|
359
|
+
],
|
|
360
|
+
"cloudchamber:write": [
|
|
361
|
+
"65ec50cbde3d4c838bbe7500024d5745",
|
|
362
|
+
"26ce6c7d18a346528e7b905d5e269866",
|
|
363
|
+
],
|
|
364
|
+
"constellation:write": [
|
|
365
|
+
"eeffa4d16812430cb4a0ae9e7f46fc24",
|
|
366
|
+
"7c81856725af47ce89a790d5fb36f362",
|
|
367
|
+
],
|
|
368
|
+
"containers:write": [
|
|
369
|
+
"cfd39eebc07c4e3ea849e4b3d2644637",
|
|
370
|
+
"bdbcd690c763475a985e8641dddc09f7",
|
|
371
|
+
],
|
|
372
|
+
"d1:write": [
|
|
373
|
+
"192192df92ee43ac90f2aeeffce67e35",
|
|
374
|
+
"09b2857d1c31407795e75e3fed8617a1",
|
|
375
|
+
],
|
|
376
|
+
"dex:read": ["3b376e0aa52c41cbb6afc9cab945afa8"],
|
|
377
|
+
"dex:write": [
|
|
378
|
+
"3a1e1ef09dd34271bb44fc4c6a419952",
|
|
379
|
+
"3b376e0aa52c41cbb6afc9cab945afa8",
|
|
380
|
+
"92c8dcd551cc42a6a57a54e8f8d3f3e3",
|
|
381
|
+
],
|
|
382
|
+
"dns_analytics:read": [], //??
|
|
383
|
+
"dns_records:edit": [
|
|
384
|
+
"82e64a83756745bbbb1c9c2701bf816b",
|
|
385
|
+
"95d69e8d6d5144bfb0923667355d9f11",
|
|
386
|
+
"5b7aedd821a548b9bf5a2acabbce98c7",
|
|
387
|
+
"4755a26eedb94da69e1066d98aa820be",
|
|
388
|
+
],
|
|
389
|
+
"dns_records:read": [
|
|
390
|
+
"82e64a83756745bbbb1c9c2701bf816b",
|
|
391
|
+
"95d69e8d6d5144bfb0923667355d9f11",
|
|
392
|
+
],
|
|
393
|
+
"dns_settings:read": ["cfa964bcdafc4ab39704e7476154e41b"],
|
|
394
|
+
"firstpartytags:write": [], //??
|
|
395
|
+
"lb:edit": [
|
|
396
|
+
"59059f0c977b44f8b1c18e0aaf91c369",
|
|
397
|
+
"419ec42810af4659ade77716dbe47bc6",
|
|
398
|
+
"6d7f2f5f5b1d4a0e9081fdc98d432fd1",
|
|
399
|
+
"9d24387c6e8544e2bc4024a03991339f",
|
|
400
|
+
"d2a1802cc9a34e30852f8b33869b2f3c",
|
|
401
|
+
],
|
|
402
|
+
"lb:read": [
|
|
403
|
+
"59059f0c977b44f8b1c18e0aaf91c369",
|
|
404
|
+
"9d24387c6e8544e2bc4024a03991339f",
|
|
405
|
+
"e9a975f628014f1d85b723993116f7d5",
|
|
406
|
+
],
|
|
407
|
+
"logpush:read": [
|
|
408
|
+
"6a315a56f18441e59ed03352369ae956",
|
|
409
|
+
"c4a30cd58c5d42619c86a3c36c441e2d",
|
|
410
|
+
],
|
|
411
|
+
"logpush:write": [
|
|
412
|
+
"6a315a56f18441e59ed03352369ae956",
|
|
413
|
+
"c4a30cd58c5d42619c86a3c36c441e2d",
|
|
414
|
+
"96163bd1b0784f62b3e44ed8c2ab1eb6",
|
|
415
|
+
"3e0b5820118e47f3922f7c989e673882",
|
|
416
|
+
],
|
|
417
|
+
"notification:read": ["ce18edbdcebf465e9d6d1d2fc80ffd42"],
|
|
418
|
+
"notification:write": [
|
|
419
|
+
"ce18edbdcebf465e9d6d1d2fc80ffd42",
|
|
420
|
+
"c3c847c5802d4ce3ba00e3e97b3c8555",
|
|
421
|
+
],
|
|
422
|
+
"pages:read": ["e247aedd66bd41cc9193af0213416666"],
|
|
423
|
+
"pages:write": [
|
|
424
|
+
"e247aedd66bd41cc9193af0213416666",
|
|
425
|
+
"8d28297797f24fb8a0c332fe0866ec89",
|
|
426
|
+
],
|
|
427
|
+
"pipelines:read": ["14b9cf2f410f4c0c9a16bb10a81c0e0b"],
|
|
428
|
+
"pipelines:setup": ["5606e7405dc542949d949d59993d321f"],
|
|
429
|
+
"pipelines:write": [
|
|
430
|
+
"14b9cf2f410f4c0c9a16bb10a81c0e0b",
|
|
431
|
+
"5606e7405dc542949d949d59993d321f",
|
|
432
|
+
"e34111af393449539859485aa5ddd5bd",
|
|
433
|
+
],
|
|
434
|
+
"query_cache:write": [],
|
|
435
|
+
"queues:write": [
|
|
436
|
+
"84a7755d54c646ca87cd50682a34bf7c",
|
|
437
|
+
"366f57075ffc42689627bcf8242a1b6d",
|
|
438
|
+
],
|
|
439
|
+
"r2_catalog:write": [
|
|
440
|
+
"45db74139a62490b9b60eb7c4f34994b",
|
|
441
|
+
"d229766a2f7f4d299f20eaa8c9b1fde9",
|
|
442
|
+
"f45430d92e2b4a6cb9f94f2594c141b8",
|
|
443
|
+
],
|
|
444
|
+
"radar:read": ["dfe525ec7b07472c827d8d009178b2ac"],
|
|
445
|
+
"rag:read": ["d7887c7a417e4cf2a69f1d01c1a1dc3b"],
|
|
446
|
+
"rag:write": [
|
|
447
|
+
"d7887c7a417e4cf2a69f1d01c1a1dc3b",
|
|
448
|
+
"7fb8d27511b34d02994d005b520b679f",
|
|
449
|
+
"234108c786084936a381bb19b7f4ea65",
|
|
450
|
+
],
|
|
451
|
+
"secrets_store:read": ["5e33b7d77788455c9fdf18cbd38ee5a0"],
|
|
452
|
+
"secrets_store:write": [
|
|
453
|
+
"5e33b7d77788455c9fdf18cbd38ee5a0",
|
|
454
|
+
"adc8fa2bc6124928a8b3314dc63a1235",
|
|
455
|
+
],
|
|
456
|
+
"sso-connector:read": ["1d80f6f165ea47f2b55d4a393fd697de"],
|
|
457
|
+
"sso-connector:write": [
|
|
458
|
+
"1d80f6f165ea47f2b55d4a393fd697de",
|
|
459
|
+
"901ca5e292584c6aa1b4cdb39248bb07",
|
|
460
|
+
],
|
|
461
|
+
"ssl_certs:write": [
|
|
462
|
+
"a7a233f9604845c787d4c8c39ac09c21",
|
|
463
|
+
"db37e5f1cb1a4e1aabaef8deaea43575",
|
|
464
|
+
"7b7216b327b04b8fbc8f524e1f9b7531",
|
|
465
|
+
"c03055bc037c4ea9afb9a9f104b7b721",
|
|
466
|
+
],
|
|
467
|
+
"teams:pii": [], //??
|
|
468
|
+
"teams:read": [], //??
|
|
469
|
+
"teams:secure_location": [], //??
|
|
470
|
+
"teams:write": [], //??
|
|
471
|
+
"url_scanner:read": ["5d613a610b294788a29572aaac2f254d"],
|
|
472
|
+
"url_scanner:write": [
|
|
473
|
+
"5d613a610b294788a29572aaac2f254d",
|
|
474
|
+
"2a400bcb29154daab509fe07e3facab0",
|
|
475
|
+
],
|
|
476
|
+
"user:read": [], //??
|
|
477
|
+
"vectorize:write": [
|
|
478
|
+
"1799edaae5db489294430e20d9b519e0",
|
|
479
|
+
"64156ba5be47441096c83c7fc17c488b",
|
|
480
|
+
],
|
|
481
|
+
"workers:write": [
|
|
482
|
+
"2072033d694d415a936eaeb94e6405b8",
|
|
483
|
+
"28f4b596e7d643029c524985477ae49a",
|
|
484
|
+
"1a71c399035b4950a1bd1466bbe4f420",
|
|
485
|
+
"e086da7e2179491d91ee5f35b3ca210a",
|
|
486
|
+
],
|
|
487
|
+
"workers_builds:read": ["ad99c5ae555e45c4bef5bdf2678388ba"],
|
|
488
|
+
"workers_builds:write": ["2e095cf436e2455fa62c9a9c2e18c478"],
|
|
489
|
+
"workers_kv:write": [
|
|
490
|
+
"8b47d2786a534c08a1f94ee8f9f599ef",
|
|
491
|
+
"f7f0eda5697f475c90846e879bab8666",
|
|
492
|
+
],
|
|
493
|
+
"workers_observability:read": ["66c1ed49f4ed46098b75696a6d4ee3c9"],
|
|
494
|
+
"workers_observability:write": [
|
|
495
|
+
"66c1ed49f4ed46098b75696a6d4ee3c9",
|
|
496
|
+
"82c075da3f4647a2a03becd0fe240f8a",
|
|
497
|
+
],
|
|
498
|
+
"workers_observability_telemetry:write": ["29c629fb7b5e4c408ca0f7b545724fcc"],
|
|
499
|
+
"workers_routes:write": [], //??
|
|
500
|
+
"workers_scripts:write": [], //??
|
|
501
|
+
"workers_tail:read": ["05880cd1bdc24d8bae0be2136972816b"],
|
|
502
|
+
"zone:read": [
|
|
503
|
+
"c8fed203ed3043cba015a93ad1616f1f",
|
|
504
|
+
"517b21aee92c4d89936c976ba6e4be55",
|
|
505
|
+
"211a4c0feb3e43b3a2d41f1443a433e7",
|
|
506
|
+
"1b1ea24cf0904d33903f0cc7e54e280f",
|
|
507
|
+
"dbc512b354774852af2b5a5f4ba3d470",
|
|
508
|
+
],
|
|
509
|
+
offline_access: [],
|
|
510
|
+
} as const;
|
|
@@ -245,8 +245,9 @@ export async function execAlchemy(
|
|
|
245
245
|
promiseWithResolvers<string>();
|
|
246
246
|
|
|
247
247
|
process.on("SIGINT", async () => {
|
|
248
|
+
// hold the parent process open until the child process exits,
|
|
249
|
+
// then the trpc middleware will handle the SIGINT after sending the event
|
|
248
250
|
await exitPromise;
|
|
249
|
-
throw new ExitSignal(sanitizeExitCode(child.exitCode));
|
|
250
251
|
});
|
|
251
252
|
|
|
252
253
|
const child = spawn(command, {
|
package/bin/trpc.ts
CHANGED
|
@@ -22,24 +22,30 @@ const loggingMiddleware = t.middleware(async ({ path, next }) => {
|
|
|
22
22
|
let exitCode = 0;
|
|
23
23
|
|
|
24
24
|
try {
|
|
25
|
-
await next();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
});
|
|
30
|
-
} catch (error) {
|
|
31
|
-
const isSafeExit = error instanceof ExitSignal && error.code === 0;
|
|
32
|
-
await createAndSendEvent(
|
|
33
|
-
{
|
|
34
|
-
event: isSafeExit ? "cli.success" : "cli.error",
|
|
25
|
+
const result = await next();
|
|
26
|
+
if (result.ok || result.error.cause instanceof CancelSignal) {
|
|
27
|
+
await createAndSendEvent({
|
|
28
|
+
event: "cli.success",
|
|
35
29
|
command: path,
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
});
|
|
31
|
+
} else if (result.error.cause instanceof ExitSignal) {
|
|
32
|
+
exitCode = result.error.cause.code;
|
|
33
|
+
await createAndSendEvent(
|
|
34
|
+
{
|
|
35
|
+
event: exitCode === 0 ? "cli.success" : "cli.error",
|
|
36
|
+
command: path,
|
|
37
|
+
},
|
|
38
|
+
result.error.cause,
|
|
39
|
+
);
|
|
41
40
|
} else {
|
|
42
|
-
|
|
41
|
+
await createAndSendEvent(
|
|
42
|
+
{
|
|
43
|
+
event: "cli.error",
|
|
44
|
+
command: path,
|
|
45
|
+
},
|
|
46
|
+
result.error.cause,
|
|
47
|
+
);
|
|
48
|
+
exitCode = 1;
|
|
43
49
|
}
|
|
44
50
|
} finally {
|
|
45
51
|
//* this is a node issue https://github.com/nodejs/node/issues/56645
|
|
@@ -32,6 +32,6 @@ export type Bound<T extends Binding> = T extends _DurableObjectNamespace<infer O
|
|
|
32
32
|
type: "kv_namespace";
|
|
33
33
|
} ? KVNamespace : T extends WorkerStub<infer RPC> ? BoundWorker<RPC> : T extends _Worker<any, infer RPC> | WorkerRef<infer RPC> ? BoundWorker<RPC> : T extends {
|
|
34
34
|
type: "service";
|
|
35
|
-
} ? Service : T extends _R2Bucket ? R2Bucket : T extends _Hyperdrive | HyperdriveRef ? Hyperdrive : T extends Secret ? string : T extends CloudflareSecret | CloudflareSecretRef ? SecretsStoreSecret : T extends SecretKey ? CryptoKey : T extends Assets ? Service : T extends _Workflow<infer P> ? Workflow<P> : T extends _D1Database ? D1Database : T extends DispatchNamespace ? DispatchNamespace : T extends _WorkerLoader ? WorkerLoader : T extends _VectorizeIndex ? VectorizeIndex : T extends _Queue<infer Body> ? Queue<Body> : T extends _AnalyticsEngineDataset ? AnalyticsEngineDataset : T extends _Pipeline<infer R> ? Pipeline<R> : T extends _RateLimit ? RateLimit : T extends string ? T : T extends BrowserRendering ? Fetcher : T extends _Ai<infer M> ? Ai<M> : T extends _Images ? ImagesBinding : T extends _VersionMetadata ? WorkerVersionMetadata : T extends Self ? Service : T extends Json<infer T> ? T : T extends _Container<infer Obj> ? DurableObjectNamespace<Obj & Rpc.DurableObjectBranded> : Service;
|
|
35
|
+
} ? Service : T extends _R2Bucket ? R2Bucket : T extends _Hyperdrive | HyperdriveRef ? Hyperdrive : T extends Secret ? string : T extends CloudflareSecret | CloudflareSecretRef ? SecretsStoreSecret : T extends SecretKey ? CryptoKey : T extends Assets ? Service : T extends _Workflow<infer P> ? Workflow<P> : T extends _D1Database ? D1Database : T extends DispatchNamespace ? DispatchNamespace : T extends _WorkerLoader ? WorkerLoader : T extends _VectorizeIndex ? VectorizeIndex : T extends _Queue<infer Body> ? Queue<Body> : T extends _AnalyticsEngineDataset ? AnalyticsEngineDataset : T extends _Pipeline<infer R> ? Pipeline<R> : T extends _RateLimit ? RateLimit : T extends string ? T : T extends BrowserRendering ? Fetcher : T extends _Ai<infer M> ? Ai<M> : T extends _Images ? ImagesBinding : T extends _VersionMetadata ? WorkerVersionMetadata : T extends Self ? Service : T extends Json<infer T> ? T : T extends _Container<infer Obj> ? DurableObjectNamespace<Obj & Rpc.DurableObjectBranded> : T extends undefined ? undefined : Service;
|
|
36
36
|
export {};
|
|
37
37
|
//# sourceMappingURL=bound.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bound.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bound.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bound.d.ts","sourceRoot":"","sources":["../../src/cloudflare/bound.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miniflare-worker-proxy.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/miniflare-worker-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAOvC,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IAChD,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;;;
|
|
1
|
+
{"version":3,"file":"miniflare-worker-proxy.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/miniflare/miniflare-worker-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAOvC,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IAChD,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;IAC/B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;;;GAqFA;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAoDD,qBAAa,yBAA0B,SAAQ,KAAK;IAGhD,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADvB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,YAAY;IAKxB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,QAAQ;IAkBxD,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB;CAQ9D"}
|
|
@@ -3,20 +3,14 @@ import { once } from "node:events";
|
|
|
3
3
|
import http from "node:http";
|
|
4
4
|
import { Readable } from "node:stream";
|
|
5
5
|
import { WebSocket, WebSocketServer } from "ws";
|
|
6
|
-
import {
|
|
6
|
+
import { createUpgradeHandler } from "../../util/http.js";
|
|
7
7
|
export async function createMiniflareWorkerProxy(options) {
|
|
8
8
|
const server = http.createServer();
|
|
9
9
|
const wss = new WebSocketServer({ noServer: true });
|
|
10
|
-
server.on("upgrade",
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
console.error(error);
|
|
17
|
-
socket.destroy();
|
|
18
|
-
}
|
|
19
|
-
});
|
|
10
|
+
server.on("upgrade", createUpgradeHandler({
|
|
11
|
+
wss,
|
|
12
|
+
createServerWebSocket: (req) => createServerWebSocket(req),
|
|
13
|
+
}));
|
|
20
14
|
server.on("request", async (req, res) => {
|
|
21
15
|
try {
|
|
22
16
|
const response = await handleFetch(req);
|
|
@@ -61,13 +55,11 @@ export async function createMiniflareWorkerProxy(options) {
|
|
|
61
55
|
const info = parseIncomingMessage(req);
|
|
62
56
|
options.transformRequest?.(info);
|
|
63
57
|
const name = options.getWorkerName(info);
|
|
64
|
-
|
|
58
|
+
return new WebSocket(url, protocols, {
|
|
65
59
|
headers: {
|
|
66
60
|
"MF-Route-Override": name,
|
|
67
61
|
},
|
|
68
62
|
});
|
|
69
|
-
await once(server, "open");
|
|
70
|
-
return server;
|
|
71
63
|
};
|
|
72
64
|
server.listen(options.port);
|
|
73
65
|
await once(server, "listening");
|