@gasboost/console 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +1 -1
  2. package/dist/appsScript/AppsScriptProjectRepository.d.ts +21 -0
  3. package/dist/appsScript/AppsScriptProjectRepository.d.ts.map +1 -0
  4. package/dist/appsScript/AppsScriptProjectRepository.js +75 -0
  5. package/dist/appsScript/AppsScriptProjectRepository.js.map +1 -0
  6. package/dist/appsScript/appsScriptOperations.d.ts +6 -2
  7. package/dist/appsScript/appsScriptOperations.d.ts.map +1 -1
  8. package/dist/appsScript/appsScriptOperations.js +150 -40
  9. package/dist/appsScript/appsScriptOperations.js.map +1 -1
  10. package/dist/development/developmentOperations.d.ts +17 -0
  11. package/dist/development/developmentOperations.d.ts.map +1 -0
  12. package/dist/development/developmentOperations.js +197 -0
  13. package/dist/development/developmentOperations.js.map +1 -0
  14. package/dist/env/EnvFileRepository.d.ts +13 -0
  15. package/dist/env/EnvFileRepository.d.ts.map +1 -0
  16. package/dist/env/EnvFileRepository.js +67 -0
  17. package/dist/env/EnvFileRepository.js.map +1 -0
  18. package/dist/firebase/FirebaseProjectRepository.d.ts +17 -0
  19. package/dist/firebase/FirebaseProjectRepository.d.ts.map +1 -0
  20. package/dist/firebase/FirebaseProjectRepository.js +82 -0
  21. package/dist/firebase/FirebaseProjectRepository.js.map +1 -0
  22. package/dist/firebase/FirebaseRunner.d.ts +10 -0
  23. package/dist/firebase/FirebaseRunner.d.ts.map +1 -0
  24. package/dist/firebase/FirebaseRunner.js +54 -0
  25. package/dist/firebase/FirebaseRunner.js.map +1 -0
  26. package/dist/firebase/firebaseOperations.d.ts +20 -0
  27. package/dist/firebase/firebaseOperations.d.ts.map +1 -0
  28. package/dist/firebase/firebaseOperations.js +96 -0
  29. package/dist/firebase/firebaseOperations.js.map +1 -0
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/openBrowser.d.ts +2 -0
  35. package/dist/openBrowser.d.ts.map +1 -0
  36. package/dist/openBrowser.js +20 -0
  37. package/dist/openBrowser.js.map +1 -0
  38. package/dist/startGasboostConsole.d.ts +3 -1
  39. package/dist/startGasboostConsole.d.ts.map +1 -1
  40. package/dist/startGasboostConsole.js +26 -10
  41. package/dist/startGasboostConsole.js.map +1 -1
  42. package/dist/ui/assets/index-B6Dn-OF9.css +1 -0
  43. package/dist/ui/assets/index-BGK5B9RA.js +6 -0
  44. package/dist/ui/gasboost-logo.png +0 -0
  45. package/dist/ui/index.html +170 -14
  46. package/package.json +3 -3
  47. package/dist/ui/assets/index-B2QLlRZv.css +0 -1
  48. package/dist/ui/assets/index-Bv7Miq39.js +0 -6
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @gasboost/console
2
2
 
3
- Gasboost project lifecycle UI.
3
+ gasboost project lifecycle UI.
4
4
 
5
5
  ```bash
6
6
  gasboost console open
@@ -0,0 +1,21 @@
1
+ import type { GasboostAppsScriptConfig } from "@gasboost/config";
2
+ export type AppsScriptProjectState = {
3
+ readonly configured: boolean;
4
+ readonly scriptId?: string;
5
+ readonly rootDir: string;
6
+ readonly manifestExists: boolean;
7
+ };
8
+ export declare class AppsScriptProjectRepository {
9
+ private readonly projectRoot;
10
+ private readonly config;
11
+ constructor({ projectRoot, config, }: {
12
+ readonly projectRoot: string;
13
+ readonly config: GasboostAppsScriptConfig;
14
+ });
15
+ read(): Promise<AppsScriptProjectState>;
16
+ connect(scriptId: string): Promise<void>;
17
+ private readClaspSettings;
18
+ private readClaspObject;
19
+ private exists;
20
+ }
21
+ //# sourceMappingURL=AppsScriptProjectRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppsScriptProjectRepository.d.ts","sourceRoot":"","sources":["../../src/appsScript/AppsScriptProjectRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAIjE,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAElD,YAAmB,EACjB,WAAW,EACX,MAAM,GACP,EAAE;QACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;KAC3C,EAGA;IAEY,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAOnD;IAEY,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWpD;YAEa,iBAAiB;YA2BjB,eAAe;YA0Bf,MAAM;CAgBrB"}
@@ -0,0 +1,75 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ export class AppsScriptProjectRepository {
4
+ projectRoot;
5
+ config;
6
+ constructor({ projectRoot, config, }) {
7
+ this.projectRoot = projectRoot;
8
+ this.config = config;
9
+ }
10
+ async read() {
11
+ const settings = await this.readClaspSettings();
12
+ const manifestExists = await this.exists(join(this.projectRoot, settings.rootDir, "appsscript.json"));
13
+ return { ...settings, manifestExists };
14
+ }
15
+ async connect(scriptId) {
16
+ const current = (await this.readClaspObject()) ?? {};
17
+ const rootDir = typeof current.rootDir === "string"
18
+ ? current.rootDir
19
+ : (this.config.rootDir ?? ".");
20
+ await writeFile(join(this.projectRoot, ".clasp.json"), `${JSON.stringify({ ...current, scriptId, rootDir }, null, 2)}\n`, "utf8");
21
+ }
22
+ async readClaspSettings() {
23
+ const fallback = {
24
+ configured: false,
25
+ rootDir: this.config.rootDir ?? ".",
26
+ };
27
+ const value = await this.readClaspObject();
28
+ if (value === undefined)
29
+ return fallback;
30
+ if (typeof value.scriptId !== "string" || value.scriptId.length === 0) {
31
+ return fallback;
32
+ }
33
+ return {
34
+ configured: true,
35
+ scriptId: value.scriptId,
36
+ rootDir: typeof value.rootDir === "string"
37
+ ? value.rootDir
38
+ : (this.config.rootDir ?? "."),
39
+ };
40
+ }
41
+ async readClaspObject() {
42
+ try {
43
+ const value = JSON.parse(await readFile(join(this.projectRoot, ".clasp.json"), "utf8"));
44
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
45
+ throw new Error("Expected a JSON object.");
46
+ }
47
+ return value;
48
+ }
49
+ catch (error) {
50
+ if (typeof error === "object" &&
51
+ error !== null &&
52
+ "code" in error &&
53
+ error.code === "ENOENT") {
54
+ return undefined;
55
+ }
56
+ throw new Error(".clasp.json exists but does not contain valid project settings.", { cause: error });
57
+ }
58
+ }
59
+ async exists(path) {
60
+ try {
61
+ await readFile(path, "utf8");
62
+ return true;
63
+ }
64
+ catch (error) {
65
+ if (typeof error === "object" &&
66
+ error !== null &&
67
+ "code" in error &&
68
+ error.code === "ENOENT") {
69
+ return false;
70
+ }
71
+ throw error;
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=AppsScriptProjectRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppsScriptProjectRepository.js","sourceRoot":"","sources":["../../src/appsScript/AppsScriptProjectRepository.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,16 @@ export type AppsScriptStatus = {
6
6
  readonly configured: boolean;
7
7
  readonly scriptId?: string;
8
8
  readonly rootDir: string;
9
+ readonly manifestExists: boolean;
10
+ readonly desired: boolean;
11
+ readonly deploymentId?: string;
9
12
  };
10
13
  type AppsScriptOperation = OperationDefinition<any, unknown>;
11
- export declare function createAppsScriptOperations({ projectRoot, config, clasp, }: {
14
+ export declare function createAppsScriptOperations({ projectRoot, config, clasp, browserOpener, }: {
12
15
  readonly projectRoot: string;
13
- readonly config: GasboostAppsScriptConfig;
16
+ readonly config?: GasboostAppsScriptConfig;
14
17
  readonly clasp: ClaspRunner;
18
+ readonly browserOpener?: (url: string) => Promise<void>;
15
19
  }): readonly AppsScriptOperation[];
16
20
  export {};
17
21
  //# sourceMappingURL=appsScriptOperations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appsScriptOperations.d.ts","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAU7D,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,MAAM,EACN,KAAK,GACN,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B,GAAG,SAAS,mBAAmB,EAAE,CA0EjC"}
1
+ {"version":3,"file":"appsScriptOperations.d.ts","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AA2B7D,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,MAAM,EACN,KAAK,EACL,aAA2B,GAC5B,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG,SAAS,mBAAmB,EAAE,CAiJjC"}
@@ -1,15 +1,44 @@
1
- import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
1
  import { z } from "zod";
2
+ import { EnvFileRepository } from "../env/EnvFileRepository.js";
3
+ import { openBrowser } from "../openBrowser.js";
4
+ import { AppsScriptProjectRepository } from "./AppsScriptProjectRepository.js";
4
5
  const emptyInput = z.object({}).strict();
5
6
  const createInput = z
6
7
  .object({
7
8
  title: z.string().trim().min(1).max(100),
8
9
  })
9
10
  .strict();
11
+ const connectInput = z
12
+ .object({
13
+ scriptId: z.string().trim().min(6).max(200),
14
+ })
15
+ .strict();
10
16
  const pushInput = z.object({ confirmed: z.literal(true) }).strict();
11
- export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
12
- const status = async () => getAppsScriptStatus({ projectRoot, config, clasp });
17
+ const createDeploymentInput = z
18
+ .object({
19
+ description: z.string().trim().max(120).optional(),
20
+ })
21
+ .strict();
22
+ const updateDeploymentInput = z
23
+ .object({
24
+ deploymentId: z.string().trim().min(1).max(200).optional(),
25
+ description: z.string().trim().max(120).optional(),
26
+ })
27
+ .strict();
28
+ const defaultAppsScriptConfig = { type: "webapp" };
29
+ export function createAppsScriptOperations({ projectRoot, config, clasp, browserOpener = openBrowser, }) {
30
+ const effectiveConfig = config ?? defaultAppsScriptConfig;
31
+ const projectRepository = new AppsScriptProjectRepository({
32
+ projectRoot,
33
+ config: effectiveConfig,
34
+ });
35
+ const envRepository = new EnvFileRepository(projectRoot);
36
+ const status = async () => getAppsScriptStatus({
37
+ configDesired: config !== undefined,
38
+ projectRepository,
39
+ envRepository,
40
+ clasp,
41
+ });
13
42
  return [
14
43
  {
15
44
  id: "apps.status",
@@ -36,7 +65,7 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
36
65
  id: "apps.create",
37
66
  input: createInput,
38
67
  async handler(input, context) {
39
- const current = await readProjectSettings(projectRoot, config);
68
+ const current = await projectRepository.read();
40
69
  if (current.configured) {
41
70
  throw new Error("An Apps Script project is already configured.");
42
71
  }
@@ -44,25 +73,37 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
44
73
  const args = [
45
74
  "create-script",
46
75
  "--type",
47
- config.type,
76
+ effectiveConfig.type,
48
77
  "--title",
49
78
  input.title,
50
79
  "--rootDir",
51
- config.rootDir ?? ".",
80
+ effectiveConfig.rootDir ?? ".",
52
81
  ];
53
82
  const result = await clasp.run(args, context.log);
54
83
  assertClaspSuccess("Apps Script project creation", result);
84
+ await syncScriptId(projectRepository, envRepository);
55
85
  context.progress({ message: "Apps Script project created", percentage: 100 });
56
86
  return status();
57
87
  },
58
88
  },
89
+ {
90
+ id: "apps.connect",
91
+ input: connectInput,
92
+ async handler(input, context) {
93
+ context.progress({ message: "Connecting Apps Script project", percentage: 30 });
94
+ await projectRepository.connect(input.scriptId);
95
+ await envRepository.update({ GAS_SCRIPT_ID: input.scriptId });
96
+ context.progress({ message: "Apps Script project connected", percentage: 100 });
97
+ return status();
98
+ },
99
+ },
59
100
  {
60
101
  id: "apps.open",
61
102
  input: emptyInput,
62
103
  async handler(_input, context) {
63
- await assertProjectConfigured(projectRoot, config);
64
- const result = await clasp.run(["open-script"], context.log);
65
- assertClaspSuccess("Opening Apps Script editor", result);
104
+ const project = await assertProjectConfigured(projectRepository);
105
+ context.log(`Opening Apps Script editor for ${project.scriptId}`);
106
+ await browserOpener(`https://script.google.com/home/projects/${encodeURIComponent(project.scriptId)}/edit`);
66
107
  return { opened: true };
67
108
  },
68
109
  },
@@ -70,7 +111,7 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
70
111
  id: "apps.push",
71
112
  input: pushInput,
72
113
  async handler(_input, context) {
73
- await assertProjectConfigured(projectRoot, config);
114
+ await assertProjectConfigured(projectRepository);
74
115
  context.progress({ message: "Pushing local files", percentage: 20 });
75
116
  const result = await clasp.run(["push", "--force"], context.log);
76
117
  assertClaspSuccess("Apps Script push", result);
@@ -78,49 +119,83 @@ export function createAppsScriptOperations({ projectRoot, config, clasp, }) {
78
119
  return { pushed: true };
79
120
  },
80
121
  },
122
+ {
123
+ id: "apps.deployments",
124
+ input: emptyInput,
125
+ async handler(_input, context) {
126
+ await assertProjectConfigured(projectRepository);
127
+ const result = await clasp.run(["deployments", "--json"], context.log);
128
+ assertClaspSuccess("Loading deployments", result);
129
+ return parseDeployments(result.stdout);
130
+ },
131
+ },
132
+ {
133
+ id: "apps.deployment.create",
134
+ input: createDeploymentInput,
135
+ async handler(input, context) {
136
+ await assertProjectConfigured(projectRepository);
137
+ const args = ["create-deployment"];
138
+ if (input.description !== undefined && input.description.length > 0) {
139
+ args.push("--description", input.description);
140
+ }
141
+ const result = await clasp.run(args, context.log);
142
+ assertClaspSuccess("Creating deployment", result);
143
+ const deploymentId = extractDeploymentId(result.stdout);
144
+ if (deploymentId !== undefined) {
145
+ await envRepository.update({ DEPLOYMENT_ID: deploymentId });
146
+ }
147
+ return { deploymentId };
148
+ },
149
+ },
150
+ {
151
+ id: "apps.deployment.update",
152
+ input: updateDeploymentInput,
153
+ async handler(input, context) {
154
+ await assertProjectConfigured(projectRepository);
155
+ const env = await envRepository.read();
156
+ const deploymentId = input.deploymentId ?? env.DEPLOYMENT_ID;
157
+ if (deploymentId === undefined || deploymentId.length === 0) {
158
+ throw new Error("Select or create a deployment first.");
159
+ }
160
+ const args = ["update-deployment", deploymentId];
161
+ if (input.description !== undefined && input.description.length > 0) {
162
+ args.push("--description", input.description);
163
+ }
164
+ const result = await clasp.run(args, context.log);
165
+ assertClaspSuccess("Updating deployment", result);
166
+ await envRepository.update({ DEPLOYMENT_ID: deploymentId });
167
+ return { deploymentId };
168
+ },
169
+ },
81
170
  ];
82
171
  }
83
- async function getAppsScriptStatus({ projectRoot, config, clasp, }) {
172
+ async function getAppsScriptStatus({ configDesired, projectRepository, envRepository, clasp, }) {
84
173
  const [project, authorization] = await Promise.all([
85
- readProjectSettings(projectRoot, config),
174
+ projectRepository.read(),
86
175
  clasp.run(["show-authorized-user", "--json"]),
87
176
  ]);
177
+ if (project.scriptId !== undefined) {
178
+ await envRepository.update({ GAS_SCRIPT_ID: project.scriptId });
179
+ }
180
+ const runtime = await envRepository.read();
88
181
  return {
89
182
  authenticated: authorization.exitCode === 0,
90
183
  configured: project.configured,
91
184
  ...(project.scriptId === undefined ? {} : { scriptId: project.scriptId }),
92
185
  rootDir: project.rootDir,
186
+ manifestExists: project.manifestExists,
187
+ desired: configDesired,
188
+ ...(runtime.DEPLOYMENT_ID === undefined
189
+ ? {}
190
+ : { deploymentId: runtime.DEPLOYMENT_ID }),
93
191
  };
94
192
  }
95
- async function readProjectSettings(projectRoot, config) {
96
- const fallback = { configured: false, rootDir: config.rootDir ?? "." };
97
- try {
98
- const value = JSON.parse(await readFile(join(projectRoot, ".clasp.json"), "utf8"));
99
- if (typeof value.scriptId !== "string" || value.scriptId.length === 0) {
100
- return fallback;
101
- }
102
- return {
103
- configured: true,
104
- scriptId: value.scriptId,
105
- rootDir: typeof value.rootDir === "string"
106
- ? value.rootDir
107
- : (config.rootDir ?? "."),
108
- };
109
- }
110
- catch (error) {
111
- if (typeof error === "object" &&
112
- error !== null &&
113
- "code" in error &&
114
- error.code === "ENOENT") {
115
- return fallback;
116
- }
117
- throw new Error(".clasp.json exists but does not contain valid project settings.", { cause: error });
118
- }
119
- }
120
- async function assertProjectConfigured(projectRoot, config) {
121
- if (!(await readProjectSettings(projectRoot, config)).configured) {
193
+ async function assertProjectConfigured(projectRepository) {
194
+ const project = await projectRepository.read();
195
+ if (!project.configured || project.scriptId === undefined) {
122
196
  throw new Error("Create or connect an Apps Script project first.");
123
197
  }
198
+ return { scriptId: project.scriptId };
124
199
  }
125
200
  function assertClaspSuccess(action, result) {
126
201
  if (result.exitCode === 0)
@@ -128,4 +203,39 @@ function assertClaspSuccess(action, result) {
128
203
  const diagnostic = result.stderr.trim() || result.stdout.trim();
129
204
  throw new Error(diagnostic.length === 0 ? `${action} failed.` : `${action} failed: ${diagnostic}`);
130
205
  }
206
+ async function syncScriptId(projectRepository, envRepository) {
207
+ const project = await projectRepository.read();
208
+ if (project.scriptId !== undefined) {
209
+ await envRepository.update({ GAS_SCRIPT_ID: project.scriptId });
210
+ }
211
+ }
212
+ function parseDeployments(stdout) {
213
+ try {
214
+ const value = JSON.parse(stdout);
215
+ if (!Array.isArray(value))
216
+ return { deployments: [] };
217
+ return {
218
+ deployments: value.flatMap((item) => {
219
+ if (typeof item !== "object" || item === null)
220
+ return [];
221
+ const deploymentId = "deploymentId" in item ? item.deploymentId : undefined;
222
+ const description = "description" in item ? item.description : undefined;
223
+ if (typeof deploymentId !== "string")
224
+ return [];
225
+ return [
226
+ {
227
+ deploymentId,
228
+ ...(typeof description === "string" ? { description } : {}),
229
+ },
230
+ ];
231
+ }),
232
+ };
233
+ }
234
+ catch {
235
+ return { deployments: [] };
236
+ }
237
+ }
238
+ function extractDeploymentId(stdout) {
239
+ return /(?:Deployment ID|deploymentId)[:\s]+([A-Za-z0-9_-]+)/.exec(stdout)?.[1];
240
+ }
131
241
  //# sourceMappingURL=appsScriptOperations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appsScriptOperations.js","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appsScriptOperations.js","sourceRoot":"","sources":["../../src/appsScript/appsScriptOperations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAe/E,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACzC,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACzC,CAAC;KACD,MAAM,EAAE,CAAC;AACZ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC5C,CAAC;KACD,MAAM,EAAE,CAAC;AACZ,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACpE,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC;KACD,MAAM,EAAE,CAAC;AACZ,MAAM,qBAAqB,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC1D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC;KACD,MAAM,EAAE,CAAC;AACZ,MAAM,uBAAuB,GAA6B,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAE7E,MAAM,UAAU,0BAA0B,CAAC,EACzC,WAAW,EACX,MAAM,EACN,KAAK,EACL,aAAa,GAAG,WAAW,GAM5B;IACC,MAAM,eAAe,GAAG,MAAM,IAAI,uBAAuB,CAAC;IAC1D,MAAM,iBAAiB,GAAG,IAAI,2BAA2B,CAAC;QACxD,WAAW;QACX,MAAM,EAAE,eAAe;KACxB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,KAAK,IAA+B,EAAE,CACnD,mBAAmB,CAAC;QAClB,aAAa,EAAE,MAAM,KAAK,SAAS;QACnC,iBAAiB;QACjB,aAAa;QACb,KAAK;KACN,CAAC,CAAC;IAEL,OAAO;QACL;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,UAAU;YACjB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;gBAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtE,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBACpE,OAAO,MAAM,CAAC;YAChB,CAAC;SACF;QACD;YACE,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,UAAU;YACjB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;gBAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvD,kBAAkB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;gBACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzE,OAAO,MAAM,EAAE,CAAC;YAClB,CAAC;SACF;QACD;YACE,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,WAAW;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;gBAC1B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACnE,CAAC;gBAED,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9E,MAAM,IAAI,GAAG;oBACX,eAAe;oBACf,QAAQ;oBACR,eAAe,CAAC,IAAI;oBACpB,SAAS;oBACT,KAAK,CAAC,KAAK;oBACX,WAAW;oBACX,eAAe,CAAC,OAAO,IAAI,GAAG;iBAC/B,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClD,kBAAkB,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;gBAC3D,MAAM,YAAY,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;gBACrD,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC9E,OAAO,MAAM,EAAE,CAAC;YAClB,CAAC;SACF;QACD;YACE,EAAE,EAAE,cAAc;YAClB,KAAK,EAAE,YAAY;YACnB,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;gBAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChF,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9D,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChF,OAAO,MAAM,EAAE,CAAC;YAClB,CAAC;SACF;QACD;YACE,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,UAAU;YACjB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;gBAC3B,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,MAAM,aAAa,CAAC,2CAA2C,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC5G,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC1B,CAAC;SACF;QACD;YACE,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,SAAS;YAChB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;gBAC3B,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBACjD,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACjE,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBAC/C,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC1B,CAAC;SACF;QACD;YACE,EAAE,EAAE,kBAAkB;YACtB,KAAK,EAAE,UAAU;YACjB,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;gBAC3B,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvE,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAClD,OAAO,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;SACF;QACD;YACE,EAAE,EAAE,wBAAwB;YAC5B,KAAK,EAAE,qBAAqB;YAC5B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;gBAC1B,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClD,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC/B,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,CAAC;SACF;QACD;YACE,EAAE,EAAE,wBAAwB;YAC5B,KAAK,EAAE,qBAAqB;YAC5B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;gBAC1B,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,aAAa,CAAC;gBAC7D,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;gBACjD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClD,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC5D,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,EACjC,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,KAAK,GAMN;IACC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjD,iBAAiB,CAAC,IAAI,EAAE;QACxB,KAAK,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;KAC9C,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAE3C,OAAO;QACL,aAAa,EAAE,aAAa,CAAC,QAAQ,KAAK,CAAC;QAC3C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,OAAO,EAAE,aAAa;QACtB,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;KAC7C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,iBAA8C;IAE9C,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,MAAmB;IAC7D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,IAAI,KAAK,CACb,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,UAAU,EAAE,CAClF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,iBAA8C,EAC9C,aAAgC;IAEhC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IAGtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACtD,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACzD,MAAM,YAAY,GAAG,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,MAAM,WAAW,GAAG,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzE,IAAI,OAAO,YAAY,KAAK,QAAQ;oBAAE,OAAO,EAAE,CAAC;gBAChD,OAAO;oBACL;wBACE,YAAY;wBACZ,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5D;iBACF,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,sDAAsD,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { OperationDefinition } from "@gasboost/console-runtime";
2
+ export type DevelopmentStatus = {
3
+ readonly running: boolean;
4
+ readonly localUrl?: string;
5
+ readonly command?: readonly string[];
6
+ readonly log: readonly string[];
7
+ };
8
+ type DevelopmentOperation = OperationDefinition<Record<string, never>, DevelopmentStatus>;
9
+ export declare function createDevelopmentOperations({ projectRoot, browserOpener, }: {
10
+ readonly projectRoot: string;
11
+ readonly browserOpener?: (url: string) => Promise<void>;
12
+ }): {
13
+ readonly operations: readonly DevelopmentOperation[];
14
+ readonly cleanup: () => Promise<void>;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=developmentOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developmentOperations.d.ts","sourceRoot":"","sources":["../../src/development/developmentOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOrE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,KAAK,oBAAoB,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAM1F,wBAAgB,2BAA2B,CAAC,EAC1C,WAAW,EACX,aAA2B,GAC5B,EAAE;IACD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD,GAAG;IACF,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CA+DA"}