@superbee/core 0.1.6 → 0.2.0-pre.10
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/README.md +127 -0
- package/dist/artifact-contract.d.ts +90 -0
- package/dist/artifact-contract.d.ts.map +1 -0
- package/dist/artifact-contract.js +205 -0
- package/dist/artifact-contract.js.map +1 -0
- package/dist/backend.d.ts +16 -1
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +112 -47
- package/dist/backend.js.map +1 -1
- package/dist/bundle-ops.d.ts +42 -0
- package/dist/bundle-ops.d.ts.map +1 -0
- package/dist/bundle-ops.js +88 -0
- package/dist/bundle-ops.js.map +1 -0
- package/dist/bundle.d.ts +10 -28
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +12 -69
- package/dist/bundle.js.map +1 -1
- package/dist/document-codec.d.ts +6 -1
- package/dist/document-codec.d.ts.map +1 -1
- package/dist/document-codec.js +8 -4
- package/dist/document-codec.js.map +1 -1
- package/dist/document-field-actions.d.ts +107 -0
- package/dist/document-field-actions.d.ts.map +1 -0
- package/dist/document-field-actions.js +302 -0
- package/dist/document-field-actions.js.map +1 -0
- package/dist/document-mutation.d.ts +61 -3
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +116 -25
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts +0 -1
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +7 -4
- package/dist/document-write-policy.js.map +1 -1
- package/dist/engine.d.ts +3 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +6 -4
- package/dist/engine.js.map +1 -1
- package/dist/file-journaled-backend-internal.d.ts +19 -0
- package/dist/file-journaled-backend-internal.d.ts.map +1 -0
- package/dist/file-journaled-backend-internal.js +10 -0
- package/dist/file-journaled-backend-internal.js.map +1 -0
- package/dist/file-journaled-backend.d.ts +162 -0
- package/dist/file-journaled-backend.d.ts.map +1 -0
- package/dist/file-journaled-backend.js +1113 -0
- package/dist/file-journaled-backend.js.map +1 -0
- package/dist/filesystem-host.d.ts +15 -0
- package/dist/filesystem-host.d.ts.map +1 -0
- package/dist/filesystem-host.js +20 -0
- package/dist/filesystem-host.js.map +1 -0
- package/dist/filesystem-identity.d.ts +86 -4
- package/dist/filesystem-identity.d.ts.map +1 -1
- package/dist/filesystem-identity.js +338 -102
- package/dist/filesystem-identity.js.map +1 -1
- package/dist/filesystem-lock.d.ts +16 -3
- package/dist/filesystem-lock.d.ts.map +1 -1
- package/dist/filesystem-lock.js +323 -77
- package/dist/filesystem-lock.js.map +1 -1
- package/dist/filesystem-push-role.d.ts +77 -0
- package/dist/filesystem-push-role.d.ts.map +1 -0
- package/dist/filesystem-push-role.js +165 -0
- package/dist/filesystem-push-role.js.map +1 -0
- package/dist/filesystem.d.ts +17 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +18 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/freshness.d.ts +10 -7
- package/dist/freshness.d.ts.map +1 -1
- package/dist/freshness.js +14 -11
- package/dist/freshness.js.map +1 -1
- package/dist/frontmatter-contract.d.ts +2 -2
- package/dist/frontmatter-contract.js +2 -2
- package/dist/frontmatter.d.ts +11 -1
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +20 -7
- package/dist/frontmatter.js.map +1 -1
- package/dist/governed-body-write.d.ts +106 -0
- package/dist/governed-body-write.d.ts.map +1 -0
- package/dist/governed-body-write.js +251 -0
- package/dist/governed-body-write.js.map +1 -0
- package/dist/heads-digest.d.ts +32 -0
- package/dist/heads-digest.d.ts.map +1 -0
- package/dist/heads-digest.js +37 -0
- package/dist/heads-digest.js.map +1 -0
- package/dist/host-policy-snapshot.d.ts +9 -0
- package/dist/host-policy-snapshot.d.ts.map +1 -0
- package/dist/host-policy-snapshot.js +33 -0
- package/dist/host-policy-snapshot.js.map +1 -0
- package/dist/host-text.d.ts +31 -0
- package/dist/host-text.d.ts.map +1 -0
- package/dist/host-text.js +77 -0
- package/dist/host-text.js.map +1 -0
- package/dist/hosted-transport/answer-rows.d.ts +216 -0
- package/dist/hosted-transport/answer-rows.d.ts.map +1 -0
- package/dist/hosted-transport/answer-rows.js +396 -0
- package/dist/hosted-transport/answer-rows.js.map +1 -0
- package/dist/hosted-transport/carrier.d.ts +142 -0
- package/dist/hosted-transport/carrier.d.ts.map +1 -0
- package/dist/hosted-transport/carrier.js +241 -0
- package/dist/hosted-transport/carrier.js.map +1 -0
- package/dist/hosted-transport/history-pages.d.ts +55 -0
- package/dist/hosted-transport/history-pages.d.ts.map +1 -0
- package/dist/hosted-transport/history-pages.js +69 -0
- package/dist/hosted-transport/history-pages.js.map +1 -0
- package/dist/hosted-transport/index.d.ts +18 -0
- package/dist/hosted-transport/index.d.ts.map +1 -0
- package/dist/hosted-transport/index.js +18 -0
- package/dist/hosted-transport/index.js.map +1 -0
- package/dist/hosted-transport/operations.d.ts +85 -0
- package/dist/hosted-transport/operations.d.ts.map +1 -0
- package/dist/hosted-transport/operations.js +128 -0
- package/dist/hosted-transport/operations.js.map +1 -0
- package/dist/hosted-transport/paged-reads.d.ts +87 -0
- package/dist/hosted-transport/paged-reads.d.ts.map +1 -0
- package/dist/hosted-transport/paged-reads.js +238 -0
- package/dist/hosted-transport/paged-reads.js.map +1 -0
- package/dist/hosted-transport/read-adapter.d.ts +250 -0
- package/dist/hosted-transport/read-adapter.d.ts.map +1 -0
- package/dist/hosted-transport/read-adapter.js +557 -0
- package/dist/hosted-transport/read-adapter.js.map +1 -0
- package/dist/hosted-transport/root-write.d.ts +114 -0
- package/dist/hosted-transport/root-write.d.ts.map +1 -0
- package/dist/hosted-transport/root-write.js +171 -0
- package/dist/hosted-transport/root-write.js.map +1 -0
- package/dist/hosted-transport/whole-document-transport.d.ts +174 -0
- package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -0
- package/dist/hosted-transport/whole-document-transport.js +411 -0
- package/dist/hosted-transport/whole-document-transport.js.map +1 -0
- package/dist/index.d.ts +29 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -6
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +197 -0
- package/dist/indexeddb-backend.d.ts.map +1 -0
- package/dist/indexeddb-backend.js +1183 -0
- package/dist/indexeddb-backend.js.map +1 -0
- package/dist/journaled-backend.d.ts +467 -0
- package/dist/journaled-backend.d.ts.map +1 -0
- package/dist/journaled-backend.js +389 -0
- package/dist/journaled-backend.js.map +1 -0
- package/dist/kind-coverage.d.ts +99 -0
- package/dist/kind-coverage.d.ts.map +1 -0
- package/dist/kind-coverage.js +186 -0
- package/dist/kind-coverage.js.map +1 -0
- package/dist/kind-field-mutation.d.ts +15 -0
- package/dist/kind-field-mutation.d.ts.map +1 -0
- package/dist/kind-field-mutation.js +160 -0
- package/dist/kind-field-mutation.js.map +1 -0
- package/dist/kinds.d.ts +31 -1
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +86 -17
- package/dist/kinds.js.map +1 -1
- package/dist/links.d.ts +1 -1
- package/dist/links.d.ts.map +1 -1
- package/dist/links.js +5 -10
- package/dist/links.js.map +1 -1
- package/dist/managed-document-metadata.d.ts +2 -0
- package/dist/managed-document-metadata.d.ts.map +1 -0
- package/dist/managed-document-metadata.js +9 -0
- package/dist/managed-document-metadata.js.map +1 -0
- package/dist/meaningful-change-time.d.ts +6 -6
- package/dist/meaningful-change-time.d.ts.map +1 -1
- package/dist/meaningful-change-time.js +12 -13
- package/dist/meaningful-change-time.js.map +1 -1
- package/dist/memory-backend.d.ts +2 -2
- package/dist/memory-backend.d.ts.map +1 -1
- package/dist/memory-backend.js +32 -16
- package/dist/memory-backend.js.map +1 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +2 -2
- package/dist/mutation.js.map +1 -1
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +2 -1
- package/dist/page.js.map +1 -1
- package/dist/paths.d.ts +6 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +35 -33
- package/dist/paths.js.map +1 -1
- package/dist/platform.d.ts +239 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +82 -0
- package/dist/platform.js.map +1 -0
- package/dist/portable-export.d.ts +119 -0
- package/dist/portable-export.d.ts.map +1 -0
- package/dist/portable-export.js +501 -0
- package/dist/portable-export.js.map +1 -0
- package/dist/publication-filesystem.d.ts +1 -1
- package/dist/publication-filesystem.d.ts.map +1 -1
- package/dist/publication-filesystem.js +1 -1
- package/dist/publication-filesystem.js.map +1 -1
- package/dist/query-filter.d.ts +7 -2
- package/dist/query-filter.d.ts.map +1 -1
- package/dist/query-filter.js +24 -1
- package/dist/query-filter.js.map +1 -1
- package/dist/query-order.d.ts +22 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +42 -0
- package/dist/query-order.js.map +1 -0
- package/dist/recipes.d.ts +3 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +4 -4
- package/dist/recipes.js.map +1 -1
- package/dist/remote-backend.d.ts +114 -22
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +285 -44
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-document-codec.d.ts +15 -0
- package/dist/remote-document-codec.d.ts.map +1 -0
- package/dist/remote-document-codec.js +103 -0
- package/dist/remote-document-codec.js.map +1 -0
- package/dist/remote-error.d.ts +38 -0
- package/dist/remote-error.d.ts.map +1 -0
- package/dist/remote-error.js +59 -0
- package/dist/remote-error.js.map +1 -0
- package/dist/remote-operations.d.ts +63 -0
- package/dist/remote-operations.d.ts.map +1 -0
- package/dist/remote-operations.js +125 -0
- package/dist/remote-operations.js.map +1 -0
- package/dist/remote-parsers.d.ts +86 -0
- package/dist/remote-parsers.d.ts.map +1 -0
- package/dist/remote-parsers.js +181 -0
- package/dist/remote-parsers.js.map +1 -0
- package/dist/remote.d.ts +7 -2
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +6 -1
- package/dist/remote.js.map +1 -1
- package/dist/sha256.d.ts +21 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +114 -0
- package/dist/sha256.js.map +1 -0
- package/dist/storage.d.ts +8 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +11 -2
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +40 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/uncertain-write.d.ts +178 -0
- package/dist/uncertain-write.d.ts.map +1 -0
- package/dist/uncertain-write.js +198 -0
- package/dist/uncertain-write.js.map +1 -0
- package/dist/version-transport.d.ts +7 -0
- package/dist/version-transport.d.ts.map +1 -1
- package/dist/version-transport.js +9 -0
- package/dist/version-transport.js.map +1 -1
- package/dist/versioning.d.ts +18 -7
- package/dist/versioning.d.ts.map +1 -1
- package/dist/versioning.js +23 -14
- package/dist/versioning.js.map +1 -1
- package/package.json +75 -4
package/dist/remote-backend.js
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
* `RemoteBackend` — a {@link StorageBackend} implemented over the wire-protocol v0
|
|
3
3
|
* reference contract (`docs/WIRE-PROTOCOL.md`, `@superbee/server`).
|
|
4
4
|
*
|
|
5
|
-
* This is the client half of the seam over HTTP: every method maps directly to a wire endpoint
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* This is the client half of the seam over HTTP: every method maps directly to a wire endpoint
|
|
6
|
+
* (a guarded document write may first ask `GET /v0/capabilities` whether the host records
|
|
7
|
+
* outcomes; see {@link RemoteBackendOptions.maxRetries}), and response versions remain the same
|
|
8
|
+
* content-addressed {@link Version} tokens local backends produce. Tri-backend contract tests pin
|
|
9
|
+
* that invariant.
|
|
8
10
|
*
|
|
9
11
|
* Zero new dependencies: it calls an injectable {@link FetchLike} transport
|
|
10
|
-
* (defaulting to the global `fetch`, available
|
|
12
|
+
* (defaulting to the global `fetch`, available in every supported Node runtime) with a constructed
|
|
11
13
|
* `Request`. That means the SAME adapter runs against a real HTTP server, or — in
|
|
12
14
|
* tests — directly against an in-process `createRouter(bundle)` function with no
|
|
13
15
|
* sockets: `createRouter` returns exactly the `(req: Request) => Promise<Response>`
|
|
@@ -42,27 +44,16 @@
|
|
|
42
44
|
*/
|
|
43
45
|
import { DEFAULT_BLOB_CONTENT_TYPE } from "./content-type.js";
|
|
44
46
|
import { InvalidInputError } from "./errors.js";
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
export
|
|
55
|
-
/** The envelope's `code` field, or a status-derived guess when the envelope is missing/unparseable. */
|
|
56
|
-
code;
|
|
57
|
-
/** The raw HTTP status that produced this error. */
|
|
58
|
-
status;
|
|
59
|
-
constructor(message, code, status) {
|
|
60
|
-
super(message);
|
|
61
|
-
this.name = "RemoteError";
|
|
62
|
-
this.code = code;
|
|
63
|
-
this.status = status;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
47
|
+
import { MalformedDocumentError } from "./frontmatter-contract.js";
|
|
48
|
+
import { encodeRemoteDocument } from "./remote-document-codec.js";
|
|
49
|
+
import { RemoteError, malformed } from "./remote-error.js";
|
|
50
|
+
import { SNAPSHOT_TRUNCATED, parseHeadsAnswer, readSnapshotStream } from "./remote-parsers.js";
|
|
51
|
+
import { assertSafeBlobKey, assertSafeConceptId, assertSafeReservedDir, assertSafeReservedFilename, compareStorageKeys } from "./paths.js";
|
|
52
|
+
import { isRequestIdentity, mintRequestId } from "./uncertain-write.js";
|
|
53
|
+
import { VersionConflict, isContentVersion, stripETagWrapper } from "./version-transport.js";
|
|
54
|
+
// The typed rejection lives in `remote-error.ts`, shared with the heads and snapshot parsers this
|
|
55
|
+
// backend calls; it stays importable from here for every existing consumer.
|
|
56
|
+
export { RemoteError } from "./remote-error.js";
|
|
66
57
|
/** An ENOENT-shaped rejection so missing-document handling matches the local adapters. */
|
|
67
58
|
function notFound(id) {
|
|
68
59
|
const err = new Error(`no concept document '${id}'`);
|
|
@@ -107,6 +98,36 @@ function assertValidExpectedVersion(expectedVersion) {
|
|
|
107
98
|
"(expect-absent create), or omit the option entirely (unconditional write)");
|
|
108
99
|
}
|
|
109
100
|
}
|
|
101
|
+
/** The header that carries a write's durable request identity (`docs/WIRE-PROTOCOL.md`). */
|
|
102
|
+
const IDENTITY_HEADER = "Idempotency-Key";
|
|
103
|
+
/** The wire's `400 USAGE` message from a host that records no outcomes, answering any request that carries a key. */
|
|
104
|
+
const IDENTITY_UNSUPPORTED = "request identity is not supported by this host";
|
|
105
|
+
/** Whether `res` is a host's refusal of request identity itself, as opposed to a recorded or document refusal. */
|
|
106
|
+
async function refusesIdentity(res) {
|
|
107
|
+
try {
|
|
108
|
+
const envelope = (await res.json());
|
|
109
|
+
return envelope?.error?.code === "USAGE" && envelope.error.message === IDENTITY_UNSUPPORTED;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Reject a request identity the wire would refuse before any request is sent, so a malformed
|
|
117
|
+
* key is a caller-side `InvalidInputError` rather than a `400` the caller might mistake for a
|
|
118
|
+
* recorded refusal. The rule is core's `isRequestIdentity`, shared with the reference router.
|
|
119
|
+
*/
|
|
120
|
+
function assertRequestIdentity(requestId) {
|
|
121
|
+
if (!isRequestIdentity(requestId)) {
|
|
122
|
+
throw new InvalidInputError("requestId must be 1 to 128 printable ASCII characters with no space to travel as Idempotency-Key");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** The lookup route's `200` body: a recorded outcome, never `unknown`. */
|
|
126
|
+
const RECORDED_OUTCOME_KINDS = new Set(["committed", "conflict", "refused"]);
|
|
127
|
+
/** Quote a bare digest for `If-None-Match`; an already quoted or weak form passes through. */
|
|
128
|
+
function etagForm(token) {
|
|
129
|
+
return token.startsWith('"') || token.startsWith("W/") ? token : `"${token}"`;
|
|
130
|
+
}
|
|
110
131
|
/**
|
|
111
132
|
* Transient HTTP statuses worth retrying: 500 (a Cloudflare D1 cold-start surfaces as a 500
|
|
112
133
|
* "storage caused object to be reset" the first time a hibernated database is hit), plus the edge
|
|
@@ -114,6 +135,18 @@ function assertValidExpectedVersion(expectedVersion) {
|
|
|
114
135
|
* REAL result, never retried; 501/505 are terminal server bugs, not transient, so also excluded.
|
|
115
136
|
*/
|
|
116
137
|
const RETRIABLE_STATUS = new Set([500, 502, 503, 504]);
|
|
138
|
+
/** A `500` naming a stored document that does not parse: a retry reads the same bytes again. */
|
|
139
|
+
async function namesMalformedDocument(res) {
|
|
140
|
+
if (res.status !== 500)
|
|
141
|
+
return false;
|
|
142
|
+
try {
|
|
143
|
+
const envelope = (await res.clone().json());
|
|
144
|
+
return typeof envelope?.error?.details?.malformed?.reason === "string";
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
117
150
|
/** Retry-backoff timing: exponential base doubling, capped, with jitter to avoid a thundering herd. */
|
|
118
151
|
const RETRY_BASE_MS = 150;
|
|
119
152
|
const RETRY_CAP_MS = 2000;
|
|
@@ -159,6 +192,8 @@ export class RemoteBackend {
|
|
|
159
192
|
fetchImpl;
|
|
160
193
|
authToken;
|
|
161
194
|
maxRetries;
|
|
195
|
+
/** The pending or settled answer to whether this host records outcomes; see {@link recordsOutcomes}. */
|
|
196
|
+
operationsSupport;
|
|
162
197
|
constructor(options) {
|
|
163
198
|
this.baseUrl = trimTrailingSlashes(options.baseUrl);
|
|
164
199
|
this.bundle = options.bundle;
|
|
@@ -166,11 +201,15 @@ export class RemoteBackend {
|
|
|
166
201
|
this.authToken = options.authToken;
|
|
167
202
|
this.maxRetries = options.maxRetries ?? 3;
|
|
168
203
|
}
|
|
204
|
+
/** The authority's base URL as configured, without a trailing slash. */
|
|
205
|
+
get origin() {
|
|
206
|
+
return this.baseUrl;
|
|
207
|
+
}
|
|
169
208
|
/** Build the absolute URL for a bundle-relative wire path (e.g. `/docs/concepts/x`). */
|
|
170
209
|
url(bundleRelativePath) {
|
|
171
210
|
return `${this.baseUrl}/v0/bundles/${encodeURIComponent(this.bundle)}${bundleRelativePath}`;
|
|
172
211
|
}
|
|
173
|
-
async send(
|
|
212
|
+
async send(path, init = {}, scope = "bundle") {
|
|
174
213
|
// Attach Authorization on EVERY request when an authToken is configured — the reference
|
|
175
214
|
// server ignores the header (no auth enforced), while a separate gated deployment may
|
|
176
215
|
// require it. Merged onto any caller-supplied headers rather than overwriting `init`.
|
|
@@ -179,20 +218,29 @@ export class RemoteBackend {
|
|
|
179
218
|
headers.set("Authorization", `Bearer ${this.authToken}`);
|
|
180
219
|
init = { ...init, headers };
|
|
181
220
|
}
|
|
182
|
-
|
|
221
|
+
// `deployment` paths (`/v0/capabilities`) sit outside the bundle prefix.
|
|
222
|
+
const url = scope === "bundle" ? this.url(path) : `${this.baseUrl}${path}`;
|
|
183
223
|
// Retry TRANSIENT failures — a transient 5xx (notably a Cloudflare D1 cold-start's 500 "storage
|
|
184
224
|
// object reset" when a hibernated database is first hit; also 502/503/504 from the edge) or a
|
|
185
225
|
// network/transport error — with exponential backoff + jitter, so a hibernated-backend hiccup is
|
|
186
226
|
// transparent instead of a hard failure. A REAL result (2xx, or 4xx incl. 412 VersionConflict,
|
|
187
|
-
// or 401) returns/throws immediately, never retried.
|
|
188
|
-
//
|
|
189
|
-
//
|
|
190
|
-
//
|
|
191
|
-
//
|
|
227
|
+
// or 401) returns/throws immediately, never retried. A retried read is idempotent. `send`
|
|
228
|
+
// rebuilds the Request per attempt from the same `init` (bodies are strings/bytes, so reusable —
|
|
229
|
+
// no consumed-stream hazard), so every attempt carries the same headers, `Idempotency-Key`
|
|
230
|
+
// included.
|
|
231
|
+
//
|
|
232
|
+
// A write that carries `Idempotency-Key` is therefore retried as a true replay, answered from
|
|
233
|
+
// the authority's recorded outcome while it keeps that record: a retry after a lost response
|
|
234
|
+
// can neither apply twice nor surface a spurious conflict against its own earlier application.
|
|
235
|
+
// `write` and `delete` attach one to guarded document writes on a host with `operations` (see
|
|
236
|
+
// `maxRetries` for which). A guarded write without one lands the same version or a conflict
|
|
237
|
+
// (possibly SPURIOUS — a prior attempt may have committed before its response was lost), except
|
|
238
|
+
// that a document returned in between to exactly the state its premise names (the same bytes
|
|
239
|
+
// hash to the same version) lets the retry apply again over that change.
|
|
192
240
|
for (let attempt = 0;; attempt++) {
|
|
193
241
|
try {
|
|
194
242
|
const res = await this.fetchImpl(new Request(url, init));
|
|
195
|
-
if (RETRIABLE_STATUS.has(res.status) && attempt < this.maxRetries) {
|
|
243
|
+
if (RETRIABLE_STATUS.has(res.status) && attempt < this.maxRetries && !(await namesMalformedDocument(res))) {
|
|
196
244
|
await delay(retryDelayMs(attempt));
|
|
197
245
|
continue;
|
|
198
246
|
}
|
|
@@ -221,6 +269,12 @@ export class RemoteBackend {
|
|
|
221
269
|
const actual = envelope?.error?.details?.actual ?? null;
|
|
222
270
|
return new VersionConflict(fallbackId, expected, actual);
|
|
223
271
|
}
|
|
272
|
+
const malformedDoc = envelope?.error?.details?.malformed;
|
|
273
|
+
if (malformedDoc && typeof malformedDoc.reason === "string") {
|
|
274
|
+
// The server could read the request but not the stored document: the same failure a local
|
|
275
|
+
// scan raises, so `onSkip` callers can set this one document aside.
|
|
276
|
+
return new MalformedDocumentError(typeof malformedDoc.id === "string" ? malformedDoc.id : fallbackId, new Error(malformedDoc.reason));
|
|
277
|
+
}
|
|
224
278
|
const message = envelope?.error?.message ?? `wire request failed with status ${res.status}`;
|
|
225
279
|
// The envelope's own `code` wins when present (every route in this repo's servers emits
|
|
226
280
|
// one); a status-derived guess covers a malformed/absent envelope or a conformant-but-
|
|
@@ -285,16 +339,162 @@ export class RemoteBackend {
|
|
|
285
339
|
headers["If-Match"] = options.expectedVersion;
|
|
286
340
|
if (options.actor)
|
|
287
341
|
headers["X-Actor"] = options.actor;
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
342
|
+
// Captured before the capability question can yield, so the payload is the document as it
|
|
343
|
+
// stood when `write` was called and an unencodable one is refused before any request.
|
|
344
|
+
const body = encodeRemoteDocument(doc.frontmatter, doc.body ?? "");
|
|
345
|
+
let minted = false;
|
|
346
|
+
if (options.requestId !== undefined) {
|
|
347
|
+
assertRequestIdentity(options.requestId);
|
|
348
|
+
headers[IDENTITY_HEADER] = options.requestId;
|
|
349
|
+
}
|
|
350
|
+
else if (options.expectedVersion !== undefined && (await this.recordsOutcomes())) {
|
|
351
|
+
headers[IDENTITY_HEADER] = mintRequestId();
|
|
352
|
+
minted = true;
|
|
353
|
+
}
|
|
354
|
+
const res = await this.sendDocWrite(`/docs/${encodeId(id)}`, { method: "PUT", headers, body }, minted);
|
|
293
355
|
if (!res.ok)
|
|
294
356
|
throw await this.toError(res, id);
|
|
295
357
|
const payload = (await res.json());
|
|
296
358
|
return payload.version;
|
|
297
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* `GET /v0/capabilities`, deployment-scoped: what this authority implements. `operations` says
|
|
362
|
+
* whether it records outcomes by request identity. The reference router without it refuses any
|
|
363
|
+
* request carrying `Idempotency-Key`, and the lookup route, with `400 USAGE`; a host that lacks
|
|
364
|
+
* the lookup route altogether answers it with a route-miss `404`, which {@link lookupOperation}
|
|
365
|
+
* cannot tell from "never recorded". A consumer that relies on identity checks this once before
|
|
366
|
+
* it sends any intent. Missing booleans read as `false`.
|
|
367
|
+
*/
|
|
368
|
+
async wireCapabilities() {
|
|
369
|
+
const res = await this.send("/v0/capabilities", { method: "GET" }, "deployment");
|
|
370
|
+
if (!res.ok)
|
|
371
|
+
throw await this.toError(res, "capabilities");
|
|
372
|
+
const payload = (await res.json());
|
|
373
|
+
const flag = (name) => payload?.[name] === true;
|
|
374
|
+
return {
|
|
375
|
+
history: flag("history"),
|
|
376
|
+
enforced_cas: flag("enforced_cas"),
|
|
377
|
+
projections: flag("projections"),
|
|
378
|
+
backlinks: flag("backlinks"),
|
|
379
|
+
blobs: flag("blobs"),
|
|
380
|
+
operations: flag("operations"),
|
|
381
|
+
heads: flag("heads"),
|
|
382
|
+
snapshot: flag("snapshot"),
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Whether this host records outcomes by request identity, asked through `GET /v0/capabilities`
|
|
387
|
+
* and shared by concurrent callers. A host that answers anything but a `2xx` with
|
|
388
|
+
* `operations: true` is treated as not recording them, since a host that does not record them
|
|
389
|
+
* refuses a key with `400`. That answer is kept for the backend's lifetime, except that a
|
|
390
|
+
* transient status still returned after `send`'s retries, or a transport failure, is not kept:
|
|
391
|
+
* the former sends this write unidentified, and the latter rejects the write before it is sent.
|
|
392
|
+
* A kept yes is also dropped when a minted key meets the host's identity refusal; see
|
|
393
|
+
* {@link sendDocWrite}.
|
|
394
|
+
*/
|
|
395
|
+
recordsOutcomes() {
|
|
396
|
+
this.operationsSupport ??= this.probeOperations();
|
|
397
|
+
return this.operationsSupport;
|
|
398
|
+
}
|
|
399
|
+
async probeOperations() {
|
|
400
|
+
let res;
|
|
401
|
+
try {
|
|
402
|
+
res = await this.send("/v0/capabilities", { method: "GET" }, "deployment");
|
|
403
|
+
}
|
|
404
|
+
catch (err) {
|
|
405
|
+
this.operationsSupport = undefined;
|
|
406
|
+
throw err;
|
|
407
|
+
}
|
|
408
|
+
if (RETRIABLE_STATUS.has(res.status))
|
|
409
|
+
this.operationsSupport = undefined;
|
|
410
|
+
if (!res.ok)
|
|
411
|
+
return false;
|
|
412
|
+
try {
|
|
413
|
+
const payload = (await res.json());
|
|
414
|
+
return payload?.operations === true;
|
|
415
|
+
}
|
|
416
|
+
catch {
|
|
417
|
+
return false;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Send a document `PUT` or `DELETE`. When its `Idempotency-Key` was minted here, a kept
|
|
422
|
+
* `operations` answer may be stale: a host that has since lost its outcome store refuses every
|
|
423
|
+
* key with the wire's `400` {@link IDENTITY_UNSUPPORTED} before applying anything. That answer
|
|
424
|
+
* is dropped and the write is sent once more without a key, as to any host without
|
|
425
|
+
* `operations`. A caller's own `requestId` is never dropped, so its refusal is the answer.
|
|
426
|
+
*/
|
|
427
|
+
async sendDocWrite(path, init, minted) {
|
|
428
|
+
const res = await this.send(path, init);
|
|
429
|
+
if (!minted || res.status !== 400 || !(await refusesIdentity(res.clone())))
|
|
430
|
+
return res;
|
|
431
|
+
this.operationsSupport = undefined;
|
|
432
|
+
const { [IDENTITY_HEADER]: _refused, ...headers } = init.headers;
|
|
433
|
+
return this.send(path, { ...init, headers });
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* `GET /heads`: every document id and version the authority holds, under one digest, or
|
|
437
|
+
* `null` when `ifNoneMatch` named the digest it still holds (a `304`: nothing changed). A
|
|
438
|
+
* `200` is diffed against the caller's own copy: an id missing from `heads` was deleted, a
|
|
439
|
+
* differing version changed. A `200` without a well-formed digest, whose `count` and rows
|
|
440
|
+
* disagree, or whose rows digest by the documented recipe to something other than the served
|
|
441
|
+
* digest, is rejected rather than trusted ({@link parseHeadsAnswer} owns that admission), as
|
|
442
|
+
* is a `304` to a request that sent no `ifNoneMatch`. Not part of the {@link StorageBackend}
|
|
443
|
+
* seam.
|
|
444
|
+
*/
|
|
445
|
+
async heads(options = {}) {
|
|
446
|
+
const headers = {};
|
|
447
|
+
if (options.ifNoneMatch !== undefined)
|
|
448
|
+
headers["If-None-Match"] = etagForm(options.ifNoneMatch);
|
|
449
|
+
const res = await this.send("/heads", { method: "GET", headers });
|
|
450
|
+
if (res.status === 304) {
|
|
451
|
+
// Only a conditional request can be answered `304`; to an unconditional one it is a
|
|
452
|
+
// malformed answer, not "nothing changed", since there is no digest it could be relative to.
|
|
453
|
+
if (options.ifNoneMatch === undefined)
|
|
454
|
+
throw malformed("wire heads answered 304 to a request that sent no If-None-Match");
|
|
455
|
+
return null;
|
|
456
|
+
}
|
|
457
|
+
if (!res.ok)
|
|
458
|
+
throw await this.toError(res, "heads");
|
|
459
|
+
return parseHeadsAnswer(await res.json());
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* `GET /snapshot`: the whole bundle in one response. The header line is parsed before this
|
|
463
|
+
* resolves, so a non-2xx or a body without a header rejects here with the usual typed error;
|
|
464
|
+
* the documents then stream through {@link RemoteSnapshot.docs}. Transient retry applies only
|
|
465
|
+
* to obtaining the response: a body cut mid-stream is reported to the consumer as
|
|
466
|
+
* `SNAPSHOT_TRUNCATED`, a whole body whose heads do not digest to the header's announcement as
|
|
467
|
+
* `SNAPSHOT_DIGEST_MISMATCH` ({@link readSnapshotStream} owns the grammar), and re-requesting
|
|
468
|
+
* is the consumer's decision. Reserved files are not part of a snapshot. Not part of the
|
|
469
|
+
* {@link StorageBackend} seam.
|
|
470
|
+
*/
|
|
471
|
+
async snapshot() {
|
|
472
|
+
const res = await this.send("/snapshot", { method: "GET" });
|
|
473
|
+
if (!res.ok)
|
|
474
|
+
throw await this.toError(res, "snapshot");
|
|
475
|
+
if (!res.body)
|
|
476
|
+
throw new RemoteError("snapshot response carried no body", SNAPSHOT_TRUNCATED, res.status);
|
|
477
|
+
return readSnapshotStream(res.body, { status: res.status });
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* `GET /operations/{requestId}`: the authority's recorded outcome for an identified write, or
|
|
481
|
+
* `null` when it holds nothing under that identity (never recorded, or recorded and expired;
|
|
482
|
+
* the wire cannot tell those apart). Any other non-2xx is the usual typed error. Not part of
|
|
483
|
+
* the {@link StorageBackend} seam: only a remote authority records outcomes by request identity.
|
|
484
|
+
*/
|
|
485
|
+
async lookupOperation(requestId) {
|
|
486
|
+
assertRequestIdentity(requestId);
|
|
487
|
+
const res = await this.send(`/operations/${encodeURIComponent(requestId)}`, { method: "GET" });
|
|
488
|
+
if (res.status === 404)
|
|
489
|
+
return null;
|
|
490
|
+
if (!res.ok)
|
|
491
|
+
throw await this.toError(res, requestId);
|
|
492
|
+
const payload = (await res.json());
|
|
493
|
+
if (typeof payload?.kind !== "string" || !RECORDED_OUTCOME_KINDS.has(payload.kind)) {
|
|
494
|
+
throw new RemoteError(`wire lookup for '${requestId}' returned a malformed outcome`, "RUNTIME", 502);
|
|
495
|
+
}
|
|
496
|
+
return payload;
|
|
497
|
+
}
|
|
298
498
|
async exists(id) {
|
|
299
499
|
assertSafeConceptId(id);
|
|
300
500
|
const res = await this.send(`/docs/${encodeId(id)}`, { method: "HEAD" });
|
|
@@ -310,11 +510,14 @@ export class RemoteBackend {
|
|
|
310
510
|
* {@link RemoteBackend.queryHeads} are both thin row-mappings over it, so a wire
|
|
311
511
|
* pagination change cannot make the two scans silently paginate differently.
|
|
312
512
|
*/
|
|
313
|
-
async pageDocs(baseParams, mapRow, errorContext) {
|
|
513
|
+
async pageDocs(baseParams, mapRow, errorContext, skipped) {
|
|
314
514
|
const rows = [];
|
|
315
515
|
let cursor;
|
|
316
516
|
for (;;) {
|
|
317
517
|
const params = new URLSearchParams(baseParams);
|
|
518
|
+
// Ask the server to leave an unparsable document out and name it, rather than fail the page.
|
|
519
|
+
if (skipped)
|
|
520
|
+
params.set("malformed", "skip");
|
|
318
521
|
if (cursor)
|
|
319
522
|
params.set("cursor", cursor);
|
|
320
523
|
const qs = params.toString();
|
|
@@ -324,6 +527,13 @@ export class RemoteBackend {
|
|
|
324
527
|
const payload = (await res.json());
|
|
325
528
|
for (const row of payload.docs)
|
|
326
529
|
rows.push(mapRow(row));
|
|
530
|
+
if (skipped && Array.isArray(payload.skipped)) {
|
|
531
|
+
for (const entry of payload.skipped) {
|
|
532
|
+
if (typeof entry?.id !== "string")
|
|
533
|
+
continue;
|
|
534
|
+
skipped.set(entry.id, typeof entry.reason === "string" ? entry.reason : "malformed frontmatter");
|
|
535
|
+
}
|
|
536
|
+
}
|
|
327
537
|
if (!payload.next_cursor)
|
|
328
538
|
break;
|
|
329
539
|
cursor = payload.next_cursor;
|
|
@@ -334,7 +544,11 @@ export class RemoteBackend {
|
|
|
334
544
|
const params = new URLSearchParams();
|
|
335
545
|
if (prefix)
|
|
336
546
|
params.set("prefix", prefix);
|
|
337
|
-
|
|
547
|
+
// A document the server could not parse still exists: it is listed, and reading it raises
|
|
548
|
+
// the same MalformedDocumentError a local read does.
|
|
549
|
+
const skipped = new Map();
|
|
550
|
+
const ids = await this.pageDocs(params, (row) => row.id, prefix ?? "", skipped);
|
|
551
|
+
return [...new Set([...ids, ...skipped.keys()])].sort(compareStorageKeys);
|
|
338
552
|
}
|
|
339
553
|
/**
|
|
340
554
|
* The seam's OPTIONAL head-projection push-down, over the SAME `GET /docs` route
|
|
@@ -347,7 +561,7 @@ export class RemoteBackend {
|
|
|
347
561
|
* `docs/WIRE-PROTOCOL.md`); the engine's `queryHeads` re-filter covers it, per the
|
|
348
562
|
* seam contract (over-returning is fine; semantics live in core).
|
|
349
563
|
*/
|
|
350
|
-
async queryHeads(filter = {}) {
|
|
564
|
+
async queryHeads(filter = {}, options = {}) {
|
|
351
565
|
const params = new URLSearchParams();
|
|
352
566
|
params.set("fields", "frontmatter");
|
|
353
567
|
if (filter.prefix)
|
|
@@ -356,7 +570,17 @@ export class RemoteBackend {
|
|
|
356
570
|
params.set("type", filter.type);
|
|
357
571
|
for (const tag of filter.tags ?? [])
|
|
358
572
|
params.append("tag", tag);
|
|
359
|
-
|
|
573
|
+
const skipped = new Map();
|
|
574
|
+
const rows = await this.pageDocs(params, (row) => ({ id: row.id, frontmatter: row.frontmatter, version: row.version }), filter.prefix ?? "", skipped);
|
|
575
|
+
// The server leaves a malformed document out of the listing and names it. A caller that
|
|
576
|
+
// asked for no skip report keeps the scan's fail-loud contract.
|
|
577
|
+
const named = [...skipped].sort(([a], [b]) => compareStorageKeys(a, b));
|
|
578
|
+
if (named.length > 0 && !options.onSkip) {
|
|
579
|
+
throw new MalformedDocumentError(named[0][0], new Error(named[0][1]));
|
|
580
|
+
}
|
|
581
|
+
for (const [id, reason] of named)
|
|
582
|
+
options.onSkip?.({ id, reason });
|
|
583
|
+
return rows;
|
|
360
584
|
}
|
|
361
585
|
async versions(id) {
|
|
362
586
|
assertSafeConceptId(id);
|
|
@@ -372,6 +596,8 @@ export class RemoteBackend {
|
|
|
372
596
|
: { version: v.version, actor: v.actor, timestamp: v.timestamp, agent: v.agent });
|
|
373
597
|
}
|
|
374
598
|
async readReserved(dir, name) {
|
|
599
|
+
assertSafeReservedDir(dir);
|
|
600
|
+
assertSafeReservedFilename(name);
|
|
375
601
|
const qs = dir ? `?dir=${encodeURIComponent(dir)}` : "";
|
|
376
602
|
const res = await this.send(`/reserved/${name}${qs}`, { method: "GET" });
|
|
377
603
|
if (res.status === 404)
|
|
@@ -383,6 +609,8 @@ export class RemoteBackend {
|
|
|
383
609
|
return { content: payload.content, version };
|
|
384
610
|
}
|
|
385
611
|
async writeReserved(dir, name, content, options = {}) {
|
|
612
|
+
assertSafeReservedDir(dir);
|
|
613
|
+
assertSafeReservedFilename(name);
|
|
386
614
|
assertValidExpectedVersion(options.expectedVersion);
|
|
387
615
|
const headers = { "content-type": "application/json" };
|
|
388
616
|
if (options.expectedVersion === null)
|
|
@@ -418,7 +646,20 @@ export class RemoteBackend {
|
|
|
418
646
|
const headers = {};
|
|
419
647
|
if (options.expectedVersion !== undefined)
|
|
420
648
|
headers["If-Match"] = options.expectedVersion;
|
|
421
|
-
|
|
649
|
+
let minted = false;
|
|
650
|
+
if (options.requestId !== undefined) {
|
|
651
|
+
assertRequestIdentity(options.requestId);
|
|
652
|
+
headers[IDENTITY_HEADER] = options.requestId;
|
|
653
|
+
}
|
|
654
|
+
else if (options.expectedVersion !== undefined &&
|
|
655
|
+
isContentVersion(stripETagWrapper(options.expectedVersion)) &&
|
|
656
|
+
(await this.recordsOutcomes())) {
|
|
657
|
+
// The wire identifies a delete only under a content-version premise; any other premise
|
|
658
|
+
// stays an unidentified request rather than becoming a `400`.
|
|
659
|
+
headers[IDENTITY_HEADER] = mintRequestId();
|
|
660
|
+
minted = true;
|
|
661
|
+
}
|
|
662
|
+
const res = await this.sendDocWrite(`/docs/${encodeId(id)}`, { method: "DELETE", headers }, minted);
|
|
422
663
|
if (!res.ok)
|
|
423
664
|
throw await this.toError(res, id);
|
|
424
665
|
const payload = (await res.json());
|
|
@@ -506,7 +747,7 @@ export class RemoteBackend {
|
|
|
506
747
|
break;
|
|
507
748
|
cursor = payload.next_cursor;
|
|
508
749
|
}
|
|
509
|
-
return keys;
|
|
750
|
+
return keys.sort(compareStorageKeys);
|
|
510
751
|
}
|
|
511
752
|
}
|
|
512
753
|
//# sourceMappingURL=remote-backend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../src/remote-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAyC,MAAM,qBAAqB,CAAC;AACtI,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3I,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAkF7F,kGAAkG;AAClG,4EAA4E;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAuBhD,0FAA0F;AAC1F,SAAS,QAAQ,CAAC,EAAU;IAC1B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAA0B,CAAC;IAC9E,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,GAAa,EAAE,OAAe;IACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,IAAI;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,WAAW,CACnB,qBAAqB,OAAO,iEAAiE;QAC3F,yFAAyF;QACzF,uFAAuF;QACvF,2BAA2B,EAC7B,iBAAiB,EACjB,GAAG,CAAC,MAAM,CACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,0BAA0B,CAAC,eAAgD;IAClF,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CACzB,gFAAgF;YAC9E,2EAA2E,CAC9E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C,qHAAqH;AACrH,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AAE9E,kHAAkH;AAClH,KAAK,UAAU,eAAe,CAAC,GAAa;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC5D,OAAO,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,oBAAoB,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,iBAAiB,CACzB,kGAAkG,CACnG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAE7E,8FAA8F;AAC9F,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvD,gGAAgG;AAChG,KAAK,UAAU,sBAAsB,CAAC,GAAa;IACjD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAyB,CAAC;QACpE,OAAO,OAAO,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,wFAAwF;AACxF,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;IACrE,OAAO,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC;AAC/D,CAAC;AAED,uCAAuC;AACvC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,8FAA8F;AAC9F,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,6FAA6F;AAC7F,SAAS,QAAQ,CAAC,EAAa;IAC7B,OAAO,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACrC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,2FAA2F;AAC3F,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACrC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACP,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,SAAS,CAAY;IACrB,SAAS,CAAU;IACnB,UAAU,CAAS;IACpC,wGAAwG;IAChG,iBAAiB,CAAoB;IAE7C,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,wEAAwE;IACxE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,wFAAwF;IAChF,GAAG,CAAC,kBAA0B;QACpC,OAAO,GAAG,IAAI,CAAC,OAAO,eAAe,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;IAC9F,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAoB,EAAE,EAAE,QAAiC,QAAQ;QAChG,wFAAwF;QACxF,sFAAsF;QACtF,sFAAsF;QACtF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACzD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9B,CAAC;QACD,yEAAyE;QACzE,MAAM,GAAG,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAC3E,gGAAgG;QAChG,8FAA8F;QAC9F,iGAAiG;QACjG,+FAA+F;QAC/F,0FAA0F;QAC1F,iGAAiG;QACjG,2FAA2F;QAC3F,YAAY;QACZ,EAAE;QACF,8FAA8F;QAC9F,6FAA6F;QAC7F,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,gGAAgG;QAChG,6FAA6F;QAC7F,yEAAyE;QACzE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;gBACzD,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC1G,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;oBACnC,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,OAAO,CAAC,GAAa,EAAE,UAAkB;QACrD,IAAI,QAAQ,GAAyB,IAAI,CAAC;QAC1C,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;YAC5D,MAAM,MAAM,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;YACxD,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,YAAY,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;QACzD,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5D,0FAA0F;YAC1F,oEAAoE;YACpE,OAAO,IAAI,sBAAsB,CAC/B,OAAO,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAClE,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAC/B,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,IAAI,mCAAmC,GAAG,CAAC,MAAM,EAAE,CAAC;QAC5F,wFAAwF;QACxF,uFAAuF;QACvF,+CAA+C;QAC/C,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAa;QACtB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqD,CAAC;QACvF,2FAA2F;QAC3F,6FAA6F;QAC7F,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAgB;QAC7B,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkB,CAAC;gBACrD,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;YACD,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAEhC,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,WAAW,CACnB,2BAA2B,OAAO,CAAC,OAAO,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,kBAAkB,EAC/F,SAAS,EACT,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,2FAA2F;YAC3F,2EAA2E;YAC3E,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,CAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAClE,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAa,EAAE,GAAgB,EAAE,UAAwB,EAAE;QACrE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;aAChE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9F,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACtD,0FAA0F;QAC1F,sFAAsF;QACtF,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC;YACnF,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;YAC3C,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqD,CAAC;QACvF,MAAM,IAAI,GAAG,CAAC,IAA4B,EAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;QACjF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;YACxB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;YAClC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,eAAe;QACrB,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoC,CAAC;YACtE,OAAO,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,IAAuD,EAAE,MAAe;QAC/G,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACvF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,CAAC,UAAwB,EAAE;QACpC,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,oFAAoF;YACpF,6FAA6F;YAC7F,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;gBAAE,MAAM,SAAS,CAAC,iEAAiE,CAAC,CAAC;YAC1H,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,mCAAmC,EAAE,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1G,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,kBAAkB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;QACzD,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,WAAW,CAAC,oBAAoB,SAAS,gCAAgC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,OAAkB,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAa;QACxB,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,QAAQ,CACpB,UAA2B,EAC3B,MAAmF,EACnF,YAAoB,EACpB,OAAgC;QAEhC,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,IAAI,MAA0B,CAAC;QAC/B,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;YAC/C,6FAA6F;YAC7F,IAAI,OAAO;gBAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAIhC,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAoD,EAAE,CAAC;oBACjF,IAAI,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ;wBAAE,SAAS;oBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM;YAChC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAe;QACxB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,0FAA0F;QAC1F,qDAAqD;QACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CACd,SAAsB,EAAE,EACxB,UAA0E,EAAE;QAE5E,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC9B,MAAM,EACN,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAC7E,MAAM,CAAC,MAAM,IAAI,EAAE,EACnB,OAAO,CACR,CAAC;QACF,wFAAwF;QACxF,gEAAgE;QAChE,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK;YAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAa;QAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,yFAAyF;QACzF,yFAAyF;QACzF,8EAA8E;QAC9E,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAEhC,CAAC;QACF,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,KAAK,KAAK,SAAS;YACnB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE;YAChE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,IAAsB;QACpD,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,IAAsB,EACtB,OAAe,EACf,UAAwB,EAAE;QAE1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;aAChE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9F,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAEtD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,EAAE,EAAE,EAAE;YACpD,MAAM,EAAE,KAAK;YACb,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,EAAa,EAAE,UAAyB,EAAE;QACrD,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QACzF,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAC/C,CAAC;aAAM,IACL,OAAO,CAAC,eAAe,KAAK,SAAS;YACrC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC3D,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,EAC9B,CAAC;YACD,uFAAuF;YACvF,8DAA8D;YAC9D,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa,EAAE,CAAC;YAC3C,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACpG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,gFAAgF;IAChF,EAAE;IACF,+EAA+E;IAC/E,mFAAmF;IACnF,oFAAoF;IACpF,4FAA4F;IAC5F,qBAAqB;IAErB,KAAK,CAAC,QAAQ,CAAC,GAAY;QACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC;QACjF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CACb,GAAY,EACZ,KAAiB,EACjB,WAAoB,EACpB,UAAwB,EAAE;QAE1B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,WAAW;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;QACvD,IAAI,OAAO,CAAC,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;aAChE,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAC9F,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QAEtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1D,MAAM,EAAE,KAAK;YACb,OAAO;YACP,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,UAAU,CAAC,GAAY,EAAE,UAAyB,EAAE;QACxD,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,0BAA0B,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;QAEzF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QAC3D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAY;QAC3B,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAe;QAC7B,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,MAA0B,CAAC;QAC/B,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoD,CAAC;YACtF,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,MAAM;YAChC,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InvalidInputError } from "./errors.js";
|
|
2
|
+
/** Metadata cannot be represented by the JSON document transport without loss. */
|
|
3
|
+
export declare class RemoteDocumentValueError extends InvalidInputError {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
constructor(path: string, reason: string);
|
|
6
|
+
}
|
|
7
|
+
type JsonValue = null | string | boolean | number | JsonValue[] | {
|
|
8
|
+
[key: string]: JsonValue;
|
|
9
|
+
};
|
|
10
|
+
/** Capture the wire value once, without invoking accessors or custom serialization hooks. */
|
|
11
|
+
export declare function captureRemoteFrontmatter(frontmatter: unknown): JsonValue;
|
|
12
|
+
/** Encode only the captured value, never the caller's live metadata a second time. */
|
|
13
|
+
export declare function encodeRemoteDocument(frontmatter: unknown, body: string): string;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=remote-document-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-document-codec.d.ts","sourceRoot":"","sources":["../src/remote-document-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,kFAAkF;AAClF,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKzC;AAED,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/F,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAuExE;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/E"}
|