@amalgm/shell 0.1.17 → 0.1.19
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/PURPOSE.md +47 -7
- package/dist/filesystem.d.ts +6 -0
- package/dist/filesystem.js +46 -2
- package/dist/filesystem.js.map +1 -1
- package/dist/git-command.d.ts +8 -0
- package/dist/git-command.js +68 -0
- package/dist/git-command.js.map +1 -0
- package/dist/git-registration-host.d.ts +18 -0
- package/dist/git-registration-host.js +107 -0
- package/dist/git-registration-host.js.map +1 -0
- package/dist/git-repository-host.d.ts +28 -9
- package/dist/git-repository-host.js +254 -102
- package/dist/git-repository-host.js.map +1 -1
- package/dist/materialized-graph.d.ts +18 -0
- package/dist/materialized-graph.js +113 -0
- package/dist/materialized-graph.js.map +1 -0
- package/dist/user-ground-host.d.ts +1 -0
- package/dist/user-ground-host.js +470 -250
- package/dist/user-ground-host.js.map +1 -1
- package/dist/wire-binary.d.ts +8 -0
- package/dist/wire-binary.js +31 -0
- package/dist/wire-binary.js.map +1 -0
- package/dist/wire-client.d.ts +3 -0
- package/dist/wire-client.js +22 -3
- package/dist/wire-client.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import {
|
|
3
|
-
import { chmodSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readlinkSync, realpathSync, rmSync, symlinkSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { chmodSync, closeSync, createReadStream, existsSync, lstatSync, mkdirSync, mkdtempSync, openSync, readFileSync, readSync, readlinkSync, realpathSync, rmSync, symlinkSync, statSync, writeFileSync, } from "node:fs";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import { dirname, join, resolve } from "node:path";
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import { Transform } from "node:stream";
|
|
7
|
+
import { pipeline } from "node:stream/promises";
|
|
8
|
+
import { applyRepositoryIdentity, decodeRepositoryTransport, deriveCardId, deriveCheckpointId, deriveStateId, encodeRepositoryTransport, inspectRepositoryTransport, planRepositoryIdentity, repositoryTransportMetadataBytes, } from "@amalgm/live";
|
|
9
|
+
import { gitText, runGit, runGitToFile, tryGit, tryGitText, } from "./git-command.js";
|
|
8
10
|
const EMPTY_TREE = "4b825dc642cb6eb9a060e54bf8d69288fbee4904";
|
|
9
11
|
const BUSY_MARKERS = [
|
|
10
12
|
"MERGE_HEAD",
|
|
@@ -17,36 +19,6 @@ const sha256Hex = (input) => createHash("sha256").update(input).digest("hex");
|
|
|
17
19
|
const bufferView = (bytes) => Buffer.isBuffer(bytes)
|
|
18
20
|
? bytes
|
|
19
21
|
: Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
20
|
-
function runGit(cwd, args, input) {
|
|
21
|
-
try {
|
|
22
|
-
return execFileSync("git", [...args], {
|
|
23
|
-
cwd,
|
|
24
|
-
input,
|
|
25
|
-
maxBuffer: MAX_GIT_BUFFER,
|
|
26
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
27
|
-
env: { ...process.env, GIT_TERMINAL_PROMPT: "0" },
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
const failure = error;
|
|
32
|
-
const stderr = failure.stderr?.toString("utf8").trim();
|
|
33
|
-
failure.message = `git ${args.join(" ")} failed${stderr ? `: ${stderr}` : ""}`;
|
|
34
|
-
throw failure;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function tryGit(cwd, args) {
|
|
38
|
-
try {
|
|
39
|
-
return runGit(cwd, args);
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
const gitText = (cwd, args) => runGit(cwd, args).toString("utf8").trim();
|
|
46
|
-
function tryGitText(cwd, args) {
|
|
47
|
-
const value = tryGit(cwd, args);
|
|
48
|
-
return value === null ? null : value.toString("utf8").trim();
|
|
49
|
-
}
|
|
50
22
|
/** A `.git` directory or linked-worktree file is evidence only when Git says
|
|
51
23
|
* this exact directory is the worktree root. Stale marker files remain
|
|
52
24
|
* ordinary folder ground. */
|
|
@@ -94,7 +66,9 @@ function shallowBoundary(repository) {
|
|
|
94
66
|
return commits;
|
|
95
67
|
}
|
|
96
68
|
function untrackedFiles(repository) {
|
|
97
|
-
|
|
69
|
+
// Git ignore is not Amalgm enrollment policy. Every on-disk worktree leaf
|
|
70
|
+
// travels unless the registered root's .amalgmignore excludes it.
|
|
71
|
+
const output = runGit(repository, ["ls-files", "--others", "-z"])
|
|
98
72
|
.toString("utf8");
|
|
99
73
|
return output.split("\0").filter(Boolean).sort().flatMap((relativePath) => {
|
|
100
74
|
if (relativePath.endsWith("/"))
|
|
@@ -123,26 +97,11 @@ function untrackedFiles(repository) {
|
|
|
123
97
|
}
|
|
124
98
|
});
|
|
125
99
|
}
|
|
126
|
-
function bundle(repository) {
|
|
127
|
-
const commit = tryGitText(repository, ["rev-parse", "-q", "--verify", "HEAD"]);
|
|
128
|
-
if (!commit)
|
|
129
|
-
return null;
|
|
130
|
-
const scratch = mkdtempSync(join(tmpdir(), "amalgm-repo-bundle-"));
|
|
131
|
-
const file = join(scratch, "repository.bundle");
|
|
132
|
-
try {
|
|
133
|
-
runGit(repository, ["bundle", "create", file, "--all", "HEAD"]);
|
|
134
|
-
const bytes = readFileSync(file);
|
|
135
|
-
return { bytes, sha256: sha256Hex(bytes) };
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
rmSync(scratch, { recursive: true, force: true });
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
100
|
function busyMarker(repository) {
|
|
142
101
|
const gitDirectory = resolve(repository, gitText(repository, ["rev-parse", "--git-dir"]));
|
|
143
102
|
return BUSY_MARKERS.find((marker) => existsSync(join(gitDirectory, marker))) ?? null;
|
|
144
103
|
}
|
|
145
|
-
function captureState(repository
|
|
104
|
+
function captureState(repository) {
|
|
146
105
|
const busy = busyMarker(repository);
|
|
147
106
|
if (busy)
|
|
148
107
|
throw new Error(`repository is busy: ${busy}`);
|
|
@@ -156,7 +115,6 @@ function captureState(repository, withBundle) {
|
|
|
156
115
|
tags: refList(repository, "refs/tags"),
|
|
157
116
|
remotes: remoteList(repository),
|
|
158
117
|
...(shallow.length > 0 ? { shallow } : {}),
|
|
159
|
-
bundle: withBundle ? bundle(repository) : null,
|
|
160
118
|
};
|
|
161
119
|
const checkpoint = {
|
|
162
120
|
baseCommit: commit,
|
|
@@ -175,52 +133,75 @@ function captureState(repository, withBundle) {
|
|
|
175
133
|
checkpointId,
|
|
176
134
|
card,
|
|
177
135
|
checkpoint,
|
|
136
|
+
pack: null,
|
|
178
137
|
};
|
|
179
138
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
139
|
+
const cardTips = (card) => [...new Set([
|
|
140
|
+
...(card.head.commit ? [card.head.commit] : []),
|
|
141
|
+
...card.branches.map((ref) => ref.commit),
|
|
142
|
+
...card.tags.map((ref) => ref.commit),
|
|
143
|
+
])];
|
|
144
|
+
/** Produce the same native thin-pack work as send-pack: current wants minus
|
|
145
|
+
* receiver haves. Ref updates and Amalgm metadata remain outside the pack. */
|
|
146
|
+
function nativePack(repository, current, previous) {
|
|
147
|
+
const wants = cardTips(current);
|
|
148
|
+
if (wants.length === 0)
|
|
149
|
+
return null;
|
|
150
|
+
const haves = (previous ? cardTips(previous) : []).filter((commit) => tryGit(repository, ["cat-file", "-e", `${commit}^{object}`]) !== null);
|
|
151
|
+
const revisions = Buffer.from([
|
|
152
|
+
...wants,
|
|
153
|
+
...haves.map((commit) => `^${commit}`),
|
|
154
|
+
"",
|
|
155
|
+
].join("\n"), "utf8");
|
|
156
|
+
const scratch = mkdtempSync(join(tmpdir(), "amalgm-repo-pack-"));
|
|
157
|
+
const file = join(scratch, "repository.pack");
|
|
158
|
+
try {
|
|
159
|
+
runGitToFile(repository, [
|
|
160
|
+
"pack-objects", "--stdout", "--revs", "--thin", "--delta-base-offset",
|
|
161
|
+
], revisions, file);
|
|
162
|
+
const bytes = readFileSync(file);
|
|
163
|
+
if (bytes.byteLength < 12 || bytes.subarray(0, 4).toString("ascii") !== "PACK") {
|
|
164
|
+
throw new Error("Git produced an invalid repository pack");
|
|
165
|
+
}
|
|
166
|
+
if (bytes.readUInt32BE(8) === 0)
|
|
167
|
+
return null;
|
|
168
|
+
return { bytes, sha256: sha256Hex(bytes) };
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
rmSync(scratch, { recursive: true, force: true });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** Capture one semantic repository state. A chainable capture packs only Git
|
|
175
|
+
* objects absent from its parent and only changed identity-map paths. */
|
|
176
|
+
export function captureRepository(repository, identity, prior, previousIdentity = null) {
|
|
177
|
+
const state = captureState(repository);
|
|
184
178
|
if (prior) {
|
|
185
|
-
const
|
|
186
|
-
const previous = unpack(bufferView(prior.bytes).toString("utf8"));
|
|
179
|
+
const identityHash = planRepositoryIdentity(identity, null, sha256Hex).identityHash;
|
|
187
180
|
if (state.stateId === prior.stateId
|
|
188
|
-
&&
|
|
189
|
-
&&
|
|
190
|
-
|
|
191
|
-
return { ...prior, state };
|
|
181
|
+
&& JSON.stringify(prior.card) === JSON.stringify(state.card)
|
|
182
|
+
&& prior.identityHash === identityHash) {
|
|
183
|
+
return { ...prior, state, bytes: null };
|
|
192
184
|
}
|
|
193
185
|
}
|
|
194
|
-
const
|
|
195
|
-
const
|
|
186
|
+
const chainable = prior !== null && previousIdentity !== null;
|
|
187
|
+
const identityPlan = planRepositoryIdentity(identity, chainable ? previousIdentity : null, sha256Hex);
|
|
188
|
+
const captured = {
|
|
189
|
+
...state,
|
|
190
|
+
pack: nativePack(repository, state.card, chainable ? prior.card : null),
|
|
191
|
+
};
|
|
192
|
+
const bytes = bufferView(encodeRepositoryTransport(captured, {
|
|
193
|
+
parentTransportVersion: chainable ? prior.transportVersion : null,
|
|
194
|
+
...identityPlan,
|
|
195
|
+
}));
|
|
196
196
|
return {
|
|
197
|
-
state,
|
|
198
|
-
stateId:
|
|
197
|
+
state: captured,
|
|
198
|
+
stateId: captured.stateId,
|
|
199
199
|
transportVersion: sha256Hex(bytes),
|
|
200
|
+
card: captured.card,
|
|
201
|
+
identityHash: identityPlan.identityHash,
|
|
200
202
|
bytes,
|
|
201
203
|
};
|
|
202
204
|
}
|
|
203
|
-
function fetchBundle(repository, state) {
|
|
204
|
-
const packed = state.card.bundle;
|
|
205
|
-
if (!packed)
|
|
206
|
-
return;
|
|
207
|
-
if (sha256Hex(packed.bytes) !== packed.sha256)
|
|
208
|
-
throw new Error("repository bundle checksum mismatch");
|
|
209
|
-
const scratch = mkdtempSync(join(tmpdir(), "amalgm-repo-apply-"));
|
|
210
|
-
const file = join(scratch, "repository.bundle");
|
|
211
|
-
writeFileSync(file, packed.bytes);
|
|
212
|
-
try {
|
|
213
|
-
runGit(repository, [
|
|
214
|
-
"fetch", "--quiet", file,
|
|
215
|
-
"+HEAD:refs/amalgm-import/HEAD",
|
|
216
|
-
"+refs/heads/*:refs/amalgm-import/heads/*",
|
|
217
|
-
"+refs/tags/*:refs/amalgm-import/tags/*",
|
|
218
|
-
]);
|
|
219
|
-
}
|
|
220
|
-
finally {
|
|
221
|
-
rmSync(scratch, { recursive: true, force: true });
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
205
|
function installShallowBoundary(repository, commits) {
|
|
225
206
|
if (commits.length === 0)
|
|
226
207
|
return;
|
|
@@ -229,10 +210,6 @@ function installShallowBoundary(repository, commits) {
|
|
|
229
210
|
writeFileSync(file, `${[...commits].sort().join("\n")}\n`);
|
|
230
211
|
}
|
|
231
212
|
function forceRefs(repository, state) {
|
|
232
|
-
for (const ref of state.card.branches)
|
|
233
|
-
runGit(repository, ["update-ref", `refs/heads/${ref.name}`, ref.commit]);
|
|
234
|
-
for (const ref of state.card.tags)
|
|
235
|
-
runGit(repository, ["update-ref", `refs/tags/${ref.name}`, ref.commit]);
|
|
236
213
|
const keep = new Set([
|
|
237
214
|
...state.card.branches.map((ref) => `refs/heads/${ref.name}`),
|
|
238
215
|
...state.card.tags.map((ref) => `refs/tags/${ref.name}`),
|
|
@@ -240,10 +217,14 @@ function forceRefs(repository, state) {
|
|
|
240
217
|
const existing = tryGitText(repository, [
|
|
241
218
|
"for-each-ref", "--format=%(refname)", "refs/heads", "refs/tags", "refs/amalgm-import",
|
|
242
219
|
]);
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
220
|
+
const commands = [
|
|
221
|
+
...state.card.branches.map((ref) => `update refs/heads/${ref.name} ${ref.commit}`),
|
|
222
|
+
...state.card.tags.map((ref) => `update refs/tags/${ref.name} ${ref.commit}`),
|
|
223
|
+
...(existing ?? "").split("\n").filter((ref) => ref && !keep.has(ref))
|
|
224
|
+
.map((ref) => `delete ${ref}`),
|
|
225
|
+
"",
|
|
226
|
+
];
|
|
227
|
+
runGit(repository, ["update-ref", "--stdin"], Buffer.from(commands.join("\n"), "utf8"));
|
|
247
228
|
}
|
|
248
229
|
function forceHead(repository, state) {
|
|
249
230
|
const { head } = state.card;
|
|
@@ -286,26 +267,197 @@ function applyCheckpoint(repository, state) {
|
|
|
286
267
|
}
|
|
287
268
|
}
|
|
288
269
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
270
|
+
function importPack(repository, state) {
|
|
271
|
+
if (!state.pack)
|
|
272
|
+
return;
|
|
273
|
+
if (sha256Hex(state.pack.bytes) !== state.pack.sha256) {
|
|
274
|
+
throw new Error("repository Git pack checksum mismatch");
|
|
275
|
+
}
|
|
276
|
+
runGit(repository, [
|
|
277
|
+
"index-pack", "--stdin", "--fix-thin", "--keep=amalgm repository transport",
|
|
278
|
+
], state.pack.bytes);
|
|
279
|
+
}
|
|
280
|
+
/** Materialize a complete transport chain and then re-derive its semantic
|
|
281
|
+
* state. The oldest node must be self-contained; every later node must name
|
|
282
|
+
* the exact predecessor whose Git objects and identity map it extends. */
|
|
283
|
+
export function applyRepository(repository, chain) {
|
|
284
|
+
if (chain.length === 0)
|
|
285
|
+
throw new Error("repository transport chain is empty");
|
|
286
|
+
const transports = [];
|
|
287
|
+
let priorVersion = null;
|
|
288
|
+
let identity = null;
|
|
289
|
+
for (const bytes of chain) {
|
|
290
|
+
const state = decodeRepositoryTransport(bytes);
|
|
291
|
+
if (state.parentTransportVersion !== priorVersion) {
|
|
292
|
+
throw new Error("repository transport chain is discontinuous");
|
|
293
|
+
}
|
|
294
|
+
identity = applyRepositoryIdentity(identity, state, sha256Hex);
|
|
295
|
+
transports.push(state);
|
|
296
|
+
priorVersion = sha256Hex(bytes);
|
|
297
|
+
}
|
|
298
|
+
const state = transports.at(-1);
|
|
293
299
|
mkdirSync(repository, { recursive: true });
|
|
294
300
|
runGit(repository, ["init", "--quiet"]);
|
|
295
301
|
for (const remote of state.card.remotes)
|
|
296
302
|
runGit(repository, ["remote", "add", remote.name, remote.url]);
|
|
303
|
+
for (const transport of transports)
|
|
304
|
+
importPack(repository, transport);
|
|
297
305
|
installShallowBoundary(repository, state.card.shallow ?? []);
|
|
298
|
-
fetchBundle(repository, state);
|
|
299
306
|
forceRefs(repository, state);
|
|
300
307
|
forceHead(repository, state);
|
|
301
308
|
applyCheckpoint(repository, state);
|
|
302
|
-
const proof = captureState(repository
|
|
309
|
+
const proof = captureState(repository);
|
|
310
|
+
if (proof.cardId !== state.cardId || proof.checkpointId !== state.checkpointId) {
|
|
311
|
+
throw new Error("materialized repository does not reproduce its declared state");
|
|
312
|
+
}
|
|
313
|
+
if (JSON.stringify(proof.card.shallow ?? []) !== JSON.stringify(state.card.shallow ?? [])) {
|
|
314
|
+
throw new Error("materialized repository does not reproduce its shallow boundary");
|
|
315
|
+
}
|
|
316
|
+
return {
|
|
317
|
+
stateId: state.stateId,
|
|
318
|
+
cardId: state.cardId,
|
|
319
|
+
checkpointId: state.checkpointId,
|
|
320
|
+
card: state.card,
|
|
321
|
+
transportVersion: priorVersion,
|
|
322
|
+
identity: identity,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function readExact(file, offset, bytes) {
|
|
326
|
+
const result = Buffer.allocUnsafe(bytes);
|
|
327
|
+
const descriptor = openSync(file, "r");
|
|
328
|
+
try {
|
|
329
|
+
let cursor = 0;
|
|
330
|
+
while (cursor < bytes) {
|
|
331
|
+
const count = readSync(descriptor, result, cursor, bytes - cursor, offset + cursor);
|
|
332
|
+
if (count === 0)
|
|
333
|
+
throw new Error("repository transport file is truncated");
|
|
334
|
+
cursor += count;
|
|
335
|
+
}
|
|
336
|
+
return result;
|
|
337
|
+
}
|
|
338
|
+
finally {
|
|
339
|
+
closeSync(descriptor);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
export function inspectRepositoryTransportFile(file) {
|
|
343
|
+
const totalBytes = statSync(file).size;
|
|
344
|
+
const prefix = readExact(file, 0, 12);
|
|
345
|
+
const metadataBytes = repositoryTransportMetadataBytes(prefix);
|
|
346
|
+
return inspectRepositoryTransport(readExact(file, 0, metadataBytes), totalBytes);
|
|
347
|
+
}
|
|
348
|
+
async function importPackFile(repository, file, pack) {
|
|
349
|
+
const hash = createHash("sha256");
|
|
350
|
+
const witness = new Transform({
|
|
351
|
+
transform(chunk, _encoding, callback) {
|
|
352
|
+
hash.update(chunk);
|
|
353
|
+
callback(null, chunk);
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
const child = spawn("git", [
|
|
357
|
+
"index-pack", "--stdin", "--fix-thin", "--keep=amalgm repository transport",
|
|
358
|
+
], {
|
|
359
|
+
cwd: repository,
|
|
360
|
+
stdio: ["pipe", "ignore", "pipe"],
|
|
361
|
+
env: { ...process.env, GIT_TERMINAL_PROMPT: "0" },
|
|
362
|
+
});
|
|
363
|
+
const stderr = [];
|
|
364
|
+
child.stderr.on("data", (chunk) => stderr.push(chunk));
|
|
365
|
+
const completed = new Promise((resolveChild, rejectChild) => {
|
|
366
|
+
child.once("error", rejectChild);
|
|
367
|
+
child.once("close", (code) => {
|
|
368
|
+
if (code === 0)
|
|
369
|
+
resolveChild();
|
|
370
|
+
else
|
|
371
|
+
rejectChild(new Error(`git index-pack failed${stderr.length
|
|
372
|
+
? `: ${Buffer.concat(stderr).toString("utf8").trim()}` : ""}`));
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
const source = createReadStream(file, {
|
|
376
|
+
start: pack.range.offset,
|
|
377
|
+
end: pack.range.offset + pack.range.bytes - 1,
|
|
378
|
+
});
|
|
379
|
+
await Promise.all([pipeline(source, witness, child.stdin), completed]);
|
|
380
|
+
if (hash.digest("hex") !== pack.sha256)
|
|
381
|
+
throw new Error("repository Git pack checksum mismatch");
|
|
382
|
+
}
|
|
383
|
+
function readRange(file, range) {
|
|
384
|
+
return range.bytes === 0 ? Buffer.alloc(0) : readExact(file, range.offset, range.bytes);
|
|
385
|
+
}
|
|
386
|
+
function applyCheckpointFile(repository, file, checkpoint) {
|
|
387
|
+
const staged = readRange(file, checkpoint.stagedPatch);
|
|
388
|
+
if (staged.length > 0) {
|
|
389
|
+
runGit(repository, ["apply", "--index", "--binary", "--whitespace=nowarn"], staged);
|
|
390
|
+
}
|
|
391
|
+
const unstaged = readRange(file, checkpoint.unstagedPatch);
|
|
392
|
+
if (unstaged.length > 0) {
|
|
393
|
+
runGit(repository, ["apply", "--binary", "--whitespace=nowarn"], unstaged);
|
|
394
|
+
}
|
|
395
|
+
for (const entry of checkpoint.untracked) {
|
|
396
|
+
if (entry.content === null) {
|
|
397
|
+
throw new Error(`repository transport omitted untracked content for ${entry.path}`);
|
|
398
|
+
}
|
|
399
|
+
const content = readRange(file, entry.content);
|
|
400
|
+
if (sha256Hex(content) !== entry.sha256) {
|
|
401
|
+
throw new Error(`repository untracked content checksum mismatch for ${entry.path}`);
|
|
402
|
+
}
|
|
403
|
+
const absolutePath = join(repository, entry.path);
|
|
404
|
+
mkdirSync(dirname(absolutePath), { recursive: true });
|
|
405
|
+
if (entry.mode === "120000") {
|
|
406
|
+
rmSync(absolutePath, { force: true });
|
|
407
|
+
symlinkSync(content.toString("utf8"), absolutePath);
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
writeFileSync(absolutePath, content);
|
|
411
|
+
chmodSync(absolutePath, entry.mode === "100755" ? 0o755 : 0o644);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
/** Apply sealed repository artifacts by streaming each Git range directly
|
|
416
|
+
* into index-pack. Download already verified each complete transport hash. */
|
|
417
|
+
export async function applyRepositoryFiles(repository, chain) {
|
|
418
|
+
if (chain.length === 0)
|
|
419
|
+
throw new Error("repository transport chain is empty");
|
|
420
|
+
const transports = [];
|
|
421
|
+
let priorVersion = null;
|
|
422
|
+
let identity = null;
|
|
423
|
+
for (const sealed of chain) {
|
|
424
|
+
const layout = inspectRepositoryTransportFile(sealed.file);
|
|
425
|
+
if (layout.parentTransportVersion !== priorVersion) {
|
|
426
|
+
throw new Error("repository transport chain is discontinuous");
|
|
427
|
+
}
|
|
428
|
+
identity = applyRepositoryIdentity(identity, layout, sha256Hex);
|
|
429
|
+
transports.push({ ...sealed, layout });
|
|
430
|
+
priorVersion = sealed.transportVersion;
|
|
431
|
+
}
|
|
432
|
+
const latest = transports.at(-1);
|
|
433
|
+
const state = latest.layout;
|
|
434
|
+
mkdirSync(repository, { recursive: true });
|
|
435
|
+
runGit(repository, ["init", "--quiet"]);
|
|
436
|
+
for (const remote of state.card.remotes)
|
|
437
|
+
runGit(repository, ["remote", "add", remote.name, remote.url]);
|
|
438
|
+
for (const transport of transports) {
|
|
439
|
+
if (transport.layout.pack) {
|
|
440
|
+
await importPackFile(repository, transport.file, transport.layout.pack);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
installShallowBoundary(repository, state.card.shallow ?? []);
|
|
444
|
+
forceRefs(repository, state);
|
|
445
|
+
forceHead(repository, state);
|
|
446
|
+
applyCheckpointFile(repository, latest.file, state.checkpoint);
|
|
447
|
+
const proof = captureState(repository);
|
|
303
448
|
if (proof.cardId !== state.cardId || proof.checkpointId !== state.checkpointId) {
|
|
304
449
|
throw new Error("materialized repository does not reproduce its declared state");
|
|
305
450
|
}
|
|
306
451
|
if (JSON.stringify(proof.card.shallow ?? []) !== JSON.stringify(state.card.shallow ?? [])) {
|
|
307
452
|
throw new Error("materialized repository does not reproduce its shallow boundary");
|
|
308
453
|
}
|
|
309
|
-
return
|
|
454
|
+
return {
|
|
455
|
+
stateId: state.stateId,
|
|
456
|
+
cardId: state.cardId,
|
|
457
|
+
checkpointId: state.checkpointId,
|
|
458
|
+
card: state.card,
|
|
459
|
+
transportVersion: priorVersion,
|
|
460
|
+
identity: identity,
|
|
461
|
+
};
|
|
310
462
|
}
|
|
311
463
|
//# sourceMappingURL=git-repository-host.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-repository-host.js","sourceRoot":"","sources":["../src/git-repository-host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-repository-host.js","sourceRoot":"","sources":["../src/git-repository-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,WAAW,EACX,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,gCAAgC,GAMjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,OAAO,EACP,MAAM,EACN,YAAY,EACZ,MAAM,EACN,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,GAAG,0CAA0C,CAAC;AAC9D,MAAM,YAAY,GAAG;IACnB,YAAY;IACZ,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,aAAa;CACL,CAAC;AAEX,MAAM,SAAS,GAAG,CAAC,KAA0B,EAAU,EAAE,CACvD,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEnD,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtE,CAAC,CAAC,KAAK;IACP,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAqB,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAEjF;;6BAE6B;AAC7B,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,UAAkB,EAAE,MAAc;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,yCAAyC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3G,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IAChF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;+EAC+E;AAC/E,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACjF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,0EAA0E;IAC1E,kEAAkE;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;SAC9D,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACxE,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;gBAChE,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,OAAO,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3C,OAAO,CAAC;oBACN,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;oBAC9C,OAAO;oBACP,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;iBAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,UAAkB;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1F,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACvF,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;QACtE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;QAC3C,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;QACtC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC;QAC/B,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC;IACF,MAAM,UAAU,GAAG;QACjB,UAAU,EAAE,MAAM;QAClB,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;YAC9B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;SAC7E,CAAC;QACF,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACvE,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC;KACtC,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/D,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC;QACvD,MAAM;QACN,YAAY;QACZ,IAAI;QACJ,UAAU;QACV,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAuB,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;QACzC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;KACtC,CAAC,CAAC,CAAC;AAEJ;8EAC8E;AAC9E,SAAS,UAAU,CACjB,UAAkB,EAClB,OAA0B,EAC1B,QAAkC;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CACnE,MAAM,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAC5B,GAAG,KAAK;QACR,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,EAAE;YACvB,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB;SACtE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU,GAAG,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAeD;yEACyE;AACzE,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,QAAsC,EACtC,KAAsC,EACtC,mBAAwD,IAAI;IAE5D,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,YAAY,GAAG,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,YAAY,CAAC;QACpF,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;eAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;eACzD,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACzC,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,IAAI,gBAAgB,KAAK,IAAI,CAAC;IAC9D,MAAM,YAAY,GAAG,sBAAsB,CACzC,QAAQ,EACR,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EACnC,SAAS,CACV,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,GAAG,KAAK;QACR,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;KACxE,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,yBAAyB,CAAC,QAAQ,EAAE;QAC3D,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;QACjE,GAAG,YAAY;KAChB,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC;QAClC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB,EAAE,OAA0B;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9F,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB,EAAE,KAAwC;IAC7E,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;QACnB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7D,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC;KACzD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,EAAE;QACtC,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB;KACvF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG;QACf,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAClF,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7E,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACnE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;QAChC,EAAE;KACH,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB,EAAE,KAAwC;IAC7E,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3E,MAAM,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB,EAAE,KAA0B;IACrE,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC5G,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACnG,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9G,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;AACH,CAAC;AAWD,SAAS,UAAU,CAAC,UAAkB,EAAE,KAA0B;IAChE,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO;IACxB,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,UAAU,EAAE;QACjB,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,oCAAoC;KAC5E,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;0EAE0E;AAC1E,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,KAA4B;IAE5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC/E,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,QAAQ,GAAwC,IAAI,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,sBAAsB,KAAK,YAAY,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/D,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAwB,CAAC;IACvD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxG,KAAK,MAAM,SAAS,IAAI,UAAU;QAAE,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACtE,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7B,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7B,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,gBAAgB,EAAE,YAAsB;QACxC,QAAQ,EAAE,QAAwC;KACnD,CAAC;AACJ,CAAC;AAOD,SAAS,SAAS,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,KAAK,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YACpF,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,aAAa,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,0BAA0B,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AACnF,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,UAAkB,EAClB,IAAY,EACZ,IAAoD;IAEpD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC;QAC5B,SAAS,CAAC,KAAa,EAAE,SAAS,EAAE,QAAQ;YAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;KACF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;QACzB,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,oCAAoC;KAC5E,EAAE;QACD,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;QACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE;KAClD,CAAC,CAAC;IACH,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,OAAO,CAAO,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;QAChE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,IAAI,KAAK,CAAC;gBAAE,YAAY,EAAE,CAAC;;gBAC1B,WAAW,CAAC,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,MAAM;oBAC9D,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE;QACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QACxB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;KAC9C,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,KAA0B;IACzD,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAkB,EAClB,IAAY,EACZ,UAAmD;IAEnD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,sDAAsD,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACrC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC;AAED;8EAC8E;AAC9E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,KAA2C;IAE3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC/E,MAAM,UAAU,GAA6E,EAAE,CAAC;IAChG,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,QAAQ,GAAwC,IAAI,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,sBAAsB,KAAK,YAAY,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAChE,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACzC,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7B,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7B,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,gBAAgB,EAAE,YAAsB;QACxC,QAAQ,EAAE,QAAwC;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CloudEntityRecord, type RepoIdentityEntry } from "@amalgm/live";
|
|
2
|
+
export interface MaterializedGraphRow {
|
|
3
|
+
readonly record: CloudEntityRecord;
|
|
4
|
+
readonly relativePath: string;
|
|
5
|
+
readonly absolutePath: string;
|
|
6
|
+
readonly deviceNumber: number;
|
|
7
|
+
readonly inode: number;
|
|
8
|
+
}
|
|
9
|
+
export interface MaterializedRepositoryGraph {
|
|
10
|
+
readonly record: CloudEntityRecord;
|
|
11
|
+
readonly identity: readonly RepoIdentityEntry[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Extend already-materialized cloud rows with repository child rows using the
|
|
15
|
+
* transport identity map. This reads only filesystem stats: content and type
|
|
16
|
+
* were already proved before upload and reproduced by Git during download.
|
|
17
|
+
*/
|
|
18
|
+
export declare function projectMaterializedGraph(baseRows: readonly MaterializedGraphRow[], repositories: readonly MaterializedRepositoryGraph[], sha256Hex: (input: Uint8Array | string) => string): readonly MaterializedGraphRow[];
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { lstatSync } from "node:fs";
|
|
2
|
+
import { basename, dirname, join } from "node:path";
|
|
3
|
+
import { canonicalVersion, membershipHash, } from "@amalgm/live";
|
|
4
|
+
const ENTITY_TYPES = new Set([
|
|
5
|
+
"file.text", "file.binary", "folder", "workspace", "repo.git", "link", "reference",
|
|
6
|
+
]);
|
|
7
|
+
const LEAF_TYPES = new Set(["file.text", "file.binary", "link", "reference"]);
|
|
8
|
+
function pathSegments(path) {
|
|
9
|
+
const segments = path.split("/");
|
|
10
|
+
if (!path || path.startsWith("/") || segments.some((segment) => !segment || segment === "." || segment === "..")) {
|
|
11
|
+
throw new Error(`repository identity path is unsafe: ${path}`);
|
|
12
|
+
}
|
|
13
|
+
return segments;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extend already-materialized cloud rows with repository child rows using the
|
|
17
|
+
* transport identity map. This reads only filesystem stats: content and type
|
|
18
|
+
* were already proved before upload and reproduced by Git during download.
|
|
19
|
+
*/
|
|
20
|
+
export function projectMaterializedGraph(baseRows, repositories, sha256Hex) {
|
|
21
|
+
const rows = new Map(baseRows.map((row) => [row.record.uuid, row]));
|
|
22
|
+
const facts = new Map();
|
|
23
|
+
for (const repository of repositories) {
|
|
24
|
+
const root = rows.get(repository.record.uuid);
|
|
25
|
+
if (!root || root.record.type !== "repo.git") {
|
|
26
|
+
throw new Error(`materialized repository ${repository.record.uuid} has no local root row`);
|
|
27
|
+
}
|
|
28
|
+
const byPath = new Map([["", repository.record.uuid]]);
|
|
29
|
+
for (const entry of [...repository.identity].sort((left, right) => left.path.split("/").length - right.path.split("/").length
|
|
30
|
+
|| (left.path < right.path ? -1 : left.path > right.path ? 1 : 0))) {
|
|
31
|
+
const segments = pathSegments(entry.path);
|
|
32
|
+
if (byPath.has(entry.path))
|
|
33
|
+
throw new Error(`repository identity has duplicate path: ${entry.path}`);
|
|
34
|
+
if (!ENTITY_TYPES.has(entry.type)) {
|
|
35
|
+
throw new Error(`repository identity ${entry.path} has unknown type: ${entry.type}`);
|
|
36
|
+
}
|
|
37
|
+
const type = entry.type;
|
|
38
|
+
if (type === "workspace" || type === "reference") {
|
|
39
|
+
throw new Error(`repository identity ${entry.path} cannot contain ${type}`);
|
|
40
|
+
}
|
|
41
|
+
const parentPath = dirname(entry.path) === "." ? "" : dirname(entry.path).split("\\").join("/");
|
|
42
|
+
const parentUUID = byPath.get(parentPath);
|
|
43
|
+
if (!parentUUID)
|
|
44
|
+
throw new Error(`repository identity ${entry.path} has no parent`);
|
|
45
|
+
const existing = rows.get(entry.uuid);
|
|
46
|
+
const relativePath = [root.relativePath, entry.path].filter(Boolean).join("/");
|
|
47
|
+
const absolutePath = join(root.absolutePath, ...segments);
|
|
48
|
+
if (existing) {
|
|
49
|
+
if (existing.relativePath !== relativePath || existing.record.type !== type) {
|
|
50
|
+
throw new Error(`repository identity ${entry.path} conflicts with its cloud row`);
|
|
51
|
+
}
|
|
52
|
+
byPath.set(entry.path, entry.uuid);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const payloadVersion = entry.payloadVersion ?? null;
|
|
56
|
+
if (LEAF_TYPES.has(type) && !payloadVersion) {
|
|
57
|
+
throw new Error(`repository identity ${entry.path} has no payload evidence`);
|
|
58
|
+
}
|
|
59
|
+
if (type === "repo.git") {
|
|
60
|
+
throw new Error(`nested repository ${entry.path} requires its own cloud row`);
|
|
61
|
+
}
|
|
62
|
+
const stats = lstatSync(absolutePath);
|
|
63
|
+
facts.set(entry.uuid, {
|
|
64
|
+
uuid: entry.uuid,
|
|
65
|
+
type,
|
|
66
|
+
parentUUID,
|
|
67
|
+
name: basename(entry.path),
|
|
68
|
+
relativePath,
|
|
69
|
+
absolutePath,
|
|
70
|
+
payloadVersion,
|
|
71
|
+
deviceNumber: stats.dev,
|
|
72
|
+
inode: stats.ino,
|
|
73
|
+
});
|
|
74
|
+
byPath.set(entry.path, entry.uuid);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const children = new Map();
|
|
78
|
+
for (const fact of facts.values()) {
|
|
79
|
+
const group = children.get(fact.parentUUID) ?? [];
|
|
80
|
+
group.push({ uuid: fact.uuid, name: fact.name });
|
|
81
|
+
children.set(fact.parentUUID, group);
|
|
82
|
+
}
|
|
83
|
+
for (const fact of facts.values()) {
|
|
84
|
+
const payload = fact.type === "folder"
|
|
85
|
+
? membershipHash(children.get(fact.uuid) ?? [], sha256Hex)
|
|
86
|
+
: fact.payloadVersion;
|
|
87
|
+
const record = {
|
|
88
|
+
uuid: fact.uuid,
|
|
89
|
+
type: fact.type,
|
|
90
|
+
parentUUID: fact.parentUUID,
|
|
91
|
+
name: fact.name,
|
|
92
|
+
status: "active",
|
|
93
|
+
version: canonicalVersion({
|
|
94
|
+
type: fact.type,
|
|
95
|
+
parentUUID: fact.parentUUID,
|
|
96
|
+
name: fact.name,
|
|
97
|
+
status: "active",
|
|
98
|
+
payloadVersion: payload,
|
|
99
|
+
}, sha256Hex),
|
|
100
|
+
payloadVersion: fact.payloadVersion,
|
|
101
|
+
transportVersion: null,
|
|
102
|
+
};
|
|
103
|
+
rows.set(fact.uuid, {
|
|
104
|
+
record,
|
|
105
|
+
relativePath: fact.relativePath,
|
|
106
|
+
absolutePath: fact.absolutePath,
|
|
107
|
+
deviceNumber: fact.deviceNumber,
|
|
108
|
+
inode: fact.inode,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return [...rows.values()];
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=materialized-graph.js.map
|