downcity 1.1.237 → 1.1.238
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 +15 -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 +50 -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 +63 -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/WranglerConfigWriter.d.ts +2 -2
- package/bin/federation/deploy/runtime/WranglerConfigWriter.d.ts.map +1 -1
- package/bin/federation/deploy/runtime/WranglerConfigWriter.js +3 -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 +60 -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 +16 -21
- package/bin/federation/types/FederationProjectConfig.d.ts.map +1 -1
- package/bin/federation/types/FederationProjectConfig.js +3 -3
- package/package.json +1 -1
- 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,23 @@ 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`;
|
|
119
120
|
return [
|
|
120
121
|
{
|
|
121
122
|
path: "federation.json",
|
|
122
|
-
content: `${JSON.stringify({
|
|
123
|
+
content: `${JSON.stringify({
|
|
124
|
+
schema: 1,
|
|
125
|
+
type: "city",
|
|
126
|
+
name,
|
|
127
|
+
target,
|
|
128
|
+
entry: "src/index.ts",
|
|
129
|
+
resources: {
|
|
130
|
+
d1: {
|
|
131
|
+
binding: "DB",
|
|
132
|
+
name: d1_name,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
}, null, 2)}\n`,
|
|
123
136
|
},
|
|
124
137
|
{
|
|
125
138
|
path: "package.json",
|
|
@@ -162,14 +175,6 @@ function createCloudflareWorkersFiles(name, target) {
|
|
|
162
175
|
include: ["src/**/*.ts"],
|
|
163
176
|
}, null, 2)}\n`,
|
|
164
177
|
},
|
|
165
|
-
{
|
|
166
|
-
path: ".env.example",
|
|
167
|
-
content: [
|
|
168
|
-
"# Local deploy values.",
|
|
169
|
-
`CITY_D1_DATABASE_NAME=${name}-db`,
|
|
170
|
-
"",
|
|
171
|
-
].join("\n"),
|
|
172
|
-
},
|
|
173
178
|
{
|
|
174
179
|
path: "src/index.ts",
|
|
175
180
|
content: createWorkerEntrypoint(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/federation/create/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAQ1E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,GAAG,EACjB,UAA0C,EAAE;IAE5C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IAC/C,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,YAAY;KAC3B,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC;IAEvE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC;QAChC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,oBAAoB;gBAC3B,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,qBAAqB;aAC5B;SACF;KACF,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,KAAK;SACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC;YACrC,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,uCAAuC;YACxE,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC5D,MAAM,IAAI,QAAQ,CAAC;gBACjB,KAAK,EAAE,uCAAuC;gBAC9C,IAAI,EAAE,qCAAqC;aAC5C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC;QACX,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,4BAA4B;QACnC,KAAK,EAAE;YACL,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;SACrC;QACD,IAAI,EAAE,wDAAwD;KAC/D,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,OAAe,EACf,QAAwC;IAExC,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;QAC3B,OAAO,EAAE,iBAAiB;QAC1B,YAAY,EAAE,WAAW;KAC1B,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO;IAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,CAAC;IACpF,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,QAAQ,CAAC;YACjB,KAAK,EAAE,8BAA8B;YACrC,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,0FAA0F;SAChG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,CAAC;QACf,KAAK,EAAE,0BAA0B;QACjC,OAAO,EAAE,uBAAuB,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;QAChF,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;IAEH,YAAY,CAAC;QACX,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,2BAA2B;QAClC,KAAK,EAAE;YACL,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;YACnC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;SACrC;QACD,IAAI,EAAE,+DAA+D;KACtE,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CACnC,IAAY,EACZ,MAAc;IAEd,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO;QACL;YACE,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,
|
|
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,EAG5B,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,27 @@ function resolveTargetDatabase(target, project_name) {
|
|
|
86
92
|
name: `${project_name}-db`,
|
|
87
93
|
};
|
|
88
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* 解析项目资源配置。
|
|
97
|
+
*/
|
|
98
|
+
function resolveProjectResources(input, target, project_name) {
|
|
99
|
+
const default_d1 = resolveTargetD1Resource(target, project_name);
|
|
100
|
+
const resources = readOptionalRecord(input, "resources");
|
|
101
|
+
const d1 = readOptionalRecord(resources ?? {}, "d1");
|
|
102
|
+
const legacy_database = readOptionalRecord(input, "database");
|
|
103
|
+
const source = d1 ?? legacy_database;
|
|
104
|
+
if (!default_d1)
|
|
105
|
+
return {};
|
|
106
|
+
if (!source)
|
|
107
|
+
return { d1: default_d1 };
|
|
108
|
+
return {
|
|
109
|
+
d1: {
|
|
110
|
+
type: "d1",
|
|
111
|
+
binding: readOptionalString(source, "binding") ?? default_d1.binding,
|
|
112
|
+
name: readOptionalString(source, "name") ?? default_d1.name,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
89
116
|
/**
|
|
90
117
|
* 根据目录名推断项目名。
|
|
91
118
|
*/
|
|
@@ -124,4 +151,22 @@ function readOptionalString(input, key) {
|
|
|
124
151
|
const trimmed = value.trim();
|
|
125
152
|
return trimmed || undefined;
|
|
126
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* 读取可选数字。
|
|
156
|
+
*/
|
|
157
|
+
function readOptionalNumber(input, key) {
|
|
158
|
+
const value = input[key];
|
|
159
|
+
if (typeof value !== "number" || !Number.isInteger(value))
|
|
160
|
+
return undefined;
|
|
161
|
+
return value;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* 读取可选对象。
|
|
165
|
+
*/
|
|
166
|
+
function readOptionalRecord(input, key) {
|
|
167
|
+
const value = input[key];
|
|
168
|
+
if (!isRecord(value))
|
|
169
|
+
return undefined;
|
|
170
|
+
return value;
|
|
171
|
+
}
|
|
127
172
|
//# 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;AAWvD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,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;AAWvD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,2BAA2B,EACxC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAyHf"}
|
|
@@ -3,15 +3,14 @@
|
|
|
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";
|
|
17
16
|
import { writeWranglerConfig } from "./WranglerConfigWriter.js";
|
|
@@ -22,15 +21,13 @@ import { runPackageDeployScripts } from "./PackageScriptRunner.js";
|
|
|
22
21
|
* 部署 Cloudflare Workers City 项目。
|
|
23
22
|
*/
|
|
24
23
|
export async function deployCloudflareWorkers(config_file, options) {
|
|
25
|
-
let env_file = readFederationProjectDeployEnv(config_file.project_dir);
|
|
26
24
|
emitCliBlock({
|
|
27
25
|
tone: "accent",
|
|
28
|
-
title: "
|
|
26
|
+
title: "Project",
|
|
29
27
|
facts: [
|
|
30
28
|
{ label: "name", value: config_file.config.name },
|
|
31
29
|
{ label: "target", value: config_file.config.target },
|
|
32
|
-
{ label: "source", value:
|
|
33
|
-
{ label: "dir", value: config_file.project_dir },
|
|
30
|
+
{ label: "source", value: config_file.project_dir },
|
|
34
31
|
],
|
|
35
32
|
});
|
|
36
33
|
if (options.verify_only) {
|
|
@@ -39,39 +36,41 @@ export async function deployCloudflareWorkers(config_file, options) {
|
|
|
39
36
|
}
|
|
40
37
|
const account_result = await resolveCloudflareAccount({
|
|
41
38
|
project_dir: config_file.project_dir,
|
|
42
|
-
env_file,
|
|
43
39
|
account_id: options.account_id,
|
|
44
40
|
});
|
|
45
41
|
const account_id = account_result.account_id;
|
|
46
|
-
env_file = account_result.env_file;
|
|
47
42
|
const version_bump = options.dry_run === true ? undefined : bumpProjectPatchVersion(config_file.project_dir);
|
|
48
43
|
if (version_bump) {
|
|
49
44
|
emitCliBlock({
|
|
50
45
|
tone: "success",
|
|
51
|
-
title: "
|
|
46
|
+
title: "Version",
|
|
52
47
|
facts: [
|
|
53
48
|
{ label: "from", value: version_bump.previous_version },
|
|
54
49
|
{ label: "to", value: version_bump.next_version },
|
|
55
50
|
],
|
|
56
51
|
});
|
|
57
52
|
}
|
|
58
|
-
await runPackageDeployScripts({
|
|
53
|
+
const scripts_result = await runPackageDeployScripts({
|
|
59
54
|
project_dir: config_file.project_dir,
|
|
60
55
|
skip_build: options.skip_build,
|
|
61
56
|
skip_typecheck: options.skip_typecheck,
|
|
62
57
|
});
|
|
58
|
+
emitPackageScriptSummary("Build", scripts_result.build);
|
|
59
|
+
emitPackageScriptSummary("Typecheck", scripts_result.typecheck);
|
|
63
60
|
const d1_result = await resolveD1Database({
|
|
64
61
|
config_file,
|
|
65
|
-
env_file,
|
|
66
62
|
account_id,
|
|
67
63
|
create_if_missing: options.dry_run !== true,
|
|
68
64
|
});
|
|
69
|
-
|
|
70
|
-
const wrangler_result = writeWranglerConfig(config_file, env_file, d1_result.resolved_database_id);
|
|
65
|
+
const wrangler_result = writeWranglerConfig(config_file, d1_result.resolved_database_id);
|
|
71
66
|
emitCliBlock({
|
|
72
67
|
tone: "success",
|
|
73
|
-
title: "
|
|
74
|
-
facts: [
|
|
68
|
+
title: "D1 Database",
|
|
69
|
+
facts: [
|
|
70
|
+
{ label: "name", value: d1_result.summary.name ?? "(none)" },
|
|
71
|
+
{ label: "id", value: d1_result.summary.id ?? "(none)" },
|
|
72
|
+
{ label: "status", value: d1_result.summary.status },
|
|
73
|
+
],
|
|
75
74
|
});
|
|
76
75
|
let output = "";
|
|
77
76
|
try {
|
|
@@ -87,19 +86,61 @@ export async function deployCloudflareWorkers(config_file, options) {
|
|
|
87
86
|
const worker_url = extractWorkerUrl(output);
|
|
88
87
|
emitCliBlock({
|
|
89
88
|
tone: "success",
|
|
90
|
-
title:
|
|
89
|
+
title: "Wrangler",
|
|
90
|
+
facts: [
|
|
91
|
+
{ label: "config", value: wrangler_result.config_path },
|
|
92
|
+
{ label: "status", value: options.dry_run ? "dry-run" : "deployed" },
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
emitCliBlock({
|
|
96
|
+
tone: "success",
|
|
97
|
+
title: "Deployment",
|
|
91
98
|
facts: [
|
|
92
99
|
{ label: "worker", value: config_file.config.name },
|
|
93
100
|
...(worker_url ? [{ label: "url", value: worker_url }] : []),
|
|
101
|
+
{ label: "status", value: options.dry_run ? "dry-run" : "success" },
|
|
94
102
|
],
|
|
95
103
|
});
|
|
96
104
|
if (worker_url && !options.dry_run) {
|
|
97
|
-
registerDeployedServer(config_file.config.name, worker_url);
|
|
105
|
+
const active_server = registerDeployedServer(config_file.config.name, worker_url);
|
|
106
|
+
emitCliBlock({
|
|
107
|
+
tone: "success",
|
|
108
|
+
title: "Active Server",
|
|
109
|
+
facts: [
|
|
110
|
+
{ label: "name", value: active_server.name },
|
|
111
|
+
{ label: "url", value: active_server.url },
|
|
112
|
+
{ label: "status", value: "connected" },
|
|
113
|
+
],
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
emitCliBlock({
|
|
118
|
+
tone: "info",
|
|
119
|
+
title: "Active Server",
|
|
120
|
+
facts: [
|
|
121
|
+
{ label: "name", value: config_file.config.name },
|
|
122
|
+
...(worker_url ? [{ label: "url", value: worker_url }] : []),
|
|
123
|
+
{ label: "status", value: "skipped" },
|
|
124
|
+
],
|
|
125
|
+
});
|
|
98
126
|
}
|
|
99
127
|
if (options.verify && !options.dry_run) {
|
|
100
128
|
await verifyWorker(worker_url ?? readVerifyBaseUrl());
|
|
101
129
|
}
|
|
102
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* 输出 package script 执行摘要。
|
|
133
|
+
*/
|
|
134
|
+
function emitPackageScriptSummary(title, result) {
|
|
135
|
+
emitCliBlock({
|
|
136
|
+
tone: result.status === "passed" ? "success" : "info",
|
|
137
|
+
title,
|
|
138
|
+
facts: [
|
|
139
|
+
{ label: "command", value: result.command },
|
|
140
|
+
{ label: "status", value: result.status },
|
|
141
|
+
],
|
|
142
|
+
});
|
|
143
|
+
}
|
|
103
144
|
/**
|
|
104
145
|
* 执行 Wrangler deploy。
|
|
105
146
|
*/
|
|
@@ -166,15 +207,10 @@ function registerDeployedServer(name, worker_url) {
|
|
|
166
207
|
base_url: worker_url,
|
|
167
208
|
admin_secret_key: preserved_admin_secret_key,
|
|
168
209
|
});
|
|
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
|
-
});
|
|
210
|
+
return {
|
|
211
|
+
name,
|
|
212
|
+
url: worker_url,
|
|
213
|
+
};
|
|
178
214
|
}
|
|
179
215
|
/**
|
|
180
216
|
* 读取当前用于校验的 City server URL。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudflareWorkersDeployer.js","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareWorkersDeployer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudflareWorkersDeployer.js","sourceRoot":"","sources":["../../../../src/federation/deploy/runtime/CloudflareWorkersDeployer.ts"],"names":[],"mappings":"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"}
|