@heychunky/core 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/chunks.d.ts +80 -0
- package/dist/admin/chunks.d.ts.map +1 -0
- package/dist/admin/chunks.js +137 -0
- package/dist/admin/chunks.js.map +1 -0
- package/dist/admin/index.d.ts +1 -0
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/services/github.d.ts +10 -0
- package/dist/admin/services/github.d.ts.map +1 -1
- package/dist/admin/services/github.js +53 -0
- package/dist/admin/services/github.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type RunContext } from "./run.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Where the chunks live. Folders in one repository, one per chunk.
|
|
4
|
+
*
|
|
5
|
+
* Names are plain because this shelf is curated — one `auth`, chosen rather
|
|
6
|
+
* than claimed. Who wrote it is in the manifest, which is where credit
|
|
7
|
+
* belongs; a scope in the name would be friction solving a collision that
|
|
8
|
+
* cannot happen here.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CHUNKS_REPO = "heychunkydev/chunks";
|
|
11
|
+
export interface ChunkOption {
|
|
12
|
+
key: string;
|
|
13
|
+
kind: string;
|
|
14
|
+
what: string;
|
|
15
|
+
fallback: unknown;
|
|
16
|
+
}
|
|
17
|
+
/** What a chunk's own `chunk.json` says about it. */
|
|
18
|
+
export interface ChunkManifest {
|
|
19
|
+
name: string;
|
|
20
|
+
title: string;
|
|
21
|
+
version: string;
|
|
22
|
+
/** The username of whoever wrote it. Credit, not identity. */
|
|
23
|
+
author: string;
|
|
24
|
+
summary: string;
|
|
25
|
+
tags: string[];
|
|
26
|
+
/** npm packages the chunk needs at runtime. Ours are files; these are not. */
|
|
27
|
+
dependencies: string[];
|
|
28
|
+
options: ChunkOption[];
|
|
29
|
+
/** Where the config file lands, if it has one. */
|
|
30
|
+
config?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ChunkFile {
|
|
33
|
+
/** Path in the app, relative to its root. */
|
|
34
|
+
path: string;
|
|
35
|
+
content: string;
|
|
36
|
+
}
|
|
37
|
+
export interface AddResult {
|
|
38
|
+
chunk: string;
|
|
39
|
+
app: string;
|
|
40
|
+
/** What was written, in the order it was written. */
|
|
41
|
+
files: string[];
|
|
42
|
+
/** The commit, or undefined when nothing needed doing. */
|
|
43
|
+
commit?: string;
|
|
44
|
+
/** True when the chunk was already there and nothing changed. */
|
|
45
|
+
already: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare class NoSuchChunk extends Error {
|
|
48
|
+
constructor(name: string);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Read a chunk out of the chunks repository.
|
|
52
|
+
*
|
|
53
|
+
* Its manifest and every file under `files/`, with the `files/` prefix removed
|
|
54
|
+
* — what is left is the path the file takes in the app, so the layout of the
|
|
55
|
+
* chunk repository is the layout of the result and there is no mapping to keep
|
|
56
|
+
* in step.
|
|
57
|
+
*/
|
|
58
|
+
export declare function readChunk(name: string, ctx: RunContext): Promise<{
|
|
59
|
+
manifest: ChunkManifest;
|
|
60
|
+
files: ChunkFile[];
|
|
61
|
+
}>;
|
|
62
|
+
/** The config file, written from the chunk's own declared defaults. */
|
|
63
|
+
export declare function configFor(manifest: ChunkManifest): string | undefined;
|
|
64
|
+
export interface AddWatcher {
|
|
65
|
+
start?(step: string): void;
|
|
66
|
+
done?(step: string, detail: string): void;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Put a chunk in an app.
|
|
70
|
+
*
|
|
71
|
+
* Idempotent by inspection rather than by bookkeeping: if every file is
|
|
72
|
+
* already there with the content it would be given, nothing is written and the
|
|
73
|
+
* run says so. That is what makes it safe to ask twice.
|
|
74
|
+
*/
|
|
75
|
+
export declare function addChunk(opts: {
|
|
76
|
+
chunk: string;
|
|
77
|
+
repo: string;
|
|
78
|
+
app: string;
|
|
79
|
+
}, ctx: RunContext, watch?: AddWatcher): Promise<AddResult>;
|
|
80
|
+
//# sourceMappingURL=chunks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/admin/chunks.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGpD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,wBAAwB,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8EAA8E;IAC9E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,IAAI,EAAE,MAAM;CAIzB;AAQD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CAoB1D;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAerE;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAClD,GAAG,EAAE,UAAU,EACf,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,SAAS,CAAC,CA6CpB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Putting a chunk into an app.
|
|
3
|
+
*
|
|
4
|
+
* A developer should not have to do this. They say which chunk they want and
|
|
5
|
+
* it appears in their repository — no CLI to install, no files to copy, no
|
|
6
|
+
* commands to get right. Chunky already made the repository and already holds
|
|
7
|
+
* the token, so it can simply write to it.
|
|
8
|
+
*
|
|
9
|
+
* That makes this provisioning rather than installing, and it borrows
|
|
10
|
+
* provisioning's shape for the same reasons: every step asks before it acts,
|
|
11
|
+
* so a run that died halfway is safe to repeat, and a failure stops the run
|
|
12
|
+
* rather than committing half a feature.
|
|
13
|
+
*
|
|
14
|
+
* One commit, not one per file. A chunk that arrived as nine commits would be
|
|
15
|
+
* nine deployments and an unreadable history, so the files become a tree and
|
|
16
|
+
* the tree becomes a single commit — which also means a chunk either landed or
|
|
17
|
+
* did not, with no state in between for someone to find.
|
|
18
|
+
*/
|
|
19
|
+
import { github } from "./services/github.js";
|
|
20
|
+
import { vercel } from "./services/vercel.js";
|
|
21
|
+
import { KEY_FOR } from "./run.js";
|
|
22
|
+
import { DEFAULT_BRANCH } from "../config/environments.js";
|
|
23
|
+
/**
|
|
24
|
+
* Where the chunks live. Folders in one repository, one per chunk.
|
|
25
|
+
*
|
|
26
|
+
* Names are plain because this shelf is curated — one `auth`, chosen rather
|
|
27
|
+
* than claimed. Who wrote it is in the manifest, which is where credit
|
|
28
|
+
* belongs; a scope in the name would be friction solving a collision that
|
|
29
|
+
* cannot happen here.
|
|
30
|
+
*/
|
|
31
|
+
export const CHUNKS_REPO = "heychunkydev/chunks";
|
|
32
|
+
export class NoSuchChunk extends Error {
|
|
33
|
+
constructor(name) {
|
|
34
|
+
super(`No chunk called "${name}"`);
|
|
35
|
+
this.name = "NoSuchChunk";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function clients(ctx) {
|
|
39
|
+
const key = (service) => ctx.secrets.get(ctx.reference(KEY_FOR[service]));
|
|
40
|
+
const [g, v] = await Promise.all([key("github"), key("vercel")]);
|
|
41
|
+
return { gh: github(g), vc: vercel(v) };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read a chunk out of the chunks repository.
|
|
45
|
+
*
|
|
46
|
+
* Its manifest and every file under `files/`, with the `files/` prefix removed
|
|
47
|
+
* — what is left is the path the file takes in the app, so the layout of the
|
|
48
|
+
* chunk repository is the layout of the result and there is no mapping to keep
|
|
49
|
+
* in step.
|
|
50
|
+
*/
|
|
51
|
+
export async function readChunk(name, ctx) {
|
|
52
|
+
const { gh } = await clients(ctx);
|
|
53
|
+
const root = `chunks/${name}`;
|
|
54
|
+
let raw;
|
|
55
|
+
try {
|
|
56
|
+
raw = await gh.readFile(CHUNKS_REPO, `${root}/chunk.json`);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
throw new NoSuchChunk(name);
|
|
60
|
+
}
|
|
61
|
+
const manifest = JSON.parse(raw);
|
|
62
|
+
const files = [];
|
|
63
|
+
for (const path of await gh.listFiles(CHUNKS_REPO, `${root}/files`)) {
|
|
64
|
+
files.push({
|
|
65
|
+
path: path.slice(`${root}/files/`.length),
|
|
66
|
+
content: await gh.readFile(CHUNKS_REPO, path),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return { manifest, files };
|
|
70
|
+
}
|
|
71
|
+
/** The config file, written from the chunk's own declared defaults. */
|
|
72
|
+
export function configFor(manifest) {
|
|
73
|
+
if (!manifest.config || !manifest.options.length)
|
|
74
|
+
return undefined;
|
|
75
|
+
const lines = manifest.options.map((o) => ` /** ${o.what}. */\n ${o.key}: ${JSON.stringify(o.fallback, null, 2).replace(/\n/g, "\n ")},`);
|
|
76
|
+
return `/**
|
|
77
|
+
* Your ${manifest.name} settings.
|
|
78
|
+
*
|
|
79
|
+
* This file is yours. Chunky wrote it once from the chunk's defaults and will
|
|
80
|
+
* not write it again, so edit freely — nothing later comes back over the top.
|
|
81
|
+
*/
|
|
82
|
+
export const ${manifest.name} = {
|
|
83
|
+
${lines.join("\n")}
|
|
84
|
+
} as const;
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Put a chunk in an app.
|
|
89
|
+
*
|
|
90
|
+
* Idempotent by inspection rather than by bookkeeping: if every file is
|
|
91
|
+
* already there with the content it would be given, nothing is written and the
|
|
92
|
+
* run says so. That is what makes it safe to ask twice.
|
|
93
|
+
*/
|
|
94
|
+
export async function addChunk(opts, ctx, watch) {
|
|
95
|
+
const { gh, vc } = await clients(ctx);
|
|
96
|
+
watch?.start?.("read chunk");
|
|
97
|
+
const { manifest, files } = await readChunk(opts.chunk, ctx);
|
|
98
|
+
const all = [...files];
|
|
99
|
+
const config = configFor(manifest);
|
|
100
|
+
if (config && manifest.config) {
|
|
101
|
+
// Only if it is not already there: this file is the developer's once
|
|
102
|
+
// written, and rewriting it would silently undo their settings.
|
|
103
|
+
const existing = await gh.readFile(opts.repo, manifest.config).catch(() => undefined);
|
|
104
|
+
if (existing === undefined)
|
|
105
|
+
all.push({ path: manifest.config, content: config });
|
|
106
|
+
}
|
|
107
|
+
watch?.done?.("read chunk", `${manifest.name} ${manifest.version} · ${all.length} files`);
|
|
108
|
+
watch?.start?.("check app");
|
|
109
|
+
const unchanged = [];
|
|
110
|
+
for (const file of all) {
|
|
111
|
+
const there = await gh.readFile(opts.repo, file.path).catch(() => undefined);
|
|
112
|
+
if (there === file.content)
|
|
113
|
+
unchanged.push(file.path);
|
|
114
|
+
}
|
|
115
|
+
if (unchanged.length === all.length) {
|
|
116
|
+
watch?.done?.("check app", "already there, nothing to do");
|
|
117
|
+
return { chunk: opts.chunk, app: opts.app, files: [], already: true };
|
|
118
|
+
}
|
|
119
|
+
watch?.done?.("check app", `${all.length - unchanged.length} to write`);
|
|
120
|
+
watch?.start?.("write files");
|
|
121
|
+
const commit = await gh.commitFiles(opts.repo, {
|
|
122
|
+
branch: DEFAULT_BRANCH,
|
|
123
|
+
message: `Add the ${manifest.name} chunk\n\n${manifest.summary}\n\nWritten by chunky, on behalf of the app's owner. The files are yours now —\nedit them freely, nothing here updates them later.`,
|
|
124
|
+
files: all,
|
|
125
|
+
});
|
|
126
|
+
watch?.done?.("write files", `${all.length} files · ${commit.slice(0, 7)}`);
|
|
127
|
+
watch?.start?.("deploy");
|
|
128
|
+
const built = await vc.deploy(opts.app, {
|
|
129
|
+
repo: opts.repo,
|
|
130
|
+
ref: DEFAULT_BRANCH,
|
|
131
|
+
target: "production",
|
|
132
|
+
teamId: await vc.teamId(),
|
|
133
|
+
});
|
|
134
|
+
watch?.done?.("deploy", `${built.url} · building`);
|
|
135
|
+
return { chunk: opts.chunk, app: opts.app, files: all.map((f) => f.path), commit, already: false };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=chunks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks.js","sourceRoot":"","sources":["../../src/admin/chunks.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from "./apps.ts";
|
|
|
11
11
|
export * from "./users.ts";
|
|
12
12
|
export * from "./run.ts";
|
|
13
13
|
export * from "./provision.ts";
|
|
14
|
+
export * from "./chunks.ts";
|
|
14
15
|
export * from "./services/github.ts";
|
|
15
16
|
export * from "./services/vercel.ts";
|
|
16
17
|
export * from "./services/neon.ts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAG5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
|
package/dist/admin/index.js
CHANGED
|
@@ -11,6 +11,7 @@ export * from "./apps.js";
|
|
|
11
11
|
export * from "./users.js";
|
|
12
12
|
export * from "./run.js";
|
|
13
13
|
export * from "./provision.js";
|
|
14
|
+
export * from "./chunks.js";
|
|
14
15
|
// One file per service, matching the registry.
|
|
15
16
|
export * from "./services/github.js";
|
|
16
17
|
export * from "./services/vercel.js";
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,+CAA+C;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
|
|
@@ -8,6 +8,16 @@ export interface Repo {
|
|
|
8
8
|
}
|
|
9
9
|
export declare function github(token: string): {
|
|
10
10
|
login: () => Promise<string>;
|
|
11
|
+
readFile: (fullName: string, path: string) => Promise<string>;
|
|
12
|
+
listFiles: (fullName: string, dir: string) => Promise<string[]>;
|
|
13
|
+
commitFiles: (fullName: string, o: {
|
|
14
|
+
branch: string;
|
|
15
|
+
message: string;
|
|
16
|
+
files: {
|
|
17
|
+
path: string;
|
|
18
|
+
content: string;
|
|
19
|
+
}[];
|
|
20
|
+
}) => Promise<string>;
|
|
11
21
|
listRepos: (affiliation?: string) => Promise<Repo[]>;
|
|
12
22
|
listPublicRepos: () => Promise<Repo[]>;
|
|
13
23
|
findRepo: (fullName: string) => Promise<Repo | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/admin/services/github.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKrG,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM;;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/admin/services/github.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKrG,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM;;yBAyHA,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;0BAUrC,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC;4BAsB9D,MAAM,KACb;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,KACjF,OAAO,CAAC,MAAM,CAAC;yCAvJmD,OAAO,CAAC,IAAI,EAAE,CAAC;2BAYlD,OAAO,CAAC,IAAI,EAAE,CAAC;yBAaf,MAAM,KAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;uBAqBpC,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;uBA0BxE,MAAM,MACT;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAC3D,OAAO,CAAC,IAAI,CAAC;2BA6BoB,MAAM,KAAK;QAAE,SAAS,EAAE,IAAI,CAAA;KAAE,KAAG,OAAO,CAAC,IAAI,CAAC;6BAK5C,MAAM,UAAU,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;cAqFxE,OAAO,CAAC,aAAa,CAAC;cAStB,OAAO,CAAC,aAAa,CAAC;EAgCzC"}
|
|
@@ -135,8 +135,61 @@ export function github(token) {
|
|
|
135
135
|
body: { ref: `refs/heads/${branch}`, sha: ref.object.sha },
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
|
+
/** One file's contents, decoded. Throws when it is not there. */
|
|
139
|
+
async function readFile(fullName, path) {
|
|
140
|
+
const res = await request(`${GH}/repos/${fullName}/contents/${path.split("/").map(encodeURIComponent).join("/")}`, opts);
|
|
141
|
+
if (!res.content)
|
|
142
|
+
throw new Error(`${fullName}:${path} is not a file`);
|
|
143
|
+
return Buffer.from(res.content, res.encoding ?? "base64").toString("utf8");
|
|
144
|
+
}
|
|
145
|
+
/** Every file under a directory, recursively, as repository paths. */
|
|
146
|
+
async function listFiles(fullName, dir) {
|
|
147
|
+
const entries = await request(`${GH}/repos/${fullName}/contents/${dir.split("/").map(encodeURIComponent).join("/")}`, opts);
|
|
148
|
+
const out = [];
|
|
149
|
+
for (const e of entries) {
|
|
150
|
+
if (e.type === "file")
|
|
151
|
+
out.push(e.path);
|
|
152
|
+
else if (e.type === "dir")
|
|
153
|
+
out.push(...(await listFiles(fullName, e.path)));
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Write several files as one commit.
|
|
159
|
+
*
|
|
160
|
+
* Through the git data API rather than one contents call per file, because a
|
|
161
|
+
* chunk arriving as nine commits would be nine deployments and an unreadable
|
|
162
|
+
* history. It also makes the write atomic as far as the repository is
|
|
163
|
+
* concerned: the chunk landed or it did not.
|
|
164
|
+
*/
|
|
165
|
+
async function commitFiles(fullName, o) {
|
|
166
|
+
const ref = await request(`${GH}/repos/${fullName}/git/ref/heads/${o.branch}`, opts);
|
|
167
|
+
const head = ref.object.sha;
|
|
168
|
+
const base = await request(`${GH}/repos/${fullName}/git/commits/${head}`, opts);
|
|
169
|
+
const tree = await Promise.all(o.files.map(async (f) => {
|
|
170
|
+
const blob = await request(`${GH}/repos/${fullName}/git/blobs`, {
|
|
171
|
+
...opts, method: "POST",
|
|
172
|
+
body: { content: Buffer.from(f.content, "utf8").toString("base64"), encoding: "base64" },
|
|
173
|
+
});
|
|
174
|
+
return { path: f.path, mode: "100644", type: "blob", sha: blob.sha };
|
|
175
|
+
}));
|
|
176
|
+
const made = await request(`${GH}/repos/${fullName}/git/trees`, {
|
|
177
|
+
...opts, method: "POST", body: { base_tree: base.tree.sha, tree },
|
|
178
|
+
});
|
|
179
|
+
const commit = await request(`${GH}/repos/${fullName}/git/commits`, {
|
|
180
|
+
...opts, method: "POST",
|
|
181
|
+
body: { message: o.message, tree: made.sha, parents: [head] },
|
|
182
|
+
});
|
|
183
|
+
await request(`${GH}/repos/${fullName}/git/refs/heads/${o.branch}`, {
|
|
184
|
+
...opts, method: "PATCH", body: { sha: commit.sha },
|
|
185
|
+
});
|
|
186
|
+
return commit.sha;
|
|
187
|
+
}
|
|
138
188
|
return {
|
|
139
189
|
login,
|
|
190
|
+
readFile,
|
|
191
|
+
listFiles,
|
|
192
|
+
commitFiles,
|
|
140
193
|
listRepos,
|
|
141
194
|
listPublicRepos,
|
|
142
195
|
findRepo,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/admin/services/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/admin/services/github.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,WAAW,EAA0C,MAAM,yBAAyB,CAAC;AAErG,MAAM,EAAE,GAAG,wBAAwB,CAAC;AACpC,MAAM,OAAO,GAAG,EAAE,sBAAsB,EAAE,YAAY,EAAE,CAAC;AAUzD,qEAAqE;AACrE,MAAM,aAAa,GAAuB;IACxC,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;IACzD,CAAC,WAAW,EAAE,uDAAuD,CAAC;IACtE,CAAC,aAAa,EAAE,uBAAuB,CAAC;IACxC,CAAC,MAAM,EAAE,mDAAmD,CAAC;IAC7D,CAAC,UAAU,EAAE,qCAAqC,CAAC;IACnD,CAAC,SAAS,EAAE,+BAA+B,CAAC;IAC5C,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;CACrD,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,MAAM,KAAK,GAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAEtD,KAAK,UAAU,SAAS,CAAC,WAAW,GAAG,2BAA2B;QAChE,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,OAAO,CACzB,GAAG,EAAE,2BAA2B,WAAW,sBAAsB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YACjF,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACnB,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;gBAAE,MAAM;QAChC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,uEAAuE;IACvE,KAAK,UAAU,eAAe;QAC5B,OAAO,OAAO,CAAS,GAAG,EAAE,8DAA8D,EAAE,IAAI,CAAC,CAAC;IACpG,CAAC;IAED,yEAAyE;IACzE,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,OAAO,CAAoB,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAEvF;;;;;OAKG;IACH,KAAK,UAAU,QAAQ,CAAC,QAAgB;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAO,GAAG,EAAE,UAAU,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,aAAa;gBAAE,OAAO,SAAS,CAAC;YACnD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,GAAY;QAClD,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAChD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACpF,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH;;;;;;;;;;;OAWG;IACH,KAAK,UAAU,UAAU,CACvB,IAAY,EACZ,IAA+D,EAAE;QAEjE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,OAAO,CAAO,GAAG,EAAE,UAAU,CAAC,CAAC,QAAQ,WAAW,EAAE;gBACzD,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;gBACvB,IAAI,EAAE;oBACJ,IAAI;oBACJ,KAAK,EAAE,CAAC,CAAC,GAAG;oBACZ,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,wDAAwD;oBACxD,oBAAoB,EAAE,KAAK;iBAC5B;aACF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC;QACrE,OAAO,OAAO,CAAO,GAAG,EAAE;YACxB,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;YACvB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;SAC3E,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,UAAU,UAAU,CAAC,QAAgB,EAAE,CAAsB;QAChE,IAAI,CAAC,CAAC,EAAE,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,uBAAuB,CAAC,CAAC;QAC1F,MAAM,OAAO,CAAC,GAAG,EAAE,UAAU,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc,EAAE,IAAY;QACxE,MAAM,GAAG,GAAG,MAAM,OAAO,CAA8B,GAAG,EAAE,UAAU,QAAQ,kBAAkB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9G,MAAM,OAAO,CAAC,GAAG,EAAE,UAAU,QAAQ,WAAW,EAAE;YAChD,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;YACvB,IAAI,EAAE,EAAE,GAAG,EAAE,cAAc,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,IAAY;QACpD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,GAAG,EAAE,UAAU,QAAQ,aAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACvF,IAAI,CACL,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,IAAI,IAAI,gBAAgB,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAG,GAAG,CAAC,QAA2B,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjG,CAAC;IAED,sEAAsE;IACtE,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,GAAW;QACpD,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,GAAG,EAAE,UAAU,QAAQ,aAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACtF,IAAI,CACL,CAAC;QACF,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACnC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,UAAU,WAAW,CACxB,QAAgB,EAChB,CAAkF;QAElF,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,GAAG,EAAE,UAAU,QAAQ,kBAAkB,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,GAAG,EAAE,UAAU,QAAQ,gBAAgB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAEvD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAkB,GAAG,EAAE,UAAU,QAAQ,YAAY,EAAE;gBAC/E,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;gBACvB,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;aACzF,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,MAAe,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACzF,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAkB,GAAG,EAAE,UAAU,QAAQ,YAAY,EAAE;YAC/E,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;SAClE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,GAAG,EAAE,UAAU,QAAQ,cAAc,EAAE;YACnF,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;YACvB,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;SAC9D,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,EAAE,UAAU,QAAQ,mBAAmB,CAAC,CAAC,MAAM,EAAE,EAAE;YAClE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;SACpD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAGD,OAAO;QACL,KAAK;QACL,QAAQ;QACR,SAAS;QACT,WAAW;QACX,SAAS;QACT,eAAe;QACf,QAAQ;QACR,WAAW;QACX,UAAU;QACV,UAAU;QACV,YAAY;QAEZ,KAAK,CAAC,MAAM;YACV,OAAO,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAChC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAoB,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAChE,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;gBACpC,OAAO,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;oBAC5E,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,MAAM;YACV,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACtC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAoB,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC9F,sEAAsE;gBACtE,qEAAqE;gBACrE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;gBACtE,MAAM,KAAK,GAAa,EAAE,CAAC;gBAE3B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,MAAM,6BAA6B,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;oBACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;wBAAE,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBACvG,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAAE,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;gBACzG,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC3D,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;gBAC9F,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAE5E,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;gBAChC,OAAO;oBACL,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,QAAkB,CAAC,CAAC,CAAE,UAAoB;oBACrE,MAAM;oBACN,GAAG,EAAE,MAAM,CAAC,MAAM;wBAChB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;wBACrE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,eAAe,CAAC;oBAC1C,KAAK;iBACN,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|