@plurnk/plurnk-service 1.26.0 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.defaults +3 -6
- package/SPEC.md +260 -126
- package/dist/build-info.json +1 -1
- package/dist/content/body-preview.d.ts +1 -0
- package/dist/content/body-preview.d.ts.map +1 -1
- package/dist/content/body-preview.js +7 -0
- package/dist/content/body-preview.js.map +1 -1
- package/dist/content/byte-view.d.ts +19 -2
- package/dist/content/byte-view.d.ts.map +1 -1
- package/dist/content/byte-view.js +67 -14
- package/dist/content/byte-view.js.map +1 -1
- package/dist/content/edit-receipt.js +1 -1
- package/dist/content/edit-receipt.js.map +1 -1
- package/dist/content/line-marker.js +1 -1
- package/dist/content/line-marker.js.map +1 -1
- package/dist/content/line-selection.d.ts +3 -1
- package/dist/content/line-selection.d.ts.map +1 -1
- package/dist/content/line-selection.js +27 -3
- package/dist/content/line-selection.js.map +1 -1
- package/dist/content/matcher.d.ts +9 -14
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +51 -45
- package/dist/content/matcher.js.map +1 -1
- package/dist/content/pattern-edits.d.ts +7 -26
- package/dist/content/pattern-edits.d.ts.map +1 -1
- package/dist/content/pattern-edits.js +54 -91
- package/dist/content/pattern-edits.js.map +1 -1
- package/dist/content/read-projector.d.ts +2 -1
- package/dist/content/read-projector.d.ts.map +1 -1
- package/dist/content/read-projector.js +39 -7
- package/dist/content/read-projector.js.map +1 -1
- package/dist/content/read-resolve.js +1 -1
- package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
- package/dist/core/AdmittedTurnExecutor.js +3 -3
- package/dist/core/AdmittedTurnExecutor.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +2 -3
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +21 -22
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +26 -0
- package/dist/core/DataStatementRunner.d.ts.map +1 -1
- package/dist/core/DataStatementRunner.js +1 -0
- package/dist/core/DataStatementRunner.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +2 -2
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +6 -13
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/EditMutations.d.ts +5 -5
- package/dist/core/EditMutations.d.ts.map +1 -1
- package/dist/core/EditMutations.js +44 -50
- package/dist/core/EditMutations.js.map +1 -1
- package/dist/core/EditSequence.js +2 -2
- package/dist/core/EditSequence.js.map +1 -1
- package/dist/core/Engine.d.ts +1 -0
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +3 -0
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/InferenceCall.js +2 -2
- package/dist/core/InferenceCall.js.map +1 -1
- package/dist/core/InferenceCall.sql +1 -0
- package/dist/core/LiveSubscription.d.ts +20 -0
- package/dist/core/LiveSubscription.d.ts.map +1 -0
- package/dist/core/LiveSubscription.js +68 -0
- package/dist/core/LiveSubscription.js.map +1 -0
- package/dist/core/LiveSubscriptions.d.ts +1 -0
- package/dist/core/LiveSubscriptions.d.ts.map +1 -1
- package/dist/core/LiveSubscriptions.js +8 -0
- package/dist/core/LiveSubscriptions.js.map +1 -1
- package/dist/core/LogBody.js +1 -1
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LoopDriver.js +2 -1
- package/dist/core/LoopDriver.js.map +1 -1
- package/dist/core/LoopLifecycle.d.ts +2 -2
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +2 -4
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +1 -6
- package/dist/core/MutationEffects.d.ts +1 -3
- package/dist/core/MutationEffects.d.ts.map +1 -1
- package/dist/core/MutationEffects.js +2 -1
- package/dist/core/MutationEffects.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +10 -3
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/PacketBuilder.sql +4 -5
- package/dist/core/PatternSelection.d.ts +5 -10
- package/dist/core/PatternSelection.d.ts.map +1 -1
- package/dist/core/PatternSelection.js +9 -16
- package/dist/core/PatternSelection.js.map +1 -1
- package/dist/core/ResourceMutations.d.ts +2 -4
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +2 -5
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/ResourceSelector.d.ts +2 -2
- package/dist/core/ResourceSelector.d.ts.map +1 -1
- package/dist/core/ResourceSelector.js +64 -33
- package/dist/core/ResourceSelector.js.map +1 -1
- package/dist/core/ResourceTransfers.d.ts +2 -4
- package/dist/core/ResourceTransfers.d.ts.map +1 -1
- package/dist/core/ResourceTransfers.js +74 -50
- package/dist/core/ResourceTransfers.js.map +1 -1
- package/dist/core/SchemeRegistry.d.ts +1 -0
- package/dist/core/SchemeRegistry.d.ts.map +1 -1
- package/dist/core/SchemeRegistry.js +11 -9
- package/dist/core/SchemeRegistry.js.map +1 -1
- package/dist/core/ServiceTeardown.d.ts +3 -2
- package/dist/core/ServiceTeardown.d.ts.map +1 -1
- package/dist/core/ServiceTeardown.js +17 -8
- package/dist/core/ServiceTeardown.js.map +1 -1
- package/dist/core/StopDeadline.d.ts +5 -0
- package/dist/core/StopDeadline.d.ts.map +1 -0
- package/dist/core/StopDeadline.js +20 -0
- package/dist/core/StopDeadline.js.map +1 -0
- package/dist/core/ToolResources.d.ts.map +1 -1
- package/dist/core/ToolResources.js +11 -2
- package/dist/core/ToolResources.js.map +1 -1
- package/dist/core/TurnDispositionHandler.d.ts +4 -2
- package/dist/core/TurnDispositionHandler.d.ts.map +1 -1
- package/dist/core/TurnDispositionHandler.js +24 -6
- package/dist/core/TurnDispositionHandler.js.map +1 -1
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +14 -21
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +13 -19
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/content-hash.d.ts +1 -1
- package/dist/core/content-hash.d.ts.map +1 -1
- package/dist/core/content-hash.js.map +1 -1
- package/dist/core/mutation-types.d.ts +6 -4
- package/dist/core/mutation-types.d.ts.map +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +30 -1
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/provider-accounting.d.ts +1 -1
- package/dist/core/provider-accounting.d.ts.map +1 -1
- package/dist/core/provider-accounting.js +2 -1
- package/dist/core/provider-accounting.js.map +1 -1
- package/dist/digest/DigestEvidence.d.ts +1 -0
- package/dist/digest/DigestEvidence.d.ts.map +1 -1
- package/dist/digest/DigestEvidence.js +6 -0
- package/dist/digest/DigestEvidence.js.map +1 -1
- package/dist/digest/DigestRender.d.ts +1 -0
- package/dist/digest/DigestRender.d.ts.map +1 -1
- package/dist/digest/DigestRender.js +33 -11
- package/dist/digest/DigestRender.js.map +1 -1
- package/dist/digest/DigestRequiem.js +4 -4
- package/dist/digest/DigestRequiem.js.map +1 -1
- package/dist/digest/digest-rows.d.ts +1 -0
- package/dist/digest/digest-rows.d.ts.map +1 -1
- package/dist/digest/digest.sql +5 -0
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +28 -27
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +1 -2
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +4 -17
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/TurnSource.js +2 -2
- package/dist/schemes/TurnSource.js.map +1 -1
- package/dist/schemes/_derivation-use.d.ts +7 -0
- package/dist/schemes/_derivation-use.d.ts.map +1 -0
- package/dist/schemes/_derivation-use.js +40 -0
- package/dist/schemes/_derivation-use.js.map +1 -0
- package/dist/schemes/_entry-crud.d.ts +6 -1
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +13 -49
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-find.sql +0 -11
- package/dist/schemes/_entry-fts.d.ts.map +1 -1
- package/dist/schemes/_entry-fts.js +9 -3
- package/dist/schemes/_entry-fts.js.map +1 -1
- package/dist/schemes/_entry-fts.sql +14 -8
- package/dist/schemes/_entry-graph.d.ts +5 -8
- package/dist/schemes/_entry-graph.d.ts.map +1 -1
- package/dist/schemes/_entry-graph.js +33 -72
- package/dist/schemes/_entry-graph.js.map +1 -1
- package/dist/schemes/_entry-graph.sql +30 -48
- package/dist/schemes/_entry-manifest.d.ts +5 -0
- package/dist/schemes/_entry-manifest.d.ts.map +1 -1
- package/dist/schemes/_entry-manifest.js +5 -0
- package/dist/schemes/_entry-manifest.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +1 -1
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +4 -11
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_search-index.d.ts +10 -0
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +33 -1
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/schemes/exec-lifetime.d.ts.map +1 -1
- package/dist/schemes/exec-lifetime.js +1 -2
- package/dist/schemes/exec-lifetime.js.map +1 -1
- package/dist/server/Daemon.d.ts +2 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +20 -33
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DrainSupervisor.d.ts +2 -1
- package/dist/server/DrainSupervisor.d.ts.map +1 -1
- package/dist/server/DrainSupervisor.js +37 -56
- package/dist/server/DrainSupervisor.js.map +1 -1
- package/dist/server/Functionality.d.ts +1 -1
- package/dist/server/Functionality.d.ts.map +1 -1
- package/dist/server/Functionality.js +24 -11
- package/dist/server/Functionality.js.map +1 -1
- package/dist/server/FunctionalityManager.js +2 -2
- package/dist/server/FunctionalityManager.js.map +1 -1
- package/dist/server/Retention.d.ts.map +1 -1
- package/dist/server/Retention.js +7 -3
- package/dist/server/Retention.js.map +1 -1
- package/dist/server/drain.sql +0 -6
- package/dist/server/seam-loop.sql +1 -1
- package/dist/service.js +1 -1
- package/dist/service.js.map +1 -1
- package/docs/env.md +4 -3
- package/migrations/013_graph_regions.sql +31 -0
- package/migrations/014_stream_timing.sql +3 -0
- package/migrations/015_request_evidence.sql +3 -0
- package/package.json +34 -34
- package/dist/server/exec-poll-backoff.d.ts +0 -2
- package/dist/server/exec-poll-backoff.d.ts.map +0 -1
- package/dist/server/exec-poll-backoff.js +0 -6
- package/dist/server/exec-poll-backoff.js.map +0 -1
|
@@ -9,6 +9,7 @@ import { entryCoordinateOf, missDetail, schemeNameOf } from "./plurnk-uri.js";
|
|
|
9
9
|
import EntryAddressBinding from "./EntryAddressBinding.js";
|
|
10
10
|
import { LineAnchors, LineMarkerOps, MimetypeBinary } from "../content/index.js";
|
|
11
11
|
import EntryCrud from "../schemes/_entry-crud.js";
|
|
12
|
+
import EntryManifest from "../schemes/_entry-manifest.js";
|
|
12
13
|
import EntryReadable from "../schemes/_entry-readable.js";
|
|
13
14
|
import Results from "./results.js";
|
|
14
15
|
import MutationEffects from "./MutationEffects.js";
|
|
@@ -16,6 +17,8 @@ import { coreRepresentationProvider } from "./CoreSchemeServices.js";
|
|
|
16
17
|
import LineSelection from "../content/line-selection.js";
|
|
17
18
|
import PatternEdits from "../content/pattern-edits.js";
|
|
18
19
|
import PatternSelection from "./PatternSelection.js";
|
|
20
|
+
import ByteView from "../content/byte-view.js";
|
|
21
|
+
import { contentHash } from "./content-hash.js";
|
|
19
22
|
// Shared source acquisition for explicit resource transfers.
|
|
20
23
|
export default class ResourceSelector {
|
|
21
24
|
#schemes;
|
|
@@ -65,10 +68,10 @@ export default class ResourceSelector {
|
|
|
65
68
|
if (scheme === null) {
|
|
66
69
|
return MutationEffects.failure("resource-scheme-required", 400, "Resource selection requires an address.", {}, { retryable: false });
|
|
67
70
|
}
|
|
68
|
-
// {§copy-move-pattern} — a pattern selects
|
|
71
|
+
// {§copy-move-pattern} — a pattern selects source spans; a destination is a
|
|
69
72
|
// place, named by its scope.
|
|
70
73
|
if (access === "write" && matcher !== null) {
|
|
71
|
-
return MutationEffects.failure("pattern-destination-unsupported", 400, "A pattern selects source
|
|
74
|
+
return MutationEffects.failure("pattern-destination-unsupported", 400, "A pattern selects source text; a COPY or MOVE destination uses a scope.", {}, { scheme, retryable: false });
|
|
72
75
|
}
|
|
73
76
|
const binding = access === "read" ? await ResourceBindings.resolve(target, ctx) : undefined;
|
|
74
77
|
const handler = access === "read" ? binding?.handler : this.#schemes.get(scheme, ctx.workspaceId);
|
|
@@ -149,9 +152,6 @@ export default class ResourceSelector {
|
|
|
149
152
|
retryable: false,
|
|
150
153
|
});
|
|
151
154
|
}
|
|
152
|
-
const resolvedMarker = this.resolveResourceLineMarker(selection, selected.content, operation, identity);
|
|
153
|
-
if ("result" in resolvedMarker)
|
|
154
|
-
return resolvedMarker.result;
|
|
155
155
|
if (selected.producerResult !== undefined && selected.producerResult.status >= 400) {
|
|
156
156
|
return Results.assert(selected.producerResult);
|
|
157
157
|
}
|
|
@@ -162,10 +162,18 @@ export default class ResourceSelector {
|
|
|
162
162
|
// not its readable text projection.
|
|
163
163
|
const sourceProjection = representation.attributes?.sourceProjection;
|
|
164
164
|
const sourceMimetype = typeof sourceProjection?.mimetype === "string" ? sourceProjection.mimetype : selected.mimetype;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
const binary = await MimetypeBinary.isBinaryMimetype(sourceMimetype, ctx.mimetypes);
|
|
166
|
+
if (binary) {
|
|
167
|
+
if (operation === "EDIT")
|
|
168
|
+
return PatternSelection.refuse("binary-edit-unsupported", 415, "Text edits do not author native bytes.", selection.scheme, operation);
|
|
169
|
+
const marker = ByteView.marker(selection.lineMarker);
|
|
170
|
+
if ("result" in marker)
|
|
171
|
+
return marker.result;
|
|
172
|
+
}
|
|
173
|
+
const resolvedMarker = this.resolveResourceLineMarker(selection, selected.content, operation, identity);
|
|
174
|
+
if ("result" in resolvedMarker)
|
|
175
|
+
return resolvedMarker.result;
|
|
176
|
+
if (binary) {
|
|
169
177
|
const byteSource = (storageAddress === undefined ? undefined : handler.byteSource?.(storageAddress, EntryAddressBinding.addressContext(ctx)))
|
|
170
178
|
?? await EntryCrud.storedByteSource(representation, selection.channel, ctx.mimetypes);
|
|
171
179
|
if (byteSource === undefined) {
|
|
@@ -175,19 +183,42 @@ export default class ResourceSelector {
|
|
|
175
183
|
if (size === null) {
|
|
176
184
|
return MutationEffects.failure("entry-not-found", 404, `No bytes exist at ${target}.`, {}, { target, retryable: false });
|
|
177
185
|
}
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
186
|
+
const window = LineMarkerOps.window(resolvedMarker.selection.lineMarker ?? { marks: [1, -1] }, size, "byte");
|
|
187
|
+
if (window.status !== 200)
|
|
188
|
+
return window;
|
|
189
|
+
let complete;
|
|
190
|
+
let bytes;
|
|
191
|
+
let matchedScopes;
|
|
192
|
+
if (selection.matcher !== null) {
|
|
193
|
+
const loaded = await ByteView.load(byteSource, target);
|
|
194
|
+
if (!("bytes" in loaded))
|
|
195
|
+
return loaded;
|
|
196
|
+
complete = loaded.bytes;
|
|
197
|
+
const match = await ByteView.match(selection.matcher, complete);
|
|
198
|
+
if (match.status >= 400)
|
|
199
|
+
return Results.assert(match);
|
|
200
|
+
const spans = PatternEdits.spans(match.matches ?? [], selection.lineMarker === null ? null : {
|
|
201
|
+
startLine: window.start ?? 1, startColumn: 1, endLine: window.end ?? 0, endColumn: 3,
|
|
202
|
+
});
|
|
203
|
+
if (spans.length === 0)
|
|
204
|
+
return Results.assert({ status: 204, matched: 0 });
|
|
205
|
+
bytes = Buffer.concat(spans.map(({ startLine, endLine, endColumn }) => complete.subarray(startLine - 1, endColumn === 1 ? endLine - 1 : endLine)));
|
|
206
|
+
matchedScopes = spans.map(({ startLine, endLine, endColumn }) => ({ marks: endColumn === 1 ? [startLine] : [startLine, endLine] }));
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
if (operation === "MOVE")
|
|
210
|
+
complete = size === 0 ? new Uint8Array() : await byteSource.read(1, size);
|
|
211
|
+
bytes = window.start === null || window.end === null ? new Uint8Array()
|
|
212
|
+
: complete?.subarray(window.start - 1, window.end) ?? await byteSource.read(window.start, window.end);
|
|
184
213
|
}
|
|
185
|
-
const bytes = await byteSource.read(start, end);
|
|
186
214
|
return {
|
|
187
215
|
...resolvedMarker.selection,
|
|
188
216
|
content: "",
|
|
189
217
|
completeContent: "",
|
|
190
218
|
bytes,
|
|
219
|
+
...(identity === undefined ? {} : { identity }),
|
|
220
|
+
...(matchedScopes === undefined ? {} : { matchedScopes }),
|
|
221
|
+
...(operation === "MOVE" ? { bytePrecondition: contentHash(complete) } : {}),
|
|
191
222
|
mimetype: sourceMimetype,
|
|
192
223
|
lineAnchorPrecondition: resolvedMarker.precondition,
|
|
193
224
|
};
|
|
@@ -202,14 +233,15 @@ export default class ResourceSelector {
|
|
|
202
233
|
}
|
|
203
234
|
const retained = visibleLines?.[selection.channel];
|
|
204
235
|
if (selection.matcher !== null) {
|
|
205
|
-
const matched = await this.#
|
|
236
|
+
const matched = await this.#matchedSpans(selection.matcher, resolvedMarker, selected, retained, operation, ctx, identity);
|
|
206
237
|
if ("result" in matched)
|
|
207
238
|
return matched.result;
|
|
208
239
|
return {
|
|
209
240
|
...resolvedMarker.selection,
|
|
210
|
-
content:
|
|
241
|
+
content: PatternEdits.text(selected.content, matched.spans),
|
|
242
|
+
...(identity === undefined ? {} : { identity }),
|
|
211
243
|
completeContent: selected.content,
|
|
212
|
-
|
|
244
|
+
matchedScopes: PatternEdits.replacements(matched.spans, "").map(({ marker }) => marker),
|
|
213
245
|
mimetype: selected.mimetype,
|
|
214
246
|
lineAnchorPrecondition: MutationEffects.mergeLineAnchorPreconditions(resolvedMarker.precondition, matched.precondition),
|
|
215
247
|
...(scopeNormalizations === undefined ? {} : { scopeNormalizations }),
|
|
@@ -218,36 +250,34 @@ export default class ResourceSelector {
|
|
|
218
250
|
return {
|
|
219
251
|
...resolvedMarker.selection,
|
|
220
252
|
content: retained === undefined ? content : LineSelection.retain(content, retained, startLine).content,
|
|
253
|
+
...(identity === undefined ? {} : { identity }),
|
|
221
254
|
completeContent: selected.content,
|
|
222
255
|
mimetype: selected.mimetype,
|
|
223
256
|
lineAnchorPrecondition: resolvedMarker.precondition,
|
|
224
257
|
...(scopeNormalizations === undefined ? {} : { scopeNormalizations }),
|
|
225
258
|
};
|
|
226
259
|
}
|
|
227
|
-
// {§copy-move-pattern} —
|
|
228
|
-
|
|
229
|
-
async #matchedLines(matcher, resolvedMarker, selected, retained, operation, ctx, identity) {
|
|
260
|
+
// {§copy-move-pattern} — selection and removal share the same source regions.
|
|
261
|
+
async #matchedSpans(matcher, resolvedMarker, selected, retained, operation, ctx, identity) {
|
|
230
262
|
const { selection } = resolvedMarker;
|
|
231
|
-
const dialect = PatternSelection.refuseDialect(matcher, selection.scheme, operation, selection.target.raw);
|
|
232
|
-
if (dialect !== null)
|
|
233
|
-
return { result: dialect };
|
|
234
263
|
const matched = await PatternSelection.match({
|
|
235
|
-
matcher, content: selected.content, mimetype: selected.mimetype,
|
|
264
|
+
matcher, content: selected.content, mimetype: selected.mimetype, target: selection.target,
|
|
265
|
+
...(retained === undefined ? {} : { visibleLines: retained }),
|
|
236
266
|
marks: selection.lineMarker?.marks, ctx, scheme: selection.scheme, operation,
|
|
237
267
|
});
|
|
238
268
|
if ("result" in matched)
|
|
239
269
|
return matched;
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
return { result: Results.assert({ status: 204, matched: 0, detail: `No line matched the pattern; nothing to ${operation === "COPY" ? "copy" : "move"}.` }) };
|
|
270
|
+
const { spans } = matched;
|
|
271
|
+
if (spans.length === 0) {
|
|
272
|
+
return { result: Results.assert({ status: 204, matched: 0 }) };
|
|
244
273
|
}
|
|
245
274
|
if (selection.manifest.textEditScopes !== true)
|
|
246
|
-
return {
|
|
275
|
+
return { spans, precondition: null };
|
|
247
276
|
const target = identity ?? MutationEffects.resourceAddress(selection);
|
|
248
277
|
const tokens = LineAnchors.tokens(target, selected.content);
|
|
278
|
+
const lines = PatternEdits.touchedLines(PatternEdits.replacements(spans, ""));
|
|
249
279
|
return {
|
|
250
|
-
|
|
280
|
+
spans,
|
|
251
281
|
precondition: { identity: target, checks: lines.flatMap((line) => tokens[line - 1] === undefined ? [] : [{ anchor: tokens[line - 1], line }]) },
|
|
252
282
|
};
|
|
253
283
|
}
|
|
@@ -276,7 +306,8 @@ export default class ResourceSelector {
|
|
|
276
306
|
if (read.status !== 200 || read.entry === null) {
|
|
277
307
|
throw new InvalidOperationResultError(`The '${selection.scheme}' scheme returned status ${read.status} without a source entry.`);
|
|
278
308
|
}
|
|
279
|
-
return { representation: read.entry, storageAddress
|
|
309
|
+
return { representation: read.entry, storageAddress,
|
|
310
|
+
identity: EntryManifest.channelPath(storageAddress, selection.channel, selection.manifest.defaultChannel) };
|
|
280
311
|
}
|
|
281
312
|
resolveResourceLineMarker(selection, content, operation, identity) {
|
|
282
313
|
if (!LineAnchors.hasAnchor(selection.lineMarker)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceSelector.js","sourceRoot":"","sources":["../../src/core/ResourceSelector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResourceSelector.js","sourceRoot":"","sources":["../../src/core/ResourceSelector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CopyStatement, EditStatement, LineMarker, MoveStatement, PlurnkStatement } from "@plurnk/plurnk-contracts";
|
|
2
2
|
import type SchemeRegistry from "./SchemeRegistry.ts";
|
|
3
3
|
import type LiveSubscriptions from "./LiveSubscriptions.ts";
|
|
4
4
|
import type ProposalLifecycle from "./ProposalLifecycle.ts";
|
|
@@ -37,9 +37,7 @@ export default class ResourceTransfers {
|
|
|
37
37
|
ctx: PlurnkSchemeContext;
|
|
38
38
|
}): Promise<DispatchResult>;
|
|
39
39
|
moveWithinChannel(statement: MoveStatement, source: SelectedSource, destination: AddressedResourceSelection, ctx: PlurnkSchemeContext): Promise<DispatchResult>;
|
|
40
|
-
removeMoveSource(statement: MoveStatement, source: ResolvedResourceSelection &
|
|
41
|
-
readonly matchedLines?: readonly number[];
|
|
42
|
-
}, ctx: PlurnkSchemeContext, lineAnchorPrecondition?: LineAnchorPrecondition | null): Promise<DispatchResult>;
|
|
40
|
+
removeMoveSource(statement: MoveStatement, source: ResolvedResourceSelection & Pick<SelectedSource, "matchedScopes" | "bytePrecondition">, ctx: PlurnkSchemeContext, lineAnchorPrecondition?: LineAnchorPrecondition | null): Promise<DispatchResult>;
|
|
43
41
|
writeDestination(statement: CopyStatement | MoveStatement, source: SelectedSource, destination: AddressedResourceSelection, ctx: PlurnkSchemeContext): Promise<DispatchResult>;
|
|
44
42
|
invokeEditBatch(selection: ResolvedResourceSelection, edits: ReadonlyArray<{
|
|
45
43
|
readonly marker: LineMarker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceTransfers.d.ts","sourceRoot":"","sources":["../../src/core/ResourceTransfers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ResourceTransfers.d.ts","sourceRoot":"","sources":["../../src/core/ResourceTransfers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { PathSyntax } from "@plurnk/plurnk-contracts";
|
|
2
1
|
import { InvalidOperationResultError, MimetypeClassifier } from "@plurnk/plurnk-schemes";
|
|
3
2
|
import { missDetail } from "./plurnk-uri.js";
|
|
4
|
-
import { assertResourceEffects, editReceipt, LineMarkerOps, MimetypeBinary, PathMimetype } from "../content/index.js";
|
|
3
|
+
import { assertResourceEffects, editReceipt, EditCollision, LineMarkerOps, MimetypeBinary, PathMimetype } from "../content/index.js";
|
|
4
|
+
import ByteView from "../content/byte-view.js";
|
|
5
|
+
import EntryCrud from "../schemes/_entry-crud.js";
|
|
6
|
+
import { contentHash } from "./content-hash.js";
|
|
5
7
|
import DbProjectionCaps from "./caps/DbProjectionCaps.js";
|
|
6
8
|
import SchemeCtxImpl from "./caps/SchemeCtxImpl.js";
|
|
7
9
|
import Results from "./results.js";
|
|
@@ -9,7 +11,6 @@ import EntryAddressBinding from "./EntryAddressBinding.js";
|
|
|
9
11
|
import EntryManifest from "../schemes/_entry-manifest.js";
|
|
10
12
|
import EntryReadable from "../schemes/_entry-readable.js";
|
|
11
13
|
import MutationEffects from "./MutationEffects.js";
|
|
12
|
-
import PatternEdits from "../content/pattern-edits.js";
|
|
13
14
|
// COPY and MOVE orchestration: source selection, destination writes, move settlement.
|
|
14
15
|
export default class ResourceTransfers {
|
|
15
16
|
#schemes;
|
|
@@ -70,11 +71,11 @@ export default class ResourceTransfers {
|
|
|
70
71
|
const result = await this.writeDestination(statement, selected, resolvedDestination, ctx);
|
|
71
72
|
return ResourceTransfers.#withMatched(MutationEffects.prependScopeNormalizations(result, selected.scopeNormalizations), selected);
|
|
72
73
|
}
|
|
73
|
-
// {§copy-move-pattern} — a pattern transfer reports how many
|
|
74
|
+
// {§copy-move-pattern} — a pattern transfer reports how many spans it selected.
|
|
74
75
|
static #withMatched(result, selected) {
|
|
75
|
-
if (selected.
|
|
76
|
+
if (selected.matchedScopes === undefined || result.status >= 300)
|
|
76
77
|
return result;
|
|
77
|
-
return Results.assert({ ...result, matched: selected.
|
|
78
|
+
return Results.assert({ ...result, matched: selected.matchedScopes.length });
|
|
78
79
|
}
|
|
79
80
|
async moveOrchestration({ statement, source, destination, ctx, }) {
|
|
80
81
|
// {§move-decomposition} — a MOVE reads its source exactly as COPY does and then retires
|
|
@@ -97,7 +98,7 @@ export default class ResourceTransfers {
|
|
|
97
98
|
return MutationEffects.failure("channel-derived", 400, `#${resolvedSource.channel} is derived from its source channel and cannot be moved; COPY it instead.`, {}, { scheme: resolvedSource.scheme, channel: resolvedSource.channel, operation: "MOVE", retryable: false });
|
|
98
99
|
}
|
|
99
100
|
// {§copy-move-pattern} — a curated source retires rows, not lines of its projection.
|
|
100
|
-
if (selected.
|
|
101
|
+
if (selected.matchedScopes !== undefined && ResourceTransfers.#curatedSource(resolvedSource)) {
|
|
101
102
|
return MutationEffects.failure("pattern-unsupported", 400, `MOVE cannot retire lines of the '${resolvedSource.scheme}' projection by pattern; COPY the lines and KILL its rows by pattern.`, {}, { scheme: resolvedSource.scheme, operation: "MOVE", retryable: false });
|
|
102
103
|
}
|
|
103
104
|
if (!ResourceTransfers.#curatedSource(resolvedSource)) {
|
|
@@ -162,7 +163,7 @@ export default class ResourceTransfers {
|
|
|
162
163
|
return ResourceTransfers.#withMatched(MutationEffects.withCombinedEffects(base, MutationEffects.effectsOf(sourceResult)), selected);
|
|
163
164
|
}
|
|
164
165
|
async moveWithinChannel(statement, source, destination, ctx) {
|
|
165
|
-
if (source.lineMarker === null && source.
|
|
166
|
+
if (source.lineMarker === null && source.matchedScopes === undefined) {
|
|
166
167
|
if (destination.lineMarker !== null) {
|
|
167
168
|
return MutationEffects.failure("move-region-overlap", 409, "MOVE cannot insert a whole channel into itself and then remove that channel.", {}, {
|
|
168
169
|
source: MutationEffects.resourceAddress(source),
|
|
@@ -175,6 +176,9 @@ export default class ResourceTransfers {
|
|
|
175
176
|
if (destination.lineMarker === null) {
|
|
176
177
|
return this.writeDestination(statement, source, destination, ctx);
|
|
177
178
|
}
|
|
179
|
+
if (source.bytes !== undefined) {
|
|
180
|
+
return this.#moveBytes(source, destination, ctx);
|
|
181
|
+
}
|
|
178
182
|
const resolvedDestination = this.#selection.resolveResourceLineMarker(destination, source.completeContent, "MOVE");
|
|
179
183
|
if ("result" in resolvedDestination)
|
|
180
184
|
return resolvedDestination.result;
|
|
@@ -191,11 +195,11 @@ export default class ResourceTransfers {
|
|
|
191
195
|
const effect = MutationEffects.pendingEffect(resolvedDestination.selection, "update");
|
|
192
196
|
return MutationEffects.finalizeEffects(moved, resolvedDestination.selection, [effect, ...removals.map(() => effect)]);
|
|
193
197
|
}
|
|
194
|
-
// The edits that take a scoped source out of its channel: the scope itself, or each
|
|
198
|
+
// The edits that take a scoped source out of its channel: the scope itself, or each span a
|
|
195
199
|
// pattern selected ({§copy-move-pattern}).
|
|
196
200
|
static #sourceRemovals(source, position) {
|
|
197
|
-
if (source.
|
|
198
|
-
return
|
|
201
|
+
if (source.matchedScopes !== undefined) {
|
|
202
|
+
return source.matchedScopes.map((marker) => ({ marker, body: "", position }));
|
|
199
203
|
}
|
|
200
204
|
if (source.lineMarker === null)
|
|
201
205
|
throw new InvalidOperationResultError("A whole-channel MOVE source has no removal edits.");
|
|
@@ -208,8 +212,19 @@ export default class ResourceTransfers {
|
|
|
208
212
|
return source.manifest.category === "logging";
|
|
209
213
|
}
|
|
210
214
|
async removeMoveSource(statement, source, ctx, lineAnchorPrecondition = null) {
|
|
211
|
-
|
|
212
|
-
|
|
215
|
+
if (source.bytePrecondition !== undefined) {
|
|
216
|
+
const current = await this.#selection.selectSource({ ...source, lineMarker: null, matcher: null }, ctx, "COPY");
|
|
217
|
+
if (MutationEffects.isDispatchResult(current))
|
|
218
|
+
return current;
|
|
219
|
+
if (current.bytes === undefined || contentHash(current.bytes) !== source.bytePrecondition) {
|
|
220
|
+
return EditCollision.result(MutationEffects.resourceAddress(source));
|
|
221
|
+
}
|
|
222
|
+
if (source.lineMarker !== null || source.matchedScopes !== undefined) {
|
|
223
|
+
return this.#moveBytes({ ...current, ...source }, null, ctx);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const effect = MutationEffects.pendingEffect(source, source.lineMarker === null && source.matchedScopes === undefined ? "delete" : "update");
|
|
227
|
+
if (source.matchedScopes !== undefined) {
|
|
213
228
|
const removals = ResourceTransfers.#sourceRemovals(source, statement.position);
|
|
214
229
|
const edited = await this.invokeEditBatch(source, removals, ctx, lineAnchorPrecondition);
|
|
215
230
|
return MutationEffects.finalizeEffects(edited, source, removals.map(() => effect));
|
|
@@ -302,6 +317,11 @@ export default class ResourceTransfers {
|
|
|
302
317
|
let creationContent = source.content;
|
|
303
318
|
let creationScopeNormalizations;
|
|
304
319
|
if (destination.lineMarker !== null && destinationChannel === undefined) {
|
|
320
|
+
if (source.bytes !== undefined) {
|
|
321
|
+
const marker = ByteView.marker(destination.lineMarker);
|
|
322
|
+
if ("result" in marker)
|
|
323
|
+
return marker.result;
|
|
324
|
+
}
|
|
305
325
|
// {§fs-write-surface} {§empty-mutation-scope} — creation has an
|
|
306
326
|
// ordinary empty pre-mutation value. Resolve and apply the authored
|
|
307
327
|
// destination scope to that value; no source-length allowlist exists.
|
|
@@ -378,16 +398,15 @@ export default class ResourceTransfers {
|
|
|
378
398
|
body: creationContent,
|
|
379
399
|
}], parseIssues,
|
|
380
400
|
// {§edit-receipt-anchored-context} — the destination's READ identity
|
|
381
|
-
destination.channel
|
|
382
|
-
? EntryManifest.toPath(destination.scheme, storageAddress.authority, storageAddress.pathname)
|
|
383
|
-
: `${EntryManifest.toPath(destination.scheme, storageAddress.authority, storageAddress.pathname)}#${PathSyntax.escapeTarget(destination.channel)}`));
|
|
401
|
+
EntryManifest.channelPath(storageAddress, destination.channel, destination.manifest.defaultChannel)));
|
|
384
402
|
return MutationEffects.prependScopeNormalizations(MutationEffects.finalizeEffects(materialized, destination, [destinationEffect]), creationScopeNormalizations);
|
|
385
403
|
}
|
|
386
404
|
// {§binary-parity} — splice source bytes into the destination's named byte window and re-write the
|
|
387
405
|
// whole resource. `<c,d>` replaces bytes c..d (1-indexed, inclusive); `<c>` inserts at byte c (before
|
|
388
406
|
// it, or after it with a trailing position; `<-1>` appends). Every byte outside the window is kept.
|
|
389
|
-
async #spliceBytes(handler, storageAddress, destination, existing, srcBytes, mimetype, destinationEffect, ctx) {
|
|
390
|
-
const byteSource = handler.byteSource?.(storageAddress, EntryAddressBinding.addressContext(ctx))
|
|
407
|
+
async #spliceBytes(handler, storageAddress, destination, existing, srcBytes, mimetype, destinationEffect, ctx, removals = [], expectedHash) {
|
|
408
|
+
const byteSource = handler.byteSource?.(storageAddress, EntryAddressBinding.addressContext(ctx))
|
|
409
|
+
?? (existing === null ? undefined : await EntryCrud.storedByteSource(existing, destination.channel, ctx.mimetypes));
|
|
391
410
|
if (byteSource === undefined) {
|
|
392
411
|
return MutationEffects.failure("binary-region-unsupported", 415, `Channel #${destination.channel} is binary and its scheme keeps no bytes to splice.`, {}, { channel: destination.channel, mimetype, retryable: false });
|
|
393
412
|
}
|
|
@@ -395,43 +414,47 @@ export default class ResourceTransfers {
|
|
|
395
414
|
if (size === null) {
|
|
396
415
|
return MutationEffects.failure("entry-not-found", 404, `No bytes exist at ${MutationEffects.resourceAddress(destination)}.`, {}, { destination: MutationEffects.resourceAddress(destination), retryable: false });
|
|
397
416
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
else {
|
|
415
|
-
const c = marks.length === 1 && marks[0] !== -1 ? marks[0] : size + 1;
|
|
416
|
-
if (!(c >= 1 && c <= size + 1)) {
|
|
417
|
-
return MutationEffects.failure("range-not-satisfiable", 416, `Byte position <${c}> is outside the available 1..${size + 1}.`, {}, { channel: destination.channel, unit: "byte", available: size, retryable: false });
|
|
418
|
-
}
|
|
419
|
-
headEnd = c - 1;
|
|
420
|
-
tailStart = c;
|
|
421
|
-
}
|
|
422
|
-
const head = headEnd >= 1 ? await byteSource.read(1, headEnd) : new Uint8Array(0);
|
|
423
|
-
const tail = tailStart <= size ? await byteSource.read(tailStart, size) : new Uint8Array(0);
|
|
424
|
-
const result = new Uint8Array(head.length + srcBytes.length + tail.length);
|
|
425
|
-
result.set(head, 0);
|
|
426
|
-
result.set(srcBytes, head.length);
|
|
427
|
-
result.set(tail, head.length + srcBytes.length);
|
|
417
|
+
const marker = ByteView.marker(destination.lineMarker);
|
|
418
|
+
if ("result" in marker)
|
|
419
|
+
return marker.result;
|
|
420
|
+
if (marker.marker === null)
|
|
421
|
+
throw new InvalidOperationResultError("A byte splice requires destination coordinates.");
|
|
422
|
+
const original = size === 0 ? new Uint8Array() : await byteSource.read(1, size);
|
|
423
|
+
if (expectedHash !== undefined && contentHash(original) !== expectedHash)
|
|
424
|
+
return EditCollision.result(MutationEffects.resourceAddress(destination));
|
|
425
|
+
const result = ByteView.splice(original, [
|
|
426
|
+
{ marker: marker.marker, bytes: srcBytes },
|
|
427
|
+
...removals.map((marker) => ({ marker, bytes: new Uint8Array() })),
|
|
428
|
+
]);
|
|
429
|
+
if ("result" in result)
|
|
430
|
+
return result.result;
|
|
431
|
+
if (Buffer.from(original).equals(result.bytes))
|
|
432
|
+
return { status: 304 };
|
|
428
433
|
const channels = {
|
|
429
434
|
...(existing?.channels ?? {}),
|
|
430
|
-
[destination.channel]: { content: "", bytes: result, mimetype },
|
|
435
|
+
[destination.channel]: { content: "", bytes: result.bytes, mimetype },
|
|
431
436
|
};
|
|
432
437
|
const written = await this.#writeEntry(destination.scheme, storageAddress, { channels }, ctx);
|
|
433
438
|
return MutationEffects.finalizeEffects(Results.assert(written), destination, [destinationEffect]);
|
|
434
439
|
}
|
|
440
|
+
// {§binary-parity}: source removal is a byte splice, not an empty text EDIT.
|
|
441
|
+
async #moveBytes(source, destination, ctx) {
|
|
442
|
+
const removals = source.matchedScopes ?? (source.lineMarker === null ? [] : [source.lineMarker]);
|
|
443
|
+
if (removals.length === 0)
|
|
444
|
+
throw new InvalidOperationResultError("A scoped byte MOVE has no removal coordinates.");
|
|
445
|
+
const target = destination ?? { ...source, matcher: null, lineMarker: removals[0] };
|
|
446
|
+
const handler = this.#schemes.get(source.scheme, ctx.workspaceId);
|
|
447
|
+
const binding = await this.#resolveDataEntryAddress({ target: source.target, routedScheme: source.scheme, handler,
|
|
448
|
+
manifest: source.manifest, ctx, access: "write" });
|
|
449
|
+
if (binding.result !== null)
|
|
450
|
+
return binding.result;
|
|
451
|
+
if (binding.address === null)
|
|
452
|
+
return MutationEffects.failure("entry-not-found", 404, "The MOVE source could not be resolved for deletion.");
|
|
453
|
+
const read = await this.#readEntry(source.scheme, binding.address, ctx);
|
|
454
|
+
if (read.status >= 400)
|
|
455
|
+
return read;
|
|
456
|
+
return this.#spliceBytes(handler, binding.address, target, read.entry, destination === null ? new Uint8Array() : source.bytes, source.mimetype, MutationEffects.pendingEffect(target, "update"), ctx, destination === null ? removals.slice(1) : removals, source.bytePrecondition);
|
|
457
|
+
}
|
|
435
458
|
async invokeEditBatch(selection, edits, ctx, precondition = null) {
|
|
436
459
|
const handler = this.#schemes.get(selection.scheme, ctx.workspaceId);
|
|
437
460
|
if (typeof handler?.editBatch !== "function") {
|
|
@@ -562,7 +585,8 @@ export default class ResourceTransfers {
|
|
|
562
585
|
const removed = await this.removeMoveSource(statement, {
|
|
563
586
|
...resolvedSource,
|
|
564
587
|
lineMarker: resolvedSource.lineMarker,
|
|
565
|
-
...(deferred.
|
|
588
|
+
...(deferred.matchedScopes === undefined ? {} : { matchedScopes: deferred.matchedScopes }),
|
|
589
|
+
...(deferred.bytePrecondition === undefined ? {} : { bytePrecondition: deferred.bytePrecondition }),
|
|
566
590
|
}, ctx, deferred.lineAnchorPrecondition);
|
|
567
591
|
if (removed.status >= 400) {
|
|
568
592
|
return {
|