@paradigma-inc/flywheel 0.1.146 → 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/help-metadata.js +14 -13
- package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/commands/help.js +19 -12
- package/src/runtime/vendor/flywheel-cli-dist/commands/help.js.map +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/http/client.js +1 -0
- package/src/runtime/vendor/flywheel-cli-dist/http/client.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/flywheel-cli-dist/main.js +99 -180
- package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -1
- package/src/runtime/vendor/flywheel-cli-dist/runtime-auth.js +112 -0
- package/src/runtime/vendor/flywheel-cli-dist/runtime-auth.js.map +1 -0
- package/src/runtime/vendor/manifest.json +9 -1
- package/src/unified-cli.mjs +189 -193
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest-values.js","sourceRoot":"","sources":["../../../src/local/store/latest-values.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"latest-values.js","sourceRoot":"","sources":["../../../src/local/store/latest-values.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,112 +1,70 @@
|
|
|
1
1
|
import { DatabaseSync } from "node:sqlite";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { replaceSnapshotTables } from "./snapshot/replace.js";
|
|
2
|
+
import { iterateOperationLatestValues } from "./latest-values.js";
|
|
3
|
+
import { applyOperations } from "./projection/apply.js";
|
|
4
|
+
import { assertProjectionInvariants } from "./snapshot/replace.js";
|
|
6
5
|
import { snapshotTablesFromConnection } from "./snapshot/read.js";
|
|
7
6
|
import { SNAPSHOT_TABLES } from "./snapshot/schema.js";
|
|
8
|
-
import { canonicalSnapshotBytes } from "./snapshot/validate.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const end = migration.indexOf(";", start);
|
|
15
|
-
if (end < 0)
|
|
16
|
-
throw new RepositoryStoreError(`pending snapshot schema is incomplete for ${table}`);
|
|
17
|
-
return migration.slice(start, end + 1);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* The transient graph is the durable snapshot schema, with only references to
|
|
21
|
-
* omitted history rows and pending provenance requirements relaxed.
|
|
22
|
-
*/
|
|
23
|
-
function transientTableStatement(statement) {
|
|
24
|
-
return statement
|
|
25
|
-
.replace(/\s+REFERENCES repository_metadata\([^)]*\)/g, "")
|
|
26
|
-
.replace(/,\s*FOREIGN KEY \([^)]*\) REFERENCES repository_(?:metadata|commits|operations)\([^)]*\)/g, "")
|
|
27
|
-
.replace(/\b(?:created_by|lifecycle|updated_by|assigned_by|attached_by)_commit_id TEXT NOT NULL/g, (column) => column.replace(" NOT NULL", ""));
|
|
28
|
-
}
|
|
29
|
-
function transientSnapshotSchema() {
|
|
30
|
-
const initial = loadMigration("001_initial.sql");
|
|
31
|
-
return SNAPSHOT_TABLES.map(([table]) => transientTableStatement(createTableStatement(initial, table))).join("\n");
|
|
7
|
+
import { canonicalSnapshotBytes, validateSnapshotTables } from "./snapshot/validate.js";
|
|
8
|
+
import { loadMigration } from "./migrations.js";
|
|
9
|
+
import { runSql } from "./sqlite/rows.js";
|
|
10
|
+
function transientSchema() {
|
|
11
|
+
// Pending projections retain audit IDs without persisting operation history.
|
|
12
|
+
return loadMigration("001_initial.sql").replace(/(created_by_commit_id|lifecycle_commit_id|updated_by_commit_id|assigned_by_commit_id|attached_by_commit_id) TEXT NOT NULL/g, "$1 TEXT").replace(/,\s*FOREIGN KEY \([^)]+\) REFERENCES repository_operations\([^)]+\)/g, "");
|
|
32
13
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
return value;
|
|
14
|
+
function insertSnapshotTables(database, tables) {
|
|
15
|
+
for (const [name, columns] of SNAPSHOT_TABLES) {
|
|
16
|
+
const rows = tables[name];
|
|
17
|
+
if (rows.length === 0)
|
|
18
|
+
continue;
|
|
19
|
+
const statement = database.prepare(`INSERT INTO ${name} (${columns.join(", ")}) VALUES (${columns.map(() => "?").join(", ")})`);
|
|
20
|
+
for (const row of rows)
|
|
21
|
+
runSql(statement, ...row);
|
|
42
22
|
}
|
|
43
|
-
return "unknown entity";
|
|
44
23
|
}
|
|
45
|
-
function
|
|
46
|
-
const
|
|
47
|
-
return new RepositoryStoreError(`pending operation ${operation.operationId} (${operation.type}) for ${operationEntity(operation)} failed: ${reason}`, { cause: error });
|
|
48
|
-
}
|
|
49
|
-
function snapshot(repositoryId, headCommitId, tables) {
|
|
50
|
-
return { repositoryId, headCommitId, canonicalBytes: canonicalSnapshotBytes(repositoryId, headCommitId, tables) };
|
|
51
|
-
}
|
|
52
|
-
export function applyPendingSnapshot(repositoryId, headCommitId, baseTables, workspace, committedOperationIds) {
|
|
53
|
-
let database;
|
|
24
|
+
function applyPendingSnapshot(repositoryId, identity, baseHeadCommitId, baseTables, staging, committedOperationIds) {
|
|
25
|
+
const database = new DatabaseSync(":memory:", { allowExtension: false, defensive: true });
|
|
54
26
|
try {
|
|
55
|
-
database
|
|
56
|
-
database.exec(
|
|
57
|
-
database.exec(
|
|
58
|
-
database.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
const terminal = values.next();
|
|
80
|
-
if (!terminal.done)
|
|
81
|
-
throw new RepositoryStoreError("pending latest values exceed staged operations");
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
const operation = workspace.staging.operations.at(-1);
|
|
85
|
-
if (operation)
|
|
86
|
-
throw pendingOperationError(operation, error);
|
|
87
|
-
throw new RepositoryStoreError("pending latest value writes do not match staged operations", { cause: error });
|
|
88
|
-
}
|
|
89
|
-
const pendingTables = snapshotTablesFromConnection(database, repositoryId);
|
|
90
|
-
database.exec("COMMIT");
|
|
91
|
-
const baseSnapshot = snapshot(repositoryId, headCommitId, baseTables);
|
|
92
|
-
return {
|
|
93
|
-
repositoryId,
|
|
94
|
-
headCommitId,
|
|
95
|
-
stagingDigest: workspace.staging.digest,
|
|
96
|
-
baseSnapshot,
|
|
97
|
-
snapshot: snapshot(repositoryId, headCommitId, pendingTables),
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
try {
|
|
102
|
-
database.exec("ROLLBACK");
|
|
103
|
-
}
|
|
104
|
-
catch { /* The transaction may have already ended. */ }
|
|
105
|
-
throw error;
|
|
106
|
-
}
|
|
27
|
+
database.exec("PRAGMA trusted_schema = OFF");
|
|
28
|
+
database.exec(transientSchema());
|
|
29
|
+
database.exec("PRAGMA foreign_keys = OFF");
|
|
30
|
+
runSql(database.prepare("INSERT INTO repository_metadata VALUES (?, ?, 'flywheel.repository.v1', ?)"), repositoryId, identity.clientId, identity.createdAt);
|
|
31
|
+
insertSnapshotTables(database, baseTables);
|
|
32
|
+
assertProjectionInvariants(database, repositoryId);
|
|
33
|
+
database.exec("PRAGMA foreign_keys = ON");
|
|
34
|
+
applyOperations(database, {
|
|
35
|
+
repositoryId,
|
|
36
|
+
expectedHead: baseHeadCommitId,
|
|
37
|
+
commitId: null,
|
|
38
|
+
intent: null,
|
|
39
|
+
operationCount: staging.operations.length,
|
|
40
|
+
}, staging.operations, iterateOperationLatestValues(staging.operations, staging.latestValues), committedOperationIds);
|
|
41
|
+
assertProjectionInvariants(database, repositoryId);
|
|
42
|
+
const tables = snapshotTablesFromConnection(database, repositoryId);
|
|
43
|
+
return {
|
|
44
|
+
repositoryId,
|
|
45
|
+
headCommitId: baseHeadCommitId,
|
|
46
|
+
canonicalBytes: canonicalSnapshotBytes(repositoryId, baseHeadCommitId, validateSnapshotTables(repositoryId, tables)),
|
|
47
|
+
};
|
|
107
48
|
}
|
|
108
49
|
finally {
|
|
109
|
-
database
|
|
50
|
+
database.close();
|
|
110
51
|
}
|
|
111
52
|
}
|
|
53
|
+
export function pendingRepositorySnapshot(repositoryId, identity, baseHeadCommitId, baseTables, staging, committedOperationIds) {
|
|
54
|
+
const tables = validateSnapshotTables(repositoryId, baseTables);
|
|
55
|
+
const baseSnapshot = {
|
|
56
|
+
repositoryId,
|
|
57
|
+
headCommitId: baseHeadCommitId,
|
|
58
|
+
canonicalBytes: canonicalSnapshotBytes(repositoryId, baseHeadCommitId, tables),
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
repositoryId,
|
|
62
|
+
baseHeadCommitId,
|
|
63
|
+
stagingDigest: staging.digest,
|
|
64
|
+
baseSnapshot,
|
|
65
|
+
pendingSnapshot: staging.operations.length === 0 && staging.latestValues.length === 0
|
|
66
|
+
? baseSnapshot
|
|
67
|
+
: applyPendingSnapshot(repositoryId, identity, baseHeadCommitId, tables, staging, committedOperationIds),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
112
70
|
//# sourceMappingURL=pending.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../../src/local/store/pending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../../src/local/store/pending.ts"],"names":[],"mappings":"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"}
|