@paradigma-inc/flywheel 0.1.147 → 0.1.148
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 +4 -3
- package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js +34 -0
- package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/invariants.js +24 -8
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/invariants.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/operation-identity.js +22 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/operation-identity.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/context.js +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/context.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js +2 -5
- 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/replay.js +55 -62
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/commit.js +7 -4
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/commit.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/revert.js +8 -11
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/revert.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/writes.js +9 -183
- package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/writes.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/history.js +18 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/history.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/projections.js +3 -3
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/projections.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/snapshot-diff.js +183 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/runtime/snapshot-diff.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/store/apply.js +2 -3
- package/src/runtime/vendor/flywheel-cli-dist/local/store/apply.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/contract.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/history-validation.js +21 -14
- package/src/runtime/vendor/flywheel-cli-dist/local/store/history-validation.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/latest-values.js +170 -8
- package/src/runtime/vendor/flywheel-cli-dist/local/store/latest-values.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js +58 -100
- package/src/runtime/vendor/flywheel-cli-dist/local/store/pending.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/apply.js +52 -15
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/apply.js.map +1 -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/context.js +2 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/context.js.map +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/nodes.js +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/nodes.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/relations.js +3 -5
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/relations.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/store.js +30 -28
- package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/store.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/sync-commits.js +12 -70
- package/src/runtime/vendor/flywheel-cli-dist/local/store/sync-commits.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/local/store/sync.js +5 -11
- package/src/runtime/vendor/flywheel-cli-dist/local/store/sync.js.map +1 -1
- package/src/runtime/vendor/manifest.json +7 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { canonicalBytes, compareCodePoints } from "../domain/models/encoding.js";
|
|
3
|
+
import { SNAPSHOT_TABLES } from "../store/snapshot/schema.js";
|
|
4
|
+
import { snapshotTables } from "../store/snapshot/validate.js";
|
|
5
|
+
const COLUMNS = new Map(SNAPSHOT_TABLES.map(([name, columns]) => [name, columns]));
|
|
6
|
+
const ENTITY_TYPES = [
|
|
7
|
+
"node",
|
|
8
|
+
"containment",
|
|
9
|
+
"lineage",
|
|
10
|
+
"edge",
|
|
11
|
+
"tag",
|
|
12
|
+
"artifact",
|
|
13
|
+
"artifact_reference",
|
|
14
|
+
];
|
|
15
|
+
const PROVENANCE_COLUMNS = new Set([
|
|
16
|
+
"repository_id",
|
|
17
|
+
"created_by_commit_id",
|
|
18
|
+
"lifecycle_commit_id",
|
|
19
|
+
"updated_by_commit_id",
|
|
20
|
+
"assigned_by_commit_id",
|
|
21
|
+
"attached_by_commit_id",
|
|
22
|
+
]);
|
|
23
|
+
function digest(value) {
|
|
24
|
+
return `sha256:${createHash("sha256").update(canonicalBytes(value)).digest("hex")}`;
|
|
25
|
+
}
|
|
26
|
+
function rowObjects(tables, table) {
|
|
27
|
+
const columns = COLUMNS.get(table);
|
|
28
|
+
if (!columns)
|
|
29
|
+
throw new Error("local staged diff snapshot table is unavailable");
|
|
30
|
+
return tables[table].map((row) => Object.fromEntries(columns.map((column, index) => [column, row[index]])));
|
|
31
|
+
}
|
|
32
|
+
function visible(row) {
|
|
33
|
+
return Object.fromEntries(Object.entries(row).filter(([column]) => !PROVENANCE_COLUMNS.has(column)));
|
|
34
|
+
}
|
|
35
|
+
function index(rows, key) {
|
|
36
|
+
return new Map(rows.map((row) => [key(row), row]));
|
|
37
|
+
}
|
|
38
|
+
function nodeEntities(tables) {
|
|
39
|
+
const nodes = rowObjects(tables, "repository_nodes");
|
|
40
|
+
const latest = index(rowObjects(tables, "repository_node_latest_values"), (row) => String(row.node_id));
|
|
41
|
+
const result = new Map();
|
|
42
|
+
for (const node of nodes) {
|
|
43
|
+
if (node.lifecycle_state === "purged")
|
|
44
|
+
continue;
|
|
45
|
+
const nodeId = String(node.node_id);
|
|
46
|
+
const values = latest.get(nodeId);
|
|
47
|
+
if (!values)
|
|
48
|
+
throw new Error("local staged diff node values are unavailable");
|
|
49
|
+
const entity = {
|
|
50
|
+
...visible(node),
|
|
51
|
+
...visible(values),
|
|
52
|
+
lifecycle_digest: digest(node.lifecycle_state),
|
|
53
|
+
};
|
|
54
|
+
result.set(nodeId, entity);
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
function containmentEntities(tables) {
|
|
59
|
+
return index(rowObjects(tables, "repository_containments").map(visible), (row) => String(row.containment_id));
|
|
60
|
+
}
|
|
61
|
+
function lineageEntities(tables) {
|
|
62
|
+
return index(rowObjects(tables, "repository_lineage").map((row) => {
|
|
63
|
+
const entity = visible(row);
|
|
64
|
+
return { ...entity, relation_digest: digest(row) };
|
|
65
|
+
}), (row) => `${row.parent_node_id}:${row.child_node_id}`);
|
|
66
|
+
}
|
|
67
|
+
function edgeEntities(tables) {
|
|
68
|
+
return index(rowObjects(tables, "repository_semantic_edges").map(visible), (row) => String(row.edge_id));
|
|
69
|
+
}
|
|
70
|
+
function tagEntities(tables) {
|
|
71
|
+
const holdersByTag = new Map();
|
|
72
|
+
for (const assignment of rowObjects(tables, "repository_tag_assignments")) {
|
|
73
|
+
const key = `${assignment.scope_node_id}:${assignment.tag_id}`;
|
|
74
|
+
let holders = holdersByTag.get(key);
|
|
75
|
+
if (!holders) {
|
|
76
|
+
holders = [];
|
|
77
|
+
holdersByTag.set(key, holders);
|
|
78
|
+
}
|
|
79
|
+
holders.push({ node_id: assignment.node_id, holder_digest: digest(assignment) });
|
|
80
|
+
}
|
|
81
|
+
const result = new Map();
|
|
82
|
+
for (const definition of rowObjects(tables, "repository_tag_definitions")) {
|
|
83
|
+
const key = `${definition.scope_node_id}:${definition.tag_id}`;
|
|
84
|
+
result.set(key, { ...visible(definition), holders: holdersByTag.get(key) ?? [] });
|
|
85
|
+
}
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
function artifactEntities(tables) {
|
|
89
|
+
const availability = index(rowObjects(tables, "repository_object_availability").map(visible), (row) => String(row.digest));
|
|
90
|
+
return index(rowObjects(tables, "repository_artifacts").map((artifact) => {
|
|
91
|
+
const entity = visible(artifact);
|
|
92
|
+
return {
|
|
93
|
+
...entity,
|
|
94
|
+
availability: availability.get(String(artifact.object_digest)) ?? null,
|
|
95
|
+
};
|
|
96
|
+
}), (row) => String(row.artifact_id));
|
|
97
|
+
}
|
|
98
|
+
function artifactReferenceEntities(tables) {
|
|
99
|
+
const artifacts = index(rowObjects(tables, "repository_artifacts").map(visible), (row) => String(row.artifact_id));
|
|
100
|
+
return index(rowObjects(tables, "repository_artifact_references").map((reference) => {
|
|
101
|
+
const entity = visible(reference);
|
|
102
|
+
const artifact = artifacts.get(String(reference.artifact_id));
|
|
103
|
+
if (!artifact)
|
|
104
|
+
throw new Error("local staged diff artifact reference is unavailable");
|
|
105
|
+
return {
|
|
106
|
+
...entity,
|
|
107
|
+
reference_digest: digest({
|
|
108
|
+
artifact_id: reference.artifact_id,
|
|
109
|
+
object_digest: artifact.object_digest,
|
|
110
|
+
owner_kind: reference.owner_kind,
|
|
111
|
+
owner_id: reference.owner_id,
|
|
112
|
+
reference_order: reference.reference_order,
|
|
113
|
+
}),
|
|
114
|
+
};
|
|
115
|
+
}), (row) => `${row.artifact_id}:${row.owner_kind}:${row.owner_id}`);
|
|
116
|
+
}
|
|
117
|
+
function entities(tables, type) {
|
|
118
|
+
switch (type) {
|
|
119
|
+
case "node": return nodeEntities(tables);
|
|
120
|
+
case "containment": return containmentEntities(tables);
|
|
121
|
+
case "lineage": return lineageEntities(tables);
|
|
122
|
+
case "edge": return edgeEntities(tables);
|
|
123
|
+
case "tag": return tagEntities(tables);
|
|
124
|
+
case "artifact": return artifactEntities(tables);
|
|
125
|
+
case "artifact_reference": return artifactReferenceEntities(tables);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function equal(type, left, right) {
|
|
129
|
+
if (type === "lineage") {
|
|
130
|
+
const leftSemantic = { ...left };
|
|
131
|
+
const rightSemantic = { ...right };
|
|
132
|
+
delete leftSemantic.relation_digest;
|
|
133
|
+
delete rightSemantic.relation_digest;
|
|
134
|
+
return canonicalBytes(leftSemantic).equals(canonicalBytes(rightSemantic));
|
|
135
|
+
}
|
|
136
|
+
if (type === "tag") {
|
|
137
|
+
const { holders: leftHolders, ...leftTag } = left;
|
|
138
|
+
const { holders: rightHolders, ...rightTag } = right;
|
|
139
|
+
const leftSemanticHolders = Array.isArray(leftHolders)
|
|
140
|
+
? leftHolders.map((holder) => {
|
|
141
|
+
const semanticHolder = { ...holder };
|
|
142
|
+
delete semanticHolder.holder_digest;
|
|
143
|
+
return semanticHolder;
|
|
144
|
+
})
|
|
145
|
+
: leftHolders;
|
|
146
|
+
const rightSemanticHolders = Array.isArray(rightHolders)
|
|
147
|
+
? rightHolders.map((holder) => {
|
|
148
|
+
const semanticHolder = { ...holder };
|
|
149
|
+
delete semanticHolder.holder_digest;
|
|
150
|
+
return semanticHolder;
|
|
151
|
+
})
|
|
152
|
+
: rightHolders;
|
|
153
|
+
return canonicalBytes({ ...leftTag, holders: leftSemanticHolders })
|
|
154
|
+
.equals(canonicalBytes({ ...rightTag, holders: rightSemanticHolders }));
|
|
155
|
+
}
|
|
156
|
+
return canonicalBytes(left).equals(canonicalBytes(right));
|
|
157
|
+
}
|
|
158
|
+
/** Compare the complete user-visible entity state of two repository snapshots. */
|
|
159
|
+
export function compareSnapshotEntities(base, pending) {
|
|
160
|
+
const baseTables = snapshotTables(base);
|
|
161
|
+
const pendingTables = snapshotTables(pending);
|
|
162
|
+
const changes = [];
|
|
163
|
+
for (const entityType of ENTITY_TYPES) {
|
|
164
|
+
const before = entities(baseTables, entityType);
|
|
165
|
+
const after = entities(pendingTables, entityType);
|
|
166
|
+
const identities = [...new Set([...before.keys(), ...after.keys()])].sort(compareCodePoints);
|
|
167
|
+
for (const identity of identities) {
|
|
168
|
+
const beforeEntity = before.get(identity) ?? null;
|
|
169
|
+
const afterEntity = after.get(identity) ?? null;
|
|
170
|
+
if (beforeEntity !== null && afterEntity !== null && equal(entityType, beforeEntity, afterEntity))
|
|
171
|
+
continue;
|
|
172
|
+
changes.push({
|
|
173
|
+
entity_type: entityType,
|
|
174
|
+
identity,
|
|
175
|
+
change_type: beforeEntity === null ? "added" : afterEntity === null ? "removed" : "modified",
|
|
176
|
+
before: beforeEntity,
|
|
177
|
+
after: afterEntity,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return changes;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=snapshot-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-diff.js","sourceRoot":"","sources":["../../../src/local/runtime/snapshot-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { parseRepositoryJson } from "../domain/models/encoding.js";
|
|
|
6
6
|
import { latestValuesBytes, stagingBytes, stagingDigest } from "../domain/service/staging.js";
|
|
7
7
|
import { canonicalLatestGroup, persistCommit, workspaceHeadIn } from "./commits.js";
|
|
8
8
|
import { latestValueWrites } from "./latest-values.js";
|
|
9
|
-
import {
|
|
9
|
+
import { applyCommitProjection } from "./projection/apply.js";
|
|
10
10
|
import { withWriteConnectionAsync } from "./sqlite/connection.js";
|
|
11
11
|
import { RepositoryStoreError } from "./sqlite/errors.js";
|
|
12
12
|
import { runSql } from "./sqlite/rows.js";
|
|
@@ -105,8 +105,7 @@ export async function applyOrdinaryAtomic(state, batch, objects) {
|
|
|
105
105
|
if (workspaceHeadIn(database, commit.repositoryId) !== commit.expectedHead)
|
|
106
106
|
throw new RepositoryStoreError("stale repository head");
|
|
107
107
|
persistCommit(database, commit, batch.latestValueWrites, timestamp);
|
|
108
|
-
|
|
109
|
-
applyProjection(database, commit, operation, latest[index]);
|
|
108
|
+
applyCommitProjection(database, commit, latest);
|
|
110
109
|
runSql(database.prepare("UPDATE repository_heads SET workspace_head_commit_id = ?, updated_at = ? WHERE repository_id = ?"), commit.commitId, timestamp, commit.repositoryId);
|
|
111
110
|
if (batch.clearStaging) {
|
|
112
111
|
runSql(database.prepare("UPDATE repository_staging SET state = 'open', staging_digest = ?, operations_bytes = ?, latest_values_bytes = ?, updated_at = ? WHERE repository_id = ?"), stagingDigest([], []), stagingBytes([]), latestValuesBytes([]), timestamp, commit.repositoryId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/local/store/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE9F,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/local/store/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/local/store/contract.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACpH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/local/store/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,12 @@ const CURRENT_TABLES = [
|
|
|
14
14
|
["repository_semantic_edges", "edge_id", ["content"]],
|
|
15
15
|
];
|
|
16
16
|
const LEGACY_ARTIFACT_FIELDS = ["name", "media_type", "notes", "tags"];
|
|
17
|
+
function emptyOperationLatestValues(commit) {
|
|
18
|
+
const values = new Map();
|
|
19
|
+
for (const operation of commit.operations)
|
|
20
|
+
values.set(operation.operationId, new Map());
|
|
21
|
+
return values;
|
|
22
|
+
}
|
|
17
23
|
function checkCurrentValues(database, repositoryId, commits, latestByCommit, loadAggregate) {
|
|
18
24
|
const root = commits[0];
|
|
19
25
|
// A baseline authenticates an imported snapshot, not replayable initial rows.
|
|
@@ -36,12 +42,12 @@ function checkCurrentValues(database, repositoryId, commits, latestByCommit, loa
|
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
44
|
for (const commit of commits) {
|
|
39
|
-
const
|
|
40
|
-
if (!
|
|
45
|
+
const latest = latestByCommit.get(commit.commitId);
|
|
46
|
+
if (!latest)
|
|
41
47
|
throw new RepositoryStoreError("stored canonical current-value history is invalid");
|
|
42
|
-
for (const
|
|
43
|
-
const
|
|
44
|
-
if (!
|
|
48
|
+
for (const operation of commit.operations) {
|
|
49
|
+
const operationValues = latest.get(operation.operationId);
|
|
50
|
+
if (!operationValues)
|
|
45
51
|
throw new RepositoryStoreError("stored canonical current-value history is invalid");
|
|
46
52
|
const payload = operation.payload;
|
|
47
53
|
switch (operation.type) {
|
|
@@ -102,7 +108,7 @@ function checkCurrentValues(database, repositoryId, commits, latestByCommit, loa
|
|
|
102
108
|
}
|
|
103
109
|
if (operation.type === "artifact.attach.v2") {
|
|
104
110
|
const declaredDigest = payload.properties_digest;
|
|
105
|
-
const write =
|
|
111
|
+
const write = operationValues.get(JSON.stringify(["artifact", artifactId, "properties"]));
|
|
106
112
|
if (typeof declaredDigest !== "string")
|
|
107
113
|
throw new RepositoryStoreError("stored canonical current-value history is invalid");
|
|
108
114
|
if (write !== undefined) {
|
|
@@ -110,7 +116,7 @@ function checkCurrentValues(database, repositoryId, commits, latestByCommit, loa
|
|
|
110
116
|
throw new RepositoryStoreError("stored canonical current-value history is invalid");
|
|
111
117
|
}
|
|
112
118
|
try {
|
|
113
|
-
current.properties = foldArtifactPropertiesOperation(current.properties, operation,
|
|
119
|
+
current.properties = foldArtifactPropertiesOperation(current.properties, operation, operationValues);
|
|
114
120
|
}
|
|
115
121
|
catch (error) {
|
|
116
122
|
throw new RepositoryStoreError("stored canonical current-value history is invalid", { cause: error });
|
|
@@ -125,11 +131,11 @@ function checkCurrentValues(database, repositoryId, commits, latestByCommit, loa
|
|
|
125
131
|
}
|
|
126
132
|
break;
|
|
127
133
|
}
|
|
128
|
-
const hasMetadataSideband = LEGACY_ARTIFACT_FIELDS.some(field =>
|
|
134
|
+
const hasMetadataSideband = LEGACY_ARTIFACT_FIELDS.some(field => operationValues.has(JSON.stringify(["artifact", artifactId, field])));
|
|
129
135
|
if (!hasMetadataSideband)
|
|
130
136
|
break;
|
|
131
137
|
try {
|
|
132
|
-
const properties = foldArtifactPropertiesOperation(current.properties, operation,
|
|
138
|
+
const properties = foldArtifactPropertiesOperation(current.properties, operation, operationValues);
|
|
133
139
|
if (properties === undefined)
|
|
134
140
|
throw new Error("artifact properties are missing");
|
|
135
141
|
current.properties = properties;
|
|
@@ -150,14 +156,14 @@ function checkCurrentValues(database, repositoryId, commits, latestByCommit, loa
|
|
|
150
156
|
current.propertiesDigest !== undefined && current.propertiesDigest !== expected) {
|
|
151
157
|
throw new RepositoryStoreError("stored canonical current-value history is invalid");
|
|
152
158
|
}
|
|
153
|
-
const write =
|
|
159
|
+
const write = operationValues.get(JSON.stringify(["artifact", artifactId, "properties"]));
|
|
154
160
|
if (write === undefined) {
|
|
155
161
|
current.properties = undefined;
|
|
156
162
|
current.propertiesDigest = replacement;
|
|
157
163
|
break;
|
|
158
164
|
}
|
|
159
165
|
try {
|
|
160
|
-
const properties = foldArtifactPropertiesOperation(current.properties, operation,
|
|
166
|
+
const properties = foldArtifactPropertiesOperation(current.properties, operation, operationValues);
|
|
161
167
|
if (properties === undefined || valueDigest(properties) !== replacement)
|
|
162
168
|
throw new Error("artifact properties are invalid");
|
|
163
169
|
current.properties = properties;
|
|
@@ -168,14 +174,14 @@ function checkCurrentValues(database, repositoryId, commits, latestByCommit, loa
|
|
|
168
174
|
}
|
|
169
175
|
break;
|
|
170
176
|
}
|
|
171
|
-
const hasMetadataSideband = [...
|
|
177
|
+
const hasMetadataSideband = [...operationValues.values()].some(write => write.ownerType === "artifact" && write.ownerId === artifactId && write.field === payload.field);
|
|
172
178
|
if (!hasMetadataSideband) {
|
|
173
179
|
current.properties = undefined;
|
|
174
180
|
current.propertiesDigest = undefined;
|
|
175
181
|
break;
|
|
176
182
|
}
|
|
177
183
|
try {
|
|
178
|
-
const properties = foldArtifactPropertiesOperation(current.properties, operation,
|
|
184
|
+
const properties = foldArtifactPropertiesOperation(current.properties, operation, operationValues);
|
|
179
185
|
if (properties === undefined)
|
|
180
186
|
throw new Error("artifact properties are missing");
|
|
181
187
|
current.properties = properties;
|
|
@@ -254,7 +260,8 @@ export function validateCanonicalHistoryIn(database, repositoryId, loadAggregate
|
|
|
254
260
|
throw new RepositoryStoreError("stored canonical commit ownership is invalid");
|
|
255
261
|
commits.set(commit.commitId, commit);
|
|
256
262
|
const latest = commitLatestValues(row.latest_values_bytes);
|
|
257
|
-
latestByCommit.set(commit.commitId, latest.length === 0
|
|
263
|
+
latestByCommit.set(commit.commitId, latest.length === 0
|
|
264
|
+
? emptyOperationLatestValues(commit) : latestValueWrites(commit, latest.map(write => write.canonicalBytes)));
|
|
258
265
|
if (commit.parentCommitId !== null) {
|
|
259
266
|
if (parent.done || parent.value.commit_id !== commit.commitId || parent.value.parent_commit_id !== commit.parentCommitId ||
|
|
260
267
|
parent.value.parent_position !== 0n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-validation.js","sourceRoot":"","sources":["../../../src/local/store/history-validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"history-validation.js","sourceRoot":"","sources":["../../../src/local/store/history-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAA8B,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iCAAiC,EAAgC,MAAM,2BAA2B,CAAC;AAE5G,MAAM,cAAc,GAAG;IACrB,CAAC,+BAA+B,EAAE,SAAS,EAAE,WAAW,CAAC;IACzD,CAAC,2BAA2B,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;CAC7C,CAAC;AAGX,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAOhF,SAAS,0BAA0B,CAAC,MAAwB;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiD,CAAC;IACxE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU;QAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,kBAAkB,CACzB,QAAsB,EACtB,YAAoB,EACpB,OAAoC,EACpC,cAA0D,EAC1D,aAAsC;IAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,gBAAgB,GAAG,IAAI,EAAE,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QACpF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0C,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0C,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IACnD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,iCAAiC,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC3G,IAAI,SAAS,KAAK,SAAS;YAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;QACjH,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;YAC/C,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE;gBACxB,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;QACjG,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,eAAe;gBAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;YAC1G,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAClC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvB,KAAK,gBAAgB;oBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,qBAA+C,EAAE,CAAC,CAAC;oBAAC,MAAM;gBACjI,KAAK,mBAAmB,CAAC,CAAC,CAAC;oBACzB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,IAAI,CAAC,gBAAgB,IAAI,IAAI,KAAK,IAAI;4BAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;wBAC5H,IAAI,GAAG,EAAE,CAAC;wBACV,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC3C,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;oBACjD,MAAM;gBACR,CAAC;gBACD,KAAK,eAAe;oBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;oBAAC,MAAM;gBACtE,KAAK,aAAa;oBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;oBAAC,MAAM;gBACnG,KAAK,mBAAmB;oBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;oBAAC,MAAM;gBACrG,KAAK,gBAAgB;oBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;oBAAC,MAAM;gBACvE,KAAK,oBAAoB,CAAC;gBAC1B,KAAK,oBAAoB,CAAC;gBAC1B,KAAK,0BAA0B,CAAC;gBAChC,KAAK,4BAA4B,CAAC;gBAClC,KAAK,yBAAyB,CAAC,CAAC,CAAC;oBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;oBACvC,IAAI,OAAO,UAAU,KAAK,QAAQ;wBAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;oBACxH,IAAI,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxC,IAAI,SAAS,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;wBACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;wBAChD,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;wBAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;4BACrH,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;wBACtF,CAAC;wBACD,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC;wBACnC,MAAM;oBACR,CAAC;oBACD,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;wBACvF,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;wBAC3C,IAAI,OAAO,YAAY,KAAK,QAAQ;4BAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;wBAC1H,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;4BAC1B,OAAO,GAAG,EAAE,YAAY,EAAE,CAAC;4BAC3B,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACrC,CAAC;6BAAM,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;4BACjD,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;wBACtF,CAAC;wBACD,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;4BAC5C,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;4BACjD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;4BAC1F,IAAI,OAAO,cAAc,KAAK,QAAQ;gCAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;4BAC5H,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gCACxB,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,cAAc,EAAE,CAAC;oCACjE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;gCACtF,CAAC;gCACD,IAAI,CAAC;oCACH,OAAO,CAAC,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;gCACvG,CAAC;gCAAC,OAAO,KAAK,EAAE,CAAC;oCACf,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gCACxG,CAAC;gCACD,OAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;4BAC5C,CAAC;iCAAM,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gCAClD,OAAO,CAAC,gBAAgB,GAAG,cAAc,CAAC;4BAC5C,CAAC;iCAAM,IAAI,OAAO,CAAC,gBAAgB,KAAK,cAAc,EAAE,CAAC;gCACvD,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;4BACtF,CAAC;4BACD,MAAM;wBACR,CAAC;wBACD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC9D,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxE,IAAI,CAAC,mBAAmB;4BAAE,MAAM;wBAChC,IAAI,CAAC;4BACH,MAAM,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;4BACnG,IAAI,UAAU,KAAK,SAAS;gCAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;4BACjF,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;4BAChC,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;wBACrD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;wBACxG,CAAC;wBACD,MAAM;oBACR,CAAC;oBACD,IAAI,OAAO,KAAK,SAAS;wBAAE,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;oBAC/G,IAAI,SAAS,CAAC,IAAI,KAAK,4BAA4B,EAAE,CAAC;wBACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC;wBACzC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;wBACvC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ;4BACjE,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ;4BAChF,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;4BAClF,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,CAAC,CAAC;wBACtF,CAAC;wBACD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;wBAC1F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;4BACxB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;4BAC/B,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;4BACvC,MAAM;wBACR,CAAC;wBACD,IAAI,CAAC;4BACH,MAAM,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;4BACnG,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,WAAW;gCAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;4BAC5H,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;4BAChC,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC;wBACzC,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;wBACxG,CAAC;wBACD,MAAM;oBACR,CAAC;oBACD,MAAM,mBAAmB,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACrE,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnG,IAAI,CAAC,mBAAmB,EAAE,CAAC;wBACzB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;wBAC/B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;wBACrC,MAAM;oBACR,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;wBACnG,IAAI,UAAU,KAAK,SAAS;4BAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;wBACjF,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;wBAChC,OAAO,CAAC,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;oBACrD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,IAAI,oBAAoB,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxG,CAAC;oBACD,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAC5C,UAAU,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,0BAA0B,CAC5E,EAAE,YAAY,CAAC,EAAE,CAAC;YACjB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC;gBAClE,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChH,MAAM,IAAI,oBAAoB,CAAC,iEAAiE,CAAC,CAAC;YACpG,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,OAAO,KAAK,IAAI;gBAAE,MAAM,IAAI,oBAAoB,CAAC,iEAAiE,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAC5C,oHAAoH,CACrH,EAAE,YAAY,CAAC,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;YACpH,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,oBAAoB,CAAC,iEAAiE,CAAC,CAAC;QACpG,CAAC;QACD,gBAAgB,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/F,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;SACxC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC5F,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;YAC1E,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;YAC9E,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,gBAAgB,KAAK,QAAQ,CAAC,gBAAgB,CAAC;IACrG,CAAC,CAAC,EAAE,CAAC;QACH,MAAM,IAAI,oBAAoB,CAAC,iEAAiE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,QAAsB,EACtB,YAAoB,EACpB,gBAAyC,GAAG,EAAE,CAAC,SAAS;IAExD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAC1C,gJAAgJ,EAChJ,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,EAAE,YAAY,CAAC,CAAC;IACjB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAC7C,+JAA+J,EAC/J,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,EAAE,YAAY,CAAC,CAAC;IACjB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiC,CAAC;IAChE,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAC5C,2HAA2H,CAC5H,EAAE,YAAY,CAAC,EAAE,CAAC;YACjB,IAAI,MAAwB,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,YAAY,UAAU,CAAC,EAAE,CAAC;oBACtF,MAAM,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,CAAC;gBAC7D,CAAC;gBACD,MAAM,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,uBAAuB,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAC7D,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY;gBAAE,MAAM,IAAI,oBAAoB,CAAC,8CAA8C,CAAC,CAAC;YACzH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC3D,cAAc,CAAC,GAAG,CAChB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAC9G,CAAC;YACF,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBACnC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,MAAM,CAAC,cAAc;oBACtH,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,oBAAoB,CAAC,0CAA0C,CAAC,CAAC;gBAC7E,CAAC;gBACD,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC/D,MAAM,IAAI,oBAAoB,CAAC,0CAA0C,CAAC,CAAC;YAC7E,CAAC;YACD,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/D,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,WAAW;oBAC1H,SAAS,CAAC,KAAK,CAAC,kBAAkB,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,YAAY,UAAU,CAAC;oBACnH,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnE,MAAM,IAAI,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;gBAChF,CAAC;gBACD,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrE,MAAM,IAAI,oBAAoB,CAAC,6CAA6C,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,CAAC,CAAC;IACnH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACnB,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,OAAO,IAAI,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,oBAAoB,CAAC,4CAA4C,CAAC,CAAC;QAC5G,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -1,6 +1,174 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { parseArtifactProperties } from "../domain/models/artifact-properties.js";
|
|
3
|
+
import { canonicalBytes } from "../domain/models/encoding.js";
|
|
4
|
+
import { operationFailureMessage } from "../domain/models/operation-identity.js";
|
|
2
5
|
import { LatestValueWrite } from "./contract.js";
|
|
3
6
|
import { RepositoryStoreError } from "./sqlite/errors.js";
|
|
7
|
+
function writeKey(ownerType, ownerId, field) {
|
|
8
|
+
return JSON.stringify([ownerType, ownerId, field]);
|
|
9
|
+
}
|
|
10
|
+
function expectedWrite(operation) {
|
|
11
|
+
const payload = operation.payload;
|
|
12
|
+
let ownerType;
|
|
13
|
+
let ownerId;
|
|
14
|
+
let field = payload.field;
|
|
15
|
+
let digest;
|
|
16
|
+
switch (operation.type) {
|
|
17
|
+
case "node.field.set.v1":
|
|
18
|
+
ownerType = "node";
|
|
19
|
+
ownerId = payload.node_id;
|
|
20
|
+
digest = payload.new_digest;
|
|
21
|
+
break;
|
|
22
|
+
case "edge.add.v1":
|
|
23
|
+
ownerType = "edge";
|
|
24
|
+
ownerId = payload.edge_id;
|
|
25
|
+
field = "content";
|
|
26
|
+
digest = payload.content_digest;
|
|
27
|
+
break;
|
|
28
|
+
case "edge.field.set.v1":
|
|
29
|
+
ownerType = "edge";
|
|
30
|
+
ownerId = payload.edge_id;
|
|
31
|
+
digest = payload.new_digest;
|
|
32
|
+
break;
|
|
33
|
+
case "artifact.metadata.set.v1":
|
|
34
|
+
ownerType = "artifact";
|
|
35
|
+
ownerId = payload.artifact_id;
|
|
36
|
+
digest = payload.new_digest;
|
|
37
|
+
break;
|
|
38
|
+
case "artifact.properties.set.v1":
|
|
39
|
+
ownerType = "artifact";
|
|
40
|
+
ownerId = payload.artifact_id;
|
|
41
|
+
field = "properties";
|
|
42
|
+
digest = payload.new_digest;
|
|
43
|
+
break;
|
|
44
|
+
default: return null;
|
|
45
|
+
}
|
|
46
|
+
if (typeof ownerId !== "string" || typeof field !== "string" || typeof digest !== "string") {
|
|
47
|
+
throw new RepositoryStoreError("latest value operation is invalid");
|
|
48
|
+
}
|
|
49
|
+
return { key: writeKey(ownerType, ownerId, field), digest };
|
|
50
|
+
}
|
|
51
|
+
function suppliedKey(value) {
|
|
52
|
+
return value instanceof LatestValueWrite ? JSON.stringify(value.key) :
|
|
53
|
+
JSON.stringify([value.owner_type, value.owner_id, value.field]);
|
|
54
|
+
}
|
|
55
|
+
function suppliedDigest(value) {
|
|
56
|
+
return value instanceof LatestValueWrite ? value.valueDigest : value.value_digest;
|
|
57
|
+
}
|
|
58
|
+
function takeValue(queue, position = queue.index) {
|
|
59
|
+
const supplied = queue.values[position];
|
|
60
|
+
// Indexing a later record must not validate it before an earlier graph operation.
|
|
61
|
+
const value = supplied instanceof LatestValueWrite ? supplied : LatestValueWrite.fromMapping(supplied);
|
|
62
|
+
if (position === queue.index)
|
|
63
|
+
queue.index++;
|
|
64
|
+
else
|
|
65
|
+
queue.values.splice(position, 1);
|
|
66
|
+
queue.available.set(value.valueDigest, queue.available.get(value.valueDigest) - 1);
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
function optionalValue(queue, expectedDigest) {
|
|
70
|
+
if (!queue)
|
|
71
|
+
return undefined;
|
|
72
|
+
for (let position = queue.index; position < queue.values.length; position++) {
|
|
73
|
+
const digest = suppliedDigest(queue.values[position]);
|
|
74
|
+
if (expectedDigest !== undefined && digest !== expectedDigest)
|
|
75
|
+
continue;
|
|
76
|
+
// Attachment sidebands have no position requirement and cannot steal a later required write.
|
|
77
|
+
if (typeof digest === "string" && queue.available.get(digest) <= (queue.required.get(digest) ?? 0))
|
|
78
|
+
continue;
|
|
79
|
+
return takeValue(queue, position);
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
function attachmentValues(operation, queues) {
|
|
84
|
+
const artifactId = String(operation.payload.artifact_id);
|
|
85
|
+
if (operation.type === "artifact.attach.v2") {
|
|
86
|
+
const key = writeKey("artifact", artifactId, "properties");
|
|
87
|
+
const write = optionalValue(queues.get(key), String(operation.payload.properties_digest));
|
|
88
|
+
if (!write)
|
|
89
|
+
return new Map();
|
|
90
|
+
if (write.value === null)
|
|
91
|
+
throw new RepositoryStoreError("artifact properties are invalid");
|
|
92
|
+
parseArtifactProperties(write.value);
|
|
93
|
+
return new Map([[key, write]]);
|
|
94
|
+
}
|
|
95
|
+
const values = new Map();
|
|
96
|
+
const metadata = {};
|
|
97
|
+
for (const field of ["name", "media_type", "notes", "tags"]) {
|
|
98
|
+
const key = writeKey("artifact", artifactId, field);
|
|
99
|
+
const write = optionalValue(queues.get(key));
|
|
100
|
+
if (!write)
|
|
101
|
+
continue;
|
|
102
|
+
values.set(key, write);
|
|
103
|
+
metadata[field] = write.value;
|
|
104
|
+
if (`sha256:${createHash("sha256").update(canonicalBytes(metadata)).digest("hex")}` === operation.payload.metadata_digest)
|
|
105
|
+
return values;
|
|
106
|
+
}
|
|
107
|
+
if (values.size !== 0)
|
|
108
|
+
throw new RepositoryStoreError("artifact metadata digest does not match latest values");
|
|
109
|
+
return values;
|
|
110
|
+
}
|
|
111
|
+
/** Associates and validates each operation's records only when that operation is reached. */
|
|
112
|
+
export function* iterateOperationLatestValues(operations, writes) {
|
|
113
|
+
const queues = new Map();
|
|
114
|
+
const queueFor = (key) => {
|
|
115
|
+
let queue = queues.get(key);
|
|
116
|
+
if (!queue) {
|
|
117
|
+
queue = { values: [], index: 0, available: new Map(), required: new Map() };
|
|
118
|
+
queues.set(key, queue);
|
|
119
|
+
}
|
|
120
|
+
return queue;
|
|
121
|
+
};
|
|
122
|
+
for (const write of writes) {
|
|
123
|
+
const queue = queueFor(suppliedKey(write));
|
|
124
|
+
queue.values.push(write);
|
|
125
|
+
const digest = suppliedDigest(write);
|
|
126
|
+
queue.available.set(digest, (queue.available.get(digest) ?? 0) + 1);
|
|
127
|
+
}
|
|
128
|
+
for (const operation of operations) {
|
|
129
|
+
const expected = expectedWrite(operation);
|
|
130
|
+
if (expected === null)
|
|
131
|
+
continue;
|
|
132
|
+
const queue = queueFor(expected.key);
|
|
133
|
+
queue.required.set(expected.digest, (queue.required.get(expected.digest) ?? 0) + 1);
|
|
134
|
+
}
|
|
135
|
+
for (const operation of operations) {
|
|
136
|
+
try {
|
|
137
|
+
if (operation.type === "artifact.attach.v1" || operation.type === "artifact.attach.v2") {
|
|
138
|
+
yield [operation.operationId, attachmentValues(operation, queues)];
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const expected = expectedWrite(operation);
|
|
142
|
+
if (expected === null) {
|
|
143
|
+
yield [operation.operationId, new Map()];
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const queue = queues.get(expected.key);
|
|
147
|
+
if (queue.index === queue.values.length)
|
|
148
|
+
throw new RepositoryStoreError("latest value writes do not match canonical field operations");
|
|
149
|
+
const write = takeValue(queue);
|
|
150
|
+
if (write.valueDigest !== expected.digest)
|
|
151
|
+
throw new RepositoryStoreError("latest value writes do not match canonical field operations");
|
|
152
|
+
queue.required.set(expected.digest, queue.required.get(expected.digest) - 1);
|
|
153
|
+
yield [operation.operationId, new Map([[expected.key, write]])];
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
const reason = error instanceof Error ? error.message : "latest value association is invalid";
|
|
157
|
+
throw new RepositoryStoreError(operationFailureMessage(operation, reason), { cause: error });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for (const queue of queues.values()) {
|
|
161
|
+
if (queue.index === queue.values.length)
|
|
162
|
+
continue;
|
|
163
|
+
const operation = operations.at(-1);
|
|
164
|
+
const reason = "latest value writes do not match canonical field operations";
|
|
165
|
+
throw new RepositoryStoreError(operation ? operationFailureMessage(operation, reason) : reason);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Historical readers need the complete operation-indexed association, not a collapsed field map. */
|
|
169
|
+
export function associateLatestValueWrites(operations, writes) {
|
|
170
|
+
return new Map(iterateOperationLatestValues(operations, writes));
|
|
171
|
+
}
|
|
4
172
|
export function latestValueWrites(commit, rawWrites) {
|
|
5
173
|
let writes;
|
|
6
174
|
try {
|
|
@@ -9,12 +177,6 @@ export function latestValueWrites(commit, rawWrites) {
|
|
|
9
177
|
catch (error) {
|
|
10
178
|
throw new RepositoryStoreError("latest value write is invalid", { cause: error });
|
|
11
179
|
}
|
|
12
|
-
|
|
13
|
-
return [...associateLatestValueWrites(commit.operations, writes)];
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
const detail = error instanceof Error ? `: ${error.message}` : "";
|
|
17
|
-
throw new RepositoryStoreError(`latest value writes do not match canonical field operations${detail}`, { cause: error });
|
|
18
|
-
}
|
|
180
|
+
return associateLatestValueWrites(commit.operations, writes);
|
|
19
181
|
}
|
|
20
182
|
//# sourceMappingURL=latest-values.js.map
|