@paradigma-inc/flywheel 0.2.66 → 0.2.68
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/package.json +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js +21 -12
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-operation.js +2 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-operation.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js +72 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js +3 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js +300 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflict-view.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js +74 -25
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js +4 -50
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/edge-restoration.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/keys.js +2 -3
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/keys.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js +6 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/local-replay.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js +1 -7
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js +126 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-artifacts.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js +423 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pulled-state.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js +133 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay-walk.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js +47 -127
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js +240 -9
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/tag-holders.js +78 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/tag-holders.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/bootstrap.js +40 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/bootstrap.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js +4 -9
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/core.js +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/core.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/push.js +9 -2
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/push.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/restore.js +2 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/restore.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js +79 -8
- package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js +2 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js +4 -2
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-x64/node.napi.node +0 -0
- package/src/runtime/vendor/manifest.json +13 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { RepositoryServiceError } from "../errors.js";
|
|
2
2
|
import { isRecord } from "../models/constants.js";
|
|
3
3
|
import { RepositoryOperation } from "../models/operations.js";
|
|
4
|
-
import { pulledSnapshotTables } from "../../store/snapshot/hosted.js";
|
|
5
4
|
import { snapshotRows } from "../../store/snapshot/schema.js";
|
|
6
|
-
import { snapshotTables } from "../../store/snapshot/validate.js";
|
|
7
5
|
const NO_REMOVED_EDGES = { restorations: new Map(), discarded: new Set() };
|
|
8
6
|
function row(tables, table, idColumn, id) {
|
|
9
7
|
return snapshotRows(tables, table).find(candidate => candidate[idColumn] === id);
|
|
@@ -36,7 +34,7 @@ function localEdgeHistory(localCommitsNewestFirst, localTables, edgeId) {
|
|
|
36
34
|
const [first] = edgeOperations;
|
|
37
35
|
// Local history that adds the edge itself re-creates it when that addition replays.
|
|
38
36
|
if (first?.operation.type === "edge.add.v1")
|
|
39
|
-
return { kind: "replayed"
|
|
37
|
+
return { kind: "replayed" };
|
|
40
38
|
const edge = row(localTables, "repository_semantic_edges", "edge_id", edgeId);
|
|
41
39
|
if (edge === undefined)
|
|
42
40
|
return { kind: "refused", reason: "removed_locally" };
|
|
@@ -48,7 +46,7 @@ function localEdgeHistory(localCommitsNewestFirst, localTables, edgeId) {
|
|
|
48
46
|
throw new RepositoryServiceError(`repository edge ${edgeId} has no local operation`);
|
|
49
47
|
return { kind: "restored", restoration: { edgeId, relation: relationOf(edge), firstEdit: first } };
|
|
50
48
|
}
|
|
51
|
-
function restoreRefusal(edgeId, rebaseId, problem, details) {
|
|
49
|
+
export function restoreRefusal(edgeId, rebaseId, problem, details) {
|
|
52
50
|
return new RepositoryServiceError(`Edge ${edgeId} cannot be restored: ${problem}. The conflict remains open.`, {
|
|
53
51
|
code: "repository_edge_restore_unavailable",
|
|
54
52
|
details: { edge_id: edgeId, ...details },
|
|
@@ -56,14 +54,13 @@ function restoreRefusal(edgeId, rebaseId, problem, details) {
|
|
|
56
54
|
`flywheel repo:rebase:abort ${rebaseId} to return to the state before the pull.`,
|
|
57
55
|
});
|
|
58
56
|
}
|
|
59
|
-
/** Plans each resolved edge conflict whose edge is absent from the
|
|
60
|
-
export function removedEdges(resolutions,
|
|
57
|
+
/** Plans each resolved edge conflict whose edge is absent from the pulled tables. */
|
|
58
|
+
export function removedEdges(resolutions, remoteTables, localTables, localCommitsNewestFirst, rebaseId) {
|
|
61
59
|
const edgeResolutions = [...resolutions]
|
|
62
60
|
.filter(([key]) => key.length === 2 && key[0] === "edge")
|
|
63
61
|
.map(([[, edgeId], [strategy]]) => ({ edgeId, strategy }));
|
|
64
62
|
if (edgeResolutions.length === 0)
|
|
65
63
|
return NO_REMOVED_EDGES;
|
|
66
|
-
const remoteTables = pulledSnapshotTables(remoteSnapshot);
|
|
67
64
|
const restorations = new Map();
|
|
68
65
|
const discarded = new Set();
|
|
69
66
|
for (const { edgeId, strategy } of edgeResolutions) {
|
|
@@ -95,47 +92,4 @@ export function restoredEdgeOperation(restoration, operationId) {
|
|
|
95
92
|
artifact_reference_digests: [],
|
|
96
93
|
});
|
|
97
94
|
}
|
|
98
|
-
function unavailableEndpoint(context, remoteTables, nodeId) {
|
|
99
|
-
const node = row(remoteTables, "repository_nodes", "node_id", nodeId);
|
|
100
|
-
if (node !== undefined) {
|
|
101
|
-
return node.lifecycle_state === "live" ? undefined : { state: node.lifecycle_state };
|
|
102
|
-
}
|
|
103
|
-
// This pull's remote commits are enough: local history holds or adds the edge, and local edges
|
|
104
|
-
// require their endpoint nodes, so every endpoint was still here before this pull.
|
|
105
|
-
const departure = context.remoteCommits.flatMap(commit => commit.operations).findLast(operation => operation.type === "node.relocate.v1" && operation.payload.node_id === nodeId &&
|
|
106
|
-
operation.payload.source_repository_id === context.remoteSnapshot.repositoryId);
|
|
107
|
-
return departure === undefined
|
|
108
|
-
? { state: "missing" }
|
|
109
|
-
: { state: "departed", currentRepositoryId: departure.payload.target_repository_id };
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Refuses a local resolution that could not restore the remotely removed edge,
|
|
113
|
-
* before the choice is recorded, so the conflict stays open.
|
|
114
|
-
*/
|
|
115
|
-
export function assertEdgeRestorable(context, edgeId, rebaseId) {
|
|
116
|
-
const remoteTables = pulledSnapshotTables(context.remoteSnapshot);
|
|
117
|
-
if (row(remoteTables, "repository_semantic_edges", "edge_id", edgeId) !== undefined)
|
|
118
|
-
return;
|
|
119
|
-
const history = localEdgeHistory(context.localCommits, snapshotTables(context.localSnapshot), edgeId);
|
|
120
|
-
if (history.kind === "refused") {
|
|
121
|
-
throw restoreRefusal(edgeId, rebaseId, REFUSED_HISTORY[history.reason], { reason: history.reason });
|
|
122
|
-
}
|
|
123
|
-
const relation = history.kind === "restored" ? history.restoration.relation : history.relation;
|
|
124
|
-
for (const endpoint of ["graph", "source", "target"]) {
|
|
125
|
-
const nodeId = relation[`${endpoint}_node_id`];
|
|
126
|
-
const unavailable = unavailableEndpoint(context, remoteTables, nodeId);
|
|
127
|
-
if (unavailable === undefined)
|
|
128
|
-
continue;
|
|
129
|
-
const where = unavailable.currentRepositoryId === undefined
|
|
130
|
-
? `is ${unavailable.state} in the remote repository`
|
|
131
|
-
: `departed to repository ${unavailable.currentRepositoryId}`;
|
|
132
|
-
throw restoreRefusal(edgeId, rebaseId, `its ${endpoint} node ${nodeId} ${where}`, {
|
|
133
|
-
reason: "endpoint_unavailable",
|
|
134
|
-
endpoint,
|
|
135
|
-
node_id: nodeId,
|
|
136
|
-
node_state: unavailable.state,
|
|
137
|
-
...(unavailable.currentRepositoryId === undefined ? {} : { current_repository_id: unavailable.currentRepositoryId }),
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
95
|
//# sourceMappingURL=edge-restoration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-restoration.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/edge-restoration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"edge-restoration.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/edge-restoration.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export function operationKey(operation) {
|
|
|
5
5
|
}
|
|
6
6
|
if (operation.type === "node.source_timestamps.recover.v1")
|
|
7
7
|
return ["node-source-timestamps", String(payload.node_id)];
|
|
8
|
+
// Tag holder operations (node.tag.*) are keyed by their node too; the conflict IDs of the shared conformance
|
|
9
|
+
// corpus depend on it. Competing one-only holders get a separate tag_holder conflict (tag-holders.ts).
|
|
8
10
|
if (operation.type.startsWith("node."))
|
|
9
11
|
return ["node", String(payload.node_id ?? "")];
|
|
10
12
|
if (operation.type.startsWith("containment."))
|
|
@@ -20,9 +22,6 @@ export function operationKey(operation) {
|
|
|
20
22
|
return ["artifact-content", String(payload.artifact_id)];
|
|
21
23
|
if (operation.type.startsWith("artifact."))
|
|
22
24
|
return ["artifact", String(payload.artifact_id ?? "")];
|
|
23
|
-
if (operation.type.startsWith("node.tag.")) {
|
|
24
|
-
return ["tag-holder", String(payload.scope_node_id ?? ""), String(payload.tag_id ?? "")];
|
|
25
|
-
}
|
|
26
25
|
if (operation.type.startsWith("tag.")) {
|
|
27
26
|
return ["tag-definition", String(payload.scope_node_id ?? ""), String(payload.tag_id ?? "")];
|
|
28
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/keys.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,SAA8B;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,IAAI,SAAS,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC3C,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,mCAAmC;QAAE,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACvH,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3G,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAClD,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,KAAK,4BAA4B;QAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACjH,IAAI,SAAS,CAAC,IAAI,KAAK,yBAAyB;QAAE,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3G,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IACnG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-replay.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/local-replay.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAEpD,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,OAA0C;IAChF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { isDigest, isUuid } from "../models/constants.js";
|
|
|
3
3
|
import { conflictsForContext } from "./conflicts.js";
|
|
4
4
|
import { loadRebaseLatestValues, rebaseLocalCommits } from "./replay.js";
|
|
5
5
|
const NO_CONFLICTS = [];
|
|
6
|
-
function pulledDepartures(repositoryId, commits) {
|
|
6
|
+
export function pulledDepartures(repositoryId, commits) {
|
|
7
7
|
const currentByNode = new Map();
|
|
8
8
|
for (const commit of commits) {
|
|
9
9
|
for (const operation of commit.operations) {
|
|
@@ -101,12 +101,6 @@ export async function listConflicts(store, repositoryId) {
|
|
|
101
101
|
}
|
|
102
102
|
return workspace.conflicts;
|
|
103
103
|
}
|
|
104
|
-
export async function loadConflict(store, repositoryId, conflictId) {
|
|
105
|
-
const conflict = (await listConflicts(store, repositoryId)).find(candidate => candidate.conflictId === conflictId);
|
|
106
|
-
if (conflict === undefined)
|
|
107
|
-
throw new RepositoryServiceError("repository conflict is not active");
|
|
108
|
-
return conflict;
|
|
109
|
-
}
|
|
110
104
|
/** Local history from `head` back to, but excluding, `base`, newest first. */
|
|
111
105
|
export async function localCommitsAfter(store, repositoryId, head, base) {
|
|
112
106
|
if (head === base)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAK1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,MAAM,YAAY,GAA8B,EAAE,CAAC;AAEnD,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { artifactReferenceSetDigest } from "../models/artifact-properties.js";
|
|
2
|
+
import { isRecord } from "../models/constants.js";
|
|
3
|
+
import { referenceDigest } from "../../store/projection/artifacts.js";
|
|
4
|
+
import { snapshotRows } from "../../store/snapshot/schema.js";
|
|
5
|
+
import { DROP, KEEP, refuse } from "./local-replay.js";
|
|
6
|
+
/** An artifact reference's owner as "kind\0id". */
|
|
7
|
+
function ownerKey(owner) {
|
|
8
|
+
return isRecord(owner) ? `${String(owner.owner_type)}\u0000${String(owner.owner_id)}` : "";
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The pulled artifacts and their references, and the rules for replaying a
|
|
12
|
+
* local artifact operation on them, as projection/artifacts.ts checks it: an
|
|
13
|
+
* attachment needs a live owner and, for an artifact that exists, the same
|
|
14
|
+
* object; a detachment the pull already made is dropped, and otherwise it
|
|
15
|
+
* names the pulled reference; a content or properties change names the pulled
|
|
16
|
+
* reference set, which must still hold a live owner; a legacy metadata edit
|
|
17
|
+
* needs the reference it names. Properties are checked by the trial replay
|
|
18
|
+
* (store/pending.ts TrialGraph), which has their text.
|
|
19
|
+
*/
|
|
20
|
+
export class PulledArtifacts {
|
|
21
|
+
/** Each artifact's object digest. */
|
|
22
|
+
#objects = new Map();
|
|
23
|
+
/** Each artifact's references: owner as "kind\0id" to reference order. */
|
|
24
|
+
#references = new Map();
|
|
25
|
+
constructor(tables) {
|
|
26
|
+
for (const row of snapshotRows(tables, "repository_artifacts"))
|
|
27
|
+
this.#objects.set(row.artifact_id, row.object_digest);
|
|
28
|
+
for (const row of snapshotRows(tables, "repository_artifact_references")) {
|
|
29
|
+
this.#referencesOf(row.artifact_id).set(`${String(row.owner_kind)}\u0000${String(row.owner_id)}`, BigInt(row.reference_order));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
#referencesOf(artifactId) {
|
|
33
|
+
const references = this.#references.get(artifactId) ?? new Map();
|
|
34
|
+
this.#references.set(artifactId, references);
|
|
35
|
+
return references;
|
|
36
|
+
}
|
|
37
|
+
has(artifactId) {
|
|
38
|
+
return this.#objects.has(artifactId);
|
|
39
|
+
}
|
|
40
|
+
/** Artifacts that `kind` `ownerId` still holds a reference to. */
|
|
41
|
+
heldBy(kind, ownerId) {
|
|
42
|
+
const owner = `${kind}\u0000${ownerId}`;
|
|
43
|
+
return [...this.#references].flatMap(([artifactId, owners]) => owners.has(owner) ? [artifactId] : []);
|
|
44
|
+
}
|
|
45
|
+
/** How an artifact operation replays; other operations are kept. */
|
|
46
|
+
plan(operation, ownerLive) {
|
|
47
|
+
const payload = operation.payload;
|
|
48
|
+
const artifactId = payload.artifact_id;
|
|
49
|
+
switch (operation.type) {
|
|
50
|
+
case "artifact.attach.v1":
|
|
51
|
+
case "artifact.attach.v2": {
|
|
52
|
+
const [kind, ownerId] = ownerKey(payload.owner).split("\u0000");
|
|
53
|
+
if (!ownerLive(kind, ownerId)) {
|
|
54
|
+
return refuse(`${kind} ${ownerId} is not live in the remote history, so artifact ${artifactId} cannot be attached to it.`, { reason: "owner_unavailable", artifact_id: artifactId, owner_type: kind, owner_id: ownerId });
|
|
55
|
+
}
|
|
56
|
+
// Attaching an artifact that exists adds a reference to it as it was when the attachment was written.
|
|
57
|
+
const object = this.#objects.get(artifactId);
|
|
58
|
+
if (object !== undefined && object !== payload.object_digest) {
|
|
59
|
+
return refuse(`artifact ${artifactId} has other content in the remote history, so the local attachment cannot be applied.`, { reason: "artifact_changed", artifact_id: artifactId });
|
|
60
|
+
}
|
|
61
|
+
const order = this.#references.get(artifactId)?.get(ownerKey(payload.owner));
|
|
62
|
+
if (order === undefined)
|
|
63
|
+
return KEEP;
|
|
64
|
+
return order === BigInt(payload.order) ? DROP : refuse(`artifact ${artifactId} is already attached to ${kind} ${ownerId} at another position in the remote history, so the local attachment cannot be applied.`, { reason: "reference_changed", artifact_id: artifactId, owner_type: kind, owner_id: ownerId });
|
|
65
|
+
}
|
|
66
|
+
case "artifact.detach.v1": {
|
|
67
|
+
// A reference the pull already removed needs no detachment; otherwise the detachment names the pulled reference.
|
|
68
|
+
const order = this.#references.get(artifactId)?.get(ownerKey(payload.owner));
|
|
69
|
+
if (order === undefined)
|
|
70
|
+
return DROP;
|
|
71
|
+
const objectDigest = this.#objects.get(artifactId);
|
|
72
|
+
const [kind, ownerId] = ownerKey(payload.owner).split("\u0000");
|
|
73
|
+
return { action: "keep", rewrite: { object_digest: objectDigest, reference_digest: referenceDigest(artifactId, objectDigest, kind, ownerId, order) } };
|
|
74
|
+
}
|
|
75
|
+
case "artifact.content.set.v1":
|
|
76
|
+
case "artifact.properties.set.v1": {
|
|
77
|
+
// These changes name the artifact's whole reference set, which the pull may have changed, and the store
|
|
78
|
+
// accepts them only while the artifact has references whose owners are live.
|
|
79
|
+
const references = [...this.#references.get(artifactId) ?? []].map(([owner, order]) => {
|
|
80
|
+
const [kind, ownerId] = owner.split("\u0000");
|
|
81
|
+
return { owner_type: kind, owner_id: ownerId, order };
|
|
82
|
+
});
|
|
83
|
+
if (references.length === 0) {
|
|
84
|
+
return refuse(`artifact ${artifactId} has no references left in the remote history, so the local change to it cannot be applied.`, { reason: "unreferenced", artifact_id: artifactId });
|
|
85
|
+
}
|
|
86
|
+
const dead = references.find(({ owner_type, owner_id }) => !ownerLive(owner_type, owner_id));
|
|
87
|
+
if (dead !== undefined) {
|
|
88
|
+
return refuse(`artifact ${artifactId} is held by ${dead.owner_type} ${dead.owner_id}, which is not live in the remote history, so the local change to it cannot be applied.`, { reason: "owner_unavailable", artifact_id: artifactId, owner_type: dead.owner_type, owner_id: dead.owner_id });
|
|
89
|
+
}
|
|
90
|
+
return { action: "keep", rewrite: { expected_reference_digest: artifactReferenceSetDigest(references) } };
|
|
91
|
+
}
|
|
92
|
+
case "artifact.metadata.set.v1": {
|
|
93
|
+
// A legacy metadata edit goes through the reference it names, which must still be there.
|
|
94
|
+
if (this.#references.get(artifactId)?.has(ownerKey(payload.owner)))
|
|
95
|
+
return KEEP;
|
|
96
|
+
const [kind, ownerId] = ownerKey(payload.owner).split("\u0000");
|
|
97
|
+
return refuse(`artifact ${artifactId} is no longer attached to ${kind} ${ownerId} in the remote history, so the local metadata change cannot be applied.`, { reason: "owner_reference_missing", artifact_id: artifactId, owner_type: kind, owner_id: ownerId });
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
return KEEP;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Records the effect of an artifact operation that replay emitted. */
|
|
104
|
+
apply(operation) {
|
|
105
|
+
const payload = operation.payload;
|
|
106
|
+
const artifactId = payload.artifact_id;
|
|
107
|
+
switch (operation.type) {
|
|
108
|
+
case "artifact.attach.v1":
|
|
109
|
+
case "artifact.attach.v2":
|
|
110
|
+
// An attachment creates the artifact when it is absent; an existing artifact keeps its object.
|
|
111
|
+
if (!this.#objects.has(artifactId))
|
|
112
|
+
this.#objects.set(artifactId, payload.object_digest);
|
|
113
|
+
this.#referencesOf(artifactId).set(ownerKey(payload.owner), BigInt(payload.order));
|
|
114
|
+
return;
|
|
115
|
+
case "artifact.detach.v1":
|
|
116
|
+
this.#referencesOf(artifactId).delete(ownerKey(payload.owner));
|
|
117
|
+
return;
|
|
118
|
+
case "artifact.content.set.v1":
|
|
119
|
+
if (this.#objects.has(artifactId))
|
|
120
|
+
this.#objects.set(artifactId, payload.object_digest);
|
|
121
|
+
return;
|
|
122
|
+
default:
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=pulled-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulled-artifacts.js","sourceRoot":"","sources":["../../../../src/local/domain/rebase/pulled-artifacts.ts"],"names":[],"mappings":"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"}
|