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.
Files changed (48) hide show
  1. package/bin/federation/create/commands/create.d.ts +1 -1
  2. package/bin/federation/create/commands/create.js +20 -10
  3. package/bin/federation/create/commands/create.js.map +1 -1
  4. package/bin/federation/deploy/commands/deploy.d.ts.map +1 -1
  5. package/bin/federation/deploy/commands/deploy.js +0 -2
  6. package/bin/federation/deploy/commands/deploy.js.map +1 -1
  7. package/bin/federation/deploy/config/FederationProjectConfigReader.d.ts +2 -2
  8. package/bin/federation/deploy/config/FederationProjectConfigReader.d.ts.map +1 -1
  9. package/bin/federation/deploy/config/FederationProjectConfigReader.js +75 -5
  10. package/bin/federation/deploy/config/FederationProjectConfigReader.js.map +1 -1
  11. package/bin/federation/deploy/runtime/CloudflareAccountResolver.d.ts +0 -5
  12. package/bin/federation/deploy/runtime/CloudflareAccountResolver.d.ts.map +1 -1
  13. package/bin/federation/deploy/runtime/CloudflareAccountResolver.js +9 -20
  14. package/bin/federation/deploy/runtime/CloudflareAccountResolver.js.map +1 -1
  15. package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.d.ts +2 -2
  16. package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.d.ts.map +1 -1
  17. package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.js +77 -27
  18. package/bin/federation/deploy/runtime/CloudflareWorkersDeployer.js.map +1 -1
  19. package/bin/federation/deploy/runtime/D1DatabaseResolver.d.ts +6 -7
  20. package/bin/federation/deploy/runtime/D1DatabaseResolver.d.ts.map +1 -1
  21. package/bin/federation/deploy/runtime/D1DatabaseResolver.js +24 -48
  22. package/bin/federation/deploy/runtime/D1DatabaseResolver.js.map +1 -1
  23. package/bin/federation/deploy/runtime/PackageScriptRunner.d.ts +2 -1
  24. package/bin/federation/deploy/runtime/PackageScriptRunner.d.ts.map +1 -1
  25. package/bin/federation/deploy/runtime/PackageScriptRunner.js +26 -22
  26. package/bin/federation/deploy/runtime/PackageScriptRunner.js.map +1 -1
  27. package/bin/federation/deploy/runtime/QueueResolver.d.ts +29 -0
  28. package/bin/federation/deploy/runtime/QueueResolver.d.ts.map +1 -0
  29. package/bin/federation/deploy/runtime/QueueResolver.js +90 -0
  30. package/bin/federation/deploy/runtime/QueueResolver.js.map +1 -0
  31. package/bin/federation/deploy/runtime/WranglerConfigWriter.d.ts +2 -2
  32. package/bin/federation/deploy/runtime/WranglerConfigWriter.d.ts.map +1 -1
  33. package/bin/federation/deploy/runtime/WranglerConfigWriter.js +6 -3
  34. package/bin/federation/deploy/runtime/WranglerConfigWriter.js.map +1 -1
  35. package/bin/federation/index.js +1 -1
  36. package/bin/federation/index.js.map +1 -1
  37. package/bin/federation/types/FederationDeployRuntime.d.ts +77 -0
  38. package/bin/federation/types/FederationDeployRuntime.d.ts.map +1 -0
  39. package/bin/federation/types/FederationDeployRuntime.js +10 -0
  40. package/bin/federation/types/FederationDeployRuntime.js.map +1 -0
  41. package/bin/federation/types/FederationProjectConfig.d.ts +27 -21
  42. package/bin/federation/types/FederationProjectConfig.d.ts.map +1 -1
  43. package/bin/federation/types/FederationProjectConfig.js +3 -3
  44. package/package.json +2 -2
  45. package/bin/federation/deploy/config/FederationProjectEnvLoader.d.ts +0 -22
  46. package/bin/federation/deploy/config/FederationProjectEnvLoader.d.ts.map +0 -1
  47. package/bin/federation/deploy/config/FederationProjectEnvLoader.js +0 -158
  48. 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` 只写项目类型和部署目标,其他文件由 CLI 生成。
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` 只写项目类型和部署目标,其他文件由 CLI 生成。
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({ type: "city", name, target }, null, 2)}\n`,
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;AASH,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,CAwBf"}
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,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,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;IACpE,wBAAwB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAElD,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"}
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` 保持极简:type、name、target。
6
- * - Cloudflare 细节由 CLI 默认处理,不要求开发者写一大段配置。
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,EAE5B,MAAM,+CAA+C,CAAC;AAIvD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,2BAA2B,CA2BpF"}
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` 保持极简:type、name、target。
6
- * - Cloudflare 细节由 CLI 默认处理,不要求开发者写一大段配置。
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: resolveTargetEntry(target),
70
+ entry,
65
71
  target,
66
- database: resolveTargetDatabase(target, name),
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 resolveTargetDatabase(target, project_name) {
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":"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"}
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;AAMH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAGpG,+BAA+B;AAC/B,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,QAAQ,EAAE,8BAA8B,CAAC;IACzC,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+BAA+B;AAC/B,MAAM,WAAW,8BAA8B;IAC7C,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,8BAA8B,CAAC,CAmCzC"}
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(params.env_file, initial_account_id);
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
- emitCliBlock({
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
- emitCliBlock({
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(params.env_file, account_id);
84
+ return persistCloudflareAccount(account_id);
95
85
  }
96
- return await promptForAccountId(params.env_file);
86
+ return await promptForAccountId();
97
87
  }
98
- return await promptForAccountId(params.env_file);
88
+ return await promptForAccountId();
99
89
  }
100
90
  /**
101
91
  * 交互式输入 Cloudflare account id。
102
92
  */
103
- async function promptForAccountId(env_file) {
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(env_file, String(account_id));
109
+ return persistCloudflareAccount(String(account_id));
120
110
  }
121
111
  /**
122
112
  * 保存 Cloudflare account id 到本地 City CLI 状态。
123
113
  */
124
- function persistCloudflareAccount(env_file, account_id) {
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":"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"}
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 自动推断,`federation.json` 保持最小。
7
- * - D1 等部署绑定写入项目 `.env`,Worker URL 回写到 City 自己的 server 配置。
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;AAWvD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA8Ff"}
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 自动推断,`federation.json` 保持最小。
7
- * - D1 等部署绑定写入项目 `.env`,Worker URL 回写到 City 自己的 server 配置。
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: "City project",
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: options.source },
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: "Project version bumped",
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
- env_file = d1_result.env_file;
70
- const wrangler_result = writeWranglerConfig(config_file, env_file, d1_result.resolved_database_id);
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: "Wrangler config generated",
74
- facts: [{ label: "file", value: wrangler_result.config_path }],
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: options.dry_run ? "Worker dry-run completed" : "Worker deployed",
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
- emitCliBlock({
170
- tone: "success",
171
- title: "City server connected",
172
- facts: [
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。