@embedpdf/engine-core 3.0.0-next.11 → 3.0.0-next.13
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/dist/{AbortError-CRSooKsk.cjs → AbortError-Cq2igpZ6.cjs} +2 -2
- package/dist/{AbortError-CRSooKsk.cjs.map → AbortError-Cq2igpZ6.cjs.map} +1 -1
- package/dist/{AbortError-8-9JAX1Y.js → AbortError-DHqPBnYc.js} +2 -2
- package/dist/{AbortError-8-9JAX1Y.js.map → AbortError-DHqPBnYc.js.map} +1 -1
- package/dist/{AnnotationListSnapshot-C1U3XUxP.d.cts → AnnotationListSnapshot-D3mFut1e.d.cts} +1323 -214
- package/dist/{AnnotationListSnapshot-C1U3XUxP.d.ts → AnnotationListSnapshot-D3mFut1e.d.ts} +1323 -214
- package/dist/{DocumentSecurityService-6rhztZlz.d.cts → DocumentSecurityService-ClTZc0zO.d.cts} +2 -2
- package/dist/{DocumentSecurityService-7nL9aY75.d.ts → DocumentSecurityService-_JRjqvoI.d.ts} +2 -2
- package/dist/{Engine-D3868xIU.d.cts → Engine-Bx0NOfmd.d.cts} +219 -11
- package/dist/{Engine-CWnAKccD.d.ts → Engine-DxtpCYcP.d.ts} +219 -11
- package/dist/{PageInsertBlankInput-CzShuSJI.cjs → PageInsertBlankInput-CqXBmFhN.cjs} +37 -2
- package/dist/PageInsertBlankInput-CqXBmFhN.cjs.map +1 -0
- package/dist/{PageInsertBlankInput-WKY0tr6S.js → PageInsertBlankInput-cHq9-i-z.js} +37 -2
- package/dist/PageInsertBlankInput-cHq9-i-z.js.map +1 -0
- package/dist/{builders-Do6_4KnS.cjs → builders-Bqm8yTpi.cjs} +1483 -11
- package/dist/builders-Bqm8yTpi.cjs.map +1 -0
- package/dist/{builders-Cdz34nbF.js → builders-Dqo2X-dt.js} +1364 -12
- package/dist/builders-Dqo2X-dt.js.map +1 -0
- package/dist/conformance.cjs +1630 -107
- package/dist/conformance.cjs.map +1 -1
- package/dist/conformance.d.cts +117 -3
- package/dist/conformance.d.ts +117 -3
- package/dist/conformance.js +1627 -108
- package/dist/conformance.js.map +1 -1
- package/dist/{fold-C7I5GpBz.cjs → fold-2V29cxCV.cjs} +2 -2
- package/dist/{fold-C7I5GpBz.cjs.map → fold-2V29cxCV.cjs.map} +1 -1
- package/dist/{fold-BfyxxwS6.js → fold-CdEJTBTn.js} +2 -2
- package/dist/{fold-BfyxxwS6.js.map → fold-CdEJTBTn.js.map} +1 -1
- package/dist/index.cjs +33 -4
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +5 -5
- package/dist/{resolver-D-jumvgM.cjs → resolver-CYVNV4hn.cjs} +216 -10
- package/dist/resolver-CYVNV4hn.cjs.map +1 -0
- package/dist/{resolver-CHG4waXL.js → resolver-inAVzsWt.js} +157 -11
- package/dist/resolver-inAVzsWt.js.map +1 -0
- package/dist/runtime.cjs +34 -5
- package/dist/runtime.d.cts +253 -5
- package/dist/runtime.d.ts +253 -5
- package/dist/runtime.js +6 -6
- package/dist/{schemas-XGrNVMDd.js → schemas-BLARNCgx.js} +469 -7
- package/dist/schemas-BLARNCgx.js.map +1 -0
- package/dist/{schemas-CS5iPpX5.cjs → schemas-DIqFMmrC.cjs} +672 -6
- package/dist/schemas-DIqFMmrC.cjs.map +1 -0
- package/dist/wire.cjs +250 -12
- package/dist/wire.cjs.map +1 -1
- package/dist/wire.d.cts +444 -4
- package/dist/wire.d.ts +444 -4
- package/dist/wire.js +214 -13
- package/dist/wire.js.map +1 -1
- package/package.json +1 -1
- package/dist/PageInsertBlankInput-CzShuSJI.cjs.map +0 -1
- package/dist/PageInsertBlankInput-WKY0tr6S.js.map +0 -1
- package/dist/builders-Cdz34nbF.js.map +0 -1
- package/dist/builders-Do6_4KnS.cjs.map +0 -1
- package/dist/resolver-CHG4waXL.js.map +0 -1
- package/dist/resolver-D-jumvgM.cjs.map +0 -1
- package/dist/schemas-CS5iPpX5.cjs.map +0 -1
- package/dist/schemas-XGrNVMDd.js.map +0 -1
|
@@ -684,7 +684,7 @@ interface AnnotationDraftBase {
|
|
|
684
684
|
* expands these capabilities. PDF bits are NEVER consulted unless
|
|
685
685
|
* `pdf.permissions` is in scope.
|
|
686
686
|
*/
|
|
687
|
-
type DocCapability = 'doc.open' | 'doc.render' | 'doc.text.select' | 'doc.text.copy' | 'doc.text.search' | 'doc.content.copy' | 'doc.download' | 'doc.download.flattened' | 'doc.print' | 'doc.print.high' | 'doc.pages.modify' | 'doc.pages.assemble' | 'doc.forms.read' | 'doc.forms.fill' | 'doc.forms.modify' | 'doc.forms.submit' | 'doc.annotate.read' | 'doc.annotate.modify' | 'doc.metadata.modify' | 'doc.attachments.modify' | 'doc.redact';
|
|
687
|
+
type DocCapability = 'doc.open' | 'doc.render' | 'doc.text.select' | 'doc.text.copy' | 'doc.text.search' | 'doc.content.copy' | 'doc.download' | 'doc.download.flattened' | 'doc.print' | 'doc.print.high' | 'doc.pages.modify' | 'doc.pages.assemble' | 'doc.forms.read' | 'doc.forms.fill' | 'doc.forms.modify' | 'doc.forms.submit' | 'doc.annotate.read' | 'doc.annotate.modify' | 'doc.metadata.modify' | 'doc.attachments.modify' | 'doc.redact' | 'doc.sign' | 'doc.sign.certify';
|
|
688
688
|
/**
|
|
689
689
|
* Single-entity collaboration vocabulary. Only annotations are
|
|
690
690
|
* collab-scoped today; future entities slot into the same grammar.
|
|
@@ -869,6 +869,419 @@ declare class MissingIdentity extends Error {
|
|
|
869
869
|
constructor(scope: string);
|
|
870
870
|
}
|
|
871
871
|
//#endregion
|
|
872
|
+
//#region src/identity/FormFieldRef.d.ts
|
|
873
|
+
/**
|
|
874
|
+
* How callers address a logical form field.
|
|
875
|
+
*
|
|
876
|
+
* - `objectNumber` — the indirect object number of the field dictionary.
|
|
877
|
+
* ISO 32000 guarantees every real AcroForm field dictionary is an
|
|
878
|
+
* indirect object, and the layer runtime never renumbers (frozen base +
|
|
879
|
+
* incremental deltas), so this is the durable identity for the lifetime
|
|
880
|
+
* of a document. Preferred for all engine calls.
|
|
881
|
+
* - `fqn` — the fully qualified field name ("billing.name"). The portable,
|
|
882
|
+
* semantic identity used by interchange formats (FDF/XFDF) and analytics;
|
|
883
|
+
* survives document rewrites but is only as unique as the producer made
|
|
884
|
+
* it. The engine resolves it against the reconciled field tree.
|
|
885
|
+
*/
|
|
886
|
+
type FormFieldRef = {
|
|
887
|
+
kind: 'objectNumber';
|
|
888
|
+
fieldObjectNumber: number;
|
|
889
|
+
} | {
|
|
890
|
+
kind: 'fqn';
|
|
891
|
+
name: string;
|
|
892
|
+
};
|
|
893
|
+
/**
|
|
894
|
+
* URL-safe encoding of a `FormFieldRef`, used by the cloud HTTP surface as
|
|
895
|
+
* the `:fieldKey` route parameter. Decoded by the server back into a
|
|
896
|
+
* `FormFieldRef` via `decodeFieldRefKey`. Mirrors the annotation plane's
|
|
897
|
+
* `encodeStableIdKey` (`obj:42` / `nm:…`) so the two member-key syntaxes
|
|
898
|
+
* read the same on the wire:
|
|
899
|
+
*
|
|
900
|
+
* `{ kind: 'objectNumber', fieldObjectNumber: 12 }` -> `'obj:12'`
|
|
901
|
+
* `{ kind: 'fqn', name: 'billing.name' }` -> `'fqn:billing.name'`
|
|
902
|
+
*
|
|
903
|
+
* The caller is responsible for `encodeURIComponent`-ing the result before
|
|
904
|
+
* splicing it into a URL path; the `wirePaths.layerFormField*` builders
|
|
905
|
+
* already do that. FQNs are opaque strings and may contain anything; the
|
|
906
|
+
* `fqn:` prefix keeps them unambiguous from numeric ids.
|
|
907
|
+
*/
|
|
908
|
+
declare function encodeFieldRefKey(ref: FormFieldRef): string;
|
|
909
|
+
/**
|
|
910
|
+
* Inverse of `encodeFieldRefKey`. Returns `null` for malformed input so the
|
|
911
|
+
* server can answer 400 InvalidArg with a useful message instead of
|
|
912
|
+
* throwing. The input is the already-`decodeURIComponent`-ed segment from
|
|
913
|
+
* the route path. Empty FQNs are rejected: `fqn:` with no suffix is not a
|
|
914
|
+
* valid identity.
|
|
915
|
+
*/
|
|
916
|
+
declare function decodeFieldRefKey(key: string): FormFieldRef | null;
|
|
917
|
+
/** A widget annotation of a field, as the forms subsystem sees it. */
|
|
918
|
+
interface FormWidgetRef {
|
|
919
|
+
/**
|
|
920
|
+
* Indirect object number of the widget annotation — the join key to the
|
|
921
|
+
* annotation subsystem's `objectNumber` refs. `0` when the widget is
|
|
922
|
+
* stored as a direct object (spec-violating; cannot be addressed).
|
|
923
|
+
*/
|
|
924
|
+
annotObjectNumber: number;
|
|
925
|
+
/**
|
|
926
|
+
* Object number of the page whose /Annots array references the widget.
|
|
927
|
+
* `0` when the widget is not reachable from any page ("unplaced").
|
|
928
|
+
*/
|
|
929
|
+
pageObjectNumber: PageObjectNumber;
|
|
930
|
+
}
|
|
931
|
+
//#endregion
|
|
932
|
+
//#region src/dto/CachePins.d.ts
|
|
933
|
+
/**
|
|
934
|
+
* Per-page cache-busting integers embedded in immutable cloud/CDN leaf URLs.
|
|
935
|
+
*
|
|
936
|
+
* These are not page state. They are read coordinates for cacheable endpoints:
|
|
937
|
+
* `/text` uses `contentVersion`; `/annotations` uses `annotationVersion`.
|
|
938
|
+
*/
|
|
939
|
+
interface CachePins {
|
|
940
|
+
contentVersion: number;
|
|
941
|
+
annotationVersion: number;
|
|
942
|
+
}
|
|
943
|
+
//#endregion
|
|
944
|
+
//#region src/revision/WeakAnnotationState.d.ts
|
|
945
|
+
/**
|
|
946
|
+
* Tri-state knowledge about weak annotation identities on a page.
|
|
947
|
+
*
|
|
948
|
+
* `known(false)` is a stronger claim than "we have not looked yet": it means
|
|
949
|
+
* the page's annotations were scanned and every annotation had a durable
|
|
950
|
+
* identity. Cloud/CDN manifests must only publish boolean weak flags from a
|
|
951
|
+
* known state.
|
|
952
|
+
*/
|
|
953
|
+
type WeakAnnotationState = {
|
|
954
|
+
kind: 'unknown';
|
|
955
|
+
} | {
|
|
956
|
+
kind: 'known';
|
|
957
|
+
hasAnyWeakAnnotations: boolean;
|
|
958
|
+
};
|
|
959
|
+
declare const UNKNOWN_WEAK_ANNOTATION_STATE: WeakAnnotationState;
|
|
960
|
+
declare function knownWeakAnnotationState(hasAnyWeakAnnotations: boolean): WeakAnnotationState;
|
|
961
|
+
//#endregion
|
|
962
|
+
//#region src/revision/PageState.d.ts
|
|
963
|
+
/**
|
|
964
|
+
* Per-page liveness envelope returned with annotation reads and mutation
|
|
965
|
+
* metadata. Deliberately scoped to annotation liveness: page identity,
|
|
966
|
+
* weak-ref revision state, and explicit knowledge about weak annotations.
|
|
967
|
+
*
|
|
968
|
+
* Geometry/display order is NOT here — it lives in `PageLayout` (returned by
|
|
969
|
+
* `pages.list()`), joined to this by `pageObjectNumber`. The two change on
|
|
970
|
+
* different cadences (annotation edits vs. structural ops), so they are kept
|
|
971
|
+
* orthogonal and never merged into one struct.
|
|
972
|
+
*/
|
|
973
|
+
interface PageState {
|
|
974
|
+
pageObjectNumber: PageObjectNumber;
|
|
975
|
+
revision: RevisionToken;
|
|
976
|
+
/**
|
|
977
|
+
* Explicit knowledge state for the weak-annotation scan. `unknown` means the
|
|
978
|
+
* page has not been scanned yet; it must not be published as a CDN/cache
|
|
979
|
+
* boolean.
|
|
980
|
+
*/
|
|
981
|
+
weakAnnotationState: WeakAnnotationState;
|
|
982
|
+
}
|
|
983
|
+
//#endregion
|
|
984
|
+
//#region src/mutation/MutationMeta.d.ts
|
|
985
|
+
/**
|
|
986
|
+
* Cache pin patch returned by cloud mutations after the durable DB transaction
|
|
987
|
+
* commits.
|
|
988
|
+
*
|
|
989
|
+
* `previousDocVersion` makes partial page deltas safe: clients may apply the
|
|
990
|
+
* patch only when their cached manifest is exactly at that version. Otherwise
|
|
991
|
+
* they must refresh instead of manufacturing a mixed-version manifest.
|
|
992
|
+
*
|
|
993
|
+
* Deliberately does NOT carry plane scopes: scopes only ever move
|
|
994
|
+
* base → layer, and each mutation kind knows exactly which planes it owns, so
|
|
995
|
+
* the client flips them locally when absorbing this delta (the monotone-flip
|
|
996
|
+
* rule); the manifest is the authoritative source and the 404 → refresh rail
|
|
997
|
+
* the backstop.
|
|
998
|
+
*/
|
|
999
|
+
interface CacheDelta {
|
|
1000
|
+
previousDocVersion: number;
|
|
1001
|
+
docVersion: number;
|
|
1002
|
+
/**
|
|
1003
|
+
* New doc-level bulk annotations pin, present when this mutation bumped
|
|
1004
|
+
* it (annotation CRUD, page insert/delete, redaction, flatten, form
|
|
1005
|
+
* structure — see `DocumentManifest.annotationsVersion`). Absorbing it
|
|
1006
|
+
* keeps the client's cached manifest addressing the fresh bulk leaf
|
|
1007
|
+
* without a 404-refresh round trip.
|
|
1008
|
+
*/
|
|
1009
|
+
annotationsVersion?: number;
|
|
1010
|
+
/**
|
|
1011
|
+
* The layer's write serial after this mutation and whether an artifact
|
|
1012
|
+
* now exists (cloud only). Absorbing them keeps the client's cached
|
|
1013
|
+
* manifest an honest `DocumentVersionRef` source between refreshes.
|
|
1014
|
+
*/
|
|
1015
|
+
layerVersion?: number;
|
|
1016
|
+
working?: boolean;
|
|
1017
|
+
pages: Array<{
|
|
1018
|
+
pageObjectNumber: PageObjectNumber;
|
|
1019
|
+
cache: CachePins;
|
|
1020
|
+
}>;
|
|
1021
|
+
}
|
|
1022
|
+
/**
|
|
1023
|
+
* Base envelope for every layer-mutating operation.
|
|
1024
|
+
*
|
|
1025
|
+
* `affectedPages` is the state delta. `cacheDelta` is the cloud/CDN URL pin
|
|
1026
|
+
* delta and is `null` for local engines.
|
|
1027
|
+
*/
|
|
1028
|
+
interface MutationMeta {
|
|
1029
|
+
affectedPages: PageState[];
|
|
1030
|
+
cacheDelta: CacheDelta | null;
|
|
1031
|
+
}
|
|
1032
|
+
//#endregion
|
|
1033
|
+
//#region src/signature/types.d.ts
|
|
1034
|
+
/**
|
|
1035
|
+
* Digital signatures, read side.
|
|
1036
|
+
*
|
|
1037
|
+
* Three facts, kept apart on purpose (see the signing plan): a signature
|
|
1038
|
+
* is a *bytes* fact (a `/ByteRange` + `/Contents` that seal a byte prefix
|
|
1039
|
+
* of the file), cryptography and trust live in `@embedpdf/core-signature`,
|
|
1040
|
+
* and what changed after a signature is judged per revision. Everything
|
|
1041
|
+
* here is read from the bytes the document was loaded from — for a layer
|
|
1042
|
+
* document, the base followed by the delta it was opened with — never
|
|
1043
|
+
* from unsaved in-memory edits.
|
|
1044
|
+
*/
|
|
1045
|
+
/**
|
|
1046
|
+
* Whether the engine enforces what a document's signatures forbid
|
|
1047
|
+
* (`protect`, the default: document-derived capabilities are subtracted
|
|
1048
|
+
* and locked fields refuse writes) or leaves every edit to the caller
|
|
1049
|
+
* (`permit`: for tools whose job is to produce or test invalid files).
|
|
1050
|
+
* Analysis never depends on it.
|
|
1051
|
+
*/
|
|
1052
|
+
type SignedDocumentPolicy = 'protect' | 'permit';
|
|
1053
|
+
/** Hash algorithms the engine can compute over a byte range. SHA-1 is read-only: legacy signatures verify with it, new ones never use it. */
|
|
1054
|
+
type DigestAlgorithm = 'sha1' | 'sha256' | 'sha384' | 'sha512';
|
|
1055
|
+
/** The two `/SubFilter` values the engine can author. Read-side `subFilter` is the raw name and may be anything. */
|
|
1056
|
+
type SignatureSubFilter = 'adbe.pkcs7.detached' | 'ETSI.CAdES.detached';
|
|
1057
|
+
type SignatureKind = 'signature' | 'timestamp';
|
|
1058
|
+
/**
|
|
1059
|
+
* How the signature's `/ByteRange` relates to the file:
|
|
1060
|
+
* - `whole-revision`: `[0,a) ∪ [b,c)` is exactly one chained revision
|
|
1061
|
+
* and the hole is this signature's own `/Contents`.
|
|
1062
|
+
* - `partial`: well-formed ranges that do not seal a revision.
|
|
1063
|
+
* - `malformed`: unusable ranges or a `/Contents` that is not one DER
|
|
1064
|
+
* object with zero padding.
|
|
1065
|
+
*/
|
|
1066
|
+
type SignatureCoverage = 'whole-revision' | 'partial' | 'malformed';
|
|
1067
|
+
/** DocMDP / `/Lock /P` permission values (ISO 32000-2 Table 257). */
|
|
1068
|
+
type DocMdpPermission = 1 | 2 | 3;
|
|
1069
|
+
/**
|
|
1070
|
+
* The modification level a signed document allows, as a product policy:
|
|
1071
|
+
* - `none`: no byte change at all (not a DocMDP value)
|
|
1072
|
+
* - `lta`: DSS and document timestamps only (P = 1)
|
|
1073
|
+
* - `fill`: + form fill, signatures, new signature fields (P = 2, and how a
|
|
1074
|
+
* validator reads an approval signature)
|
|
1075
|
+
* - `annotate`: + annotations (P = 3)
|
|
1076
|
+
*/
|
|
1077
|
+
type ModificationLevel = 'none' | 'lta' | 'fill' | 'annotate';
|
|
1078
|
+
type FieldLockAction = 'all' | 'include' | 'exclude';
|
|
1079
|
+
/** A FieldMDP transform or a field `/Lock`: which fields it freezes, and an optional `/P` tightening. */
|
|
1080
|
+
interface FieldLockSpec {
|
|
1081
|
+
action: FieldLockAction;
|
|
1082
|
+
/** Fully qualified names; a name covers its descendants (`group` covers `group.total`). Empty for `all`. */
|
|
1083
|
+
fields: string[];
|
|
1084
|
+
permission?: DocMdpPermission;
|
|
1085
|
+
}
|
|
1086
|
+
/**
|
|
1087
|
+
* One saved revision of the file: a byte prefix `[0, end)` closed by a
|
|
1088
|
+
* cross-reference section reachable from the final `startxref`.
|
|
1089
|
+
*/
|
|
1090
|
+
interface PdfRevision {
|
|
1091
|
+
/** 0 = the original document. */
|
|
1092
|
+
index: number;
|
|
1093
|
+
/** File offset just past the `%%EOF` line ending. */
|
|
1094
|
+
end: number;
|
|
1095
|
+
/** File offset of the cross-reference section the revision's startxref names. */
|
|
1096
|
+
xrefOffset: number;
|
|
1097
|
+
/** The signature that seals exactly this revision, when one does. */
|
|
1098
|
+
signatureIndex: number | null;
|
|
1099
|
+
}
|
|
1100
|
+
/** What the signer claimed in the signature dictionary. None of it is verified here; `/M` in particular is a claim. */
|
|
1101
|
+
interface SignatureSigner {
|
|
1102
|
+
name: string | null;
|
|
1103
|
+
reason: string | null;
|
|
1104
|
+
location: string | null;
|
|
1105
|
+
contactInfo: string | null;
|
|
1106
|
+
/** `/M` as written (PDF date string). */
|
|
1107
|
+
claimedTime: string | null;
|
|
1108
|
+
}
|
|
1109
|
+
/** The field's `/SV` seed value: what a signature on this field must satisfy. */
|
|
1110
|
+
interface SignatureSeedValue {
|
|
1111
|
+
/** `/Ff` bits: which of the entries below are requirements rather than suggestions. */
|
|
1112
|
+
requiredFlags: number;
|
|
1113
|
+
/** Which entries are present at all (same bit layout, plus Cert/MDP/TimeStamp). */
|
|
1114
|
+
presentFlags: number;
|
|
1115
|
+
/** `/V`: the seed-value parser capability the signer needs (1 = PDF 1.5, 2 = PDF 1.7). */
|
|
1116
|
+
version: number | null;
|
|
1117
|
+
/** `/MDP /P` when present: 0 = approval signature only. */
|
|
1118
|
+
mdp: 0 | 1 | 2 | 3 | null;
|
|
1119
|
+
filter: string | null;
|
|
1120
|
+
subFilters: string[];
|
|
1121
|
+
digestMethods: string[];
|
|
1122
|
+
reasons: string[];
|
|
1123
|
+
/** A required entry this engine does not implement — signing this field is refused. */
|
|
1124
|
+
unsupportedRequired: boolean;
|
|
1125
|
+
}
|
|
1126
|
+
interface SignatureDTO {
|
|
1127
|
+
/** Position in `SignatureSnapshot.signatures` (field order). */
|
|
1128
|
+
index: number;
|
|
1129
|
+
/** Always an `objectNumber` ref: the durable identity. */
|
|
1130
|
+
field: FormFieldRef;
|
|
1131
|
+
fieldName: string;
|
|
1132
|
+
widget: FormWidgetRef | null;
|
|
1133
|
+
signed: boolean;
|
|
1134
|
+
kind: SignatureKind;
|
|
1135
|
+
/** Raw `/Filter` and `/SubFilter` names. */
|
|
1136
|
+
filter: string | null;
|
|
1137
|
+
subFilter: string | null;
|
|
1138
|
+
byteRange: [number, number, number, number] | null;
|
|
1139
|
+
/** DER length of `/Contents` as its TLV declares (0 when unsigned or malformed). */
|
|
1140
|
+
contentsSize: number;
|
|
1141
|
+
/** `null` when unsigned. */
|
|
1142
|
+
coverage: SignatureCoverage | null;
|
|
1143
|
+
/** Which revision the signature seals; `null` unless coverage is `whole-revision`. */
|
|
1144
|
+
revisionIndex: number | null;
|
|
1145
|
+
signer: SignatureSigner;
|
|
1146
|
+
/** The DocMDP permission the signature carries (its `/Reference`), whether or not the catalog points at it. */
|
|
1147
|
+
docMdp: DocMdpPermission | null;
|
|
1148
|
+
/** `/Root /Perms /DocMDP` names this signature: it is THE certification. */
|
|
1149
|
+
catalogCertification: boolean;
|
|
1150
|
+
/** The FieldMDP transform this signature carries. */
|
|
1151
|
+
fieldMdp: FieldLockSpec | null;
|
|
1152
|
+
/** The field's own `/Lock`. */
|
|
1153
|
+
lock: FieldLockSpec | null;
|
|
1154
|
+
seedValue: SignatureSeedValue | null;
|
|
1155
|
+
}
|
|
1156
|
+
/** A lock an earlier signature established on the current bytes. */
|
|
1157
|
+
interface DocumentFieldLock {
|
|
1158
|
+
signatureIndex: number;
|
|
1159
|
+
source: 'fieldmdp' | 'lock';
|
|
1160
|
+
spec: FieldLockSpec;
|
|
1161
|
+
}
|
|
1162
|
+
/**
|
|
1163
|
+
* What the signatures already in a document mean for what comes after, in
|
|
1164
|
+
* two separate answers:
|
|
1165
|
+
*
|
|
1166
|
+
* - `enforced`: what a signer DECLARED — a certification's /P, a signed
|
|
1167
|
+
* field's /Lock /P. The engine refuses what it forbids (mapped onto
|
|
1168
|
+
* capabilities like encryption permission bits). A plain approval
|
|
1169
|
+
* signature declares nothing: `null`.
|
|
1170
|
+
* - `judged`: what a validator holds later changes to — the declared level,
|
|
1171
|
+
* or the approval baseline (`fill`: form fill-in and signing keep the
|
|
1172
|
+
* signature valid, anything else does not; Acrobat's reading, ISO 32000
|
|
1173
|
+
* is silent) when only approval signatures exist. Never refused, only
|
|
1174
|
+
* judged: an annotation after an approval signature is allowed and then
|
|
1175
|
+
* reads as invalidating, exactly as in Acrobat.
|
|
1176
|
+
*/
|
|
1177
|
+
interface DocumentProtection {
|
|
1178
|
+
/** Declared and enforced; `null` when nothing declared (unsigned, or approval signatures only). */
|
|
1179
|
+
enforced: ModificationLevel | null;
|
|
1180
|
+
/** Judged; `null` when nothing is signed. */
|
|
1181
|
+
judged: ModificationLevel | null;
|
|
1182
|
+
certification: {
|
|
1183
|
+
signatureIndex: number;
|
|
1184
|
+
permission: DocMdpPermission;
|
|
1185
|
+
} | null;
|
|
1186
|
+
fieldLocks: DocumentFieldLock[];
|
|
1187
|
+
/** The versioned product policy that derived this. */
|
|
1188
|
+
policyVersion: number;
|
|
1189
|
+
}
|
|
1190
|
+
interface SignatureSnapshot {
|
|
1191
|
+
/** `false` when the cross-reference chain is broken or was rebuilt: every byte fact is then indeterminate. */
|
|
1192
|
+
chainValid: boolean;
|
|
1193
|
+
/** Oldest first. Empty when `chainValid` is false. */
|
|
1194
|
+
revisions: PdfRevision[];
|
|
1195
|
+
signatures: SignatureDTO[];
|
|
1196
|
+
protection: DocumentProtection;
|
|
1197
|
+
}
|
|
1198
|
+
/**
|
|
1199
|
+
* The saved bytes a session is on. Locally the hash of the loaded bytes
|
|
1200
|
+
* (for a layer session: of its base); on the cloud the document's base
|
|
1201
|
+
* version. A completed signature always produces a new one.
|
|
1202
|
+
*/
|
|
1203
|
+
interface BaseVersionInfo {
|
|
1204
|
+
sha256: string;
|
|
1205
|
+
byteLength: number;
|
|
1206
|
+
}
|
|
1207
|
+
/**
|
|
1208
|
+
* What a signing candidate was built on. Both publish fences are named:
|
|
1209
|
+
* the base the candidate extends and how many edits over it it includes
|
|
1210
|
+
* (the layer's write serial on the cloud, the session's mutation sequence
|
|
1211
|
+
* locally). `complete` must present the same pair.
|
|
1212
|
+
*/
|
|
1213
|
+
interface DocumentVersionRef {
|
|
1214
|
+
baseSha256: string;
|
|
1215
|
+
editsVersion: number;
|
|
1216
|
+
}
|
|
1217
|
+
/**
|
|
1218
|
+
* Widget artwork for the signature, as a page of a PDF (the same path
|
|
1219
|
+
* stamps take: the page is drawn into the widget's appearance stream).
|
|
1220
|
+
*/
|
|
1221
|
+
interface SignatureAppearanceInput {
|
|
1222
|
+
/** A PDF whose page carries the artwork. */
|
|
1223
|
+
pdf: Uint8Array;
|
|
1224
|
+
/** Which page; default 0. */
|
|
1225
|
+
pageIndex?: number;
|
|
1226
|
+
}
|
|
1227
|
+
interface SignaturePrepareInput {
|
|
1228
|
+
field: FormFieldRef;
|
|
1229
|
+
kind?: SignatureKind;
|
|
1230
|
+
subFilter?: SignatureSubFilter;
|
|
1231
|
+
digest?: Exclude<DigestAlgorithm, 'sha1'>;
|
|
1232
|
+
/** Room reserved for the CMS, in bytes (256 .. 4 MiB). Default 8192. */
|
|
1233
|
+
contentsSize?: number;
|
|
1234
|
+
/** What the signature dictionary says about the signer: `/Name`, `/Reason`, `/Location`, `/ContactInfo`. */
|
|
1235
|
+
attribution?: {
|
|
1236
|
+
name?: string;
|
|
1237
|
+
reason?: string;
|
|
1238
|
+
location?: string;
|
|
1239
|
+
contactInfo?: string;
|
|
1240
|
+
};
|
|
1241
|
+
/** PDF date string for `/M`; default: now. */
|
|
1242
|
+
signingTime?: string;
|
|
1243
|
+
/** Make this the certification signature (`/Root /Perms /DocMDP`). Only ever the first signature. */
|
|
1244
|
+
certify?: {
|
|
1245
|
+
permission: DocMdpPermission;
|
|
1246
|
+
};
|
|
1247
|
+
/** FieldMDP for this signature plus a mirroring `/Lock` on the field. */
|
|
1248
|
+
lock?: FieldLockSpec;
|
|
1249
|
+
appearance?: SignatureAppearanceInput;
|
|
1250
|
+
}
|
|
1251
|
+
interface SignaturePrepared {
|
|
1252
|
+
signingId: string;
|
|
1253
|
+
digest: Uint8Array;
|
|
1254
|
+
algorithm: Exclude<DigestAlgorithm, 'sha1'>;
|
|
1255
|
+
byteRange: [number, number, number, number];
|
|
1256
|
+
contentsSize: number;
|
|
1257
|
+
subFilter: SignatureSubFilter | 'ETSI.RFC3161';
|
|
1258
|
+
expectedVersion: DocumentVersionRef;
|
|
1259
|
+
/** ISO timestamp after which the candidate is discarded. */
|
|
1260
|
+
expiresAt: string | null;
|
|
1261
|
+
}
|
|
1262
|
+
interface SignatureCompleteInput {
|
|
1263
|
+
signingId: string;
|
|
1264
|
+
/** The detached CMS (PKCS#7 / CAdES SignedData) over the prepared digest. */
|
|
1265
|
+
cms: Uint8Array;
|
|
1266
|
+
expectedVersion: DocumentVersionRef;
|
|
1267
|
+
}
|
|
1268
|
+
interface SignatureCompleteResult {
|
|
1269
|
+
/** `already-completed` on an idempotent replay with the same CMS. */
|
|
1270
|
+
status: 'completed' | 'already-completed';
|
|
1271
|
+
signature: SignatureDTO;
|
|
1272
|
+
/** The version the sealed bytes became. */
|
|
1273
|
+
version: BaseVersionInfo;
|
|
1274
|
+
/** What it was built on. */
|
|
1275
|
+
previous: DocumentVersionRef;
|
|
1276
|
+
/** What the document's signatures forbid from now on. */
|
|
1277
|
+
protection: DocumentProtection;
|
|
1278
|
+
/** Every page is re-pinned: the session moved to new bytes. */
|
|
1279
|
+
meta: MutationMeta;
|
|
1280
|
+
}
|
|
1281
|
+
interface SignatureAbortResult {
|
|
1282
|
+
status: 'aborted' | 'already-completed' | 'unknown';
|
|
1283
|
+
}
|
|
1284
|
+
//#endregion
|
|
872
1285
|
//#region src/auth/scope/resolver.d.ts
|
|
873
1286
|
/**
|
|
874
1287
|
* Resolved collab subject — the per-record identity bits used to test
|
|
@@ -886,13 +1299,13 @@ interface CollabTarget {
|
|
|
886
1299
|
* Wildcard `*` short-circuits to true. Anything not explicitly granted
|
|
887
1300
|
* (or expanded from `pdf.permissions`) is denied.
|
|
888
1301
|
*/
|
|
889
|
-
declare function checkCapability(capability: DocCapability, rawScope: ReadonlyArray<string>, pdfBits: PdfBits): boolean;
|
|
1302
|
+
declare function checkCapability(capability: DocCapability, rawScope: ReadonlyArray<string>, pdfBits: PdfBits, protection?: DocumentProtection | null): boolean;
|
|
890
1303
|
/**
|
|
891
1304
|
* True iff the scope grants AT LEAST ONE of `capabilities`. Convenience
|
|
892
1305
|
* for routes like `/text` (`doc.text.copy` OR `doc.text.search`) and
|
|
893
1306
|
* `/geometry` (`doc.text.select` OR `doc.text.search`).
|
|
894
1307
|
*/
|
|
895
|
-
declare function checkAnyCapability(capabilities: ReadonlyArray<DocCapability>, rawScope: ReadonlyArray<string>, pdfBits: PdfBits): boolean;
|
|
1308
|
+
declare function checkAnyCapability(capabilities: ReadonlyArray<DocCapability>, rawScope: ReadonlyArray<string>, pdfBits: PdfBits, protection?: DocumentProtection | null): boolean;
|
|
896
1309
|
/**
|
|
897
1310
|
* True iff the scope grants the collab action against the target record.
|
|
898
1311
|
*
|
|
@@ -933,13 +1346,13 @@ declare function checkCollab(action: CollabAction, target: CollabTarget, rawScop
|
|
|
933
1346
|
* before calling this. Returning the expanded set is useful for the
|
|
934
1347
|
* `/access` response's `effectiveScope` and for advisory UI surfacing.
|
|
935
1348
|
*/
|
|
936
|
-
declare function expandedCapabilities(parsed: ReadonlyArray<ParsedScope>, pdfBits: PdfBits): Set<DocCapability>;
|
|
1349
|
+
declare function expandedCapabilities(parsed: ReadonlyArray<ParsedScope>, pdfBits: PdfBits, protection?: DocumentProtection | null): Set<DocCapability>;
|
|
937
1350
|
/**
|
|
938
1351
|
* Convenience wrapper: takes the raw scope array, parses each entry,
|
|
939
1352
|
* returns the expanded capability set. Exposed for the `/access`
|
|
940
1353
|
* endpoint and for the SDK helper that surfaces `effectiveScope`.
|
|
941
1354
|
*/
|
|
942
|
-
declare function expandRawScope(rawScope: ReadonlyArray<string>, pdfBits: PdfBits): Set<DocCapability>;
|
|
1355
|
+
declare function expandRawScope(rawScope: ReadonlyArray<string>, pdfBits: PdfBits, protection?: DocumentProtection | null): Set<DocCapability>;
|
|
943
1356
|
/**
|
|
944
1357
|
* Test a single collab filter against a target record + the caller's
|
|
945
1358
|
* identity. Pure function — no side effects, no implicit rules.
|
|
@@ -1229,7 +1642,37 @@ interface OpenInputShare {
|
|
|
1229
1642
|
sharePassword?: string;
|
|
1230
1643
|
password?: string | null;
|
|
1231
1644
|
}
|
|
1232
|
-
type
|
|
1645
|
+
type OpenInputLayerFileSource = {
|
|
1646
|
+
kind: 'fresh';
|
|
1647
|
+
} | {
|
|
1648
|
+
kind: 'artifact';
|
|
1649
|
+
bytes: Uint8Array | ArrayBuffer;
|
|
1650
|
+
} | {
|
|
1651
|
+
kind: 'artifact-file';
|
|
1652
|
+
path: string;
|
|
1653
|
+
};
|
|
1654
|
+
/**
|
|
1655
|
+
* Local-engine layer open over a base FILE (Node runtimes only): the base
|
|
1656
|
+
* is range-read from disk by PDFium and never loaded into JS, and a
|
|
1657
|
+
* signing candidate for such a session is written beside it rather than
|
|
1658
|
+
* held in memory. What a server does for every document; useful locally
|
|
1659
|
+
* for large files.
|
|
1660
|
+
*
|
|
1661
|
+
* Rejected by `@cloudpdf/engine` and by the wasm runtime.
|
|
1662
|
+
*/
|
|
1663
|
+
interface OpenInputLayerFile {
|
|
1664
|
+
kind: 'layerFile';
|
|
1665
|
+
/** Caller-supplied stable id for this layer document handle. */
|
|
1666
|
+
id: string;
|
|
1667
|
+
/** Optional sharing key for the loaded base. Defaults to the path. */
|
|
1668
|
+
baseKey?: string;
|
|
1669
|
+
basePath: string;
|
|
1670
|
+
/** A verified SHA-256 (hex) of the base file, when the caller has one. */
|
|
1671
|
+
baseSha256?: string;
|
|
1672
|
+
layer?: OpenInputLayerFileSource;
|
|
1673
|
+
password?: string | null;
|
|
1674
|
+
}
|
|
1675
|
+
type OpenInput = OpenInputBytes | OpenInputLayerBytes | OpenInputLayerFile | OpenInputById | OpenInputToken | OpenInputShare;
|
|
1233
1676
|
interface OpenOptions {
|
|
1234
1677
|
password?: string | null;
|
|
1235
1678
|
/**
|
|
@@ -1299,6 +1742,45 @@ interface MetadataPatch {
|
|
|
1299
1742
|
custom?: Record<string, string | null>;
|
|
1300
1743
|
}
|
|
1301
1744
|
//#endregion
|
|
1745
|
+
//#region src/dto/NamedPage.d.ts
|
|
1746
|
+
/**
|
|
1747
|
+
* What a `/Names /Pages` or `/Names /Templates` registration resolves to.
|
|
1748
|
+
*
|
|
1749
|
+
* - `page`: a page in the page tree — the normal case; addressable through
|
|
1750
|
+
* `doc.page(pageObjectNumber)` and present in `PageListSnapshot.pages`.
|
|
1751
|
+
* - `template`: a `/Type /Template` dictionary OUTSIDE the page tree
|
|
1752
|
+
* (ISO 32000-2 §12.7.7): never listed as a page, never renderable,
|
|
1753
|
+
* `doc.page()` does not accept its object number. Reported so consumers
|
|
1754
|
+
* can diagnose hidden templates instead of silently ignoring them.
|
|
1755
|
+
* - `dangling`: the value is null, missing, or not a page/template
|
|
1756
|
+
* dictionary. Engines remove `/Pages` registrations when their page is
|
|
1757
|
+
* deleted, so this is only observable in files authored elsewhere.
|
|
1758
|
+
*/
|
|
1759
|
+
type NamedPageTarget = {
|
|
1760
|
+
kind: 'page';
|
|
1761
|
+
pageObjectNumber: PageObjectNumber;
|
|
1762
|
+
} | {
|
|
1763
|
+
kind: 'template';
|
|
1764
|
+
objectNumber: number;
|
|
1765
|
+
} | {
|
|
1766
|
+
kind: 'dangling';
|
|
1767
|
+
};
|
|
1768
|
+
/**
|
|
1769
|
+
* One entry of the catalog's named-page trees, in tree (key-sorted) order.
|
|
1770
|
+
* Page-identity data like `PageLayout.label`, so it rides
|
|
1771
|
+
* `PageListSnapshot` and shares the layout plane's version — a key only
|
|
1772
|
+
* means something against the page set that contains its target.
|
|
1773
|
+
*
|
|
1774
|
+
* `name` is the decoded key text and the identity for `pages.setName` /
|
|
1775
|
+
* `pages.removeName`; the engine re-encodes it. The engine never interprets
|
|
1776
|
+
* the text — Acrobat's stamp-library convention (`identifier=label`) is a
|
|
1777
|
+
* consumer concern.
|
|
1778
|
+
*/
|
|
1779
|
+
interface NamedPageEntry {
|
|
1780
|
+
name: string;
|
|
1781
|
+
target: NamedPageTarget;
|
|
1782
|
+
}
|
|
1783
|
+
//#endregion
|
|
1302
1784
|
//#region src/dto/PageLayout.d.ts
|
|
1303
1785
|
/**
|
|
1304
1786
|
* @deprecated Use `PdfRotation` from `../geometry`. A page's display rotation
|
|
@@ -1376,6 +1858,13 @@ interface PageLayout {
|
|
|
1376
1858
|
interface PageListSnapshot {
|
|
1377
1859
|
pageCount: number;
|
|
1378
1860
|
pages: PageLayout[];
|
|
1861
|
+
/**
|
|
1862
|
+
* The catalog's `/Names /Pages` and `/Names /Templates` registrations, in
|
|
1863
|
+
* tree order — see {@link NamedPageEntry}. Absent when the producing
|
|
1864
|
+
* engine predates the field (an older cloud server): consumers treat
|
|
1865
|
+
* absent as "unknown", never as "no registrations".
|
|
1866
|
+
*/
|
|
1867
|
+
namedPages?: NamedPageEntry[];
|
|
1379
1868
|
}
|
|
1380
1869
|
//#endregion
|
|
1381
1870
|
//#region src/geometry/convert.d.ts
|
|
@@ -1772,46 +2261,6 @@ interface PageImageBlobSource {
|
|
|
1772
2261
|
}
|
|
1773
2262
|
declare function createPageImageHandle(result: PageImageResult, blobSource: PageImageBlobSource): PageImageHandle;
|
|
1774
2263
|
//#endregion
|
|
1775
|
-
//#region src/revision/WeakAnnotationState.d.ts
|
|
1776
|
-
/**
|
|
1777
|
-
* Tri-state knowledge about weak annotation identities on a page.
|
|
1778
|
-
*
|
|
1779
|
-
* `known(false)` is a stronger claim than "we have not looked yet": it means
|
|
1780
|
-
* the page's annotations were scanned and every annotation had a durable
|
|
1781
|
-
* identity. Cloud/CDN manifests must only publish boolean weak flags from a
|
|
1782
|
-
* known state.
|
|
1783
|
-
*/
|
|
1784
|
-
type WeakAnnotationState = {
|
|
1785
|
-
kind: 'unknown';
|
|
1786
|
-
} | {
|
|
1787
|
-
kind: 'known';
|
|
1788
|
-
hasAnyWeakAnnotations: boolean;
|
|
1789
|
-
};
|
|
1790
|
-
declare const UNKNOWN_WEAK_ANNOTATION_STATE: WeakAnnotationState;
|
|
1791
|
-
declare function knownWeakAnnotationState(hasAnyWeakAnnotations: boolean): WeakAnnotationState;
|
|
1792
|
-
//#endregion
|
|
1793
|
-
//#region src/revision/PageState.d.ts
|
|
1794
|
-
/**
|
|
1795
|
-
* Per-page liveness envelope returned with annotation reads and mutation
|
|
1796
|
-
* metadata. Deliberately scoped to annotation liveness: page identity,
|
|
1797
|
-
* weak-ref revision state, and explicit knowledge about weak annotations.
|
|
1798
|
-
*
|
|
1799
|
-
* Geometry/display order is NOT here — it lives in `PageLayout` (returned by
|
|
1800
|
-
* `pages.list()`), joined to this by `pageObjectNumber`. The two change on
|
|
1801
|
-
* different cadences (annotation edits vs. structural ops), so they are kept
|
|
1802
|
-
* orthogonal and never merged into one struct.
|
|
1803
|
-
*/
|
|
1804
|
-
interface PageState {
|
|
1805
|
-
pageObjectNumber: PageObjectNumber;
|
|
1806
|
-
revision: RevisionToken;
|
|
1807
|
-
/**
|
|
1808
|
-
* Explicit knowledge state for the weak-annotation scan. `unknown` means the
|
|
1809
|
-
* page has not been scanned yet; it must not be published as a CDN/cache
|
|
1810
|
-
* boolean.
|
|
1811
|
-
*/
|
|
1812
|
-
weakAnnotationState: WeakAnnotationState;
|
|
1813
|
-
}
|
|
1814
|
-
//#endregion
|
|
1815
2264
|
//#region src/dto/AnnotationRender.d.ts
|
|
1816
2265
|
/**
|
|
1817
2266
|
* Which `/AP` sub-dictionary to render. PDFium exposes Normal (`/N`),
|
|
@@ -1952,22 +2401,29 @@ interface AnnotationAppearanceManifest {
|
|
|
1952
2401
|
appearances: AnnotationAppearanceManifestEntry[];
|
|
1953
2402
|
}
|
|
1954
2403
|
//#endregion
|
|
1955
|
-
//#region src/dto/CachePins.d.ts
|
|
1956
|
-
/**
|
|
1957
|
-
* Per-page cache-busting integers embedded in immutable cloud/CDN leaf URLs.
|
|
1958
|
-
*
|
|
1959
|
-
* These are not page state. They are read coordinates for cacheable endpoints:
|
|
1960
|
-
* `/text` uses `contentVersion`; `/annotations` uses `annotationVersion`.
|
|
1961
|
-
*/
|
|
1962
|
-
interface CachePins {
|
|
1963
|
-
contentVersion: number;
|
|
1964
|
-
annotationVersion: number;
|
|
1965
|
-
}
|
|
1966
|
-
//#endregion
|
|
1967
2404
|
//#region src/dto/PdfSaveMode.d.ts
|
|
1968
2405
|
type PdfSaveMode = 'incremental' | 'rewrite';
|
|
1969
2406
|
declare const DEFAULT_PDF_SAVE_MODE: PdfSaveMode;
|
|
1970
2407
|
//#endregion
|
|
2408
|
+
//#region src/dto/SessionKind.d.ts
|
|
2409
|
+
/**
|
|
2410
|
+
* The shape a document session takes inside the engine.
|
|
2411
|
+
*
|
|
2412
|
+
* - `layer` (the default): the bytes become an immutable base with a layer of
|
|
2413
|
+
* edits on top. Reads fall through to the base; a write promotes only the
|
|
2414
|
+
* object it touches. A save appends exactly what changed, `download()` on an
|
|
2415
|
+
* unchanged document returns the loaded bytes verbatim, `downloadLayer()`
|
|
2416
|
+
* exports the edits alone, and a signature keeps its validity across later
|
|
2417
|
+
* edits because the signature dictionary is never rewritten.
|
|
2418
|
+
* - `plain`: one in-memory PDFium document, the classic shape. A save rewrites
|
|
2419
|
+
* every loaded object. Kept for comparison and for the rare embedder that
|
|
2420
|
+
* depends on that shape; a document that already carries a signature opens
|
|
2421
|
+
* as `layer` regardless, because a plain save would void it.
|
|
2422
|
+
*
|
|
2423
|
+
* The handle looks the same either way.
|
|
2424
|
+
*/
|
|
2425
|
+
type SessionKind = 'layer' | 'plain';
|
|
2426
|
+
//#endregion
|
|
1971
2427
|
//#region src/dto/FontSpec.d.ts
|
|
1972
2428
|
/**
|
|
1973
2429
|
* Runtime font registration DTOs.
|
|
@@ -2018,15 +2474,123 @@ interface FontSpec {
|
|
|
2018
2474
|
/** Font file bytes (TTF/OTF). */
|
|
2019
2475
|
data: Uint8Array | ArrayBuffer;
|
|
2020
2476
|
}
|
|
2021
|
-
/**
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2477
|
+
/**
|
|
2478
|
+
* The OS/2 `fsType` embedding permission of a registered font. Registration
|
|
2479
|
+
* refuses restricted and bitmap-only fonts outright. A preview-and-print font
|
|
2480
|
+
* renders existing text and may be embedded, but may not author NEW text
|
|
2481
|
+
* (a FreeText naming it fails, and missing-glyph fallback skips it) until
|
|
2482
|
+
* the application asserts a licence with {@link FontService.authorizeEditing}.
|
|
2483
|
+
*/
|
|
2484
|
+
type FontEmbeddingPermission = 'installable' | 'editable' | 'preview-and-print';
|
|
2485
|
+
/**
|
|
2486
|
+
* What the runtime resolved at registration. This is the persistent
|
|
2487
|
+
* identity of the face: a saved document names it by family, weight and
|
|
2488
|
+
* italic (the font descriptor's `/FontFamily`, `/FontWeight`,
|
|
2489
|
+
* `/ItalicAngle`), and a rich text body reads back with the same values, so
|
|
2490
|
+
* a host can map them back to its own `key`.
|
|
2491
|
+
*/
|
|
2492
|
+
interface FontIdentityInfo {
|
|
2493
|
+
/** The family as registered, else the font's own family name. */
|
|
2025
2494
|
readonly familyName: string;
|
|
2026
|
-
/**
|
|
2495
|
+
/** 100..900. */
|
|
2027
2496
|
readonly weight: number;
|
|
2028
2497
|
readonly italic: boolean;
|
|
2498
|
+
readonly embeddingPermission: FontEmbeddingPermission;
|
|
2499
|
+
/** Whether new text may be authored with the font (see the permission). */
|
|
2500
|
+
readonly editingAuthorized: boolean;
|
|
2501
|
+
/** True when the registered program is a static instance made from a
|
|
2502
|
+
* variable font at registration (axes pinned, `wght` to the weight). */
|
|
2503
|
+
readonly instanced: boolean;
|
|
2029
2504
|
}
|
|
2505
|
+
/** A successfully registered font. Returned by {@link FontService.register}. */
|
|
2506
|
+
interface FontHandle extends FontIdentityInfo {
|
|
2507
|
+
readonly key: FontKey;
|
|
2508
|
+
}
|
|
2509
|
+
//#endregion
|
|
2510
|
+
//#region src/dto/RichText.d.ts
|
|
2511
|
+
/**
|
|
2512
|
+
* Rich text of a FreeText annotation (`/RC` + `/DS`), the model the engine
|
|
2513
|
+
* lays out and writes. Runs carry only the style they override (deltas
|
|
2514
|
+
* against the body), exactly as the XHTML spans do, so changing the body
|
|
2515
|
+
* style moves every run that did not override that property.
|
|
2516
|
+
*
|
|
2517
|
+
* Families name faces the way a PDF does: a standard-14 family
|
|
2518
|
+
* (`"Helvetica"`), a font registered through `engine.fonts` (its family, or
|
|
2519
|
+
* its `key` — the engine resolves either), or a family already embedded in
|
|
2520
|
+
* the document. A family that resolves nowhere substitutes Helvetica; the
|
|
2521
|
+
* appearance still renders and the box still edits.
|
|
2522
|
+
*/
|
|
2523
|
+
type RichTextDecoration = 'underline' | 'line-through' | 'word';
|
|
2524
|
+
type RichTextScript = 'normal' | 'sub' | 'super';
|
|
2525
|
+
type RichTextAlign = TextAlignment | 'justify';
|
|
2526
|
+
type RichTextDirection = 'ltr' | 'rtl';
|
|
2527
|
+
interface RichTextRunStyle {
|
|
2528
|
+
family: string;
|
|
2529
|
+
/** 100..900. */
|
|
2530
|
+
weight: number;
|
|
2531
|
+
italic: boolean;
|
|
2532
|
+
/** Points. */
|
|
2533
|
+
size: number;
|
|
2534
|
+
/** `#RRGGBB`. */
|
|
2535
|
+
color: string;
|
|
2536
|
+
decoration: RichTextDecoration[];
|
|
2537
|
+
script: RichTextScript;
|
|
2538
|
+
/** Points, added after every glyph. */
|
|
2539
|
+
letterSpacing: number;
|
|
2540
|
+
/** 1 = normal (`xfa-font-horizontal-scale` / 100). */
|
|
2541
|
+
horizontalScale: number;
|
|
2542
|
+
/** CSS declarations the engine does not model, kept verbatim. */
|
|
2543
|
+
unknown?: string;
|
|
2544
|
+
}
|
|
2545
|
+
interface RichTextMargins {
|
|
2546
|
+
top: number;
|
|
2547
|
+
bottom: number;
|
|
2548
|
+
left: number;
|
|
2549
|
+
right: number;
|
|
2550
|
+
}
|
|
2551
|
+
interface RichTextParagraphProps {
|
|
2552
|
+
align: RichTextAlign;
|
|
2553
|
+
dir: RichTextDirection;
|
|
2554
|
+
/** Points; absent = the normal line box. */
|
|
2555
|
+
lineHeight?: number;
|
|
2556
|
+
margins?: RichTextMargins;
|
|
2557
|
+
textIndent?: number;
|
|
2558
|
+
unknown?: string;
|
|
2559
|
+
}
|
|
2560
|
+
interface RichTextRun {
|
|
2561
|
+
/** May contain `\r`: a hard line break inside the paragraph. */
|
|
2562
|
+
text: string;
|
|
2563
|
+
/** The properties this run overrides. Absent = the body style. */
|
|
2564
|
+
style?: Partial<RichTextRunStyle>;
|
|
2565
|
+
}
|
|
2566
|
+
/** A paragraph: its own alignment/direction when they differ from the body's. */
|
|
2567
|
+
interface RichTextParagraph extends Partial<RichTextParagraphProps> {
|
|
2568
|
+
runs: RichTextRun[];
|
|
2569
|
+
}
|
|
2570
|
+
type RichTextBody = RichTextRunStyle & RichTextParagraphProps;
|
|
2571
|
+
/** What an annotation reads back: a complete body, every paragraph resolved. */
|
|
2572
|
+
interface RichTextDocument {
|
|
2573
|
+
body: RichTextBody;
|
|
2574
|
+
paragraphs: RichTextParagraph[];
|
|
2575
|
+
}
|
|
2576
|
+
/**
|
|
2577
|
+
* What a draft or patch writes. `body` may be omitted (the annotation's
|
|
2578
|
+
* current body style stays — the "plain text replacement" of the patch
|
|
2579
|
+
* table) or partial (missing properties take the engine's defaults:
|
|
2580
|
+
* Helvetica 12 pt black, left-aligned, ltr).
|
|
2581
|
+
*/
|
|
2582
|
+
interface RichTextDocumentInput {
|
|
2583
|
+
body?: Partial<RichTextBody>;
|
|
2584
|
+
paragraphs: RichTextParagraph[];
|
|
2585
|
+
}
|
|
2586
|
+
/** The plain-text projection of a rich document: paragraphs joined by `\r`,
|
|
2587
|
+
* runs concatenated — what the engine writes to `/Contents`. */
|
|
2588
|
+
declare function richTextPlainText(doc: {
|
|
2589
|
+
paragraphs: readonly RichTextParagraph[];
|
|
2590
|
+
}): string;
|
|
2591
|
+
/** Plain text as rich paragraphs: one per line break, one run each, no
|
|
2592
|
+
* overrides (the engine's own `/Contents` fallback shape). */
|
|
2593
|
+
declare function richTextParagraphsFromPlainText(text: string): RichTextParagraph[];
|
|
2030
2594
|
//#endregion
|
|
2031
2595
|
//#region src/errors/EngineErrorCode.d.ts
|
|
2032
2596
|
declare const EngineErrorCode: {
|
|
@@ -2101,6 +2665,41 @@ declare const EngineErrorCode: {
|
|
|
2101
2665
|
* doesn't exist).
|
|
2102
2666
|
*/
|
|
2103
2667
|
readonly MalformedPdf: "MalformedPdf";
|
|
2668
|
+
/**
|
|
2669
|
+
* A signing candidate is parked on this session: every mutation is
|
|
2670
|
+
* refused until `signatures.complete` or `signatures.abort`.
|
|
2671
|
+
*/
|
|
2672
|
+
readonly SigningPending: "SigningPending";
|
|
2673
|
+
/** The candidate's TTL elapsed; prepare again. */
|
|
2674
|
+
readonly SigningExpired: "SigningExpired";
|
|
2675
|
+
/**
|
|
2676
|
+
* `complete` presented a version the candidate was not built on (the
|
|
2677
|
+
* document or the layer moved since `prepare`). The CMS cannot be
|
|
2678
|
+
* reused: it signs a digest of bytes that will never be the head.
|
|
2679
|
+
* Prepare again on the current version.
|
|
2680
|
+
*/
|
|
2681
|
+
readonly SigningVersionMismatch: "SigningVersionMismatch";
|
|
2682
|
+
/**
|
|
2683
|
+
* The engine refused to author the signature: the field is signed,
|
|
2684
|
+
* read-only, or locked by an earlier signature; a certification is
|
|
2685
|
+
* requested after a signature exists; the seed value requires what the
|
|
2686
|
+
* engine does not implement; the request is inconsistent. The message
|
|
2687
|
+
* names the reason.
|
|
2688
|
+
*/
|
|
2689
|
+
readonly SignatureRefused: "SignatureRefused";
|
|
2690
|
+
/**
|
|
2691
|
+
* A signature already in the document forbids this change (a
|
|
2692
|
+
* certification's permission, a FieldMDP or `/Lock`, or the approval
|
|
2693
|
+
* baseline). The message names the signature and the restriction. The
|
|
2694
|
+
* engine option `signedDocumentPolicy: 'permit'` disables the guard.
|
|
2695
|
+
*/
|
|
2696
|
+
readonly ProtectedDocument: "ProtectedDocument";
|
|
2697
|
+
/**
|
|
2698
|
+
* The layer is built on a base version that is no longer the
|
|
2699
|
+
* document's head (another signing completed); it can be read and
|
|
2700
|
+
* edited but not signed from.
|
|
2701
|
+
*/
|
|
2702
|
+
readonly StaleBase: "StaleBase";
|
|
2104
2703
|
};
|
|
2105
2704
|
type EngineErrorCode = (typeof EngineErrorCode)[keyof typeof EngineErrorCode];
|
|
2106
2705
|
//#endregion
|
|
@@ -2436,8 +3035,13 @@ interface BinaryPayload {
|
|
|
2436
3035
|
name?: string;
|
|
2437
3036
|
}
|
|
2438
3037
|
/**
|
|
2439
|
-
* A resolved binary payload in wire form:
|
|
2440
|
-
* ready to ship (worker transfer list or
|
|
3038
|
+
* A resolved binary payload in wire form: a PRIVATE COPY of the caller's
|
|
3039
|
+
* bytes, owned by the call and ready to ship (worker transfer list or
|
|
3040
|
+
* multipart part body). Ownership is the whole point: the local engine puts
|
|
3041
|
+
* `bytes` on a postMessage transfer list, which detaches the buffer, and a
|
|
3042
|
+
* `BinarySource` is a borrowed argument — never the caller's buffer to lose.
|
|
3043
|
+
* Blob sources yield fresh bytes by construction; Uint8Array sources are
|
|
3044
|
+
* copied here so a full-span view is not silently aliased and killed.
|
|
2441
3045
|
*/
|
|
2442
3046
|
interface WireResource {
|
|
2443
3047
|
bytes: ArrayBuffer;
|
|
@@ -3001,6 +3605,20 @@ interface DocumentManifest {
|
|
|
3001
3605
|
*/
|
|
3002
3606
|
auditHead: number;
|
|
3003
3607
|
baseSha: string;
|
|
3608
|
+
/**
|
|
3609
|
+
* The layer's write serial (`layers.current_version`; 0 for the base view
|
|
3610
|
+
* and for a never-written layer) — the `editsVersion` half of the
|
|
3611
|
+
* `DocumentVersionRef` a signing pins at `prepare` and checks at `complete`.
|
|
3612
|
+
*/
|
|
3613
|
+
layerVersion: number;
|
|
3614
|
+
/**
|
|
3615
|
+
* An artifact exists: the layer holds edits not yet sealed into a base
|
|
3616
|
+
* version. After a signature publishes a version the layer is clean again
|
|
3617
|
+
* while `layerVersion` keeps counting, so this is the only honest signal.
|
|
3618
|
+
*/
|
|
3619
|
+
working: boolean;
|
|
3620
|
+
/** Byte length of `baseSha`'s file — with the sha, the `BaseVersionInfo` a client signs. */
|
|
3621
|
+
baseByteLength: number;
|
|
3004
3622
|
/**
|
|
3005
3623
|
* Plane scopes (layer manifests only; absent on base manifests and
|
|
3006
3624
|
* on pre-plane servers = all-`'layer'`). Whole-layer by design — edge
|
|
@@ -3049,67 +3667,25 @@ type PdfLinkTarget = {
|
|
|
3049
3667
|
path: string;
|
|
3050
3668
|
} | {
|
|
3051
3669
|
kind: 'javascript';
|
|
3052
|
-
} |
|
|
3053
|
-
/** `/S /Named` — a viewer verb (`NextPage`, `PrevPage`, `FirstPage`,
|
|
3054
|
-
* `LastPage`, …). Read-only in v1; common in TOC/nav links. */
|
|
3055
|
-
{
|
|
3056
|
-
kind: 'named';
|
|
3057
|
-
name: string;
|
|
3058
|
-
} | {
|
|
3059
|
-
kind: 'unsupported';
|
|
3060
|
-
};
|
|
3061
|
-
/**
|
|
3062
|
-
* The subset of {@link PdfLinkTarget} that drafts/patches may author:
|
|
3063
|
-
* in-document destinations and URIs. Keeping `goto-remote`/`launch` out of
|
|
3064
|
-
* the WRITE surface is deliberate (executable-shaped actions are a security
|
|
3065
|
-
* liability the viewer never needs to author), and `unsupported` carries
|
|
3066
|
-
* nothing to write.
|
|
3067
|
-
*/
|
|
3068
|
-
type PdfLinkTargetWritable = Extract<PdfLinkTarget, {
|
|
3069
|
-
kind: 'goto' | 'uri';
|
|
3070
|
-
}>;
|
|
3071
|
-
//#endregion
|
|
3072
|
-
//#region src/mutation/MutationMeta.d.ts
|
|
3073
|
-
/**
|
|
3074
|
-
* Cache pin patch returned by cloud mutations after the durable DB transaction
|
|
3075
|
-
* commits.
|
|
3076
|
-
*
|
|
3077
|
-
* `previousDocVersion` makes partial page deltas safe: clients may apply the
|
|
3078
|
-
* patch only when their cached manifest is exactly at that version. Otherwise
|
|
3079
|
-
* they must refresh instead of manufacturing a mixed-version manifest.
|
|
3080
|
-
*
|
|
3081
|
-
* Deliberately does NOT carry plane scopes: scopes only ever move
|
|
3082
|
-
* base → layer, and each mutation kind knows exactly which planes it owns, so
|
|
3083
|
-
* the client flips them locally when absorbing this delta (the monotone-flip
|
|
3084
|
-
* rule); the manifest is the authoritative source and the 404 → refresh rail
|
|
3085
|
-
* the backstop.
|
|
3086
|
-
*/
|
|
3087
|
-
interface CacheDelta {
|
|
3088
|
-
previousDocVersion: number;
|
|
3089
|
-
docVersion: number;
|
|
3090
|
-
/**
|
|
3091
|
-
* New doc-level bulk annotations pin, present when this mutation bumped
|
|
3092
|
-
* it (annotation CRUD, page insert/delete, redaction, flatten, form
|
|
3093
|
-
* structure — see `DocumentManifest.annotationsVersion`). Absorbing it
|
|
3094
|
-
* keeps the client's cached manifest addressing the fresh bulk leaf
|
|
3095
|
-
* without a 404-refresh round trip.
|
|
3096
|
-
*/
|
|
3097
|
-
annotationsVersion?: number;
|
|
3098
|
-
pages: Array<{
|
|
3099
|
-
pageObjectNumber: PageObjectNumber;
|
|
3100
|
-
cache: CachePins;
|
|
3101
|
-
}>;
|
|
3102
|
-
}
|
|
3670
|
+
} |
|
|
3671
|
+
/** `/S /Named` — a viewer verb (`NextPage`, `PrevPage`, `FirstPage`,
|
|
3672
|
+
* `LastPage`, …). Read-only in v1; common in TOC/nav links. */
|
|
3673
|
+
{
|
|
3674
|
+
kind: 'named';
|
|
3675
|
+
name: string;
|
|
3676
|
+
} | {
|
|
3677
|
+
kind: 'unsupported';
|
|
3678
|
+
};
|
|
3103
3679
|
/**
|
|
3104
|
-
*
|
|
3105
|
-
*
|
|
3106
|
-
*
|
|
3107
|
-
*
|
|
3680
|
+
* The subset of {@link PdfLinkTarget} that drafts/patches may author:
|
|
3681
|
+
* in-document destinations and URIs. Keeping `goto-remote`/`launch` out of
|
|
3682
|
+
* the WRITE surface is deliberate (executable-shaped actions are a security
|
|
3683
|
+
* liability the viewer never needs to author), and `unsupported` carries
|
|
3684
|
+
* nothing to write.
|
|
3108
3685
|
*/
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
}
|
|
3686
|
+
type PdfLinkTargetWritable = Extract<PdfLinkTarget, {
|
|
3687
|
+
kind: 'goto' | 'uri';
|
|
3688
|
+
}>;
|
|
3113
3689
|
//#endregion
|
|
3114
3690
|
//#region src/mutation/RefetchReason.d.ts
|
|
3115
3691
|
/**
|
|
@@ -3309,66 +3885,6 @@ interface AnnotationMoveResult {
|
|
|
3309
3885
|
meta: AnnotationListMutationMeta;
|
|
3310
3886
|
}
|
|
3311
3887
|
//#endregion
|
|
3312
|
-
//#region src/identity/FormFieldRef.d.ts
|
|
3313
|
-
/**
|
|
3314
|
-
* How callers address a logical form field.
|
|
3315
|
-
*
|
|
3316
|
-
* - `objectNumber` — the indirect object number of the field dictionary.
|
|
3317
|
-
* ISO 32000 guarantees every real AcroForm field dictionary is an
|
|
3318
|
-
* indirect object, and the layer runtime never renumbers (frozen base +
|
|
3319
|
-
* incremental deltas), so this is the durable identity for the lifetime
|
|
3320
|
-
* of a document. Preferred for all engine calls.
|
|
3321
|
-
* - `fqn` — the fully qualified field name ("billing.name"). The portable,
|
|
3322
|
-
* semantic identity used by interchange formats (FDF/XFDF) and analytics;
|
|
3323
|
-
* survives document rewrites but is only as unique as the producer made
|
|
3324
|
-
* it. The engine resolves it against the reconciled field tree.
|
|
3325
|
-
*/
|
|
3326
|
-
type FormFieldRef = {
|
|
3327
|
-
kind: 'objectNumber';
|
|
3328
|
-
fieldObjectNumber: number;
|
|
3329
|
-
} | {
|
|
3330
|
-
kind: 'fqn';
|
|
3331
|
-
name: string;
|
|
3332
|
-
};
|
|
3333
|
-
/**
|
|
3334
|
-
* URL-safe encoding of a `FormFieldRef`, used by the cloud HTTP surface as
|
|
3335
|
-
* the `:fieldKey` route parameter. Decoded by the server back into a
|
|
3336
|
-
* `FormFieldRef` via `decodeFieldRefKey`. Mirrors the annotation plane's
|
|
3337
|
-
* `encodeStableIdKey` (`obj:42` / `nm:…`) so the two member-key syntaxes
|
|
3338
|
-
* read the same on the wire:
|
|
3339
|
-
*
|
|
3340
|
-
* `{ kind: 'objectNumber', fieldObjectNumber: 12 }` -> `'obj:12'`
|
|
3341
|
-
* `{ kind: 'fqn', name: 'billing.name' }` -> `'fqn:billing.name'`
|
|
3342
|
-
*
|
|
3343
|
-
* The caller is responsible for `encodeURIComponent`-ing the result before
|
|
3344
|
-
* splicing it into a URL path; the `wirePaths.layerFormField*` builders
|
|
3345
|
-
* already do that. FQNs are opaque strings and may contain anything; the
|
|
3346
|
-
* `fqn:` prefix keeps them unambiguous from numeric ids.
|
|
3347
|
-
*/
|
|
3348
|
-
declare function encodeFieldRefKey(ref: FormFieldRef): string;
|
|
3349
|
-
/**
|
|
3350
|
-
* Inverse of `encodeFieldRefKey`. Returns `null` for malformed input so the
|
|
3351
|
-
* server can answer 400 InvalidArg with a useful message instead of
|
|
3352
|
-
* throwing. The input is the already-`decodeURIComponent`-ed segment from
|
|
3353
|
-
* the route path. Empty FQNs are rejected: `fqn:` with no suffix is not a
|
|
3354
|
-
* valid identity.
|
|
3355
|
-
*/
|
|
3356
|
-
declare function decodeFieldRefKey(key: string): FormFieldRef | null;
|
|
3357
|
-
/** A widget annotation of a field, as the forms subsystem sees it. */
|
|
3358
|
-
interface FormWidgetRef {
|
|
3359
|
-
/**
|
|
3360
|
-
* Indirect object number of the widget annotation — the join key to the
|
|
3361
|
-
* annotation subsystem's `objectNumber` refs. `0` when the widget is
|
|
3362
|
-
* stored as a direct object (spec-violating; cannot be addressed).
|
|
3363
|
-
*/
|
|
3364
|
-
annotObjectNumber: number;
|
|
3365
|
-
/**
|
|
3366
|
-
* Object number of the page whose /Annots array references the widget.
|
|
3367
|
-
* `0` when the widget is not reachable from any page ("unplaced").
|
|
3368
|
-
*/
|
|
3369
|
-
pageObjectNumber: PageObjectNumber;
|
|
3370
|
-
}
|
|
3371
|
-
//#endregion
|
|
3372
3888
|
//#region src/forms/value-entry.d.ts
|
|
3373
3889
|
/** Lossless shape of a field's effective PDF `/V` or `/DV` object. */
|
|
3374
3890
|
type FormValueEntry = {
|
|
@@ -3718,11 +4234,20 @@ interface ListBoxFieldDraft extends FormFieldDraftBase {
|
|
|
3718
4234
|
options?: FormFieldOptionInput[];
|
|
3719
4235
|
widget?: WidgetPlacement;
|
|
3720
4236
|
}
|
|
4237
|
+
/**
|
|
4238
|
+
* A signature field: identity and (usually) one widget. Created unsigned;
|
|
4239
|
+
* signing it is `doc.signatures`' job, drawing a mark into it without
|
|
4240
|
+
* signing is `doc.forms.setSignatureAppearance`.
|
|
4241
|
+
*/
|
|
4242
|
+
interface SignatureFieldDraft extends FormFieldDraftBase {
|
|
4243
|
+
family: 'signature';
|
|
4244
|
+
widget?: WidgetPlacement;
|
|
4245
|
+
}
|
|
3721
4246
|
/**
|
|
3722
4247
|
* What `doc.forms.createField` takes: per-family, mirroring the DTO union.
|
|
3723
|
-
* Push buttons
|
|
4248
|
+
* Push buttons are not authorable.
|
|
3724
4249
|
*/
|
|
3725
|
-
type FormFieldDraft = TextFieldDraft | CheckboxFieldDraft | RadioFieldDraft | ComboBoxFieldDraft | ListBoxFieldDraft;
|
|
4250
|
+
type FormFieldDraft = TextFieldDraft | CheckboxFieldDraft | RadioFieldDraft | ComboBoxFieldDraft | ListBoxFieldDraft | SignatureFieldDraft;
|
|
3726
4251
|
//#endregion
|
|
3727
4252
|
//#region src/forms/patch.d.ts
|
|
3728
4253
|
/**
|
|
@@ -3901,6 +4426,488 @@ interface FormEffectsResult {
|
|
|
3901
4426
|
meta: MutationMeta | null;
|
|
3902
4427
|
}
|
|
3903
4428
|
//#endregion
|
|
4429
|
+
//#region src/signature/analysis/types.d.ts
|
|
4430
|
+
/**
|
|
4431
|
+
* The shallow serialisation of a PDF object as the fork's revision diff
|
|
4432
|
+
* emits it, parsed. A stream carries its length and SHA-256 rather than
|
|
4433
|
+
* its data; every nested value is direct (references stay references).
|
|
4434
|
+
*/
|
|
4435
|
+
type PdfValue = {
|
|
4436
|
+
t: 'dict';
|
|
4437
|
+
entries: Record<string, PdfValue>;
|
|
4438
|
+
} | {
|
|
4439
|
+
t: 'array';
|
|
4440
|
+
items: PdfValue[];
|
|
4441
|
+
} | {
|
|
4442
|
+
t: 'ref';
|
|
4443
|
+
num: number;
|
|
4444
|
+
} | {
|
|
4445
|
+
t: 'name';
|
|
4446
|
+
v: string;
|
|
4447
|
+
} | {
|
|
4448
|
+
t: 'string';
|
|
4449
|
+
v: string;
|
|
4450
|
+
} | {
|
|
4451
|
+
t: 'number';
|
|
4452
|
+
v: number;
|
|
4453
|
+
} | {
|
|
4454
|
+
t: 'bool';
|
|
4455
|
+
v: boolean;
|
|
4456
|
+
} | {
|
|
4457
|
+
t: 'null';
|
|
4458
|
+
} | {
|
|
4459
|
+
t: 'stream';
|
|
4460
|
+
length: number;
|
|
4461
|
+
sha256: string;
|
|
4462
|
+
dict: Record<string, PdfValue>;
|
|
4463
|
+
};
|
|
4464
|
+
/**
|
|
4465
|
+
* One inbound reference: the referring object (0 = the trailer) and the
|
|
4466
|
+
* label leading to the reference inside it. Edges are *anchored*: a
|
|
4467
|
+
* reference from an unchanged, non-structural object is resolved through
|
|
4468
|
+
* that object to the nearest changed or structural ancestor, and `via`
|
|
4469
|
+
* lists the objects it was resolved through, from the anchor's side down
|
|
4470
|
+
* to the object. A widget's appearance stream reached through an unchanged
|
|
4471
|
+
* indirect `/AP` dictionary is therefore
|
|
4472
|
+
* `{ parent: widget, label: 'AP/N', via: [apDict] }`.
|
|
4473
|
+
*/
|
|
4474
|
+
interface ObjectReferrer {
|
|
4475
|
+
parent: number;
|
|
4476
|
+
/** Escaped dictionary keys and `[n]` indexes joined by `/`, e.g. `AcroForm/Fields/[0]`, `AP/N`. */
|
|
4477
|
+
label: string;
|
|
4478
|
+
via?: number[];
|
|
4479
|
+
}
|
|
4480
|
+
type ObjectChangeType = 'added' | 'modified' | 'freed';
|
|
4481
|
+
/**
|
|
4482
|
+
* What reading the object from one revision's bytes came to. `failed` is a
|
|
4483
|
+
* live mapping whose bytes do not parse (or a stream whose data cannot be
|
|
4484
|
+
* read): the side is present and its value is NOT evidence - two failed
|
|
4485
|
+
* reads are never "the same value".
|
|
4486
|
+
*/
|
|
4487
|
+
type ObjectReadStatus = 'ok' | 'failed' | 'absent';
|
|
4488
|
+
/**
|
|
4489
|
+
* Facts about one revision as a whole that decide whether later changes to
|
|
4490
|
+
* it can be judged at all. Acrobat treats a document with a sparse
|
|
4491
|
+
* cross-reference table (object numbers below /Size with no entry of any
|
|
4492
|
+
* kind) or a reachable bare-reference object (an indirect object whose
|
|
4493
|
+
* whole body is a reference) as corrupted the moment any revision follows
|
|
4494
|
+
* the signed one; a verdict on such a base would disagree with it.
|
|
4495
|
+
*/
|
|
4496
|
+
interface RevisionHealth {
|
|
4497
|
+
sparseXref: boolean;
|
|
4498
|
+
bareReferences: number;
|
|
4499
|
+
/** False when the reachability walk hit its budget: usage on that side is a lower bound. */
|
|
4500
|
+
referrersComplete: boolean;
|
|
4501
|
+
}
|
|
4502
|
+
type ObjectChangeKind = 'dictionary' | 'stream' | 'array' | 'scalar' | 'xref' | 'objstm' | 'trailer';
|
|
4503
|
+
/**
|
|
4504
|
+
* One object whose cross-reference mapping differs between two revisions,
|
|
4505
|
+
* with its value in both and every object that references it in both.
|
|
4506
|
+
* The trailer is object number 0. Objects that serialise identically are
|
|
4507
|
+
* still listed (their mapping changed): the identical-rewrite rule judges them.
|
|
4508
|
+
*/
|
|
4509
|
+
interface ObjectChange {
|
|
4510
|
+
objectNumber: number;
|
|
4511
|
+
change: ObjectChangeType;
|
|
4512
|
+
kind: ObjectChangeKind;
|
|
4513
|
+
/**
|
|
4514
|
+
* Whether the object exists on each side. Derived from `change` by the
|
|
4515
|
+
* transport (`added` → no old side, `freed` → no new side); the trailer
|
|
4516
|
+
* exists on both sides and carries no generation numbers.
|
|
4517
|
+
*/
|
|
4518
|
+
present: {
|
|
4519
|
+
old: boolean;
|
|
4520
|
+
new: boolean;
|
|
4521
|
+
};
|
|
4522
|
+
generation: {
|
|
4523
|
+
old: number | null;
|
|
4524
|
+
new: number | null;
|
|
4525
|
+
};
|
|
4526
|
+
/**
|
|
4527
|
+
* The values, or null where the side is absent. A present side with a
|
|
4528
|
+
* null value is *missing evidence*: the evaluator treats it as truncated.
|
|
4529
|
+
*/
|
|
4530
|
+
value: {
|
|
4531
|
+
old: PdfValue | null;
|
|
4532
|
+
new: PdfValue | null;
|
|
4533
|
+
truncated: boolean;
|
|
4534
|
+
};
|
|
4535
|
+
/** The serialisation as emitted, for exact comparison. */
|
|
4536
|
+
raw: {
|
|
4537
|
+
old: string | null;
|
|
4538
|
+
new: string | null;
|
|
4539
|
+
};
|
|
4540
|
+
/** Per-side read status; absent on older transports (then `ok` for present sides). */
|
|
4541
|
+
read?: {
|
|
4542
|
+
old: ObjectReadStatus;
|
|
4543
|
+
new: ObjectReadStatus;
|
|
4544
|
+
};
|
|
4545
|
+
streamDataChanged: boolean;
|
|
4546
|
+
/** Anchored inbound edges per side (see `ObjectReferrer`). */
|
|
4547
|
+
usage: {
|
|
4548
|
+
old: ObjectReferrer[];
|
|
4549
|
+
new: ObjectReferrer[];
|
|
4550
|
+
};
|
|
4551
|
+
/**
|
|
4552
|
+
* Set when the transport could not resolve every edge within its budget
|
|
4553
|
+
* (depth, fan-out, total reads). Treated like a truncated value: the step
|
|
4554
|
+
* is indeterminate, never permitted.
|
|
4555
|
+
*/
|
|
4556
|
+
usageIncomplete?: boolean;
|
|
4557
|
+
}
|
|
4558
|
+
interface RevisionField {
|
|
4559
|
+
objectNumber: number;
|
|
4560
|
+
/** Fully qualified name. */
|
|
4561
|
+
name: string;
|
|
4562
|
+
family: FormFieldFamily;
|
|
4563
|
+
/** Widget annotation object numbers (a merged field-widget lists its own number). */
|
|
4564
|
+
widgets: number[];
|
|
4565
|
+
/**
|
|
4566
|
+
* The effective `/Ff` (inherited through the field tree), as the form
|
|
4567
|
+
* model sees it. A lock landing on a field writes `effective | ReadOnly`
|
|
4568
|
+
* into the terminal dictionary, so judging that write needs the effective
|
|
4569
|
+
* flags, not the terminal's own (possibly absent) entry.
|
|
4570
|
+
*/
|
|
4571
|
+
flags?: number;
|
|
4572
|
+
}
|
|
4573
|
+
/**
|
|
4574
|
+
* What one revision looks like structurally: enough to give every object
|
|
4575
|
+
* a role (the catalog, a page, a field, a widget, a signature value)
|
|
4576
|
+
* without walking paths from the root.
|
|
4577
|
+
*/
|
|
4578
|
+
interface RevisionStructure {
|
|
4579
|
+
root: number;
|
|
4580
|
+
acroForm: number;
|
|
4581
|
+
pagesRoot: number;
|
|
4582
|
+
pages: number[];
|
|
4583
|
+
fields: RevisionField[];
|
|
4584
|
+
signatures: SignatureDTO[];
|
|
4585
|
+
}
|
|
4586
|
+
interface ChangeFinding {
|
|
4587
|
+
rule: string;
|
|
4588
|
+
verdict: 'permitted' | 'forbidden' | 'incomplete';
|
|
4589
|
+
objectNumber: number;
|
|
4590
|
+
/** The specific edge (`parent:label`) this finding vouches for or condemns, when it is about one. */
|
|
4591
|
+
edge?: string;
|
|
4592
|
+
detail?: string;
|
|
4593
|
+
}
|
|
4594
|
+
type StepVerdict = 'unchanged' | 'permitted' | 'forbidden' | 'indeterminate';
|
|
4595
|
+
interface RevisionAnalysis {
|
|
4596
|
+
older: number;
|
|
4597
|
+
newer: number;
|
|
4598
|
+
/** The level in force after the restrictions established up to `older`. */
|
|
4599
|
+
levelInForce: ModificationLevel;
|
|
4600
|
+
/** Locks in force for this step (from the signatures in `older`). */
|
|
4601
|
+
locks: DocumentFieldLock[];
|
|
4602
|
+
verdict: StepVerdict;
|
|
4603
|
+
findings: ChangeFinding[];
|
|
4604
|
+
changes: ObjectChange[];
|
|
4605
|
+
}
|
|
4606
|
+
/**
|
|
4607
|
+
* A restriction in force for the judged window: a DocMDP certification or a
|
|
4608
|
+
* FieldMDP/lock, and whose it is. A FieldMDP lock is a promise the locking
|
|
4609
|
+
* signature makes about its own window and binds no other signature's
|
|
4610
|
+
* verdict (corpus v3/85); a certification's level is inherited by every
|
|
4611
|
+
* later window as well (conservative until observed otherwise).
|
|
4612
|
+
*/
|
|
4613
|
+
interface RestrictionAnchor {
|
|
4614
|
+
signatureIndex: number;
|
|
4615
|
+
revisionIndex: number;
|
|
4616
|
+
source: 'docmdp' | 'fieldmdp' | 'lock';
|
|
4617
|
+
/** Declared by the signature being judged, as opposed to inherited. */
|
|
4618
|
+
own: boolean;
|
|
4619
|
+
permission?: DocMdpPermission;
|
|
4620
|
+
fields?: FieldLockSpec;
|
|
4621
|
+
}
|
|
4622
|
+
/** One judgement with its evidence status; `complete: false` never coexists with a passing verdict. */
|
|
4623
|
+
interface Assessment {
|
|
4624
|
+
verdict: StepVerdict;
|
|
4625
|
+
complete: boolean;
|
|
4626
|
+
/** The finding that decided a forbidden or indeterminate verdict, or the most notable permitted one. */
|
|
4627
|
+
primary?: ChangeFinding;
|
|
4628
|
+
findings: ChangeFinding[];
|
|
4629
|
+
}
|
|
4630
|
+
interface AnalyzeInput {
|
|
4631
|
+
/** Start from the revision a signature seals, or from any revision. */
|
|
4632
|
+
since: {
|
|
4633
|
+
signatureIndex: number;
|
|
4634
|
+
} | {
|
|
4635
|
+
revisionIndex: number;
|
|
4636
|
+
};
|
|
4637
|
+
/**
|
|
4638
|
+
* `persisted` (default): the loaded bytes. `working-copy`: the session's
|
|
4639
|
+
* unsaved state, snapshotted the way a save would write it, as one more
|
|
4640
|
+
* revision. A revision index compares against history only.
|
|
4641
|
+
*/
|
|
4642
|
+
until?: 'persisted' | 'working-copy' | {
|
|
4643
|
+
revisionIndex: number;
|
|
4644
|
+
};
|
|
4645
|
+
/**
|
|
4646
|
+
* Exploratory only: evaluate as if this level were in force. The result
|
|
4647
|
+
* is tagged `mode: 'exploratory'` and never becomes a verdict.
|
|
4648
|
+
*/
|
|
4649
|
+
exploratoryLevel?: ModificationLevel;
|
|
4650
|
+
/**
|
|
4651
|
+
* `summary` (default): the verdict and its findings. `full`: also every
|
|
4652
|
+
* pairwise step between `since` and `until`, with each step's changes
|
|
4653
|
+
* (large; for diagnostics and tooling).
|
|
4654
|
+
*/
|
|
4655
|
+
detail?: 'summary' | 'full';
|
|
4656
|
+
}
|
|
4657
|
+
/**
|
|
4658
|
+
* How the judged revision stands against the revision the signature
|
|
4659
|
+
* sealed. The verdict is the NET state - `until` compared with `since`
|
|
4660
|
+
* directly - the way Acrobat judges an approval signature (a page changed
|
|
4661
|
+
* and byte-restored later is unchanged; corpus v2/15, 42, 44, v3/81, 85).
|
|
4662
|
+
* A certification window replays every intervening revision as well
|
|
4663
|
+
* (v3/82-83), and any step's violation joins the verdict.
|
|
4664
|
+
*/
|
|
4665
|
+
interface ChangeAnalysis {
|
|
4666
|
+
mode: 'authoritative' | 'exploratory';
|
|
4667
|
+
policyVersion: number;
|
|
4668
|
+
basis: {
|
|
4669
|
+
version: BaseVersionInfo;
|
|
4670
|
+
editsVersion: number;
|
|
4671
|
+
source: 'persisted' | 'working-copy';
|
|
4672
|
+
};
|
|
4673
|
+
since: {
|
|
4674
|
+
revisionIndex: number;
|
|
4675
|
+
signatureIndex: number | null;
|
|
4676
|
+
};
|
|
4677
|
+
until: {
|
|
4678
|
+
revisionIndex: number;
|
|
4679
|
+
};
|
|
4680
|
+
/** The restrictions this window was judged under (see `RestrictionAnchor`). */
|
|
4681
|
+
restrictions: RestrictionAnchor[];
|
|
4682
|
+
/** THE verdict, with the findings behind it. */
|
|
4683
|
+
current: Assessment & {
|
|
4684
|
+
method: 'net-state' | 'net-state+replay';
|
|
4685
|
+
};
|
|
4686
|
+
/** Facts about the revisions between `since` and `until`; never a verdict. */
|
|
4687
|
+
later: {
|
|
4688
|
+
revisionCount: number;
|
|
4689
|
+
/** Objects rewritten after `since` that hold the sealed value again in `until`. */
|
|
4690
|
+
undoneObjectNumbers: number[];
|
|
4691
|
+
};
|
|
4692
|
+
/** Equals `current.verdict`: one field for every consumer that only needs the answer. */
|
|
4693
|
+
verdict: StepVerdict;
|
|
4694
|
+
/**
|
|
4695
|
+
* The pairwise steps: the single step when one revision follows `since`,
|
|
4696
|
+
* every step of a certification replay, or every step with
|
|
4697
|
+
* `detail: 'full'`. Empty otherwise (a multi-revision approval window in
|
|
4698
|
+
* summary mode is judged on its net state alone).
|
|
4699
|
+
*/
|
|
4700
|
+
steps: RevisionAnalysis[];
|
|
4701
|
+
}
|
|
4702
|
+
/** Everything one pairwise step needs; JSON in, JSON out. */
|
|
4703
|
+
interface StepInput {
|
|
4704
|
+
older: number;
|
|
4705
|
+
newer: number;
|
|
4706
|
+
changes: ObjectChange[];
|
|
4707
|
+
before: RevisionStructure;
|
|
4708
|
+
after: RevisionStructure;
|
|
4709
|
+
/** What the transport learned about each revision as a whole (see `RevisionHealth`). */
|
|
4710
|
+
health?: {
|
|
4711
|
+
old: RevisionHealth;
|
|
4712
|
+
new: RevisionHealth;
|
|
4713
|
+
};
|
|
4714
|
+
/**
|
|
4715
|
+
* The restrictions to judge under. Absent: derived from every signature
|
|
4716
|
+
* in `before` (a revision-anchored analysis). Present: the judged
|
|
4717
|
+
* signature's own locks and the inherited certification level.
|
|
4718
|
+
*/
|
|
4719
|
+
restrictions?: {
|
|
4720
|
+
level: ModificationLevel;
|
|
4721
|
+
locks: DocumentFieldLock[];
|
|
4722
|
+
};
|
|
4723
|
+
/** Overrides the level derived from `before` (exploratory mode only). */
|
|
4724
|
+
levelOverride?: ModificationLevel;
|
|
4725
|
+
}
|
|
4726
|
+
//#endregion
|
|
4727
|
+
//#region src/signature/analysis/pdf-value.d.ts
|
|
4728
|
+
/**
|
|
4729
|
+
* Parse the fork's canonical shallow serialisation:
|
|
4730
|
+
* dict <</Key value/Key2 value>> (keys sorted, `#xx`-escaped)
|
|
4731
|
+
* array [item item]
|
|
4732
|
+
* ref n 0 R
|
|
4733
|
+
* stream stream(length,sha256hex)<<dict>>
|
|
4734
|
+
* name /Name (with #xx escapes)
|
|
4735
|
+
* string (literal with backslash escapes) or <hex>
|
|
4736
|
+
* number -12.5 bool true|false null
|
|
4737
|
+
*/
|
|
4738
|
+
declare function parsePdfValue(text: string): PdfValue;
|
|
4739
|
+
/** Structural equality of two parsed values. */
|
|
4740
|
+
declare function pdfValueEquals(a: PdfValue | null, b: PdfValue | null): boolean;
|
|
4741
|
+
declare function stableStringify(value: PdfValue | null): string;
|
|
4742
|
+
declare function dictEntries(value: PdfValue | null): Record<string, PdfValue> | null;
|
|
4743
|
+
/** Keys whose value differs (added, removed, or changed) between two dictionaries. */
|
|
4744
|
+
declare function changedKeys(a: PdfValue | null, b: PdfValue | null): Set<string>;
|
|
4745
|
+
declare function refsOf(value: PdfValue | null | undefined): number[];
|
|
4746
|
+
//#endregion
|
|
4747
|
+
//#region src/signature/analysis/evaluate.d.ts
|
|
4748
|
+
/** The level a step runs at, and the locks it enforces: what the OLDER revision's signatures established. */
|
|
4749
|
+
declare function restrictionsOf(before: RevisionStructure): {
|
|
4750
|
+
level: ModificationLevel;
|
|
4751
|
+
locks: DocumentFieldLock[];
|
|
4752
|
+
};
|
|
4753
|
+
/**
|
|
4754
|
+
* Judge one pairwise step. Every reference to a changed object, in the
|
|
4755
|
+
* older AND the newer revision, must be claimed by a rule that inspected
|
|
4756
|
+
* that use; an unclaimed reference is `unexplained` and forbidden. A
|
|
4757
|
+
* truncated value is `incomplete`, never permitted. Pure: JSON in, JSON
|
|
4758
|
+
* out, the same code in the browser worker, on the server and in tests.
|
|
4759
|
+
*/
|
|
4760
|
+
declare function evaluateStep(input: StepInput): RevisionAnalysis;
|
|
4761
|
+
/**
|
|
4762
|
+
* Same effective value on both sides: same canonical serialisation (keys
|
|
4763
|
+
* sorted, whitespace normalised - Acrobat compares dictionaries by value,
|
|
4764
|
+
* corpus v3/61-62), same stream data (by bytes, v2/45), and both sides
|
|
4765
|
+
* actually read. A failed read serialises as "null" and would match another
|
|
4766
|
+
* failed read - evidence of nothing.
|
|
4767
|
+
*/
|
|
4768
|
+
declare function sameEffectiveValue(c: ObjectChange): boolean;
|
|
4769
|
+
//#endregion
|
|
4770
|
+
//#region src/signature/analysis/restrictions.d.ts
|
|
4771
|
+
/**
|
|
4772
|
+
* The restrictions a window is judged under, read from the SEALED
|
|
4773
|
+
* revision's structure (what that revision declared, not what the final
|
|
4774
|
+
* file says).
|
|
4775
|
+
*
|
|
4776
|
+
* - `judged` given (a signature-anchored analysis): its own FieldMDP and
|
|
4777
|
+
* /Lock bind the window; other signatures' locks do not (corpus v3/85:
|
|
4778
|
+
* a second signature is valid with a fill of a field the first locked).
|
|
4779
|
+
* Every certification's level, own or earlier, applies (inherited:
|
|
4780
|
+
* conservative until observed otherwise), as does a /Lock's /P.
|
|
4781
|
+
* - no `judged` (a revision-anchored analysis): every signed signature's
|
|
4782
|
+
* locks and levels, as before.
|
|
4783
|
+
*/
|
|
4784
|
+
declare function restrictionsFor(before: RevisionStructure, judged: SignatureDTO | null): {
|
|
4785
|
+
anchors: RestrictionAnchor[];
|
|
4786
|
+
level: ModificationLevel;
|
|
4787
|
+
locks: DocumentFieldLock[];
|
|
4788
|
+
};
|
|
4789
|
+
//#endregion
|
|
4790
|
+
//#region src/signature/analysis/resolve.d.ts
|
|
4791
|
+
/**
|
|
4792
|
+
* Limits on edge resolution. Exceeding any of them makes the object's usage
|
|
4793
|
+
* `incomplete`, which the evaluator turns into an indeterminate step: an
|
|
4794
|
+
* adversary can make evidence expensive, never make it disappear.
|
|
4795
|
+
*/
|
|
4796
|
+
interface EdgeResolverBudget {
|
|
4797
|
+
/** Longest chain of unchanged objects an edge may be resolved through. */
|
|
4798
|
+
maxDepth: number;
|
|
4799
|
+
/** Most anchored edges one object may end up with. */
|
|
4800
|
+
maxEdgesPerObject: number;
|
|
4801
|
+
/** Most referrer reads per resolver (one per side per step). */
|
|
4802
|
+
maxReads: number;
|
|
4803
|
+
}
|
|
4804
|
+
declare const DEFAULT_EDGE_RESOLVER_BUDGET: EdgeResolverBudget;
|
|
4805
|
+
declare const USAGE_INCOMPLETE = "incomplete";
|
|
4806
|
+
type ResolvedUsage = ObjectReferrer[] | typeof USAGE_INCOMPLETE;
|
|
4807
|
+
/**
|
|
4808
|
+
* Resolves the raw inbound edges of an object (from the fork's referrer
|
|
4809
|
+
* index, which covers every reachable object of a revision) into edges
|
|
4810
|
+
* from *anchors*: the changed objects and the structural objects of the
|
|
4811
|
+
* revision (trailer, catalog, AcroForm, page tree root, pages, fields,
|
|
4812
|
+
* widgets). An edge from an unchanged, non-structural parent is replaced by
|
|
4813
|
+
* that parent's own anchored edges with the labels joined, so an
|
|
4814
|
+
* appearance stream under an unchanged indirect `/AP` dictionary reads
|
|
4815
|
+
* `widget:AP/N` rather than `apDict:N`.
|
|
4816
|
+
*
|
|
4817
|
+
* A graph traversal, not a path enumeration: results are memoised per
|
|
4818
|
+
* object, so a lattice of shared unchanged objects costs its size, not the
|
|
4819
|
+
* number of paths through it. Cycle edges contribute no anchors and are
|
|
4820
|
+
* skipped; a result computed while skipping one is not memoised.
|
|
4821
|
+
*/
|
|
4822
|
+
declare class EdgeResolver {
|
|
4823
|
+
private readonly read;
|
|
4824
|
+
private readonly anchors;
|
|
4825
|
+
private readonly budget;
|
|
4826
|
+
private readonly memo;
|
|
4827
|
+
private reads;
|
|
4828
|
+
private exhausted;
|
|
4829
|
+
constructor(read: (objectNumber: number) => ObjectReferrer[], anchors: ReadonlySet<number>, budget?: EdgeResolverBudget);
|
|
4830
|
+
/** Anchored edges of `objectNumber`, or `incomplete` when a budget was exceeded. */
|
|
4831
|
+
resolve(objectNumber: number): ResolvedUsage;
|
|
4832
|
+
private resolveInner;
|
|
4833
|
+
}
|
|
4834
|
+
//#endregion
|
|
4835
|
+
//#region src/signature/analysis/verdict.d.ts
|
|
4836
|
+
/** The worst of several verdicts (a certification replay's steps). */
|
|
4837
|
+
declare function worstVerdict(steps: ReadonlyArray<{
|
|
4838
|
+
verdict: StepVerdict;
|
|
4839
|
+
}>): StepVerdict;
|
|
4840
|
+
/**
|
|
4841
|
+
* One aggregation rule everywhere: a proven violation decides, whatever
|
|
4842
|
+
* else could not be established; missing evidence never becomes a pass.
|
|
4843
|
+
*/
|
|
4844
|
+
declare function conclude(findings: ReadonlyArray<ChangeFinding>, hasEffectiveChanges: boolean): StepVerdict;
|
|
4845
|
+
/** The finding that explains a verdict: the violation, else the gap, else the most notable allowance. */
|
|
4846
|
+
declare function primaryFinding(findings: ReadonlyArray<ChangeFinding>): ChangeFinding | undefined;
|
|
4847
|
+
declare function assessmentOf(step: RevisionAnalysis): Assessment;
|
|
4848
|
+
/**
|
|
4849
|
+
* A certification window: the net verdict and every replayed step, under
|
|
4850
|
+
* the same rule. A step's violation is a violation of the certification
|
|
4851
|
+
* even when the final state no longer shows it (corpus v3/83).
|
|
4852
|
+
*/
|
|
4853
|
+
declare function combine(net: RevisionAnalysis, steps: ReadonlyArray<RevisionAnalysis>): Assessment;
|
|
4854
|
+
//#endregion
|
|
4855
|
+
//#region src/signature/protection.d.ts
|
|
4856
|
+
/**
|
|
4857
|
+
* Bumped whenever the derivation below (or a judgement rule) changes meaning.
|
|
4858
|
+
* Rides every protection and every analysis, and keys the cloud's immutable
|
|
4859
|
+
* analysis URLs. v4 (the `signature-compat` corpus, 91 Acrobat observations):
|
|
4860
|
+
* each signature is judged on the net state of the document against the
|
|
4861
|
+
* revision it sealed; an object written again with the sealed value is not
|
|
4862
|
+
* a modification; an approval signature permits commenting; field
|
|
4863
|
+
* properties are judged per level; a lock binds only the signature that
|
|
4864
|
+
* declares it; a changed shared resource must be allowed by every use.
|
|
4865
|
+
*/
|
|
4866
|
+
declare const SIGNATURE_POLICY_VERSION = 4;
|
|
4867
|
+
/** DocMDP `/P` → the modification level it permits. */
|
|
4868
|
+
declare function levelFromPermission(permission: DocMdpPermission): ModificationLevel;
|
|
4869
|
+
declare function minLevel(a: ModificationLevel, b: ModificationLevel): ModificationLevel;
|
|
4870
|
+
/** Whether `level` (null = unsigned, everything allowed) permits changes of kind `needed`. */
|
|
4871
|
+
declare function levelAllows(level: ModificationLevel | null, needed: ModificationLevel): boolean;
|
|
4872
|
+
/** Hierarchical name match: `group` covers `group.total`. */
|
|
4873
|
+
declare function lockNameCovers(lockedName: string, fieldName: string): boolean;
|
|
4874
|
+
declare function lockCovers(spec: FieldLockSpec, fieldName: string): boolean;
|
|
4875
|
+
/**
|
|
4876
|
+
* Derive what the signatures already in a document mean for what comes
|
|
4877
|
+
* after. Pure and versioned (`SIGNATURE_POLICY_VERSION`); the same function
|
|
4878
|
+
* runs in the browser worker, on the native server, and in the conformance
|
|
4879
|
+
* suite.
|
|
4880
|
+
*
|
|
4881
|
+
* enforced = min(certification P, every signed field's /Lock /P), or null
|
|
4882
|
+
* when nothing was declared. What the engine refuses.
|
|
4883
|
+
* judged = enforced, or the approval baseline when signatures exist
|
|
4884
|
+
* without a declaration, or null when nothing is signed. What
|
|
4885
|
+
* the revision analysis judges later changes against. A
|
|
4886
|
+
* declaration governs the judgement too: a P=3 certifier really
|
|
4887
|
+
* did allow annotations.
|
|
4888
|
+
* fieldLocks = every signed signature's FieldMDP and the /Lock of every
|
|
4889
|
+
* signed field. Unsigned fields' /Lock entries describe a
|
|
4890
|
+
* FUTURE signature and lock nothing yet.
|
|
4891
|
+
*/
|
|
4892
|
+
declare function deriveProtection(signatures: ReadonlyArray<SignatureDTO>): DocumentProtection;
|
|
4893
|
+
/** The lock that freezes `fieldName`, if any. */
|
|
4894
|
+
declare function fieldLockFor(protection: DocumentProtection, fieldName: string): DocumentFieldLock | null;
|
|
4895
|
+
/**
|
|
4896
|
+
* The capabilities a protection removes from every caller, admin scope
|
|
4897
|
+
* included — document-derived authority, exactly like encryption bits.
|
|
4898
|
+
*
|
|
4899
|
+
* Only what was DECLARED is refused: a refusal is a promise a signer made,
|
|
4900
|
+
* never a guess about a validator. A certification (or a lock with /P)
|
|
4901
|
+
* declares what may follow, and everything outside that — page edits,
|
|
4902
|
+
* redaction, field authoring, attachments, and below P=3 annotations, below
|
|
4903
|
+
* P=2 form fill — is refused. A plain approval signature declares nothing:
|
|
4904
|
+
* the same edits stay possible and are then JUDGED, the verdict saying the
|
|
4905
|
+
* signature no longer holds, exactly as Acrobat does. The one exception is a
|
|
4906
|
+
* rewrite: it does not invalidate signatures, it erases them, so any signed
|
|
4907
|
+
* document refuses it. Per-field locks are enforced by the form mutator.
|
|
4908
|
+
*/
|
|
4909
|
+
declare function protectedCapabilities(protection: DocumentProtection | null): Set<DocCapability>;
|
|
4910
|
+
//#endregion
|
|
3904
4911
|
//#region src/mutation/FormMutationResults.d.ts
|
|
3905
4912
|
/**
|
|
3906
4913
|
* Result of a value write (`setValue` / `reset`).
|
|
@@ -4462,6 +5469,94 @@ interface PageMoveResult {
|
|
|
4462
5469
|
cache: PageMoveCache | null;
|
|
4463
5470
|
}
|
|
4464
5471
|
//#endregion
|
|
5472
|
+
//#region src/mutation/PageNameInput.d.ts
|
|
5473
|
+
/**
|
|
5474
|
+
* Input for `pages.setName()`: register `name` → the page in
|
|
5475
|
+
* `/Names /Pages`. An existing registration with the same decoded key is
|
|
5476
|
+
* replaced (idempotent). With `replace`, that other key is removed in the
|
|
5477
|
+
* SAME job — a rename or retarget as one mutation.
|
|
5478
|
+
*
|
|
5479
|
+
* `name` must be non-empty; the engine never interprets it. Only pages in
|
|
5480
|
+
* the page tree may be registered (hidden templates are refused).
|
|
5481
|
+
*/
|
|
5482
|
+
interface PageNameInput {
|
|
5483
|
+
name: string;
|
|
5484
|
+
pageObjectNumber: PageObjectNumber;
|
|
5485
|
+
/** An existing key to drop in the same job (rename). */
|
|
5486
|
+
replace?: string;
|
|
5487
|
+
}
|
|
5488
|
+
/** Input for `pages.removeName()`: the registration to drop; the page stays. */
|
|
5489
|
+
interface PageRemoveNameInput {
|
|
5490
|
+
name: string;
|
|
5491
|
+
}
|
|
5492
|
+
//#endregion
|
|
5493
|
+
//#region src/mutation/PageNameResult.d.ts
|
|
5494
|
+
/**
|
|
5495
|
+
* Result of `pages.setName()` / `pages.removeName()`. Named pages are
|
|
5496
|
+
* LAYOUT: the post-mutation snapshot (with `namedPages`) is returned whole,
|
|
5497
|
+
* and the cache pins say `docVersion` + `layoutVersion` advanced — per-page
|
|
5498
|
+
* content/annotation pins never move (same shape as `PageMoveResult` on
|
|
5499
|
+
* purpose). `cache` is null on local engines.
|
|
5500
|
+
*/
|
|
5501
|
+
interface PageNameResult {
|
|
5502
|
+
layout: PageListSnapshot;
|
|
5503
|
+
cache: PageStructureCache | null;
|
|
5504
|
+
}
|
|
5505
|
+
//#endregion
|
|
5506
|
+
//#region src/mutation/PageFlattenResult.d.ts
|
|
5507
|
+
type PageFlattenUsage = 'display' | 'print';
|
|
5508
|
+
type PageFlattenStatus = 'applied' | 'unchanged' | 'failed' | 'skipped';
|
|
5509
|
+
interface PageFlattenInput {
|
|
5510
|
+
pageObjectNumbers: PageObjectNumber[];
|
|
5511
|
+
usage: PageFlattenUsage;
|
|
5512
|
+
}
|
|
5513
|
+
interface PageFlattenItemResult {
|
|
5514
|
+
pageObjectNumber: PageObjectNumber;
|
|
5515
|
+
status: PageFlattenStatus;
|
|
5516
|
+
error?: SerializedEngineError;
|
|
5517
|
+
}
|
|
5518
|
+
/** Flatten is a content + annotation mutation, never a layout mutation. */
|
|
5519
|
+
interface PageFlattenResult {
|
|
5520
|
+
/** The original ordered request, retained for audit/event replay. */
|
|
5521
|
+
pageObjectNumbers: PageObjectNumber[];
|
|
5522
|
+
usage: PageFlattenUsage;
|
|
5523
|
+
results: PageFlattenItemResult[];
|
|
5524
|
+
meta: MutationMeta | null;
|
|
5525
|
+
}
|
|
5526
|
+
//#endregion
|
|
5527
|
+
//#region src/mutation/AnnotationFlattenResult.d.ts
|
|
5528
|
+
/** Input for `page(pon).annotations.flatten()`: the refs (all on that page). */
|
|
5529
|
+
interface AnnotationFlattenInput {
|
|
5530
|
+
refs: AnnotationRef[];
|
|
5531
|
+
usage: PageFlattenUsage;
|
|
5532
|
+
}
|
|
5533
|
+
/**
|
|
5534
|
+
* Per-ref outcome. `applied`: painted into the page content and removed.
|
|
5535
|
+
* `skipped`: left in place — hidden for the usage, a Popup, or without a
|
|
5536
|
+
* usable normal appearance. A ref that is not on the page rejects the whole
|
|
5537
|
+
* call with `InvalidArg` before anything is mutated, so it never appears here.
|
|
5538
|
+
*/
|
|
5539
|
+
interface AnnotationFlattenItemResult {
|
|
5540
|
+
ref: AnnotationRef;
|
|
5541
|
+
status: 'applied' | 'skipped';
|
|
5542
|
+
}
|
|
5543
|
+
/**
|
|
5544
|
+
* Result of `page(pon).annotations.flatten()` — `pages.flatten` for a chosen
|
|
5545
|
+
* set. A content + annotation mutation of ONE page: `meta` carries that
|
|
5546
|
+
* page's new pins (null when nothing was applied), exactly like
|
|
5547
|
+
* `PageFlattenResult`.
|
|
5548
|
+
*/
|
|
5549
|
+
interface AnnotationFlattenResult {
|
|
5550
|
+
pageObjectNumber: PageObjectNumber;
|
|
5551
|
+
usage: PageFlattenUsage;
|
|
5552
|
+
results: AnnotationFlattenItemResult[];
|
|
5553
|
+
meta: MutationMeta | null;
|
|
5554
|
+
}
|
|
5555
|
+
/** Input for `page(pon).annotations.exportAppearance()`. */
|
|
5556
|
+
interface AnnotationAppearanceExportInput {
|
|
5557
|
+
refs: AnnotationRef[];
|
|
5558
|
+
}
|
|
5559
|
+
//#endregion
|
|
4465
5560
|
//#region src/mutation/PageRotateInput.d.ts
|
|
4466
5561
|
/**
|
|
4467
5562
|
* Input to `pages.rotate()`. Rotation is ABSOLUTE ("set to"), never relative
|
|
@@ -4574,27 +5669,6 @@ interface PageInsertBlankSpec {
|
|
|
4574
5669
|
count?: number;
|
|
4575
5670
|
}
|
|
4576
5671
|
//#endregion
|
|
4577
|
-
//#region src/mutation/PageFlattenResult.d.ts
|
|
4578
|
-
type PageFlattenUsage = 'display' | 'print';
|
|
4579
|
-
type PageFlattenStatus = 'applied' | 'unchanged' | 'failed' | 'skipped';
|
|
4580
|
-
interface PageFlattenInput {
|
|
4581
|
-
pageObjectNumbers: PageObjectNumber[];
|
|
4582
|
-
usage: PageFlattenUsage;
|
|
4583
|
-
}
|
|
4584
|
-
interface PageFlattenItemResult {
|
|
4585
|
-
pageObjectNumber: PageObjectNumber;
|
|
4586
|
-
status: PageFlattenStatus;
|
|
4587
|
-
error?: SerializedEngineError;
|
|
4588
|
-
}
|
|
4589
|
-
/** Flatten is a content + annotation mutation, never a layout mutation. */
|
|
4590
|
-
interface PageFlattenResult {
|
|
4591
|
-
/** The original ordered request, retained for audit/event replay. */
|
|
4592
|
-
pageObjectNumbers: PageObjectNumber[];
|
|
4593
|
-
usage: PageFlattenUsage;
|
|
4594
|
-
results: PageFlattenItemResult[];
|
|
4595
|
-
meta: MutationMeta | null;
|
|
4596
|
-
}
|
|
4597
|
-
//#endregion
|
|
4598
5672
|
//#region src/mutation/RedactionApplyResult.d.ts
|
|
4599
5673
|
type RedactionApplyStatus = 'applied' | 'unchanged' | 'failed' | 'skipped';
|
|
4600
5674
|
/**
|
|
@@ -5113,6 +6187,12 @@ interface FreeTextDraft extends AnnotationDraftBase {
|
|
|
5113
6187
|
fontFamily: FreeTextFont;
|
|
5114
6188
|
fontSize: number;
|
|
5115
6189
|
textAlign: TextAlignment;
|
|
6190
|
+
/**
|
|
6191
|
+
* Rich text (`/RC`). When given, its body is the annotation's body style
|
|
6192
|
+
* (the `/DA` font and size follow it) and its paragraphs are the text;
|
|
6193
|
+
* `contents`, if also given, must equal its plain projection.
|
|
6194
|
+
*/
|
|
6195
|
+
richText?: RichTextDocumentInput;
|
|
5116
6196
|
/** `/Rect` bounding box — required (computed by the caller/plugin). */
|
|
5117
6197
|
rect: PdfRect;
|
|
5118
6198
|
/** `/DA` colour (border + default text). */
|
|
@@ -5147,12 +6227,24 @@ type FreeTextAnnotationDTO = AnnotationBase & {
|
|
|
5147
6227
|
subtype: 'free-text';
|
|
5148
6228
|
/** `/IT` intent. */
|
|
5149
6229
|
intent: FreeTextIntent;
|
|
5150
|
-
/**
|
|
5151
|
-
|
|
6230
|
+
/**
|
|
6231
|
+
* The body face: a standard font name, the `key` of a registered font
|
|
6232
|
+
* whose family/weight/italic match the body, or — for a face the
|
|
6233
|
+
* document embeds but this session did not register — its family name.
|
|
6234
|
+
*/
|
|
6235
|
+
fontFamily: FreeTextFont;
|
|
5152
6236
|
/** `/DA` font size, in points. */
|
|
5153
6237
|
fontSize: number;
|
|
5154
6238
|
/** `/Q` horizontal text alignment. */
|
|
5155
6239
|
textAlign: TextAlignment;
|
|
6240
|
+
/**
|
|
6241
|
+
* The text, as a rich document — always. The annotation's `/RC` when it has
|
|
6242
|
+
* one, else the same shape synthesised from `/Contents`, `/DA` and `/Q`
|
|
6243
|
+
* (one paragraph per line, no run deltas). `contents` is its plain
|
|
6244
|
+
* projection. Every write goes back through the rich path, so a box has
|
|
6245
|
+
* no "plain mode" to fall out of.
|
|
6246
|
+
*/
|
|
6247
|
+
richText: RichTextDocument;
|
|
5156
6248
|
/** `/DA` colour: the border colour and the default text colour. */
|
|
5157
6249
|
color: Color;
|
|
5158
6250
|
/** Text colour override (`TextColor`). Absent when the text follows `color`. */
|
|
@@ -5187,6 +6279,16 @@ interface FreeTextPatch extends AnnotationPatchBase {
|
|
|
5187
6279
|
fontFamily?: FreeTextFont;
|
|
5188
6280
|
fontSize?: number;
|
|
5189
6281
|
textAlign?: TextAlignment;
|
|
6282
|
+
/**
|
|
6283
|
+
* Rich replacement: `/RC`, `/DS`, `/DA`, `/Contents` and the appearance
|
|
6284
|
+
* are all regenerated. A patch that also carries `contents` must agree
|
|
6285
|
+
* with the rich text's plain projection (`InvalidArg` otherwise). A
|
|
6286
|
+
* `contents`-only patch on an annotation with `/RC` rewrites the rich
|
|
6287
|
+
* text as body-style paragraphs: run formatting is lost by design.
|
|
6288
|
+
* `fontFamily` / `fontSize` / `fontColor` on such an annotation change the
|
|
6289
|
+
* body style; runs are deltas, so every run that did not override follows.
|
|
6290
|
+
*/
|
|
6291
|
+
richText?: RichTextDocumentInput;
|
|
5190
6292
|
rect?: PdfRect;
|
|
5191
6293
|
color?: Color;
|
|
5192
6294
|
fontColor?: Color;
|
|
@@ -5360,7 +6462,13 @@ interface StampDraft extends AnnotationDraftBase {
|
|
|
5360
6462
|
rect: PdfRect;
|
|
5361
6463
|
/** What the stamp displays: PNG, JPEG, or single-page PDF bytes. */
|
|
5362
6464
|
source: BinarySource;
|
|
5363
|
-
/**
|
|
6465
|
+
/**
|
|
6466
|
+
* `/Name` — the stamp's identifier: a standard name ('Approved', 'Draft',
|
|
6467
|
+
* …) or any custom name such as an Acrobat library identifier
|
|
6468
|
+
* ('#LBGiYhk8V_oAfmqAPENiwD'). Written as a PDF name object; the engine
|
|
6469
|
+
* escapes it. Predefined sets are a reader's rendering concern, so nothing
|
|
6470
|
+
* is validated beyond non-empty.
|
|
6471
|
+
*/
|
|
5364
6472
|
name?: string;
|
|
5365
6473
|
/** Scaling of the content into `rect`. Default `'contain'` (preserves aspect). */
|
|
5366
6474
|
fit?: StampFit;
|
|
@@ -5411,7 +6519,8 @@ interface StampPatch extends AnnotationPatchBase {
|
|
|
5411
6519
|
subtype: 'stamp';
|
|
5412
6520
|
rect?: PdfRect;
|
|
5413
6521
|
source?: BinarySource;
|
|
5414
|
-
|
|
6522
|
+
/** `/Name`; `null` removes it (the reader then reports the default). */
|
|
6523
|
+
name?: string | null;
|
|
5415
6524
|
fit?: StampFit;
|
|
5416
6525
|
rotation?: number | null;
|
|
5417
6526
|
unrotatedRect?: PdfRect | null;
|
|
@@ -5421,7 +6530,7 @@ interface StampWirePatch extends AnnotationPatchBase {
|
|
|
5421
6530
|
subtype: 'stamp';
|
|
5422
6531
|
rect?: PdfRect;
|
|
5423
6532
|
source?: ResourceRef;
|
|
5424
|
-
name?: string;
|
|
6533
|
+
name?: string | null;
|
|
5425
6534
|
fit?: StampFit;
|
|
5426
6535
|
rotation?: number | null;
|
|
5427
6536
|
unrotatedRect?: PdfRect | null;
|
|
@@ -5758,5 +6867,5 @@ interface AnnotationListPageSnapshot {
|
|
|
5758
6867
|
annotations: AnnotationDTO[];
|
|
5759
6868
|
}
|
|
5760
6869
|
//#endregion
|
|
5761
|
-
export { CaretDraftSchema as $, AttachmentFileInfo as $a, Rect as $c, AnnotationUpdateResult as $i, canonicalSearchQuery as $n, knownWeakAnnotationState as $o, FormEffectsResult as $r, OpenInputLayerSource as $s, CircleDraftSchema as $t, FileAttachmentWireDraftSchema as A, AnnotationKindModule as Aa, ParsedCollab as Ac, CheckboxFieldDTO as Ai, isValidPageObjectNumber as Al, HighlightDraft as An, SerializedEngineError as Ao, SearchSnippet as Ar, charMapViolation as As, LineDraft as At, StampAnnotationDTO as B, FileAttachmentWireDraft as Ba, AnnotationFlags as Bc, RadioFieldDTO as Bi, PageFlattenStatus as Bn, AnnotationAppearanceImage as Bo, textGlyphQuad as Br, pdfRectHeight as Bs, PolygonPatch as Bt, RedactDraft as C, buildCommentThreads as Ca, AnnotationActor as Cc, FormKind as Ci, PdfFieldActions as Cl, UnderlineAnnotationDTO as Cn, AnnotationBase as Co, toOriginalRange as Cr, glyphLooseQuad as Cs, LinkAnnotationDTO as Ct, FileAttachmentDTOSchema as D, buildThreads as Da, DocCapability as Dc, WidgetStyleDraftFields as Di, decodeSubmitFormFlags as Dl, HighlightPatchSchema as Dn, encodeStableIdKey as Do, SearchRequest as Dr, CharMapAnchor as Ds, LinePatchSchema as Dt, WidgetDraft as E, AnnotationThread as Ea, CollabFilter as Ec, WidgetAppearanceSchema as Ei, SubmitFormPayload as El, HighlightDraftSchema as En, decodeStableIdKey as Eo, SearchQuery as Er, CharBoundaryBias as Es, LineDraftSchema as Et, StampDTOSchema as F, AttachmentDeleteResult as Fa, AnnotationDraftBase as Fc, FormFieldFlags as Fi, RedactionApplyScope as Fn, FontKey as Fo, TextLayoutRun as Fr, normalizePdfRect as Fs, PolylineAnnotationDTO as Ft, TextDTOSchema as G, FilledStyleDraftFields as Ga, FreeTextFont as Gc, FormValueEntry as Gi, PageDeleteResult as Gn, AnnotationAppearanceMode as Go, FormFieldUpdateResult as Gr, PageBoxes as Gs, VertexPatchFields as Gt, StampFit as H, ColorStyleDraftFields as Ha, BlendMode as Hc, TextFieldDTO as Hi, PAGE_INSERT_BLANK_MAX_COUNT as Hn, AnnotationAppearanceImagesResult as Ho, FormDataExport as Hr, pdfRectToOriginSize as Hs, PolygonDraft as Ht, StampWireDraftSchema as I, AttachmentsCache as Ia, AnnotationRef as Ic, FormFieldOption as Ii, RedactionApplyStatus as In, FontSpec as Io, buildPageTextLayout as Ir, pdfQuadBounds as Is, PolylineDraft as It, TextPatch as J, GeometryStyleDraftFields as Ja, LineEnding as Jc, decodeFieldRefKey as Ji, PageRotateInput as Jn, AnnotationAppearancesQuery as Jo, FormSetValueResult as Jr, MetadataPatch as Js, SquarePatchSchema as Jt, TextDraftSchema as K, FilledStyleFields as Ka, FreeTextIntent as Kc, FormFieldRef as Ki, PageDeleteInput as Kn, AnnotationAppearanceRaster as Ko, FormImportResult as Kr, PageLayout as Ks, SquareDTOSchema as Kt, StampWirePatchSchema as L, normalizeAttachmentFileSource as La, RevisionToken as Lc, FormFieldOrigin as Li, PageFlattenInput as Ln, DEFAULT_PDF_SAVE_MODE as Lo, expandTextRangeToLine as Lr, pdfQuadCorners as Ls, PolygonDTOSchema as Lt, FileAttachmentPatch as M, DraftOfKind as Ma, ParsedVirtual as Mc, FormFieldBase as Mi, DocumentMetadataTrapped as Ml, MetadataUpdateResult as Mn, serializeError as Mo, PdfTextSegment as Mr, sliceTextByChars as Ms, PolylineDraftSchema as Mt, FileAttachmentAnnotationDTO as N, PatchOfKind as Na, ParsedWildcard as Nc, FormFieldDTO as Ni, RedactionApplyItemResult as Nn, EngineErrorCode as No, TextLayoutFrame as Nr, PdfOriginSize as Ns, PolylinePatchSchema as Nt, FileAttachmentIconSchema as O, classifyRelation as Oa, IdentityClaims as Oc, WidgetStyleFields as Oi, PdfDestination as Ol, HighlightPatch as On, EngineError as Oo, SearchSlice as Or, boundaryTextOffset as Os, LinePatch as Ot, ResourceRefSchema as P, AttachmentCreateResult as Pa, PdfBits as Pc, FormFieldFamily as Pi, RedactionApplyResult as Pn, FontHandle as Po, TextLayoutGlyph as Pr, PdfQuadCorners as Ps, PolylinePatch as Pt, CaretDTOSchema as Q, AttachmentFileBase as Qa, Point as Qc, AnnotationMoveResult as Qi, PageMoveInput as Qn, WeakAnnotationState as Qo, FormEffectStatus as Qr, OpenInputLayerBytes as Qs, CircleDTOSchema as Qt, StampPatch as R, FileAttachmentDraft as Ra, revisionTokensEqual as Rc, ListBoxFieldDTO as Ri, PageFlattenItemResult as Rn, PdfSaveMode as Ro, expandTextRangeToWord as Rr, pdfQuadFromCorners as Rs, PolygonDraftSchema as Rt, RedactAnnotationDTO as S, ReviewStatus as Sa, decodePdfBits as Sc, WidgetPlacement as Si, PdfAnnotationActions as Sl, UnderlinePatch as Sn, AnnotationPatchBase as So, foldText as Sr, glyphLooseBounds as Ss, LinkPatch as St, WidgetAnnotationDTO as T, AnnotationRelationKind as Ta, CollabEntity as Tc, WidgetAppearance as Ti, SubmitFormFlags as Tl, HighlightDTOSchema as Tn, AnnotationStableId as To, SearchMode as Tr, PageTextSnapshot as Ts, LineDTOSchema as Tt, StampWireDraft as U, ColorStyleFields as Ua, CaretIntent as Uc, ToggleFieldWidget as Ui, PageInsertBlankSpec as Un, AnnotationAppearanceManifest as Uo, FormFieldCreateResult as Ur, pdfRectWidth as Us, VertexAnnotationFields as Ut, StampDraft as V, WireAttachmentFile as Va, AnnotationReplyType as Vc, SignatureFieldDTO as Vi, PageFlattenUsage as Vn, AnnotationAppearanceImageOptions as Vo, textSegmentsForRange as Vr, pdfRectSize as Vs, PolygonAnnotationDTO as Vt, NoteIconSchema as W, ColorStylePatchFields as Wa, Color as Wc, UnknownFieldDTO as Wi, PageInsertResult as Wn, AnnotationAppearanceManifestEntry as Wo, FormFieldDeleteResult as Wr, PageListSnapshot as Ws, VertexDraftFields as Wt, NoteIcon as X, GeometryStylePatchFields as Xa, NO_ANNOTATION_FLAGS as Xc, AnnotationCreateResult as Xi, PageMoveResult as Xn, PageState as Xo, FormEffect as Xr, OpenInputById as Xs, SquareAnnotationDTO as Xt, TextAnnotationDTO as Y, GeometryStyleFields as Ya, LineEndings as Yc, encodeFieldRefKey as Yi, PageMoveCache as Yn, AnnotationAppearancesResult as Yo, FormWidgetLinkResult as Yr, OpenInput as Ys, SquarePatch as Yt, TextDraft as Z, AttachmentContent as Za, PdfRectDifferences as Zc, AnnotationDeleteResult as Zi, PageStructureCache as Zn, UNKNOWN_WEAK_ANNOTATION_STATE as Zo, FormEffectResult as Zr, OpenInputBytes as Zs, SquareDraft as Zt, UnsupportedPatchSchema as _, LayerScopePlane as _a, MissingIdentity as _c, FormFieldDraft as _i, PdfActionNode as _l, SquigglyAnnotationDTO as _n, AnnotationSubtype as _o, wordBefore as _r, PageGeometryRun as _s, LinkDraftSchema as _t, AnnotationDTOSchema as a, AnnotationMutationKind as aa, collab as ac, FormSubmissionRequest as ai, CalloutLine as al, ShapeDraftFields as an, normalizeAnnotationDraft as ao, matchPageText as ar, PageImageSource as as, FreeTextDraftSchema as at, UnsupportedAnnotationDTO as b, CommentThread as ba, validateScopeArray as bc, RadioFieldDraft as bi, PdfActionType as bl, UnderlineDraftSchema as bn, PdfAnnotationSubtypeCode as bo, SEARCH_FOLD_VERSION as br, RotatedGeometryRun as bs, PdfLinkTargetWritableSchema as bt, AnnotationKind as c, shiftsExistingAnnotationIndices as ca, CollabTarget as cc, FormFieldValue as ci, LinePoints as cl, StrikeoutDraftSchema as cn, BinaryMimeType as co, SearchQueryValidation as cr, PageRenderBackground as cs, FreeTextAnnotationDTO as ct, AnnotationSubtypeOfKind as d, CacheDelta as da, checkCollab as dc, FormFieldPatch as di, PdfRect as dl, StrikeoutAnnotationDTO as dn, BinarySource as do, matchRegex as dr, PageRenderOptions as ds, InkDraftSchema as dt, AppearanceAction as ea, OpenInputShare as ec, FormFieldDisplay as ei, Rotation as el, CirclePatchSchema as en, AttachmentFileSource as eo, searchContentEpoch as er, PageImageBlobSource as es, CaretPatchSchema as et, KIND_BY_SUBTYPE as f, MutationMeta as fa, checkSetGroup as fc, ListBoxFieldPatch as fi, PdfRotation as fl, StrikeoutDraft as fn, ResourceRef as fo, validateSearchQuery as fr, PageRenderQuery as fs, InkPatchSchema as ft, UnsupportedDraftSchema as g, ManifestPage as ga, InvalidScope as gc, ComboBoxFieldDraft as gi, NamedJavaScriptAction as gl, SquigglyPatch as gn, ANNOTATION_SUBTYPES as go, wordAt as gr, PageGeometryGlyph as gs, LinkDTOSchema as gt, UnsupportedDTOSchema as h, DocumentManifest as ha, filterMatches as hc, CheckboxFieldDraft as hi, DocumentActionsSnapshot as hl, SquigglyPatchSchema as hn, resolveBinarySource as ho, matchLiteral as hr, createPageImageHandle as hs, InkDraft as ht, AnnotationDTO as i, semanticEqual as ia, caps as ic, FormSubmissionReceiptSchema as ii, TextAlignment as il, ShapeAnnotationFields as in, NormalizedPatch as io, buildSnippet as ir, PageImageResult as is, FreeTextDTOSchema as it, WireAttachmentFileSchema as j, DTOOfKind as ja, ParsedScope as jc, ComboBoxFieldDTO as ji, DocumentMetadata as jl, MetadataCache as jn, deserializeError as jo, PageTextLayout as jr, charRangeForTextOffsets as js, PolylineDTOSchema as jt, FileAttachmentPatchSchema as k, refKey as ka, ParsedCapability as kc, WidgetStylePatchFields as ki, PageObjectNumber as kl, HighlightAnnotationDTO as kn, EngineErrorOptions as ko, SearchSliceBudget as kr, charBoundaryAtTextOffset as ks, LineAnnotationDTO as kt, AnnotationPatch as l, AnnotationListMutationMeta as la, checkAnyCapability as lc, CheckboxFieldPatch as li, PdfPoint as ll, StrikeoutPatchSchema as ln, sniffBinaryMetadata as lo, SearchRegexIssue as lr, PageRenderEncodedFormat as ls, FreeTextDraft as lt, WireAnnotationPatch as m, PdfLinkTargetWritable as ma, expandedCapabilities as mc, TextFieldPatch as mi, ActionReadBudget as ml, SquigglyDraftSchema as mn, WireResourceMap as mo, foldOptionsFor as mr, PageRenderViewport as ms, InkAnnotationDTO as mt, AnnotationListSnapshotAllPages as n, AppearanceOutcome as na, OpenOptions as nc, FormSubmissionEntrySchema as ni, StandardFont as nl, CircleAnnotationDTO as nn, EmbeddedFileRef as no, searchSegmentsForRange as nr, PageImageObjectUrl as ns, CaretAnnotationDTO as nt, AnnotationDraft as o, changesAnnotationList as oa, materializePdfPermissions as oc, FormSubmissionRequestSchema as oi, InkList as ol, ShapePatchFields as on, normalizeAnnotationPatch as oo, SEARCH_REGEX_MAX_LENGTH as or, PageNetworkRenderFormat as os, FreeTextPatchSchema as ot, WireAnnotationDraft as p, PdfLinkTarget as pa, expandRawScope as pc, RadioFieldPatch as pi, PdfSize as pl, SquigglyDTOSchema as pn, WireResource as po, validateSearchRegex as pr, PageRenderTarget as ps, InkPatch as pt, TextPatchSchema as q, FilledStylePatchFields as qa, InkIntent as qc, FormWidgetRef as qi, PageRotateResult as qn, AnnotationAppearanceRenderOptions as qo, FormRepairResult as qr, PageRotation as qs, SquareDraftSchema as qt, ANNOTATION_KINDS as r, appearanceImpactOf as ra, TokenSource as rc, FormSubmissionReceipt as ri, StrikeoutIntent as rl, CircleDraft as rn, NormalizedDraft as ro, SEARCH_SNIPPET_CONTEXT as rr, PageImageOptions as rs, CaretDraft as rt, AnnotationDraftSchema as s, invalidatesWeakIndexRefs as sa, pdfPermissions as sc, FormDataFormat as si, InkStroke as sl, StrikeoutDTOSchema as sn, BinaryMetadata as so, SearchQueryIssue as sr, PageRaster as ss, FreeTextPatch as st, AnnotationListPageSnapshot as t, AppearanceImpact as ta, OpenInputToken as tc, FormSubmissionEntry as ti, Size as tl, CirclePatch as tn, EmbeddedFileItem as to, searchRectsForRange as tr, PageImageHandle as ts, CaretPatch as tt, AnnotationPatchSchema as u, RefetchReason as ua, checkCapability as uc, ComboBoxFieldPatch as ui, PdfQuad as ul, StrikeoutPatch as un, BinaryPayload as uo, SearchRegexValidation as ur, PageRenderFormat as us, InkDTOSchema as ut, UnsupportedPatch as v, LayerScopes as va, PermissionDenied as vc, FormFieldOptionInput as vi, PdfActionTargetRef as vl, SquigglyDraft as vn, PDF_CODE_TO_SUBTYPE as vo, FoldOptions as vr, PageGeometrySnapshot as vs, LinkPatchSchema as vt, WidgetPatch as w, isStateAnnotation as wa, CollabAction as wc, FormSnapshot as wi, PdfPageActions as wl, UnderlineDraft as wn, AnnotationIdentityQuality as wo, SearchMatch as wr, isRotatedGeometryRun as ws, LinkDraft as wt, RedactPatch as x, CommentThreadReview as xa, PDF_BITS as xc, TextFieldDraft as xi, PdfActionWarning as xl, UnderlinePatchSchema as xn, subtypeFromCode as xo, SearchMatchRange as xr, UprightGeometryRun as xs, PdfDestinationSchema as xt, UnsupportedDraft as y, BuildCommentThreadsOptions as ya, parseScope as yc, ListBoxFieldDraft as yi, PdfActionTree as yl, UnderlineDTOSchema as yn, PDF_SUBTYPE_TO_CODE as yo, FoldedText as yr, RotatedGeometryGlyph as ys, PdfLinkTargetSchema as yt, StampWirePatch as z, FileAttachmentIcon as za, AnnotationBorderStyle as zc, PushButtonFieldDTO as zi, PageFlattenResult as zn, CachePins as zo, textGlyphAt as zr, pdfRectFromOriginSize as zs, PolygonPatchSchema as zt };
|
|
5762
|
-
//# sourceMappingURL=AnnotationListSnapshot-
|
|
6870
|
+
export { CaretDraftSchema as $, semanticEqual as $a, NamedPageEntry as $c, FormFieldDisplay as $i, CachePins as $l, PageNameResult as $n, normalizeAnnotationPatch as $o, FormImportResult as $r, AnnotationAppearanceManifestEntry as $s, CircleDraftSchema as $t, PdfRect as $u, FileAttachmentWireDraftSchema as A, ComboBoxFieldDTO as Aa, PageTextSnapshot as Ac, refsOf as Ai, FieldLockSpec as Al, HighlightDraft as An, normalizeAttachmentFileSource as Ao, toOriginalRange as Ar, RichTextDirection as As, LineDraft as At, BlendMode as Au, StampAnnotationDTO as B, SignatureFieldDTO as Ba, normalizePdfRect as Bc, ObjectReferrer as Bi, SignaturePrepareInput as Bl, PageDeleteResult as Bn, FilledStylePatchFields as Bo, TextLayoutFrame as Br, richTextPlainText as Bs, PolygonPatch as Bt, Point as Bu, RedactDraft as C, FormSnapshot as Ca, PageGeometrySnapshot as Cc, evaluateStep as Ci, BaseVersionInfo as Cl, UnderlineAnnotationDTO as Cn, AnnotationKindModule as Co, wordAt as Cr, SerializedEngineError as Cs, LinkAnnotationDTO as Ct, AnnotationDraftBase as Cu, FileAttachmentDTOSchema as D, WidgetStyleFields as Da, glyphLooseBounds as Dc, dictEntries as Di, DocumentProtection as Dl, HighlightPatchSchema as Dn, AttachmentCreateResult as Do, SEARCH_FOLD_VERSION as Dr, RichTextAlign as Ds, LinePatchSchema as Dt, AnnotationBorderStyle as Du, WidgetDraft as E, WidgetStyleDraftFields as Ea, UprightGeometryRun as Ec, changedKeys as Ei, DocumentFieldLock as El, HighlightDraftSchema as En, PatchOfKind as Eo, FoldedText as Er, EngineErrorCode as Es, LineDraftSchema as Et, revisionTokensEqual as Eu, StampDTOSchema as F, FormFieldOption as Fa, charMapViolation as Fc, ChangeFinding as Fi, SignatureCompleteInput as Fl, RedactionApplyScope as Fn, ColorStyleDraftFields as Fo, SearchSlice as Fr, RichTextParagraphProps as Fs, PolylineAnnotationDTO as Ft, InkIntent as Fu, TextDTOSchema as G, AnnotationCreateResult as Ga, pdfRectHeight as Gc, RevisionHealth as Gi, SignatureSubFilter as Gl, AnnotationFlattenInput as Gn, AttachmentFileBase as Go, expandTextRangeToWord as Gr, FontSpec as Gs, VertexPatchFields as Gt, StrikeoutIntent as Gu, StampFit as H, ToggleFieldWidget as Ha, pdfQuadCorners as Hc, RestrictionAnchor as Hi, SignatureSeedValue as Hl, PageRotateResult as Hn, GeometryStyleFields as Ho, TextLayoutRun as Hr, FontHandle as Hs, PolygonDraft as Ht, Rotation as Hu, StampWireDraftSchema as I, FormFieldOrigin as Ia, charRangeForTextOffsets as Ic, ObjectChange as Ii, SignatureCompleteResult as Il, RedactionApplyStatus as In, ColorStyleFields as Io, SearchSliceBudget as Ir, RichTextRun as Is, PolylineDraft as It, LineEnding as Iu, TextPatch as J, AnnotationUpdateResult as Ja, pdfRectWidth as Jc, StepVerdict as Ji, MutationMeta as Jl, PageFlattenInput as Jn, EmbeddedFileItem as Jo, textSegmentsForRange as Jr, PdfSaveMode as Js, SquarePatchSchema as Jt, InkList as Ju, TextDraftSchema as K, AnnotationDeleteResult as Ka, pdfRectSize as Kc, RevisionStructure as Ki, SignedDocumentPolicy as Kl, AnnotationFlattenItemResult as Kn, AttachmentFileInfo as Ko, textGlyphAt as Kr, SessionKind as Ks, SquareDTOSchema as Kt, TextAlignment as Ku, StampWirePatchSchema as L, ListBoxFieldDTO as La, sliceTextByChars as Lc, ObjectChangeKind as Li, SignatureCoverage as Ll, PAGE_INSERT_BLANK_MAX_COUNT as Ln, ColorStylePatchFields as Lo, SearchSnippet as Lr, RichTextRunStyle as Ls, PolygonDTOSchema as Lt, LineEndings as Lu, FileAttachmentPatch as M, FormFieldDTO as Ma, CharMapAnchor as Mc, AnalyzeInput as Mi, PdfRevision as Ml, MetadataUpdateResult as Mn, FileAttachmentIcon as Mo, SearchMode as Mr, RichTextDocumentInput as Ms, PolylineDraftSchema as Mt, Color as Mu, FileAttachmentAnnotationDTO as N, FormFieldFamily as Na, boundaryTextOffset as Nc, Assessment as Ni, SignatureAbortResult as Nl, RedactionApplyItemResult as Nn, FileAttachmentWireDraft as No, SearchQuery as Nr, RichTextMargins as Ns, PolylinePatchSchema as Nt, FreeTextFont as Nu, FileAttachmentIconSchema as O, WidgetStylePatchFields as Oa, glyphLooseQuad as Oc, parsePdfValue as Oi, DocumentVersionRef as Ol, HighlightPatch as On, AttachmentDeleteResult as Oo, SearchMatchRange as Or, RichTextBody as Os, LinePatch as Ot, AnnotationFlags as Ou, ResourceRefSchema as P, FormFieldFlags as Pa, charBoundaryAtTextOffset as Pc, ChangeAnalysis as Pi, SignatureAppearanceInput as Pl, RedactionApplyResult as Pn, WireAttachmentFile as Po, SearchRequest as Pr, RichTextParagraph as Ps, PolylinePatch as Pt, FreeTextIntent as Pu, CaretDTOSchema as Q, appearanceImpactOf as Qa, PageRotation as Qc, FormEffectsResult as Qi, knownWeakAnnotationState as Ql, PageFlattenUsage as Qn, normalizeAnnotationDraft as Qo, FormFieldUpdateResult as Qr, AnnotationAppearanceManifest as Qs, CircleDTOSchema as Qt, PdfQuad as Qu, StampPatch as R, PushButtonFieldDTO as Ra, PdfOriginSize as Rc, ObjectChangeType as Ri, SignatureDTO as Rl, PageInsertBlankSpec as Rn, FilledStyleDraftFields as Ro, PageTextLayout as Rr, RichTextScript as Rs, PolygonDraftSchema as Rt, NO_ANNOTATION_FLAGS as Ru, RedactAnnotationDTO as S, FormKind as Sa, PageGeometryRun as Sc, restrictionsFor as Si, filterMatches as Sl, UnderlinePatch as Sn, refKey as So, matchLiteral as Sr, EngineErrorOptions as Ss, LinkPatch as St, PdfBits as Su, WidgetAnnotationDTO as T, WidgetAppearanceSchema as Ta, RotatedGeometryRun as Tc, sameEffectiveValue as Ti, DocMdpPermission as Tl, HighlightDTOSchema as Tn, DraftOfKind as To, FoldOptions as Tr, serializeError as Ts, LineDTOSchema as Tt, RevisionToken as Tu, StampWireDraft as U, UnknownFieldDTO as Ua, pdfQuadFromCorners as Uc, RevisionAnalysis as Ui, SignatureSigner as Ul, PageRotateInput as Un, GeometryStylePatchFields as Uo, buildPageTextLayout as Ur, FontIdentityInfo as Us, VertexAnnotationFields as Ut, Size as Uu, StampDraft as V, TextFieldDTO as Va, pdfQuadBounds as Vc, PdfValue as Vi, SignaturePrepared as Vl, PageDeleteInput as Vn, GeometryStyleDraftFields as Vo, TextLayoutGlyph as Vr, FontEmbeddingPermission as Vs, PolygonAnnotationDTO as Vt, Rect as Vu, NoteIconSchema as W, FormValueEntry as Wa, pdfRectFromOriginSize as Wc, RevisionField as Wi, SignatureSnapshot as Wl, AnnotationAppearanceExportInput as Wn, AttachmentContent as Wo, expandTextRangeToLine as Wr, FontKey as Ws, VertexDraftFields as Wt, StandardFont as Wu, NoteIcon as X, AppearanceImpact as Xa, PageBoxes as Xc, FormEffectResult as Xi, UNKNOWN_WEAK_ANNOTATION_STATE as Xl, PageFlattenResult as Xn, NormalizedDraft as Xo, FormFieldCreateResult as Xr, AnnotationAppearanceImageOptions as Xs, SquareAnnotationDTO as Xt, LinePoints as Xu, TextAnnotationDTO as Y, AppearanceAction as Ya, PageListSnapshot as Yc, FormEffect as Yi, PageState as Yl, PageFlattenItemResult as Yn, EmbeddedFileRef as Yo, FormDataExport as Yr, AnnotationAppearanceImage as Ys, SquarePatch as Yt, InkStroke as Yu, TextDraft as Z, AppearanceOutcome as Za, PageLayout as Zc, FormEffectStatus as Zi, WeakAnnotationState as Zl, PageFlattenStatus as Zn, NormalizedPatch as Zo, FormFieldDeleteResult as Zr, AnnotationAppearanceImagesResult as Zs, SquareDraft as Zt, PdfPoint as Zu, UnsupportedPatchSchema as _, FormFieldOptionInput as _a, PageRenderQuery as _c, PageObjectNumber as _d, DEFAULT_EDGE_RESOLVER_BUDGET as _i, checkCapability as _l, SquigglyAnnotationDTO as _n, isStateAnnotation as _o, SearchRegexValidation as _r, AnnotationIdentityQuality as _s, LinkDraftSchema as _t, ParsedCapability as _u, AnnotationDTOSchema as a, FormSubmissionRequestSchema as aa, PageImageBlobSource as ac, PdfActionNode as ad, fieldLockFor as ai, OpenInputLayerBytes as al, ShapeDraftFields as an, RefetchReason as ao, PageMoveInput as ar, ResourceRef as as, FreeTextDraftSchema as at, MissingIdentity as au, UnsupportedAnnotationDTO as b, TextFieldDraft as ba, createPageImageHandle as bc, DocumentMetadataTrapped as bd, ResolvedUsage as bi, expandRawScope as bl, UnderlineDraftSchema as bn, buildThreads as bo, validateSearchRegex as br, encodeStableIdKey as bs, PdfLinkTargetWritableSchema as bt, ParsedVirtual as bu, AnnotationKind as c, CheckboxFieldPatch as ca, PageImageOptions as cc, PdfActionType as cd, lockCovers as ci, OpenInputToken as cl, StrikeoutDraftSchema as cn, DocumentManifest as co, searchRectsForRange as cr, resolveBinarySource as cs, FreeTextAnnotationDTO as ct, validateScopeArray as cu, AnnotationSubtypeOfKind as d, ListBoxFieldPatch as da, PageNetworkRenderFormat as dc, PdfFieldActions as dd, protectedCapabilities as di, caps as dl, StrikeoutAnnotationDTO as dn, LayerScopes as do, buildSnippet as dr, PDF_CODE_TO_SUBTYPE as ds, InkDraftSchema as dt, AnnotationActor as du, FormSubmissionEntry as ea, AnnotationAppearanceMode as ec, PdfRotation as ed, FormRepairResult as ei, NamedPageTarget as el, CirclePatchSchema as en, AnnotationMutationKind as eo, PageNameInput as er, BinaryMetadata as es, CaretPatchSchema as et, FormFieldRef as eu, KIND_BY_SUBTYPE as f, RadioFieldPatch as fa, PageRaster as fc, PdfPageActions as fd, assessmentOf as fi, collab as fl, StrikeoutDraft as fn, BuildCommentThreadsOptions as fo, matchPageText as fr, PDF_SUBTYPE_TO_CODE as fs, InkPatchSchema as ft, CollabAction as fu, UnsupportedDraftSchema as g, FormFieldDraft as ga, PageRenderOptions as gc, PdfDestination as gd, worstVerdict as gi, checkAnyCapability as gl, SquigglyPatch as gn, buildCommentThreads as go, SearchRegexIssue as gr, AnnotationBase as gs, LinkDTOSchema as gt, IdentityClaims as gu, UnsupportedDTOSchema as h, ComboBoxFieldDraft as ha, PageRenderFormat as hc, decodeSubmitFormFlags as hd, primaryFinding as hi, CollabTarget as hl, SquigglyPatchSchema as hn, ReviewStatus as ho, SearchQueryValidation as hr, AnnotationPatchBase as hs, InkDraft as ht, DocCapability as hu, AnnotationDTO as i, FormSubmissionRequest as ia, AnnotationAppearancesResult as ic, NamedJavaScriptAction as id, deriveProtection as ii, OpenInputBytes as il, ShapeAnnotationFields as in, AnnotationListMutationMeta as io, PageStructureCache as ir, BinarySource as is, FreeTextDTOSchema as it, InvalidScope as iu, WireAttachmentFileSchema as j, FormFieldBase as ja, CharBoundaryBias as jc, stableStringify as ji, ModificationLevel as jl, MetadataCache as jn, FileAttachmentDraft as jo, SearchMatch as jr, RichTextDocument as js, PolylineDTOSchema as jt, CaretIntent as ju, FileAttachmentPatchSchema as k, CheckboxFieldDTO as ka, isRotatedGeometryRun as kc, pdfValueEquals as ki, FieldLockAction as kl, HighlightAnnotationDTO as kn, AttachmentsCache as ko, foldText as kr, RichTextDecoration as ks, LineAnnotationDTO as kt, AnnotationReplyType as ku, AnnotationPatch as l, ComboBoxFieldPatch as la, PageImageResult as lc, PdfActionWarning as ld, lockNameCovers as li, OpenOptions as ll, StrikeoutPatchSchema as ln, ManifestPage as lo, searchSegmentsForRange as lr, ANNOTATION_SUBTYPES as ls, FreeTextDraft as lt, PDF_BITS as lu, WireAnnotationPatch as m, CheckboxFieldDraft as ma, PageRenderEncodedFormat as mc, SubmitFormPayload as md, conclude as mi, pdfPermissions as ml, SquigglyDraftSchema as mn, CommentThreadReview as mo, SearchQueryIssue as mr, subtypeFromCode as ms, InkAnnotationDTO as mt, CollabFilter as mu, AnnotationListSnapshotAllPages as n, FormSubmissionReceipt as na, AnnotationAppearanceRenderOptions as nc, ActionReadBudget as nd, FormWidgetLinkResult as ni, OpenInput as nl, CircleAnnotationDTO as nn, invalidatesWeakIndexRefs as no, PageMoveCache as nr, sniffBinaryMetadata as ns, CaretAnnotationDTO as nt, decodeFieldRefKey as nu, AnnotationDraft as o, FormDataFormat as oa, PageImageHandle as oc, PdfActionTargetRef as od, levelAllows as oi, OpenInputLayerSource as ol, ShapePatchFields as on, PdfLinkTarget as oo, canonicalSearchQuery as or, WireResource as os, FreeTextPatchSchema as ot, PermissionDenied as ou, WireAnnotationDraft as p, TextFieldPatch as pa, PageRenderBackground as pc, SubmitFormFlags as pd, combine as pi, materializePdfPermissions as pl, SquigglyDTOSchema as pn, CommentThread as po, SEARCH_REGEX_MAX_LENGTH as pr, PdfAnnotationSubtypeCode as ps, InkPatch as pt, CollabEntity as pu, TextPatchSchema as q, AnnotationMoveResult as qa, pdfRectToOriginSize as qc, StepInput as qi, CacheDelta as ql, AnnotationFlattenResult as qn, AttachmentFileSource as qo, textGlyphQuad as qr, DEFAULT_PDF_SAVE_MODE as qs, SquareDraftSchema as qt, CalloutLine as qu, ANNOTATION_KINDS as r, FormSubmissionReceiptSchema as ra, AnnotationAppearancesQuery as rc, DocumentActionsSnapshot as rd, SIGNATURE_POLICY_VERSION as ri, OpenInputById as rl, CircleDraft as rn, shiftsExistingAnnotationIndices as ro, PageMoveResult as rr, BinaryPayload as rs, CaretDraft as rt, encodeFieldRefKey as ru, AnnotationDraftSchema as s, FormFieldValue as sa, PageImageObjectUrl as sc, PdfActionTree as sd, levelFromPermission as si, OpenInputShare as sl, StrikeoutDTOSchema as sn, PdfLinkTargetWritable as so, searchContentEpoch as sr, WireResourceMap as ss, FreeTextPatch as st, parseScope as su, AnnotationListPageSnapshot as t, FormSubmissionEntrySchema as ta, AnnotationAppearanceRaster as tc, PdfSize as td, FormSetValueResult as ti, MetadataPatch as tl, CirclePatch as tn, changesAnnotationList as to, PageRemoveNameInput as tr, BinaryMimeType as ts, CaretPatch as tt, FormWidgetRef as tu, AnnotationPatchSchema as u, FormFieldPatch as ua, PageImageSource as uc, PdfAnnotationActions as ud, minLevel as ui, TokenSource as ul, StrikeoutPatch as un, LayerScopePlane as uo, SEARCH_SNIPPET_CONTEXT as ur, AnnotationSubtype as us, InkDTOSchema as ut, decodePdfBits as uu, UnsupportedPatch as v, ListBoxFieldDraft as va, PageRenderTarget as vc, isValidPageObjectNumber as vd, EdgeResolver as vi, checkCollab as vl, SquigglyDraft as vn, AnnotationRelationKind as vo, matchRegex as vr, AnnotationStableId as vs, LinkPatchSchema as vt, ParsedCollab as vu, WidgetPatch as w, WidgetAppearance as wa, RotatedGeometryGlyph as wc, restrictionsOf as wi, DigestAlgorithm as wl, UnderlineDraft as wn, DTOOfKind as wo, wordBefore as wr, deserializeError as ws, LinkDraft as wt, AnnotationRef as wu, RedactPatch as x, WidgetPlacement as xa, PageGeometryGlyph as xc, USAGE_INCOMPLETE as xi, expandedCapabilities as xl, UnderlinePatchSchema as xn, classifyRelation as xo, foldOptionsFor as xr, EngineError as xs, PdfDestinationSchema as xt, ParsedWildcard as xu, UnsupportedDraft as y, RadioFieldDraft as ya, PageRenderViewport as yc, DocumentMetadata as yd, EdgeResolverBudget as yi, checkSetGroup as yl, UnderlineDTOSchema as yn, AnnotationThread as yo, validateSearchQuery as yr, decodeStableIdKey as ys, PdfLinkTargetSchema as yt, ParsedScope as yu, StampWirePatch as z, RadioFieldDTO as za, PdfQuadCorners as zc, ObjectReadStatus as zi, SignatureKind as zl, PageInsertResult as zn, FilledStyleFields as zo, PdfTextSegment as zr, richTextParagraphsFromPlainText as zs, PolygonPatchSchema as zt, PdfRectDifferences as zu };
|
|
6871
|
+
//# sourceMappingURL=AnnotationListSnapshot-D3mFut1e.d.ts.map
|