downcity 1.1.237 → 1.1.239
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/federation/create/commands/create.d.ts +1 -1
- package/bin/federation/create/commands/create.js +20 -10
- package/bin/federation/create/commands/create.js.map +1 -1
- package/bin/federation/deploy/commands/deploy.d.ts.map +1 -1
- package/bin/federation/deploy/commands/deploy.js +0 -2
- package/bin/federation/deploy/commands/deploy.js.map +1 -1
- package/bin/federation/deploy/config/FederationProjectConfigReader.d.ts +2 -2
- package/bin/federation/deploy/config/FederationProjectConfigReader.d.ts.map +1 -1
- package/bin/federation/deploy/config/FederationProjectConfigReader.js +75 -5
- package/bin/federation/deploy/config/FederationProjectConfigReader.js.map +1 -1
- package/bin/federation/deploy/runtime/CloudflareAccountResolver.d.ts +0 -5
- package/bin/federation/deploy/runtime/CloudflareAccountResolver.d.ts.map +1 -1
- package/bin/federation/deploy/runtime/CloudflareAccountResolver.js +9 -20
- package/bin/federation/deploy/runtime/CloudflareAccountResolver.js.map +1 -1
- package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.d.ts +2 -2
- package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.d.ts.map +1 -1
- package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.js +77 -27
- package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.js.map +1 -1
- package/bin/federation/deploy/runtime/D1DatabaseResolver.d.ts +6 -7
- package/bin/federation/deploy/runtime/D1DatabaseResolver.d.ts.map +1 -1
- package/bin/federation/deploy/runtime/D1DatabaseResolver.js +24 -48
- package/bin/federation/deploy/runtime/D1DatabaseResolver.js.map +1 -1
- package/bin/federation/deploy/runtime/PackageScriptRunner.d.ts +2 -1
- package/bin/federation/deploy/runtime/PackageScriptRunner.d.ts.map +1 -1
- package/bin/federation/deploy/runtime/PackageScriptRunner.js +26 -22
- package/bin/federation/deploy/runtime/PackageScriptRunner.js.map +1 -1
- package/bin/federation/deploy/runtime/QueueResolver.d.ts +29 -0
- package/bin/federation/deploy/runtime/QueueResolver.d.ts.map +1 -0
- package/bin/federation/deploy/runtime/QueueResolver.js +90 -0
- package/bin/federation/deploy/runtime/QueueResolver.js.map +1 -0
- package/bin/federation/deploy/runtime/WranglerConfigWriter.d.ts +2 -2
- package/bin/federation/deploy/runtime/WranglerConfigWriter.d.ts.map +1 -1
- package/bin/federation/deploy/runtime/WranglerConfigWriter.js +6 -3
- package/bin/federation/deploy/runtime/WranglerConfigWriter.js.map +1 -1
- package/bin/federation/index.js +1 -1
- package/bin/federation/index.js.map +1 -1
- package/bin/federation/types/FederationDeployRuntime.d.ts +77 -0
- package/bin/federation/types/FederationDeployRuntime.d.ts.map +1 -0
- package/bin/federation/types/FederationDeployRuntime.js +10 -0
- package/bin/federation/types/FederationDeployRuntime.js.map +1 -0
- package/bin/federation/types/FederationProjectConfig.d.ts +27 -21
- package/bin/federation/types/FederationProjectConfig.d.ts.map +1 -1
- package/bin/federation/types/FederationProjectConfig.js +3 -3
- package/package.json +2 -2
- package/bin/federation/deploy/config/FederationProjectEnvLoader.d.ts +0 -22
- package/bin/federation/deploy/config/FederationProjectEnvLoader.d.ts.map +0 -1
- package/bin/federation/deploy/config/FederationProjectEnvLoader.js +0 -158
- package/bin/federation/deploy/config/FederationProjectEnvLoader.js.map +0 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 从零搭建一个可部署的 City 项目,而不是让用户手写底层部署文件。
|
|
6
6
|
* - Git URL 只在 create 阶段 clone 到本地;deploy 阶段只处理本地项目。
|
|
7
|
-
* - `federation.json`
|
|
7
|
+
* - `federation.json` 写入可提交的部署意图和稳定资源声明。
|
|
8
8
|
* - 当前先生成 Cloudflare Workers 项目骨架,后续可扩展更多 target。
|
|
9
9
|
*/
|
|
10
10
|
/** Commander 传入的 create 选项。 */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - 从零搭建一个可部署的 City 项目,而不是让用户手写底层部署文件。
|
|
6
6
|
* - Git URL 只在 create 阶段 clone 到本地;deploy 阶段只处理本地项目。
|
|
7
|
-
* - `federation.json`
|
|
7
|
+
* - `federation.json` 写入可提交的部署意图和稳定资源声明。
|
|
8
8
|
* - 当前先生成 Cloudflare Workers 项目骨架,后续可扩展更多 target。
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
|
|
@@ -116,10 +116,28 @@ async function cloneFederationProject(git_url, _options) {
|
|
|
116
116
|
*/
|
|
117
117
|
function createCloudflareWorkersFiles(name, target) {
|
|
118
118
|
const package_name = normalizePackageName(name);
|
|
119
|
+
const d1_name = `${name}-db`;
|
|
120
|
+
const queue_name = `${name}-queue`;
|
|
119
121
|
return [
|
|
120
122
|
{
|
|
121
123
|
path: "federation.json",
|
|
122
|
-
content: `${JSON.stringify({
|
|
124
|
+
content: `${JSON.stringify({
|
|
125
|
+
schema: 1,
|
|
126
|
+
type: "city",
|
|
127
|
+
name,
|
|
128
|
+
target,
|
|
129
|
+
entry: "src/index.ts",
|
|
130
|
+
resources: {
|
|
131
|
+
d1: {
|
|
132
|
+
binding: "DB",
|
|
133
|
+
name: d1_name,
|
|
134
|
+
},
|
|
135
|
+
queue: {
|
|
136
|
+
binding: "DOWNCITY_QUEUE",
|
|
137
|
+
name: queue_name,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
}, null, 2)}\n`,
|
|
123
141
|
},
|
|
124
142
|
{
|
|
125
143
|
path: "package.json",
|
|
@@ -162,14 +180,6 @@ function createCloudflareWorkersFiles(name, target) {
|
|
|
162
180
|
include: ["src/**/*.ts"],
|
|
163
181
|
}, null, 2)}\n`,
|
|
164
182
|
},
|
|
165
|
-
{
|
|
166
|
-
path: ".env.example",
|
|
167
|
-
content: [
|
|
168
|
-
"# Local deploy values.",
|
|
169
|
-
`CITY_D1_DATABASE_NAME=${name}-db`,
|
|
170
|
-
"",
|
|
171
|
-
].join("\n"),
|
|
172
|
-
},
|
|
173
183
|
{
|
|
174
184
|
path: "src/index.ts",
|
|
175
185
|
content: createWorkerEntrypoint(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/federation/create/commands/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/federation/create/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,iCAAiC;AACjC,MAAM,WAAW,8BAA8B;IAC7C,qBAAqB;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,GAAE,MAAY,EACpB,WAAW,GAAE,8BAAmC,GAC/C,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
import { CliError } from "../../../shared/CliError.js";
|
|
10
10
|
import { readFederationProjectConfig } from "../config/FederationProjectConfigReader.js";
|
|
11
11
|
import { deployCloudflareWorkers } from "../runtime/CloudflareWorkersDeployer.js";
|
|
12
|
-
import { loadFederationProjectEnv } from "../config/FederationProjectEnvLoader.js";
|
|
13
12
|
import { resolveFederationDeployTarget } from "../config/FederationDeployTargetResolver.js";
|
|
14
13
|
/**
|
|
15
14
|
* 执行 Federation 项目部署。
|
|
@@ -26,7 +25,6 @@ export async function deployFederationProject(source = ".", raw_options = {}) {
|
|
|
26
25
|
};
|
|
27
26
|
const target = await resolveFederationDeployTarget(options.source);
|
|
28
27
|
const config_file = readFederationProjectConfig(target.project_dir);
|
|
29
|
-
loadFederationProjectEnv(config_file.project_dir);
|
|
30
28
|
switch (config_file.config.target) {
|
|
31
29
|
case "cloudflare-workers":
|
|
32
30
|
await deployCloudflareWorkers(config_file, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../src/federation/deploy/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AACnG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../src/federation/deploy/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6DAA6D,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AACnG,OAAO,EAAE,6BAA6B,EAAE,MAAM,8DAA8D,CAAC;AAkB7G;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,GAAG,EACpB,cAA8C,EAAE;IAEhD,MAAM,OAAO,GAA4B;QACvC,MAAM;QACN,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,IAAI;QACpC,MAAM,EAAE,WAAW,CAAC,MAAM,KAAK,IAAI;QACnC,WAAW,EAAE,WAAW,CAAC,UAAU,KAAK,IAAI;QAC5C,UAAU,EAAE,WAAW,CAAC,SAAS,KAAK,IAAI;QAC1C,cAAc,EAAE,WAAW,CAAC,aAAa,KAAK,IAAI;QAClD,UAAU,EAAE,WAAW,CAAC,SAAS;KAClC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpE,QAAQ,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,oBAAoB;YACvB,MAAM,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO;QACT;YACE,MAAM,IAAI,QAAQ,CAAC;gBACjB,KAAK,EAAE,+BAA+B;gBACtC,IAAI,EAAE,gCAAgC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG;aACnE,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* City 项目配置读取器。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - `federation.json`
|
|
6
|
-
* - Cloudflare
|
|
5
|
+
* - `federation.json` 保存可提交的部署意图:type、name、target、entry、resources。
|
|
6
|
+
* - Cloudflare account、D1 id、Worker URL 等部署状态不进入项目配置。
|
|
7
7
|
* - 部署状态不写回 `federation.json`,避免用户手写协议被机器污染。
|
|
8
8
|
*/
|
|
9
9
|
import type { FederationProjectConfigFile } from "../../types/FederationProjectConfig.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FederationProjectConfigReader.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/config/FederationProjectConfigReader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAEV,2BAA2B,
|
|
1
|
+
{"version":3,"file":"FederationProjectConfigReader.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/config/FederationProjectConfigReader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAEV,2BAA2B,EAI5B,MAAM,+CAA+C,CAAC;AAIvD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,2BAA2B,CA2BpF"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* City 项目配置读取器。
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
|
-
* - `federation.json`
|
|
6
|
-
* - Cloudflare
|
|
5
|
+
* - `federation.json` 保存可提交的部署意图:type、name、target、entry、resources。
|
|
6
|
+
* - Cloudflare account、D1 id、Worker URL 等部署状态不进入项目配置。
|
|
7
7
|
* - 部署状态不写回 `federation.json`,避免用户手写协议被机器污染。
|
|
8
8
|
*/
|
|
9
9
|
import { existsSync, readFileSync } from "node:fs";
|
|
@@ -51,6 +51,10 @@ function normalizeFederationProjectConfig(input, config_path, project_dir) {
|
|
|
51
51
|
if (type !== "city") {
|
|
52
52
|
throw invalidConfig(config_path, `Unsupported type: ${type}`);
|
|
53
53
|
}
|
|
54
|
+
const schema = readOptionalNumber(input, "schema") ?? 1;
|
|
55
|
+
if (schema !== 1) {
|
|
56
|
+
throw invalidConfig(config_path, `Unsupported schema: ${schema}`);
|
|
57
|
+
}
|
|
54
58
|
const name = readOptionalString(input, "name") ?? inferProjectName(project_dir);
|
|
55
59
|
const target = readOptionalString(input, "target")
|
|
56
60
|
?? readOptionalString(input, "runtime")
|
|
@@ -58,12 +62,14 @@ function normalizeFederationProjectConfig(input, config_path, project_dir) {
|
|
|
58
62
|
if (target !== "cloudflare-workers") {
|
|
59
63
|
throw invalidConfig(config_path, `Unsupported target: ${target}`);
|
|
60
64
|
}
|
|
65
|
+
const entry = readOptionalString(input, "entry") ?? resolveTargetEntry(target);
|
|
61
66
|
return {
|
|
67
|
+
schema,
|
|
62
68
|
type,
|
|
63
69
|
name,
|
|
64
|
-
entry
|
|
70
|
+
entry,
|
|
65
71
|
target,
|
|
66
|
-
|
|
72
|
+
resources: resolveProjectResources(input, target, name),
|
|
67
73
|
};
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
@@ -77,7 +83,7 @@ function resolveTargetEntry(target) {
|
|
|
77
83
|
/**
|
|
78
84
|
* 解析 target 的默认数据库。
|
|
79
85
|
*/
|
|
80
|
-
function
|
|
86
|
+
function resolveTargetD1Resource(target, project_name) {
|
|
81
87
|
if (target !== "cloudflare-workers")
|
|
82
88
|
return undefined;
|
|
83
89
|
return {
|
|
@@ -86,6 +92,52 @@ function resolveTargetDatabase(target, project_name) {
|
|
|
86
92
|
name: `${project_name}-db`,
|
|
87
93
|
};
|
|
88
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* 解析 target 的默认 Queue。
|
|
97
|
+
*/
|
|
98
|
+
function resolveTargetQueueResource(target, project_name) {
|
|
99
|
+
if (target !== "cloudflare-workers")
|
|
100
|
+
return undefined;
|
|
101
|
+
return {
|
|
102
|
+
type: "queue",
|
|
103
|
+
binding: "DOWNCITY_QUEUE",
|
|
104
|
+
name: `${project_name}-queue`,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 解析项目资源配置。
|
|
109
|
+
*/
|
|
110
|
+
function resolveProjectResources(input, target, project_name) {
|
|
111
|
+
const default_d1 = resolveTargetD1Resource(target, project_name);
|
|
112
|
+
const default_queue = resolveTargetQueueResource(target, project_name);
|
|
113
|
+
const resources = readOptionalRecord(input, "resources");
|
|
114
|
+
const d1 = readOptionalRecord(resources ?? {}, "d1");
|
|
115
|
+
const queue = readOptionalRecord(resources ?? {}, "queue");
|
|
116
|
+
const legacy_database = readOptionalRecord(input, "database");
|
|
117
|
+
const d1_source = d1 ?? legacy_database;
|
|
118
|
+
if (!default_d1)
|
|
119
|
+
return {};
|
|
120
|
+
return {
|
|
121
|
+
d1: d1_source
|
|
122
|
+
? {
|
|
123
|
+
type: "d1",
|
|
124
|
+
binding: readOptionalString(d1_source, "binding") ?? default_d1.binding,
|
|
125
|
+
name: readOptionalString(d1_source, "name") ?? default_d1.name,
|
|
126
|
+
}
|
|
127
|
+
: default_d1,
|
|
128
|
+
...(default_queue
|
|
129
|
+
? {
|
|
130
|
+
queue: queue
|
|
131
|
+
? {
|
|
132
|
+
type: "queue",
|
|
133
|
+
binding: readOptionalString(queue, "binding") ?? default_queue.binding,
|
|
134
|
+
name: readOptionalString(queue, "name") ?? default_queue.name,
|
|
135
|
+
}
|
|
136
|
+
: default_queue,
|
|
137
|
+
}
|
|
138
|
+
: {}),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
89
141
|
/**
|
|
90
142
|
* 根据目录名推断项目名。
|
|
91
143
|
*/
|
|
@@ -124,4 +176,22 @@ function readOptionalString(input, key) {
|
|
|
124
176
|
const trimmed = value.trim();
|
|
125
177
|
return trimmed || undefined;
|
|
126
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* 读取可选数字。
|
|
181
|
+
*/
|
|
182
|
+
function readOptionalNumber(input, key) {
|
|
183
|
+
const value = input[key];
|
|
184
|
+
if (typeof value !== "number" || !Number.isInteger(value))
|
|
185
|
+
return undefined;
|
|
186
|
+
return value;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* 读取可选对象。
|
|
190
|
+
*/
|
|
191
|
+
function readOptionalRecord(input, key) {
|
|
192
|
+
const value = input[key];
|
|
193
|
+
if (!isRecord(value))
|
|
194
|
+
return undefined;
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
127
197
|
//# sourceMappingURL=FederationProjectConfigReader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FederationProjectConfigReader.js","sourceRoot":"","sources":["../../../../src/federation/deploy/config/FederationProjectConfigReader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"FederationProjectConfigReader.js","sourceRoot":"","sources":["../../../../src/federation/deploy/config/FederationProjectConfigReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,10 @@
|
|
|
6
6
|
* - 有明确 account id 时直接复用;没有时先尝试 Wrangler 自动识别。
|
|
7
7
|
* - Wrangler 已登录但无法枚举 account 时,进入最小交互:重新登录或手动输入 account id。
|
|
8
8
|
*/
|
|
9
|
-
import type { FederationProjectDeployEnvFile } from "../../types/FederationProjectConfig.js";
|
|
10
9
|
/** Cloudflare account 解析参数。 */
|
|
11
10
|
export interface ResolveCloudflareAccountParams {
|
|
12
11
|
/** City 项目目录。 */
|
|
13
12
|
project_dir: string;
|
|
14
|
-
/** 当前 City 本地部署环境。 */
|
|
15
|
-
env_file: FederationProjectDeployEnvFile;
|
|
16
13
|
/** 用户通过命令行或环境变量显式传入的 account id。 */
|
|
17
14
|
account_id?: string;
|
|
18
15
|
}
|
|
@@ -20,8 +17,6 @@ export interface ResolveCloudflareAccountParams {
|
|
|
20
17
|
export interface ResolveCloudflareAccountResult {
|
|
21
18
|
/** Cloudflare account id。 */
|
|
22
19
|
account_id?: string;
|
|
23
|
-
/** 可能写入 account id 后的本地部署环境。 */
|
|
24
|
-
env_file: FederationProjectDeployEnvFile;
|
|
25
20
|
}
|
|
26
21
|
/**
|
|
27
22
|
* 解析并准备 Cloudflare account。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudflareAccountResolver.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareAccountResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"CloudflareAccountResolver.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareAccountResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,+BAA+B;AAC/B,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+BAA+B;AAC/B,MAAM,WAAW,8BAA8B;IAC7C,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,8BAA8B,CAAC,CAyBzC"}
|
|
@@ -19,7 +19,7 @@ export async function resolveCloudflareAccount(params) {
|
|
|
19
19
|
?? normalizeAccountId(process.env.CLOUDFLARE_ACCOUNT_ID)
|
|
20
20
|
?? normalizeAccountId(readCloudflareAccountId());
|
|
21
21
|
if (initial_account_id) {
|
|
22
|
-
return persistCloudflareAccount(
|
|
22
|
+
return persistCloudflareAccount(initial_account_id);
|
|
23
23
|
}
|
|
24
24
|
let output = await runWranglerWhoami(params.project_dir);
|
|
25
25
|
if (isWranglerLoginRequired(output)) {
|
|
@@ -28,22 +28,12 @@ export async function resolveCloudflareAccount(params) {
|
|
|
28
28
|
}
|
|
29
29
|
const detected_account_id = extractAccountId(output);
|
|
30
30
|
if (detected_account_id) {
|
|
31
|
-
|
|
32
|
-
tone: "success",
|
|
33
|
-
title: "Cloudflare account detected",
|
|
34
|
-
facts: [{ label: "account", value: detected_account_id }],
|
|
35
|
-
});
|
|
36
|
-
return persistCloudflareAccount(params.env_file, detected_account_id);
|
|
31
|
+
return persistCloudflareAccount(detected_account_id);
|
|
37
32
|
}
|
|
38
33
|
if (isWranglerAccountLookupDenied(output)) {
|
|
39
34
|
return await resolveAccountAfterLookupDenied(params);
|
|
40
35
|
}
|
|
41
|
-
|
|
42
|
-
tone: "success",
|
|
43
|
-
title: "Wrangler authenticated",
|
|
44
|
-
note: output.split("\n").slice(0, 3).join(" "),
|
|
45
|
-
});
|
|
46
|
-
return { env_file: params.env_file };
|
|
36
|
+
return {};
|
|
47
37
|
}
|
|
48
38
|
/**
|
|
49
39
|
* 处理 Wrangler 已登录但无法列出 account 的场景。
|
|
@@ -91,16 +81,16 @@ async function resolveAccountAfterLookupDenied(params) {
|
|
|
91
81
|
const output = await runWranglerWhoami(params.project_dir);
|
|
92
82
|
const account_id = extractAccountId(output);
|
|
93
83
|
if (account_id) {
|
|
94
|
-
return persistCloudflareAccount(
|
|
84
|
+
return persistCloudflareAccount(account_id);
|
|
95
85
|
}
|
|
96
|
-
return await promptForAccountId(
|
|
86
|
+
return await promptForAccountId();
|
|
97
87
|
}
|
|
98
|
-
return await promptForAccountId(
|
|
88
|
+
return await promptForAccountId();
|
|
99
89
|
}
|
|
100
90
|
/**
|
|
101
91
|
* 交互式输入 Cloudflare account id。
|
|
102
92
|
*/
|
|
103
|
-
async function promptForAccountId(
|
|
93
|
+
async function promptForAccountId() {
|
|
104
94
|
const account_id = await text({
|
|
105
95
|
message: "Cloudflare account id",
|
|
106
96
|
placeholder: "32-character account id",
|
|
@@ -116,12 +106,12 @@ async function promptForAccountId(env_file) {
|
|
|
116
106
|
note: "Cloudflare account id was not provided.",
|
|
117
107
|
});
|
|
118
108
|
}
|
|
119
|
-
return persistCloudflareAccount(
|
|
109
|
+
return persistCloudflareAccount(String(account_id));
|
|
120
110
|
}
|
|
121
111
|
/**
|
|
122
112
|
* 保存 Cloudflare account id 到本地 City CLI 状态。
|
|
123
113
|
*/
|
|
124
|
-
function persistCloudflareAccount(
|
|
114
|
+
function persistCloudflareAccount(account_id) {
|
|
125
115
|
const normalized_account_id = normalizeAccountId(account_id);
|
|
126
116
|
if (!normalized_account_id) {
|
|
127
117
|
throw new CliError({
|
|
@@ -132,7 +122,6 @@ function persistCloudflareAccount(env_file, account_id) {
|
|
|
132
122
|
writeCloudflareAccountId(normalized_account_id);
|
|
133
123
|
return {
|
|
134
124
|
account_id: normalized_account_id,
|
|
135
|
-
env_file,
|
|
136
125
|
};
|
|
137
126
|
}
|
|
138
127
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudflareAccountResolver.js","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareAccountResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudflareAccountResolver.js","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareAccountResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - `city deploy` 的用户心智是“部署一个 City 项目”,不是配置 Cloudflare 工程。
|
|
6
|
-
* - 构建和类型检查从 package.json
|
|
7
|
-
* - D1
|
|
6
|
+
* - 构建和类型检查从 package.json 自动推断,稳定资源由 `federation.json` 声明。
|
|
7
|
+
* - D1 database id 与 Worker URL 都是部署状态,不写入项目配置。
|
|
8
8
|
*/
|
|
9
9
|
import type { FederationDeployOptions, FederationProjectConfigFile } from "../../types/FederationProjectConfig.js";
|
|
10
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudflareWorkersDeployer.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareWorkersDeployer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudflareWorkersDeployer.d.ts","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareWorkersDeployer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,+CAA+C,CAAC;AAYvD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsIf"}
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 关键点(中文)
|
|
5
5
|
* - `city deploy` 的用户心智是“部署一个 City 项目”,不是配置 Cloudflare 工程。
|
|
6
|
-
* - 构建和类型检查从 package.json
|
|
7
|
-
* - D1
|
|
6
|
+
* - 构建和类型检查从 package.json 自动推断,稳定资源由 `federation.json` 声明。
|
|
7
|
+
* - D1 database id 与 Worker URL 都是部署状态,不写入项目配置。
|
|
8
8
|
*/
|
|
9
9
|
import { rmSync } from "node:fs";
|
|
10
10
|
import { dirname } from "node:path";
|
|
11
11
|
import { addServer, readActiveServer, readServer } from "../../core/session.js";
|
|
12
12
|
import { emitCliBlock } from "../../../shared/CliReporter.js";
|
|
13
13
|
import { CliError } from "../../../shared/CliError.js";
|
|
14
|
-
import { readFederationProjectDeployEnv, } from "../config/FederationProjectEnvLoader.js";
|
|
15
14
|
import { resolveCloudflareAccount } from "./CloudflareAccountResolver.js";
|
|
16
15
|
import { resolveD1Database } from "./D1DatabaseResolver.js";
|
|
16
|
+
import { resolveQueue } from "./QueueResolver.js";
|
|
17
17
|
import { writeWranglerConfig } from "./WranglerConfigWriter.js";
|
|
18
18
|
import { runCommand } from "./CommandRunner.js";
|
|
19
19
|
import { bumpProjectPatchVersion } from "./ProjectVersionManager.js";
|
|
@@ -22,15 +22,13 @@ import { runPackageDeployScripts } from "./PackageScriptRunner.js";
|
|
|
22
22
|
* 部署 Cloudflare Workers City 项目。
|
|
23
23
|
*/
|
|
24
24
|
export async function deployCloudflareWorkers(config_file, options) {
|
|
25
|
-
let env_file = readFederationProjectDeployEnv(config_file.project_dir);
|
|
26
25
|
emitCliBlock({
|
|
27
26
|
tone: "accent",
|
|
28
|
-
title: "
|
|
27
|
+
title: "Project",
|
|
29
28
|
facts: [
|
|
30
29
|
{ label: "name", value: config_file.config.name },
|
|
31
30
|
{ label: "target", value: config_file.config.target },
|
|
32
|
-
{ label: "source", value:
|
|
33
|
-
{ label: "dir", value: config_file.project_dir },
|
|
31
|
+
{ label: "source", value: config_file.project_dir },
|
|
34
32
|
],
|
|
35
33
|
});
|
|
36
34
|
if (options.verify_only) {
|
|
@@ -39,39 +37,54 @@ export async function deployCloudflareWorkers(config_file, options) {
|
|
|
39
37
|
}
|
|
40
38
|
const account_result = await resolveCloudflareAccount({
|
|
41
39
|
project_dir: config_file.project_dir,
|
|
42
|
-
env_file,
|
|
43
40
|
account_id: options.account_id,
|
|
44
41
|
});
|
|
45
42
|
const account_id = account_result.account_id;
|
|
46
|
-
env_file = account_result.env_file;
|
|
47
43
|
const version_bump = options.dry_run === true ? undefined : bumpProjectPatchVersion(config_file.project_dir);
|
|
48
44
|
if (version_bump) {
|
|
49
45
|
emitCliBlock({
|
|
50
46
|
tone: "success",
|
|
51
|
-
title: "
|
|
47
|
+
title: "Version",
|
|
52
48
|
facts: [
|
|
53
49
|
{ label: "from", value: version_bump.previous_version },
|
|
54
50
|
{ label: "to", value: version_bump.next_version },
|
|
55
51
|
],
|
|
56
52
|
});
|
|
57
53
|
}
|
|
58
|
-
await runPackageDeployScripts({
|
|
54
|
+
const scripts_result = await runPackageDeployScripts({
|
|
59
55
|
project_dir: config_file.project_dir,
|
|
60
56
|
skip_build: options.skip_build,
|
|
61
57
|
skip_typecheck: options.skip_typecheck,
|
|
62
58
|
});
|
|
59
|
+
emitPackageScriptSummary("Build", scripts_result.build);
|
|
60
|
+
emitPackageScriptSummary("Typecheck", scripts_result.typecheck);
|
|
63
61
|
const d1_result = await resolveD1Database({
|
|
64
62
|
config_file,
|
|
65
|
-
env_file,
|
|
66
63
|
account_id,
|
|
67
64
|
create_if_missing: options.dry_run !== true,
|
|
68
65
|
});
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
const queue_result = await resolveQueue({
|
|
67
|
+
config_file,
|
|
68
|
+
account_id,
|
|
69
|
+
create_if_missing: options.dry_run !== true,
|
|
70
|
+
});
|
|
71
|
+
const wrangler_result = writeWranglerConfig(config_file, d1_result.resolved_database_id);
|
|
72
|
+
emitCliBlock({
|
|
73
|
+
tone: "success",
|
|
74
|
+
title: "D1 Database",
|
|
75
|
+
facts: [
|
|
76
|
+
{ label: "name", value: d1_result.summary.name ?? "(none)" },
|
|
77
|
+
{ label: "id", value: d1_result.summary.id ?? "(none)" },
|
|
78
|
+
{ label: "status", value: d1_result.summary.status },
|
|
79
|
+
],
|
|
80
|
+
});
|
|
71
81
|
emitCliBlock({
|
|
72
82
|
tone: "success",
|
|
73
|
-
title: "
|
|
74
|
-
facts: [
|
|
83
|
+
title: "Queue",
|
|
84
|
+
facts: [
|
|
85
|
+
{ label: "name", value: queue_result.summary.name ?? "(none)" },
|
|
86
|
+
{ label: "status", value: queue_result.summary.status },
|
|
87
|
+
],
|
|
75
88
|
});
|
|
76
89
|
let output = "";
|
|
77
90
|
try {
|
|
@@ -87,19 +100,61 @@ export async function deployCloudflareWorkers(config_file, options) {
|
|
|
87
100
|
const worker_url = extractWorkerUrl(output);
|
|
88
101
|
emitCliBlock({
|
|
89
102
|
tone: "success",
|
|
90
|
-
title:
|
|
103
|
+
title: "Wrangler",
|
|
104
|
+
facts: [
|
|
105
|
+
{ label: "config", value: wrangler_result.config_path },
|
|
106
|
+
{ label: "status", value: options.dry_run ? "dry-run" : "deployed" },
|
|
107
|
+
],
|
|
108
|
+
});
|
|
109
|
+
emitCliBlock({
|
|
110
|
+
tone: "success",
|
|
111
|
+
title: "Deployment",
|
|
91
112
|
facts: [
|
|
92
113
|
{ label: "worker", value: config_file.config.name },
|
|
93
114
|
...(worker_url ? [{ label: "url", value: worker_url }] : []),
|
|
115
|
+
{ label: "status", value: options.dry_run ? "dry-run" : "success" },
|
|
94
116
|
],
|
|
95
117
|
});
|
|
96
118
|
if (worker_url && !options.dry_run) {
|
|
97
|
-
registerDeployedServer(config_file.config.name, worker_url);
|
|
119
|
+
const active_server = registerDeployedServer(config_file.config.name, worker_url);
|
|
120
|
+
emitCliBlock({
|
|
121
|
+
tone: "success",
|
|
122
|
+
title: "Active Server",
|
|
123
|
+
facts: [
|
|
124
|
+
{ label: "name", value: active_server.name },
|
|
125
|
+
{ label: "url", value: active_server.url },
|
|
126
|
+
{ label: "status", value: "connected" },
|
|
127
|
+
],
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
emitCliBlock({
|
|
132
|
+
tone: "info",
|
|
133
|
+
title: "Active Server",
|
|
134
|
+
facts: [
|
|
135
|
+
{ label: "name", value: config_file.config.name },
|
|
136
|
+
...(worker_url ? [{ label: "url", value: worker_url }] : []),
|
|
137
|
+
{ label: "status", value: "skipped" },
|
|
138
|
+
],
|
|
139
|
+
});
|
|
98
140
|
}
|
|
99
141
|
if (options.verify && !options.dry_run) {
|
|
100
142
|
await verifyWorker(worker_url ?? readVerifyBaseUrl());
|
|
101
143
|
}
|
|
102
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* 输出 package script 执行摘要。
|
|
147
|
+
*/
|
|
148
|
+
function emitPackageScriptSummary(title, result) {
|
|
149
|
+
emitCliBlock({
|
|
150
|
+
tone: result.status === "passed" ? "success" : "info",
|
|
151
|
+
title,
|
|
152
|
+
facts: [
|
|
153
|
+
{ label: "command", value: result.command },
|
|
154
|
+
{ label: "status", value: result.status },
|
|
155
|
+
],
|
|
156
|
+
});
|
|
157
|
+
}
|
|
103
158
|
/**
|
|
104
159
|
* 执行 Wrangler deploy。
|
|
105
160
|
*/
|
|
@@ -166,15 +221,10 @@ function registerDeployedServer(name, worker_url) {
|
|
|
166
221
|
base_url: worker_url,
|
|
167
222
|
admin_secret_key: preserved_admin_secret_key,
|
|
168
223
|
});
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
{ label: "name", value: name },
|
|
174
|
-
{ label: "url", value: worker_url },
|
|
175
|
-
],
|
|
176
|
-
note: "The deployed Worker is now the active City server.",
|
|
177
|
-
});
|
|
224
|
+
return {
|
|
225
|
+
name,
|
|
226
|
+
url: worker_url,
|
|
227
|
+
};
|
|
178
228
|
}
|
|
179
229
|
/**
|
|
180
230
|
* 读取当前用于校验的 City server URL。
|