docxodus 12.1.0 → 12.2.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/README.md +9 -4
- package/dist/editor.bundle.js +135 -22
- package/dist/editor.d.ts +25 -3
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +132 -13
- package/dist/editor.js.map +1 -1
- package/dist/embed.bundle.js +573 -47
- package/dist/embed.d.ts +30 -1
- package/dist/embed.d.ts.map +1 -1
- package/dist/embed.iife.js +573 -47
- package/dist/embed.js +124 -13
- package/dist/embed.js.map +1 -1
- package/dist/export-assets.json +33 -33
- package/dist/history.d.ts +265 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +307 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/dist/ribbon-chrome.d.ts +2 -2
- package/dist/ribbon-chrome.d.ts.map +1 -1
- package/dist/ribbon-chrome.js +6 -4
- package/dist/ribbon-chrome.js.map +1 -1
- package/dist/ribbon.js +39 -8
- package/dist/ribbon.js.map +1 -1
- package/dist/session.js +1 -1
- package/dist/session.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/wasm/_framework/DocumentFormat.OpenXml.Framework.wasm +0 -0
- package/dist/wasm/_framework/DocumentFormat.OpenXml.Framework.wasm.br +0 -0
- package/dist/wasm/_framework/DocumentFormat.OpenXml.wasm +0 -0
- package/dist/wasm/_framework/DocumentFormat.OpenXml.wasm.br +0 -0
- package/dist/wasm/_framework/Docxodus.wasm +0 -0
- package/dist/wasm/_framework/Docxodus.wasm.br +0 -0
- package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
- package/dist/wasm/_framework/DocxodusWasm.wasm.br +0 -0
- package/dist/wasm/_framework/System.Collections.Concurrent.wasm +0 -0
- package/dist/wasm/_framework/System.Collections.Concurrent.wasm.br +0 -0
- package/dist/wasm/_framework/System.Collections.wasm +0 -0
- package/dist/wasm/_framework/System.Collections.wasm.br +0 -0
- package/dist/wasm/_framework/System.IO.Compression.wasm +0 -0
- package/dist/wasm/_framework/System.IO.Compression.wasm.br +0 -0
- package/dist/wasm/_framework/System.IO.Packaging.wasm +0 -0
- package/dist/wasm/_framework/System.IO.Packaging.wasm.br +0 -0
- package/dist/wasm/_framework/System.Linq.Expressions.wasm +0 -0
- package/dist/wasm/_framework/System.Linq.Expressions.wasm.br +0 -0
- package/dist/wasm/_framework/System.Memory.wasm +0 -0
- package/dist/wasm/_framework/System.Memory.wasm.br +0 -0
- package/dist/wasm/_framework/System.Net.Http.wasm +0 -0
- package/dist/wasm/_framework/System.Net.Http.wasm.br +0 -0
- package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
- package/dist/wasm/_framework/System.Private.CoreLib.wasm.br +0 -0
- package/dist/wasm/_framework/System.Private.Xml.Linq.wasm +0 -0
- package/dist/wasm/_framework/System.Private.Xml.Linq.wasm.br +0 -0
- package/dist/wasm/_framework/System.Private.Xml.wasm +0 -0
- package/dist/wasm/_framework/System.Private.Xml.wasm.br +0 -0
- package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
- package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm.br +0 -0
- package/dist/wasm/_framework/System.Runtime.wasm +0 -0
- package/dist/wasm/_framework/System.Runtime.wasm.br +0 -0
- package/dist/wasm/_framework/System.Security.Cryptography.wasm +0 -0
- package/dist/wasm/_framework/System.Security.Cryptography.wasm.br +0 -0
- package/dist/wasm/_framework/System.Text.Json.wasm +0 -0
- package/dist/wasm/_framework/System.Text.Json.wasm.br +0 -0
- package/dist/wasm/_framework/System.Text.RegularExpressions.wasm +0 -0
- package/dist/wasm/_framework/System.Text.RegularExpressions.wasm.br +0 -0
- package/dist/wasm/_framework/dotnet.boot.js +21 -21
- package/dist/wasm/_framework/dotnet.boot.js.br +0 -0
- package/dist/wasm/_framework/dotnet.native.wasm +0 -0
- package/dist/wasm/_framework/dotnet.native.wasm.br +0 -0
- package/package.json +4 -3
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import type { VerificationDigest } from './types.js';
|
|
2
|
+
/** Nonnegative Int64 decimal string, never a JS number. Sequence orders content; time does not. */
|
|
3
|
+
export type HistoryPosition = string;
|
|
4
|
+
export interface HistoryBlobReference {
|
|
5
|
+
digest: VerificationDigest;
|
|
6
|
+
length: number;
|
|
7
|
+
}
|
|
8
|
+
export interface HistoryHead {
|
|
9
|
+
revision: HistoryPosition;
|
|
10
|
+
state: HistoryBlobReference;
|
|
11
|
+
}
|
|
12
|
+
export interface HistoryHeadInitializationResult {
|
|
13
|
+
initialized: boolean;
|
|
14
|
+
head: HistoryHead;
|
|
15
|
+
}
|
|
16
|
+
export interface DocxHistoryArchiveInfo {
|
|
17
|
+
documentId: string;
|
|
18
|
+
head: HistoryHead;
|
|
19
|
+
blobCount: number;
|
|
20
|
+
totalBlobBytes: HistoryPosition;
|
|
21
|
+
}
|
|
22
|
+
export interface DocxHistoryImportResult {
|
|
23
|
+
archive: DocxHistoryArchiveInfo;
|
|
24
|
+
view: DocxHistoryView;
|
|
25
|
+
alreadyPresent: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare const MAX_HISTORY_ARCHIVE_BYTES: number;
|
|
28
|
+
export interface HistoryRequestIdentity {
|
|
29
|
+
id: string;
|
|
30
|
+
fingerprint: VerificationDigest;
|
|
31
|
+
}
|
|
32
|
+
export interface HistoryRequestJournal {
|
|
33
|
+
documentId: string;
|
|
34
|
+
revision: HistoryPosition;
|
|
35
|
+
index: HistoryBlobReference | null;
|
|
36
|
+
current: HistoryRequestIdentity | null;
|
|
37
|
+
}
|
|
38
|
+
export interface DocxSnapshotReference {
|
|
39
|
+
blob: HistoryBlobReference;
|
|
40
|
+
contentDigest: VerificationDigest;
|
|
41
|
+
}
|
|
42
|
+
export interface DocxVersionMetadata {
|
|
43
|
+
author: string;
|
|
44
|
+
createdAt: string;
|
|
45
|
+
label?: string | null;
|
|
46
|
+
message?: string | null;
|
|
47
|
+
applicationMetadata?: Readonly<Record<string, string>>;
|
|
48
|
+
}
|
|
49
|
+
export interface DocxVersionRecord {
|
|
50
|
+
documentId: string;
|
|
51
|
+
metadata: DocxVersionMetadata;
|
|
52
|
+
nonce: string;
|
|
53
|
+
parent: HistoryBlobReference | null;
|
|
54
|
+
restoredFrom: HistoryBlobReference | null;
|
|
55
|
+
sequence: HistoryPosition;
|
|
56
|
+
snapshot: DocxSnapshotReference;
|
|
57
|
+
}
|
|
58
|
+
export interface DocxStoredVersion {
|
|
59
|
+
id: HistoryBlobReference;
|
|
60
|
+
record: DocxVersionRecord;
|
|
61
|
+
}
|
|
62
|
+
export interface DocxHistoryState {
|
|
63
|
+
requests?: HistoryRequestJournal;
|
|
64
|
+
parentPublication?: HistoryHead;
|
|
65
|
+
operation?: HistoryBlobReference;
|
|
66
|
+
commit: HistoryBlobReference | null;
|
|
67
|
+
documentId: string;
|
|
68
|
+
epoch: HistoryPosition;
|
|
69
|
+
initialSnapshot: DocxSnapshotReference;
|
|
70
|
+
sequence: HistoryPosition;
|
|
71
|
+
snapshot: DocxSnapshotReference;
|
|
72
|
+
version: HistoryBlobReference;
|
|
73
|
+
}
|
|
74
|
+
export interface DocxHistoryView {
|
|
75
|
+
head: HistoryHead;
|
|
76
|
+
state: DocxHistoryState;
|
|
77
|
+
version: DocxStoredVersion;
|
|
78
|
+
}
|
|
79
|
+
export interface DocxVersionPage {
|
|
80
|
+
versions: DocxStoredVersion[];
|
|
81
|
+
next: HistoryBlobReference | null;
|
|
82
|
+
}
|
|
83
|
+
export interface PackageHistoryCommit {
|
|
84
|
+
after: DocxSnapshotReference;
|
|
85
|
+
before: DocxSnapshotReference;
|
|
86
|
+
contribution: HistoryBlobReference | null;
|
|
87
|
+
documentId: string;
|
|
88
|
+
epoch: HistoryPosition;
|
|
89
|
+
kind: 'import' | 'restore';
|
|
90
|
+
parent: HistoryBlobReference | null;
|
|
91
|
+
sequence: HistoryPosition;
|
|
92
|
+
version: HistoryBlobReference;
|
|
93
|
+
}
|
|
94
|
+
export interface DocxHistoryLogEntry {
|
|
95
|
+
id: HistoryBlobReference;
|
|
96
|
+
commit: PackageHistoryCommit;
|
|
97
|
+
metadata: DocxVersionMetadata;
|
|
98
|
+
}
|
|
99
|
+
export interface DocxHistoryUpdate {
|
|
100
|
+
after: HistoryHead | null;
|
|
101
|
+
view: DocxHistoryView;
|
|
102
|
+
entries: DocxHistoryLogEntry[];
|
|
103
|
+
reset: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface DocxTextSplice {
|
|
106
|
+
partUri: string;
|
|
107
|
+
textNode: number;
|
|
108
|
+
offset: number;
|
|
109
|
+
deleteCount: number;
|
|
110
|
+
insert: string;
|
|
111
|
+
}
|
|
112
|
+
export interface DocxOperationRequest {
|
|
113
|
+
requestId: string;
|
|
114
|
+
base: HistoryHead;
|
|
115
|
+
kind: 'text' | 'package' | 'discard';
|
|
116
|
+
metadata: DocxVersionMetadata;
|
|
117
|
+
text: DocxTextSplice | null;
|
|
118
|
+
readParts: string[];
|
|
119
|
+
resolves: HistoryBlobReference | null;
|
|
120
|
+
}
|
|
121
|
+
export interface DocxOperationInput {
|
|
122
|
+
documentId: string;
|
|
123
|
+
request: DocxOperationRequest;
|
|
124
|
+
candidate: HistoryBlobReference | null;
|
|
125
|
+
}
|
|
126
|
+
export interface DocxOperationRecord {
|
|
127
|
+
documentId: string;
|
|
128
|
+
input: HistoryBlobReference;
|
|
129
|
+
parent: HistoryBlobReference | null;
|
|
130
|
+
revision: HistoryPosition;
|
|
131
|
+
before: HistoryHead;
|
|
132
|
+
proposedSnapshot: DocxSnapshotReference;
|
|
133
|
+
afterSnapshot: DocxSnapshotReference;
|
|
134
|
+
version: HistoryBlobReference;
|
|
135
|
+
contentCommit: HistoryBlobReference | null;
|
|
136
|
+
status: 'accepted' | 'conflict';
|
|
137
|
+
conflict: string | null;
|
|
138
|
+
appliedText: DocxTextSplice | null;
|
|
139
|
+
}
|
|
140
|
+
export interface DocxStoredOperation {
|
|
141
|
+
id: HistoryBlobReference;
|
|
142
|
+
record: DocxOperationRecord;
|
|
143
|
+
input: DocxOperationInput;
|
|
144
|
+
}
|
|
145
|
+
export interface DocxOperationUpdate {
|
|
146
|
+
after: HistoryHead | null;
|
|
147
|
+
view: DocxHistoryView;
|
|
148
|
+
operations: DocxStoredOperation[];
|
|
149
|
+
}
|
|
150
|
+
/** Host-owned storage. Persist blobs before returning; advanceHead must be an atomic CAS.
|
|
151
|
+
* References and returned bytes are verified in the core. Methods must settle their promises.
|
|
152
|
+
* No fetching, subscription, timer, authorization or retention policy is supplied by this API. */
|
|
153
|
+
export interface HistoryStorage {
|
|
154
|
+
readBlob(reference: HistoryBlobReference): Promise<Uint8Array | null>;
|
|
155
|
+
putBlob(reference: HistoryBlobReference, bytes: Uint8Array): Promise<void>;
|
|
156
|
+
readHead(documentId: string): Promise<HistoryHead | null>;
|
|
157
|
+
advanceHead(documentId: string, expected: HistoryHead | null, state: HistoryBlobReference): Promise<HistoryHead | null>;
|
|
158
|
+
/** Optional import capability. Atomically insert the exact head only if absent; otherwise return
|
|
159
|
+
* the unchanged existing head. Must share exclusion with advanceHead, never overwrite/revise it. */
|
|
160
|
+
initializeHead?(documentId: string, head: HistoryHead): Promise<HistoryHeadInitializationResult>;
|
|
161
|
+
}
|
|
162
|
+
export interface HistoryBridge {
|
|
163
|
+
Open(adapterId: number): number;
|
|
164
|
+
OpenWithInitialization?(adapterId: number): number;
|
|
165
|
+
OpenArchive?(bytes: Uint8Array): Promise<string>;
|
|
166
|
+
Close(handle: number): void;
|
|
167
|
+
Invoke(handle: number, requestJson: string, bytes: Uint8Array): Promise<string>;
|
|
168
|
+
}
|
|
169
|
+
export declare class DocxHistoryError extends Error {
|
|
170
|
+
readonly code: string;
|
|
171
|
+
constructor(code: string, message: string);
|
|
172
|
+
}
|
|
173
|
+
interface Result {
|
|
174
|
+
handle: number | null;
|
|
175
|
+
archive: DocxHistoryArchiveInfo | null;
|
|
176
|
+
import: DocxHistoryImportResult | null;
|
|
177
|
+
success: boolean;
|
|
178
|
+
errorCode: string | null;
|
|
179
|
+
message: string | null;
|
|
180
|
+
view: DocxHistoryView | null;
|
|
181
|
+
version: DocxStoredVersion | null;
|
|
182
|
+
page: DocxVersionPage | null;
|
|
183
|
+
sequence: HistoryPosition | null;
|
|
184
|
+
bytes: string | null;
|
|
185
|
+
update: DocxHistoryUpdate | null;
|
|
186
|
+
operationUpdate: DocxOperationUpdate | null;
|
|
187
|
+
operation: DocxStoredOperation | null;
|
|
188
|
+
}
|
|
189
|
+
/** For custom WASM loaders. initialize() installs these automatically. */
|
|
190
|
+
export declare function installHistoryStorageImports(setModuleImports: (name: string, imports: object) => void): void;
|
|
191
|
+
/** Durable package-history client. Reopening over the same adapters preserves history.
|
|
192
|
+
* Await active calls before close(); it releases handles but never deletes host data. */
|
|
193
|
+
export declare class DocxHistoryClient {
|
|
194
|
+
private readonly bridge;
|
|
195
|
+
private readonly adapterId;
|
|
196
|
+
private readonly handle;
|
|
197
|
+
private closed;
|
|
198
|
+
constructor(bridge: HistoryBridge, storage: HistoryStorage);
|
|
199
|
+
close(): void;
|
|
200
|
+
/** Bind an identity without reading, creating a version, or taking ownership of this client. */
|
|
201
|
+
document(documentId: string): DocxHistoryDocument;
|
|
202
|
+
exportHistoryArchive(documentId: string): Promise<Uint8Array>;
|
|
203
|
+
importHistoryArchive(bytes: Uint8Array): Promise<DocxHistoryImportResult>;
|
|
204
|
+
read(documentId: string): Promise<DocxHistoryView | null>;
|
|
205
|
+
/** Host-triggered validated metadata tail; first join starts at the latest checkpoint. */
|
|
206
|
+
readChangesSince(documentId: string, after: HistoryHead | null, maxEntriesToScan?: number): Promise<DocxHistoryUpdate>;
|
|
207
|
+
readOperationsSince(documentId: string, after: HistoryHead | null, maxEntriesToScan?: number): Promise<DocxOperationUpdate>;
|
|
208
|
+
getOperation(documentId: string, operationId: HistoryBlobReference): Promise<DocxStoredOperation>;
|
|
209
|
+
exportOperationProposal(documentId: string, operationId: HistoryBlobReference): Promise<Uint8Array>;
|
|
210
|
+
compareVersions(documentId: string, beforeVersionId: HistoryBlobReference, afterVersionId: HistoryBlobReference): Promise<Uint8Array>;
|
|
211
|
+
createVersion(documentId: string, expectedHead: HistoryHead | null, bytes: Uint8Array, metadata: DocxVersionMetadata, requestId?: string): Promise<DocxHistoryView>;
|
|
212
|
+
listVersions(documentId: string, cursor?: HistoryBlobReference | null, limit?: number): Promise<DocxVersionPage>;
|
|
213
|
+
getVersion(documentId: string, versionId: HistoryBlobReference): Promise<DocxStoredVersion>;
|
|
214
|
+
exportVersion(documentId: string, versionId: HistoryBlobReference): Promise<Uint8Array>;
|
|
215
|
+
materialize(documentId: string, sequence: HistoryPosition, maxEntriesToScan?: number): Promise<Uint8Array>;
|
|
216
|
+
replay(documentId: string, sequence: HistoryPosition, maxEntriesToScan?: number): Promise<Uint8Array>;
|
|
217
|
+
resolveSequenceAtTime(documentId: string, cutoff: string, maxEntriesToScan?: number): Promise<HistoryPosition>;
|
|
218
|
+
restoreVersion(documentId: string, expectedHead: HistoryHead, versionId: HistoryBlobReference, metadata: DocxVersionMetadata, requestId?: string): Promise<DocxHistoryView>;
|
|
219
|
+
private call;
|
|
220
|
+
}
|
|
221
|
+
type HistoryCall = (operation: string, fields?: object, bytes?: Uint8Array) => Promise<Result>;
|
|
222
|
+
/** Document-scoped reads. No method publishes or changes an editor. */
|
|
223
|
+
export declare class DocxHistoryReader {
|
|
224
|
+
#private;
|
|
225
|
+
protected readonly call: HistoryCall;
|
|
226
|
+
get documentId(): string;
|
|
227
|
+
/** @internal Obtain through client.document() or openDocxHistoryArchive(). */
|
|
228
|
+
constructor(documentId: string, call: HistoryCall);
|
|
229
|
+
read(): Promise<DocxHistoryView | null>;
|
|
230
|
+
listVersions(cursor?: HistoryBlobReference | null, limit?: number): Promise<DocxVersionPage>;
|
|
231
|
+
getVersion(versionId: HistoryBlobReference): Promise<DocxStoredVersion>;
|
|
232
|
+
/** Omit versionId for latest; pass an ID to keep a UI operation pinned to a captured version. */
|
|
233
|
+
exportDocx(versionId?: HistoryBlobReference | null): Promise<Uint8Array>;
|
|
234
|
+
exportHistoryArchive(): Promise<Uint8Array>;
|
|
235
|
+
materialize(sequence: HistoryPosition, maxEntriesToScan?: number): Promise<Uint8Array>;
|
|
236
|
+
replay(sequence: HistoryPosition, maxEntriesToScan?: number): Promise<Uint8Array>;
|
|
237
|
+
resolveSequenceAtTime(cutoff: string, maxEntriesToScan?: number): Promise<HistoryPosition>;
|
|
238
|
+
readChangesSince(after: HistoryHead | null, maxEntriesToScan?: number): Promise<DocxHistoryUpdate>;
|
|
239
|
+
readOperationsSince(after: HistoryHead | null, maxEntriesToScan?: number): Promise<DocxOperationUpdate>;
|
|
240
|
+
getOperation(operationId: HistoryBlobReference): Promise<DocxStoredOperation>;
|
|
241
|
+
exportOperationProposal(operationId: HistoryBlobReference): Promise<Uint8Array>;
|
|
242
|
+
/** Redlined DOCX through DocxCompare's existing accepted-input revision policy. */
|
|
243
|
+
compareVersions(beforeVersionId: HistoryBlobReference, afterVersionId: HistoryBlobReference): Promise<Uint8Array>;
|
|
244
|
+
}
|
|
245
|
+
/** Explicit checkpoint/restore controls over host-owned storage; request IDs are required here. */
|
|
246
|
+
export declare class DocxHistoryDocument extends DocxHistoryReader {
|
|
247
|
+
createVersion(expectedHead: HistoryHead | null, bytes: Uint8Array, metadata: DocxVersionMetadata, requestId: string): Promise<DocxHistoryView>;
|
|
248
|
+
restoreVersion(expectedHead: HistoryHead, versionId: HistoryBlobReference, metadata: DocxVersionMetadata, requestId: string): Promise<DocxHistoryView>;
|
|
249
|
+
}
|
|
250
|
+
/** Standalone readonly file. Owns its handle and captured bytes; await calls before close(). */
|
|
251
|
+
export declare class DocxHistoryArchive extends DocxHistoryReader {
|
|
252
|
+
private readonly bridge;
|
|
253
|
+
private readonly handle;
|
|
254
|
+
readonly info: DocxHistoryArchiveInfo;
|
|
255
|
+
private closed;
|
|
256
|
+
private constructor();
|
|
257
|
+
/** For custom loaders; normal callers use openDocxHistoryArchive(). */
|
|
258
|
+
static open(bridge: HistoryBridge, bytes: Uint8Array): Promise<DocxHistoryArchive>;
|
|
259
|
+
close(): void;
|
|
260
|
+
}
|
|
261
|
+
/** Reference process-local storage. Share one instance among local clients; it is not durable
|
|
262
|
+
* across a page/process restart. Every incoming blob is copied and SHA-256 verified. */
|
|
263
|
+
export declare function createMemoryHistoryStorage(maxBlobBytes?: number): HistoryStorage;
|
|
264
|
+
export {};
|
|
265
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
|
package/dist/history.js
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _DocxHistoryReader_documentId;
|
|
13
|
+
export const MAX_HISTORY_ARCHIVE_BYTES = 64 * 1024 * 1024;
|
|
14
|
+
export class DocxHistoryError extends Error {
|
|
15
|
+
constructor(code, message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.code = code;
|
|
18
|
+
this.name = 'DocxHistoryError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const adapters = new Map();
|
|
22
|
+
let nextAdapter = 0;
|
|
23
|
+
function adapter(id) {
|
|
24
|
+
const store = adapters.get(id);
|
|
25
|
+
if (!store)
|
|
26
|
+
throw new DocxHistoryError('Closed', 'History storage adapter is closed.');
|
|
27
|
+
return store;
|
|
28
|
+
}
|
|
29
|
+
function toBase64(bytes) {
|
|
30
|
+
let binary = '';
|
|
31
|
+
for (let offset = 0; offset < bytes.length; offset += 0x8000)
|
|
32
|
+
binary += String.fromCharCode(...bytes.subarray(offset, offset + 0x8000));
|
|
33
|
+
return btoa(binary);
|
|
34
|
+
}
|
|
35
|
+
function fromBase64(encoded) {
|
|
36
|
+
const binary = atob(encoded);
|
|
37
|
+
return Uint8Array.from(binary, c => c.charCodeAt(0));
|
|
38
|
+
}
|
|
39
|
+
/** For custom WASM loaders. initialize() installs these automatically. */
|
|
40
|
+
export function installHistoryStorageImports(setModuleImports) {
|
|
41
|
+
setModuleImports('docxodus.history', {
|
|
42
|
+
readBlob: async (id, json) => {
|
|
43
|
+
const reference = JSON.parse(json);
|
|
44
|
+
const bytes = await adapter(id).readBlob(reference);
|
|
45
|
+
if (bytes === null)
|
|
46
|
+
return '';
|
|
47
|
+
if (bytes.length !== reference.length)
|
|
48
|
+
throw new DocxHistoryError('PayloadMismatch', 'Stored blob length differs from its reference.');
|
|
49
|
+
return bytes.length === 0 ? '=' : toBase64(bytes);
|
|
50
|
+
},
|
|
51
|
+
putBlob: async (id, json, bytes) => adapter(id).putBlob(JSON.parse(json), bytes.slice()),
|
|
52
|
+
readHead: async (id, documentId) => JSON.stringify(await adapter(id).readHead(documentId)),
|
|
53
|
+
advanceHead: async (id, documentId, expected, state) => JSON.stringify(await adapter(id).advanceHead(documentId, JSON.parse(expected), JSON.parse(state))),
|
|
54
|
+
initializeHead: async (id, documentId, head) => {
|
|
55
|
+
const storage = adapter(id);
|
|
56
|
+
if (!storage.initializeHead)
|
|
57
|
+
throw new DocxHistoryError('InitializationUnsupported', 'Storage cannot import an exact head.');
|
|
58
|
+
return JSON.stringify(await storage.initializeHead(documentId, JSON.parse(head)));
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** Durable package-history client. Reopening over the same adapters preserves history.
|
|
63
|
+
* Await active calls before close(); it releases handles but never deletes host data. */
|
|
64
|
+
export class DocxHistoryClient {
|
|
65
|
+
constructor(bridge, storage) {
|
|
66
|
+
this.bridge = bridge;
|
|
67
|
+
this.closed = false;
|
|
68
|
+
if (nextAdapter >= 0x7fffffff)
|
|
69
|
+
throw new Error('History adapter identifiers exhausted.');
|
|
70
|
+
this.adapterId = ++nextAdapter;
|
|
71
|
+
adapters.set(this.adapterId, storage);
|
|
72
|
+
try {
|
|
73
|
+
this.handle = storage.initializeHead && bridge.OpenWithInitialization
|
|
74
|
+
? bridge.OpenWithInitialization(this.adapterId) : bridge.Open(this.adapterId);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
adapters.delete(this.adapterId);
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
close() {
|
|
82
|
+
if (this.closed)
|
|
83
|
+
return;
|
|
84
|
+
this.bridge.Close(this.handle);
|
|
85
|
+
adapters.delete(this.adapterId);
|
|
86
|
+
this.closed = true;
|
|
87
|
+
}
|
|
88
|
+
/** Bind an identity without reading, creating a version, or taking ownership of this client. */
|
|
89
|
+
document(documentId) {
|
|
90
|
+
return new DocxHistoryDocument(documentId, (operation, fields, bytes) => this.call(operation, documentId, fields, bytes));
|
|
91
|
+
}
|
|
92
|
+
async exportHistoryArchive(documentId) {
|
|
93
|
+
return fromBase64((await this.call('exportArchive', documentId)).bytes);
|
|
94
|
+
}
|
|
95
|
+
async importHistoryArchive(bytes) {
|
|
96
|
+
checkArchiveSize(bytes);
|
|
97
|
+
return (await this.call('importArchive', '', {}, bytes)).import;
|
|
98
|
+
}
|
|
99
|
+
async read(documentId) {
|
|
100
|
+
return (await this.call('read', documentId)).view;
|
|
101
|
+
}
|
|
102
|
+
/** Host-triggered validated metadata tail; first join starts at the latest checkpoint. */
|
|
103
|
+
async readChangesSince(documentId, after, maxEntriesToScan = 10000) {
|
|
104
|
+
return (await this.call('updates', documentId, { expectedHead: after, maxEntriesToScan })).update;
|
|
105
|
+
}
|
|
106
|
+
async readOperationsSince(documentId, after, maxEntriesToScan = 10000) {
|
|
107
|
+
return (await this.call('operations', documentId, { expectedHead: after, maxEntriesToScan })).operationUpdate;
|
|
108
|
+
}
|
|
109
|
+
async getOperation(documentId, operationId) {
|
|
110
|
+
return (await this.call('getOperation', documentId, { operationId })).operation;
|
|
111
|
+
}
|
|
112
|
+
async exportOperationProposal(documentId, operationId) {
|
|
113
|
+
return fromBase64((await this.call('exportOperationProposal', documentId, { operationId })).bytes);
|
|
114
|
+
}
|
|
115
|
+
async compareVersions(documentId, beforeVersionId, afterVersionId) {
|
|
116
|
+
return fromBase64((await this.call('compare', documentId, { beforeVersionId, afterVersionId })).bytes);
|
|
117
|
+
}
|
|
118
|
+
async createVersion(documentId, expectedHead, bytes, metadata, requestId) {
|
|
119
|
+
return (await this.call('create', documentId, { expectedHead, metadata, requestId }, bytes)).view;
|
|
120
|
+
}
|
|
121
|
+
async listVersions(documentId, cursor = null, limit = 25) {
|
|
122
|
+
return (await this.call('list', documentId, { versionId: cursor, limit })).page;
|
|
123
|
+
}
|
|
124
|
+
async getVersion(documentId, versionId) {
|
|
125
|
+
return (await this.call('get', documentId, { versionId })).version;
|
|
126
|
+
}
|
|
127
|
+
async exportVersion(documentId, versionId) {
|
|
128
|
+
return fromBase64((await this.call('export', documentId, { versionId })).bytes);
|
|
129
|
+
}
|
|
130
|
+
async materialize(documentId, sequence, maxEntriesToScan = 10000) {
|
|
131
|
+
return fromBase64((await this.call('materialize', documentId, { sequence, maxEntriesToScan })).bytes);
|
|
132
|
+
}
|
|
133
|
+
async replay(documentId, sequence, maxEntriesToScan = 10000) {
|
|
134
|
+
return fromBase64((await this.call('replay', documentId, { sequence, maxEntriesToScan })).bytes);
|
|
135
|
+
}
|
|
136
|
+
async resolveSequenceAtTime(documentId, cutoff, maxEntriesToScan = 10000) {
|
|
137
|
+
return (await this.call('resolveTime', documentId, { cutoff, maxEntriesToScan })).sequence;
|
|
138
|
+
}
|
|
139
|
+
async restoreVersion(documentId, expectedHead, versionId, metadata, requestId) {
|
|
140
|
+
return (await this.call('restore', documentId, { expectedHead, versionId, metadata, requestId })).view;
|
|
141
|
+
}
|
|
142
|
+
async call(operation, documentId, fields = {}, bytes = new Uint8Array()) {
|
|
143
|
+
if (this.closed)
|
|
144
|
+
throw new DocxHistoryError('Closed', 'History client is closed.');
|
|
145
|
+
return parseResult(await this.bridge.Invoke(this.handle, JSON.stringify({ schemaVersion: 1, operation, documentId, ...fields }), bytes));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** Document-scoped reads. No method publishes or changes an editor. */
|
|
149
|
+
export class DocxHistoryReader {
|
|
150
|
+
get documentId() { return __classPrivateFieldGet(this, _DocxHistoryReader_documentId, "f"); }
|
|
151
|
+
/** @internal Obtain through client.document() or openDocxHistoryArchive(). */
|
|
152
|
+
constructor(documentId, call) {
|
|
153
|
+
this.call = call;
|
|
154
|
+
_DocxHistoryReader_documentId.set(this, void 0);
|
|
155
|
+
__classPrivateFieldSet(this, _DocxHistoryReader_documentId, documentId, "f");
|
|
156
|
+
}
|
|
157
|
+
async read() { return (await this.call('read')).view; }
|
|
158
|
+
async listVersions(cursor = null, limit = 25) {
|
|
159
|
+
return (await this.call('list', { versionId: cursor, limit })).page;
|
|
160
|
+
}
|
|
161
|
+
async getVersion(versionId) {
|
|
162
|
+
return (await this.call('get', { versionId })).version;
|
|
163
|
+
}
|
|
164
|
+
/** Omit versionId for latest; pass an ID to keep a UI operation pinned to a captured version. */
|
|
165
|
+
async exportDocx(versionId = null) {
|
|
166
|
+
return fromBase64((await this.call('exportDocx', { versionId })).bytes);
|
|
167
|
+
}
|
|
168
|
+
async exportHistoryArchive() { return fromBase64((await this.call('exportArchive')).bytes); }
|
|
169
|
+
async materialize(sequence, maxEntriesToScan = 10000) {
|
|
170
|
+
return fromBase64((await this.call('materialize', { sequence, maxEntriesToScan })).bytes);
|
|
171
|
+
}
|
|
172
|
+
async replay(sequence, maxEntriesToScan = 10000) {
|
|
173
|
+
return fromBase64((await this.call('replay', { sequence, maxEntriesToScan })).bytes);
|
|
174
|
+
}
|
|
175
|
+
async resolveSequenceAtTime(cutoff, maxEntriesToScan = 10000) {
|
|
176
|
+
return (await this.call('resolveTime', { cutoff, maxEntriesToScan })).sequence;
|
|
177
|
+
}
|
|
178
|
+
async readChangesSince(after, maxEntriesToScan = 10000) {
|
|
179
|
+
return (await this.call('updates', { expectedHead: after, maxEntriesToScan })).update;
|
|
180
|
+
}
|
|
181
|
+
async readOperationsSince(after, maxEntriesToScan = 10000) {
|
|
182
|
+
return (await this.call('operations', { expectedHead: after, maxEntriesToScan })).operationUpdate;
|
|
183
|
+
}
|
|
184
|
+
async getOperation(operationId) {
|
|
185
|
+
return (await this.call('getOperation', { operationId })).operation;
|
|
186
|
+
}
|
|
187
|
+
async exportOperationProposal(operationId) {
|
|
188
|
+
return fromBase64((await this.call('exportOperationProposal', { operationId })).bytes);
|
|
189
|
+
}
|
|
190
|
+
/** Redlined DOCX through DocxCompare's existing accepted-input revision policy. */
|
|
191
|
+
async compareVersions(beforeVersionId, afterVersionId) {
|
|
192
|
+
return fromBase64((await this.call('compare', { beforeVersionId, afterVersionId })).bytes);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
_DocxHistoryReader_documentId = new WeakMap();
|
|
196
|
+
/** Explicit checkpoint/restore controls over host-owned storage; request IDs are required here. */
|
|
197
|
+
export class DocxHistoryDocument extends DocxHistoryReader {
|
|
198
|
+
async createVersion(expectedHead, bytes, metadata, requestId) {
|
|
199
|
+
requireRequestId(requestId);
|
|
200
|
+
return (await this.call('create', { expectedHead, metadata, requestId }, bytes)).view;
|
|
201
|
+
}
|
|
202
|
+
async restoreVersion(expectedHead, versionId, metadata, requestId) {
|
|
203
|
+
requireRequestId(requestId);
|
|
204
|
+
return (await this.call('restore', { expectedHead, versionId, metadata, requestId })).view;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/** Standalone readonly file. Owns its handle and captured bytes; await calls before close(). */
|
|
208
|
+
export class DocxHistoryArchive extends DocxHistoryReader {
|
|
209
|
+
constructor(bridge, handle, info) {
|
|
210
|
+
super(info.documentId, async (operation, fields = {}, bytes = new Uint8Array()) => {
|
|
211
|
+
if (this.closed)
|
|
212
|
+
throw new DocxHistoryError('Closed', 'History archive is closed.');
|
|
213
|
+
return parseResult(await bridge.Invoke(handle, JSON.stringify({ schemaVersion: 1, operation, documentId: this.documentId, ...fields }), bytes));
|
|
214
|
+
});
|
|
215
|
+
this.bridge = bridge;
|
|
216
|
+
this.handle = handle;
|
|
217
|
+
this.info = info;
|
|
218
|
+
this.closed = false;
|
|
219
|
+
}
|
|
220
|
+
/** For custom loaders; normal callers use openDocxHistoryArchive(). */
|
|
221
|
+
static async open(bridge, bytes) {
|
|
222
|
+
checkArchiveSize(bytes);
|
|
223
|
+
if (!bridge.OpenArchive)
|
|
224
|
+
throw new Error('This WASM build does not include portable history.');
|
|
225
|
+
const result = parseResult(await bridge.OpenArchive(bytes));
|
|
226
|
+
return new DocxHistoryArchive(bridge, result.handle, result.archive);
|
|
227
|
+
}
|
|
228
|
+
close() {
|
|
229
|
+
if (this.closed)
|
|
230
|
+
return;
|
|
231
|
+
this.bridge.Close(this.handle);
|
|
232
|
+
this.closed = true;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function parseResult(json) {
|
|
236
|
+
const result = JSON.parse(json);
|
|
237
|
+
if (!result.success)
|
|
238
|
+
throw new DocxHistoryError(result.errorCode, result.message);
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
function checkArchiveSize(bytes) {
|
|
242
|
+
if (bytes.length > MAX_HISTORY_ARCHIVE_BYTES)
|
|
243
|
+
throw new DocxHistoryError('ResourceLimit', 'History archive exceeds 64 MiB.');
|
|
244
|
+
}
|
|
245
|
+
function requireRequestId(requestId) {
|
|
246
|
+
if (typeof requestId !== 'string' || !requestId.trim())
|
|
247
|
+
throw new DocxHistoryError('InvalidRequest', 'A durable requestId is required.');
|
|
248
|
+
}
|
|
249
|
+
/** Reference process-local storage. Share one instance among local clients; it is not durable
|
|
250
|
+
* across a page/process restart. Every incoming blob is copied and SHA-256 verified. */
|
|
251
|
+
export function createMemoryHistoryStorage(maxBlobBytes = 256 * 1024 * 1024) {
|
|
252
|
+
if (!Number.isSafeInteger(maxBlobBytes) || maxBlobBytes <= 0)
|
|
253
|
+
throw new RangeError('Invalid blob byte limit.');
|
|
254
|
+
const blobs = new Map();
|
|
255
|
+
const heads = new Map();
|
|
256
|
+
const copy = (value) => JSON.parse(JSON.stringify(value));
|
|
257
|
+
const key = (reference) => {
|
|
258
|
+
if (reference.digest.algorithm !== 'SHA-256' || !/^[a-f0-9]{64}$/.test(reference.digest.value)
|
|
259
|
+
|| !Number.isSafeInteger(reference.length) || reference.length < 0 || reference.length > maxBlobBytes)
|
|
260
|
+
throw new DocxHistoryError('InvalidRequest', 'Invalid blob reference or byte limit.');
|
|
261
|
+
return `${reference.digest.value}:${reference.length}`;
|
|
262
|
+
};
|
|
263
|
+
const equalReference = (a, b) => a.length === b.length && a.digest.algorithm === b.digest.algorithm && a.digest.value === b.digest.value;
|
|
264
|
+
const equalHead = (a, b) => a === null || b === null
|
|
265
|
+
? a === b : a.revision === b.revision && equalReference(a.state, b.state);
|
|
266
|
+
return {
|
|
267
|
+
async readBlob(reference) { return blobs.get(key(reference))?.slice() ?? null; },
|
|
268
|
+
async putBlob(reference, bytes) {
|
|
269
|
+
const blobKey = key(reference);
|
|
270
|
+
const captured = bytes.slice();
|
|
271
|
+
if (captured.length !== reference.length)
|
|
272
|
+
throw new DocxHistoryError('PayloadMismatch', 'Blob length mismatch.');
|
|
273
|
+
const digest = Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', captured)), n => n.toString(16).padStart(2, '0')).join('');
|
|
274
|
+
if (digest !== blobKey.split(':')[0])
|
|
275
|
+
throw new DocxHistoryError('PayloadMismatch', 'Blob digest mismatch.');
|
|
276
|
+
if (!blobs.has(blobKey))
|
|
277
|
+
blobs.set(blobKey, captured);
|
|
278
|
+
},
|
|
279
|
+
async readHead(documentId) { return copy(heads.get(documentId) ?? null); },
|
|
280
|
+
async advanceHead(documentId, expected, state) {
|
|
281
|
+
key(state);
|
|
282
|
+
const current = heads.get(documentId) ?? null;
|
|
283
|
+
if (!equalHead(current, expected))
|
|
284
|
+
return null;
|
|
285
|
+
const revision = BigInt(current?.revision ?? '0') + 1n;
|
|
286
|
+
if (revision > 9223372036854775807n)
|
|
287
|
+
throw new RangeError('History revision exhausted.');
|
|
288
|
+
const head = { revision: String(revision), state: copy(state) };
|
|
289
|
+
// No awaits inside the compare/publication critical section, even under concurrent callers.
|
|
290
|
+
heads.set(documentId, head);
|
|
291
|
+
return copy(head);
|
|
292
|
+
},
|
|
293
|
+
async initializeHead(documentId, head) {
|
|
294
|
+
key(head.state);
|
|
295
|
+
if (typeof head.revision !== 'string' || !/^[1-9][0-9]*$/.test(head.revision) || BigInt(head.revision) > 9223372036854775807n)
|
|
296
|
+
throw new DocxHistoryError('InvalidRequest', 'Imported head revision must be a positive Int64 string.');
|
|
297
|
+
const existing = heads.get(documentId);
|
|
298
|
+
if (existing)
|
|
299
|
+
return { initialized: false, head: copy(existing) };
|
|
300
|
+
// Same synchronous critical section as advanceHead; exact revision, no await/increment.
|
|
301
|
+
const captured = copy(head);
|
|
302
|
+
heads.set(documentId, captured);
|
|
303
|
+
return { initialized: true, head: copy(captured) };
|
|
304
|
+
},
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AA8F1D,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAA4B,IAAY,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAAhD,SAAI,GAAJ,IAAI,CAAQ;QAAqC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IAAC,CAAC;CAC/G;AAmBD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;AACnD,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,SAAS,OAAO,CAAC,EAAU;IACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiB;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM;QAC1D,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AACD,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,4BAA4B,CAAC,gBAAyD;IACpG,gBAAgB,CAAC,kBAAkB,EAAE;QACnC,QAAQ,EAAE,KAAK,EAAE,EAAU,EAAE,IAAY,EAAmB,EAAE;YAC5D,MAAM,SAAS,GAAyB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;gBAAE,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,gDAAgD,CAAC,CAAC;YACvI,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAU,EAAE,IAAY,EAAE,KAAiB,EAAiB,EAAE,CAC5E,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACtD,QAAQ,EAAE,KAAK,EAAE,EAAU,EAAE,UAAkB,EAAmB,EAAE,CAClE,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxD,WAAW,EAAE,KAAK,EAAE,EAAU,EAAE,UAAkB,EAAE,QAAgB,EAAE,KAAa,EAAmB,EAAE,CACtG,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,cAAc,EAAE,KAAK,EAAE,EAAU,EAAE,UAAkB,EAAE,IAAY,EAAmB,EAAE;YACtF,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,cAAc;gBAAE,MAAM,IAAI,gBAAgB,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CAAC;YAC7H,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;yFACyF;AACzF,MAAM,OAAO,iBAAiB;IAK5B,YAA6B,MAAqB,EAAE,OAAuB;QAA9C,WAAM,GAAN,MAAM,CAAe;QAF1C,WAAM,GAAG,KAAK,CAAC;QAGrB,IAAI,WAAW,IAAI,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS,GAAG,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,sBAAsB;gBACzE,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAClF,OAAO,KAAK,EAAE,CAAC;YAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IACjE,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,gGAAgG;IAChG,QAAQ,CAAC,UAAkB;QACzB,OAAO,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5H,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,UAAkB;QAC3C,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,CAAC,oBAAoB,CAAC,KAAiB;QAC1C,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAO,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB;QAC3B,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IACD,0FAA0F;IAC1F,KAAK,CAAC,gBAAgB,CAAC,UAAkB,EAAE,KAAyB,EAAE,gBAAgB,GAAG,KAAM;QAC7F,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAO,CAAC;IACrG,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,UAAkB,EAAE,KAAyB,EAAE,gBAAgB,GAAG,KAAM;QAChG,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAgB,CAAC;IACjH,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,WAAiC;QACtE,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAU,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,UAAkB,EAAE,WAAiC;QACjF,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACtG,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,eAAqC,EAAE,cAAoC;QACnH,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IAC1G,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,YAAgC,EAAE,KAAiB,EACzF,QAA6B,EAAE,SAAkB;QACjD,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAK,CAAC;IACrG,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,SAAsC,IAAI,EAAE,KAAK,GAAG,EAAE;QAC3F,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,SAA+B;QAClE,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,UAAkB,EAAE,SAA+B;QACrE,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,QAAyB,EAAE,gBAAgB,GAAG,KAAM;QACxF,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACzG,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,QAAyB,EAAE,gBAAgB,GAAG,KAAM;QACnF,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACpG,CAAC;IACD,KAAK,CAAC,qBAAqB,CAAC,UAAkB,EAAE,MAAc,EAAE,gBAAgB,GAAG,KAAM;QACvF,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,QAAS,CAAC;IAC9F,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,YAAyB,EAAE,SAA+B,EACjG,QAA6B,EAAE,SAAkB;QACjD,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;IAC1G,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,UAAkB,EAAE,SAAiB,EAAE,EAAE,QAAoB,IAAI,UAAU,EAAE;QACjH,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;QACnF,OAAO,WAAW,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EACrD,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC;CACF;AAID,uEAAuE;AACvE,MAAM,OAAO,iBAAiB;IAE5B,IAAI,UAAU,KAAa,OAAO,uBAAA,IAAI,qCAAY,CAAC,CAAC,CAAC;IACrD,8EAA8E;IAC9E,YAAY,UAAkB,EAAqB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAH3D,gDAAoB;QAG2C,uBAAA,IAAI,iCAAe,UAAU,MAAA,CAAC;IAAC,CAAC;IACxG,KAAK,CAAC,IAAI,KAAsC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,KAAK,CAAC,YAAY,CAAC,SAAsC,IAAI,EAAE,KAAK,GAAG,EAAE;QACvE,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;IACvE,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,SAA+B;QAC9C,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC;IAC1D,CAAC;IACD,iGAAiG;IACjG,KAAK,CAAC,UAAU,CAAC,YAAyC,IAAI;QAC5D,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,CAAC,oBAAoB,KAA0B,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC;IACnH,KAAK,CAAC,WAAW,CAAC,QAAyB,EAAE,gBAAgB,GAAG,KAAM;QACpE,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,QAAyB,EAAE,gBAAgB,GAAG,KAAM;QAC/D,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,CAAC,qBAAqB,CAAC,MAAc,EAAE,gBAAgB,GAAG,KAAM;QACnE,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,QAAS,CAAC;IAClF,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,KAAyB,EAAE,gBAAgB,GAAG,KAAM;QACzE,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAO,CAAC;IACzF,CAAC;IACD,KAAK,CAAC,mBAAmB,CAAC,KAAyB,EAAE,gBAAgB,GAAG,KAAM;QAC5E,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAgB,CAAC;IACrG,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,WAAiC;QAClD,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAU,CAAC;IACvE,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,WAAiC;QAC7D,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IAC1F,CAAC;IACD,mFAAmF;IACnF,KAAK,CAAC,eAAe,CAAC,eAAqC,EAAE,cAAoC;QAC/F,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC;IAC9F,CAAC;CACF;;AAED,mGAAmG;AACnG,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IACxD,KAAK,CAAC,aAAa,CAAC,YAAgC,EAAE,KAAiB,EAAE,QAA6B,EACpG,SAAiB;QACjB,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAK,CAAC;IACzF,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,YAAyB,EAAE,SAA+B,EAAE,QAA6B,EAC5G,SAAiB;QACjB,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;IAC9F,CAAC;CACF;AAED,gGAAgG;AAChG,MAAM,OAAO,kBAAmB,SAAQ,iBAAiB;IAEvD,YAAqC,MAAqB,EAAmB,MAAc,EACzE,IAA4B;QAC5C,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI,UAAU,EAAE,EAAE,EAAE;YAChF,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YACpF,OAAO,WAAW,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAC3C,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;QANgC,WAAM,GAAN,MAAM,CAAe;QAAmB,WAAM,GAAN,MAAM,CAAQ;QACzE,SAAI,GAAJ,IAAI,CAAwB;QAFtC,WAAM,GAAG,KAAK,CAAC;IAQvB,CAAC;IACD,uEAAuE;IACvE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAqB,EAAE,KAAiB;QACxD,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC/F,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAO,EAAE,MAAM,CAAC,OAAQ,CAAC,CAAC;IACzE,CAAC;IACD,KAAK;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrD,CAAC;CACF;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAU,EAAE,MAAM,CAAC,OAAQ,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,gBAAgB,CAAC,KAAiB;IACzC,IAAI,KAAK,CAAC,MAAM,GAAG,yBAAyB;QAAE,MAAM,IAAI,gBAAgB,CAAC,eAAe,EAAE,iCAAiC,CAAC,CAAC;AAC/H,CAAC;AACD,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;AAC3I,CAAC;AAED;wFACwF;AACxF,MAAM,UAAU,0BAA0B,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI;IACzE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAI,KAAQ,EAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,CAAC,SAA+B,EAAU,EAAE;QACtD,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;eACzF,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,YAAY;YACrG,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,uCAAuC,CAAC,CAAC;QACxF,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;IACzD,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,CAAC,CAAuB,EAAE,CAAuB,EAAW,EAAE,CACnF,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAC1G,MAAM,SAAS,GAAG,CAAC,CAAqB,EAAE,CAAqB,EAAW,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QACnG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QAChF,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK;YAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;gBAAE,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;YACjH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EACvF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;YAC7G,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK;YAC3C,GAAG,CAAC,KAAK,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACvD,IAAI,QAAQ,GAAG,oBAAoB;gBAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;YACzF,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,4FAA4F;YAC5F,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI;YACnC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,oBAAoB;gBAC3H,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,yDAAyD,CAAC,CAAC;YAC1G,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,QAAQ;gBAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,wFAAwF;YACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC7D,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { ConversionOptions, CompareOptions, RevisionListEntry, VersionInfo, ErrorResponse, CompareResult, PackageManifest, DeliverableVerificationResult, DeliveryReceiptVerificationResult, RedlineReversibilityProof, DocxodusWasmExports, FormatChangeDetails, DocxDiffSettings, DocxDiffRevision, DocxDiffBatchCandidate, DocxDiffBatchResult, DocxDiffProduct, DocxDiffProducts, SemanticChange, SemanticChangeFamily, SemanticChangeOperation, SemanticChangeSet, SemanticValue, DocxDiffReviewer, DocxDiffConsolidateSettings, DocxDiffConflict, DocxDiffConflictCompetitor, DocxDiffConsolidatedRevision, Annotation, AddAnnotationRequest, AddAnnotationResponse, RemoveAnnotationResponse, AnnotationOptions, DocumentStructure, DocumentElement, TableColumnInfo, AnnotationTarget, AddAnnotationWithTargetRequest, DocumentMetadata, SectionMetadata, OpenContractDocExport, PawlsPage, PawlsPageBoundary, PawlsToken, OpenContractsAnnotation, OpenContractsSinglePageAnnotation, BoundingBox, TokenId, TextSpan, OpenContractsRelationship, AnnotationLabel, ExternalAnnotationSet, ExternalAnnotationValidationResult, ExternalAnnotationValidationIssue, ExternalAnnotationProjectionSettings, MarkdownProjectionSettings, MarkdownAnchorTarget, MarkdownProjection, DocxSessionSettings } from "./types.js";
|
|
2
2
|
import { DocxSession } from "./session.js";
|
|
3
|
+
import { DocxHistoryArchive, DocxHistoryClient } from './history.js';
|
|
4
|
+
import type { HistoryStorage } from './history.js';
|
|
5
|
+
export * from './history.js';
|
|
6
|
+
/** Open history over host-owned storage after initialize(). No network layer is installed. */
|
|
7
|
+
export declare function openDocxHistory(storage: HistoryStorage): DocxHistoryClient;
|
|
8
|
+
/** Open a self-contained readonly .docxhistory file after initialize(); no storage adapter needed. */
|
|
9
|
+
export declare function openDocxHistoryArchive(bytes: Uint8Array): Promise<DocxHistoryArchive>;
|
|
3
10
|
export { DocxSession } from "./session.js";
|
|
4
11
|
export type { AnchorInfo, AnchorRef, AnchorTargetRef, BlockMetadata, BookmarkInfo, BookmarkRangeSegment, CharSpan, CommentListEntry, ContentControlBindingInfo, ContentControlBindingPolicy, ContentControlFillOptions, ContentControlInfo, ContentControlPlacement, ContentControlType, DocumentAnnotation, DocumentRange, DocxSessionProjection, DocxSessionSettings, EditError, EditErrorCode, EditResult, FindOptions, EditorRenderOptions, FormatOp, HyperlinkInfo, HyperlinkKind, ImageBinaryFormat, ImageCapabilities, ImageDimensions, ImageFormatCapability, ImageHorizontalAlignment, ImageHorizontalReference, ImageInsertOptions, ImageMarkupKind, ImageOccurrence, ImagePlacement, ImageVerticalAlignment, ImageVerticalReference, ImageWrapMode, ImageWrapSide, FloatingImageLayout, LineSpacingRule, ListMembership, FormattingInspection, InlineSpan, ParagraphFormatting, RunFormattingInfo, StyleInfo, TableStyleFormatting, MarkdownPatch, NumberFormat, PageCitation, PageCitationFragment, PageCitationPage, PageCitationRequest, PageCitationUnavailableReason, PageMapRegistrationResult, PageMapStatus, PageNumberField, PageNumberingOp, PageSetupOp, ParagraphBorderEdge, ParagraphFormatOp, RevisionDiagnostic, RevisionFamily, RevisionResolutionStatus, SectionInfo, SessionRevisionType, TableOfAuthoritiesOptions, TableOfContentsOptions, TableOfFiguresOptions, TableBorderScope, TableBorderSpec, TableInsertOptions, TableMergeContent, TableShadingScope, PackageManifest, PackageManifestInspectionLimits, PackageManifestEntry, PackageManifestFacts, PackageRelationship, PackageContentTypeDeclaration, PackageRevisionCounts, PackageAnnotationCounts, DeliverableVerificationResult, DeliveryArtifactVerification, DeliveryArtifactVerificationStatus, DeliveryReceiptVerificationResult, DeliverableVerificationMode, DeliverableVerificationDecision, DeliverableFindingDisposition, DeliverableFindingCategory, DeliverableCheckStatus, DeliverablePackageChangeKind, DeliverableArtifactRole, DeliverableArtifactAvailability, DeliverableSemanticChangeFamily, DeliverablePackageIdentity, DeliverableCheckResult, DeliverableFinding, DeliverablePackageChange, DeliverableSemanticChange, DeliverableSemanticDelta, DeliverableArtifactMetadata, VerificationDigest, VerificationFinding, VerificationFindingSeverity, ChangeLocation, RedlineReversibilityProof, RedlineProofPathResult, RedlineProofPackageIdentity, RedlineProofFinding, RedlineProofDirection, RedlineRevisionClassification, RedlineRevisionDisposition, RedlineRevisionIdentity, RedlineRevisionFamily, RedlineRevisionResolutionStatus, RedlineRevisionDiagnostic, RedlineModeledSemanticComparison, RedlinePackageDivergence, RedlinePackageDivergenceKind, } from "./types.js";
|
|
5
12
|
export type { FillOptions, BulkEditResult } from "./types.js";
|