@embedpdf/engine-core 3.0.0-next.12 → 3.0.0-next.14
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-8-9JAX1Y.js → AbortError-DwuHPK_I.js} +2 -2
- package/dist/{AbortError-8-9JAX1Y.js.map → AbortError-DwuHPK_I.js.map} +1 -1
- package/dist/{AbortError-CRSooKsk.cjs → AbortError-P0RU0Mgg.cjs} +4 -4
- package/dist/{AbortError-CRSooKsk.cjs.map → AbortError-P0RU0Mgg.cjs.map} +1 -1
- package/dist/{AnnotationListSnapshot-x6tKulNV.d.cts → AnnotationListSnapshot-D9R5n2Kf.d.cts} +1390 -176
- package/dist/{AnnotationListSnapshot-x6tKulNV.d.ts → AnnotationListSnapshot-D9R5n2Kf.d.ts} +1390 -176
- package/dist/{DocumentSecurityService-CK0pejAK.d.cts → DocumentSecurityService-CIx1MT0T.d.cts} +2 -2
- package/dist/{DocumentSecurityService-9MawYxP-.d.ts → DocumentSecurityService-Ca6EK3-3.d.ts} +2 -2
- package/dist/{Engine--0XF0UAK.d.cts → Engine-EWWHhEIi.d.ts} +179 -11
- package/dist/{Engine-Ds0ytbl6.d.ts → Engine-FNaAEjfb.d.cts} +179 -11
- package/dist/conformance.cjs +1441 -88
- package/dist/conformance.cjs.map +1 -1
- package/dist/conformance.d.cts +74 -3
- package/dist/conformance.d.ts +74 -3
- package/dist/conformance.js +1376 -25
- package/dist/conformance.js.map +1 -1
- package/dist/derive-BbsDk_Kz.cjs +880 -0
- package/dist/derive-BbsDk_Kz.cjs.map +1 -0
- package/dist/derive-DAFJolWu.js +647 -0
- package/dist/derive-DAFJolWu.js.map +1 -0
- package/dist/{PageInsertBlankInput-WKY0tr6S.js → format-Bbphf4zR.js} +95 -3
- package/dist/format-Bbphf4zR.js.map +1 -0
- package/dist/{PageInsertBlankInput-CzShuSJI.cjs → format-D_epWlob.cjs} +106 -2
- package/dist/format-D_epWlob.cjs.map +1 -0
- package/dist/index.cjs +137 -88
- 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 +147 -98
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +216 -5
- package/dist/runtime.d.ts +216 -5
- package/dist/runtime.js +6 -6
- package/dist/{schemas-DOyVEPk7.js → schemas-CFQGvWiu.js} +551 -5
- package/dist/schemas-CFQGvWiu.js.map +1 -0
- package/dist/{schemas-RChsAMWw.cjs → schemas-D0g6tKa9.cjs} +829 -25
- package/dist/schemas-D0g6tKa9.cjs.map +1 -0
- package/dist/{builders-8Hl1AYNU.cjs → viewport-BWeNHZmb.cjs} +1522 -117
- package/dist/viewport-BWeNHZmb.cjs.map +1 -0
- package/dist/{builders-DOjcKDWQ.js → viewport-CvMcadfQ.js} +1386 -89
- package/dist/viewport-CvMcadfQ.js.map +1 -0
- package/dist/wire.cjs +252 -13
- package/dist/wire.cjs.map +1 -1
- package/dist/wire.d.cts +3147 -5
- package/dist/wire.d.ts +3147 -5
- package/dist/wire.js +207 -14
- 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-8Hl1AYNU.cjs.map +0 -1
- package/dist/builders-DOjcKDWQ.js.map +0 -1
- package/dist/fold-BfyxxwS6.js +0 -334
- package/dist/fold-BfyxxwS6.js.map +0 -1
- package/dist/fold-C7I5GpBz.cjs +0 -447
- package/dist/fold-C7I5GpBz.cjs.map +0 -1
- package/dist/resolver-CHG4waXL.js.map +0 -1
- package/dist/resolver-D-jumvgM.cjs.map +0 -1
- package/dist/schemas-DOyVEPk7.js.map +0 -1
- package/dist/schemas-RChsAMWw.cjs.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
|
/**
|
|
@@ -1818,46 +2261,6 @@ interface PageImageBlobSource {
|
|
|
1818
2261
|
}
|
|
1819
2262
|
declare function createPageImageHandle(result: PageImageResult, blobSource: PageImageBlobSource): PageImageHandle;
|
|
1820
2263
|
//#endregion
|
|
1821
|
-
//#region src/revision/WeakAnnotationState.d.ts
|
|
1822
|
-
/**
|
|
1823
|
-
* Tri-state knowledge about weak annotation identities on a page.
|
|
1824
|
-
*
|
|
1825
|
-
* `known(false)` is a stronger claim than "we have not looked yet": it means
|
|
1826
|
-
* the page's annotations were scanned and every annotation had a durable
|
|
1827
|
-
* identity. Cloud/CDN manifests must only publish boolean weak flags from a
|
|
1828
|
-
* known state.
|
|
1829
|
-
*/
|
|
1830
|
-
type WeakAnnotationState = {
|
|
1831
|
-
kind: 'unknown';
|
|
1832
|
-
} | {
|
|
1833
|
-
kind: 'known';
|
|
1834
|
-
hasAnyWeakAnnotations: boolean;
|
|
1835
|
-
};
|
|
1836
|
-
declare const UNKNOWN_WEAK_ANNOTATION_STATE: WeakAnnotationState;
|
|
1837
|
-
declare function knownWeakAnnotationState(hasAnyWeakAnnotations: boolean): WeakAnnotationState;
|
|
1838
|
-
//#endregion
|
|
1839
|
-
//#region src/revision/PageState.d.ts
|
|
1840
|
-
/**
|
|
1841
|
-
* Per-page liveness envelope returned with annotation reads and mutation
|
|
1842
|
-
* metadata. Deliberately scoped to annotation liveness: page identity,
|
|
1843
|
-
* weak-ref revision state, and explicit knowledge about weak annotations.
|
|
1844
|
-
*
|
|
1845
|
-
* Geometry/display order is NOT here — it lives in `PageLayout` (returned by
|
|
1846
|
-
* `pages.list()`), joined to this by `pageObjectNumber`. The two change on
|
|
1847
|
-
* different cadences (annotation edits vs. structural ops), so they are kept
|
|
1848
|
-
* orthogonal and never merged into one struct.
|
|
1849
|
-
*/
|
|
1850
|
-
interface PageState {
|
|
1851
|
-
pageObjectNumber: PageObjectNumber;
|
|
1852
|
-
revision: RevisionToken;
|
|
1853
|
-
/**
|
|
1854
|
-
* Explicit knowledge state for the weak-annotation scan. `unknown` means the
|
|
1855
|
-
* page has not been scanned yet; it must not be published as a CDN/cache
|
|
1856
|
-
* boolean.
|
|
1857
|
-
*/
|
|
1858
|
-
weakAnnotationState: WeakAnnotationState;
|
|
1859
|
-
}
|
|
1860
|
-
//#endregion
|
|
1861
2264
|
//#region src/dto/AnnotationRender.d.ts
|
|
1862
2265
|
/**
|
|
1863
2266
|
* Which `/AP` sub-dictionary to render. PDFium exposes Normal (`/N`),
|
|
@@ -1998,22 +2401,29 @@ interface AnnotationAppearanceManifest {
|
|
|
1998
2401
|
appearances: AnnotationAppearanceManifestEntry[];
|
|
1999
2402
|
}
|
|
2000
2403
|
//#endregion
|
|
2001
|
-
//#region src/dto/CachePins.d.ts
|
|
2002
|
-
/**
|
|
2003
|
-
* Per-page cache-busting integers embedded in immutable cloud/CDN leaf URLs.
|
|
2004
|
-
*
|
|
2005
|
-
* These are not page state. They are read coordinates for cacheable endpoints:
|
|
2006
|
-
* `/text` uses `contentVersion`; `/annotations` uses `annotationVersion`.
|
|
2007
|
-
*/
|
|
2008
|
-
interface CachePins {
|
|
2009
|
-
contentVersion: number;
|
|
2010
|
-
annotationVersion: number;
|
|
2011
|
-
}
|
|
2012
|
-
//#endregion
|
|
2013
2404
|
//#region src/dto/PdfSaveMode.d.ts
|
|
2014
2405
|
type PdfSaveMode = 'incremental' | 'rewrite';
|
|
2015
2406
|
declare const DEFAULT_PDF_SAVE_MODE: PdfSaveMode;
|
|
2016
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
|
|
2017
2427
|
//#region src/dto/FontSpec.d.ts
|
|
2018
2428
|
/**
|
|
2019
2429
|
* Runtime font registration DTOs.
|
|
@@ -2064,15 +2474,123 @@ interface FontSpec {
|
|
|
2064
2474
|
/** Font file bytes (TTF/OTF). */
|
|
2065
2475
|
data: Uint8Array | ArrayBuffer;
|
|
2066
2476
|
}
|
|
2067
|
-
/**
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
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. */
|
|
2071
2494
|
readonly familyName: string;
|
|
2072
|
-
/**
|
|
2495
|
+
/** 100..900. */
|
|
2073
2496
|
readonly weight: number;
|
|
2074
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;
|
|
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;
|
|
2075
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[];
|
|
2076
2594
|
//#endregion
|
|
2077
2595
|
//#region src/errors/EngineErrorCode.d.ts
|
|
2078
2596
|
declare const EngineErrorCode: {
|
|
@@ -2147,6 +2665,41 @@ declare const EngineErrorCode: {
|
|
|
2147
2665
|
* doesn't exist).
|
|
2148
2666
|
*/
|
|
2149
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";
|
|
2150
2703
|
};
|
|
2151
2704
|
type EngineErrorCode = (typeof EngineErrorCode)[keyof typeof EngineErrorCode];
|
|
2152
2705
|
//#endregion
|
|
@@ -3052,6 +3605,20 @@ interface DocumentManifest {
|
|
|
3052
3605
|
*/
|
|
3053
3606
|
auditHead: number;
|
|
3054
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;
|
|
3055
3622
|
/**
|
|
3056
3623
|
* Plane scopes (layer manifests only; absent on base manifests and
|
|
3057
3624
|
* on pre-plane servers = all-`'layer'`). Whole-layer by design — edge
|
|
@@ -3120,48 +3687,6 @@ type PdfLinkTargetWritable = Extract<PdfLinkTarget, {
|
|
|
3120
3687
|
kind: 'goto' | 'uri';
|
|
3121
3688
|
}>;
|
|
3122
3689
|
//#endregion
|
|
3123
|
-
//#region src/mutation/MutationMeta.d.ts
|
|
3124
|
-
/**
|
|
3125
|
-
* Cache pin patch returned by cloud mutations after the durable DB transaction
|
|
3126
|
-
* commits.
|
|
3127
|
-
*
|
|
3128
|
-
* `previousDocVersion` makes partial page deltas safe: clients may apply the
|
|
3129
|
-
* patch only when their cached manifest is exactly at that version. Otherwise
|
|
3130
|
-
* they must refresh instead of manufacturing a mixed-version manifest.
|
|
3131
|
-
*
|
|
3132
|
-
* Deliberately does NOT carry plane scopes: scopes only ever move
|
|
3133
|
-
* base → layer, and each mutation kind knows exactly which planes it owns, so
|
|
3134
|
-
* the client flips them locally when absorbing this delta (the monotone-flip
|
|
3135
|
-
* rule); the manifest is the authoritative source and the 404 → refresh rail
|
|
3136
|
-
* the backstop.
|
|
3137
|
-
*/
|
|
3138
|
-
interface CacheDelta {
|
|
3139
|
-
previousDocVersion: number;
|
|
3140
|
-
docVersion: number;
|
|
3141
|
-
/**
|
|
3142
|
-
* New doc-level bulk annotations pin, present when this mutation bumped
|
|
3143
|
-
* it (annotation CRUD, page insert/delete, redaction, flatten, form
|
|
3144
|
-
* structure — see `DocumentManifest.annotationsVersion`). Absorbing it
|
|
3145
|
-
* keeps the client's cached manifest addressing the fresh bulk leaf
|
|
3146
|
-
* without a 404-refresh round trip.
|
|
3147
|
-
*/
|
|
3148
|
-
annotationsVersion?: number;
|
|
3149
|
-
pages: Array<{
|
|
3150
|
-
pageObjectNumber: PageObjectNumber;
|
|
3151
|
-
cache: CachePins;
|
|
3152
|
-
}>;
|
|
3153
|
-
}
|
|
3154
|
-
/**
|
|
3155
|
-
* Base envelope for every layer-mutating operation.
|
|
3156
|
-
*
|
|
3157
|
-
* `affectedPages` is the state delta. `cacheDelta` is the cloud/CDN URL pin
|
|
3158
|
-
* delta and is `null` for local engines.
|
|
3159
|
-
*/
|
|
3160
|
-
interface MutationMeta {
|
|
3161
|
-
affectedPages: PageState[];
|
|
3162
|
-
cacheDelta: CacheDelta | null;
|
|
3163
|
-
}
|
|
3164
|
-
//#endregion
|
|
3165
3690
|
//#region src/mutation/RefetchReason.d.ts
|
|
3166
3691
|
/**
|
|
3167
3692
|
* Why a mutation invalidates the previously returned snapshot. Surfaced on
|
|
@@ -3360,66 +3885,6 @@ interface AnnotationMoveResult {
|
|
|
3360
3885
|
meta: AnnotationListMutationMeta;
|
|
3361
3886
|
}
|
|
3362
3887
|
//#endregion
|
|
3363
|
-
//#region src/identity/FormFieldRef.d.ts
|
|
3364
|
-
/**
|
|
3365
|
-
* How callers address a logical form field.
|
|
3366
|
-
*
|
|
3367
|
-
* - `objectNumber` — the indirect object number of the field dictionary.
|
|
3368
|
-
* ISO 32000 guarantees every real AcroForm field dictionary is an
|
|
3369
|
-
* indirect object, and the layer runtime never renumbers (frozen base +
|
|
3370
|
-
* incremental deltas), so this is the durable identity for the lifetime
|
|
3371
|
-
* of a document. Preferred for all engine calls.
|
|
3372
|
-
* - `fqn` — the fully qualified field name ("billing.name"). The portable,
|
|
3373
|
-
* semantic identity used by interchange formats (FDF/XFDF) and analytics;
|
|
3374
|
-
* survives document rewrites but is only as unique as the producer made
|
|
3375
|
-
* it. The engine resolves it against the reconciled field tree.
|
|
3376
|
-
*/
|
|
3377
|
-
type FormFieldRef = {
|
|
3378
|
-
kind: 'objectNumber';
|
|
3379
|
-
fieldObjectNumber: number;
|
|
3380
|
-
} | {
|
|
3381
|
-
kind: 'fqn';
|
|
3382
|
-
name: string;
|
|
3383
|
-
};
|
|
3384
|
-
/**
|
|
3385
|
-
* URL-safe encoding of a `FormFieldRef`, used by the cloud HTTP surface as
|
|
3386
|
-
* the `:fieldKey` route parameter. Decoded by the server back into a
|
|
3387
|
-
* `FormFieldRef` via `decodeFieldRefKey`. Mirrors the annotation plane's
|
|
3388
|
-
* `encodeStableIdKey` (`obj:42` / `nm:…`) so the two member-key syntaxes
|
|
3389
|
-
* read the same on the wire:
|
|
3390
|
-
*
|
|
3391
|
-
* `{ kind: 'objectNumber', fieldObjectNumber: 12 }` -> `'obj:12'`
|
|
3392
|
-
* `{ kind: 'fqn', name: 'billing.name' }` -> `'fqn:billing.name'`
|
|
3393
|
-
*
|
|
3394
|
-
* The caller is responsible for `encodeURIComponent`-ing the result before
|
|
3395
|
-
* splicing it into a URL path; the `wirePaths.layerFormField*` builders
|
|
3396
|
-
* already do that. FQNs are opaque strings and may contain anything; the
|
|
3397
|
-
* `fqn:` prefix keeps them unambiguous from numeric ids.
|
|
3398
|
-
*/
|
|
3399
|
-
declare function encodeFieldRefKey(ref: FormFieldRef): string;
|
|
3400
|
-
/**
|
|
3401
|
-
* Inverse of `encodeFieldRefKey`. Returns `null` for malformed input so the
|
|
3402
|
-
* server can answer 400 InvalidArg with a useful message instead of
|
|
3403
|
-
* throwing. The input is the already-`decodeURIComponent`-ed segment from
|
|
3404
|
-
* the route path. Empty FQNs are rejected: `fqn:` with no suffix is not a
|
|
3405
|
-
* valid identity.
|
|
3406
|
-
*/
|
|
3407
|
-
declare function decodeFieldRefKey(key: string): FormFieldRef | null;
|
|
3408
|
-
/** A widget annotation of a field, as the forms subsystem sees it. */
|
|
3409
|
-
interface FormWidgetRef {
|
|
3410
|
-
/**
|
|
3411
|
-
* Indirect object number of the widget annotation — the join key to the
|
|
3412
|
-
* annotation subsystem's `objectNumber` refs. `0` when the widget is
|
|
3413
|
-
* stored as a direct object (spec-violating; cannot be addressed).
|
|
3414
|
-
*/
|
|
3415
|
-
annotObjectNumber: number;
|
|
3416
|
-
/**
|
|
3417
|
-
* Object number of the page whose /Annots array references the widget.
|
|
3418
|
-
* `0` when the widget is not reachable from any page ("unplaced").
|
|
3419
|
-
*/
|
|
3420
|
-
pageObjectNumber: PageObjectNumber;
|
|
3421
|
-
}
|
|
3422
|
-
//#endregion
|
|
3423
3888
|
//#region src/forms/value-entry.d.ts
|
|
3424
3889
|
/** Lossless shape of a field's effective PDF `/V` or `/DV` object. */
|
|
3425
3890
|
type FormValueEntry = {
|
|
@@ -3769,11 +4234,20 @@ interface ListBoxFieldDraft extends FormFieldDraftBase {
|
|
|
3769
4234
|
options?: FormFieldOptionInput[];
|
|
3770
4235
|
widget?: WidgetPlacement;
|
|
3771
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
|
+
}
|
|
3772
4246
|
/**
|
|
3773
4247
|
* What `doc.forms.createField` takes: per-family, mirroring the DTO union.
|
|
3774
|
-
* Push buttons
|
|
4248
|
+
* Push buttons are not authorable.
|
|
3775
4249
|
*/
|
|
3776
|
-
type FormFieldDraft = TextFieldDraft | CheckboxFieldDraft | RadioFieldDraft | ComboBoxFieldDraft | ListBoxFieldDraft;
|
|
4250
|
+
type FormFieldDraft = TextFieldDraft | CheckboxFieldDraft | RadioFieldDraft | ComboBoxFieldDraft | ListBoxFieldDraft | SignatureFieldDraft;
|
|
3777
4251
|
//#endregion
|
|
3778
4252
|
//#region src/forms/patch.d.ts
|
|
3779
4253
|
/**
|
|
@@ -3952,6 +4426,488 @@ interface FormEffectsResult {
|
|
|
3952
4426
|
meta: MutationMeta | null;
|
|
3953
4427
|
}
|
|
3954
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
|
|
3955
4911
|
//#region src/mutation/FormMutationResults.d.ts
|
|
3956
4912
|
/**
|
|
3957
4913
|
* Result of a value write (`setValue` / `reset`).
|
|
@@ -4123,11 +5079,13 @@ declare function textSegmentsForRange(layout: PageTextLayout, charStart: number,
|
|
|
4123
5079
|
* | `matchCase` | fold case | `i` flag |
|
|
4124
5080
|
* | `wholeWord` | boundary check | pattern is `\b(?:…)\b`-wrapped |
|
|
4125
5081
|
* | `matchDiacritics` | mark fold | REJECTED (`InvalidArg`) |
|
|
5082
|
+
* | `ignoreWhitespace`| whitespace drop | REJECTED (`InvalidArg`) |
|
|
4126
5083
|
*
|
|
4127
5084
|
* Literal queries match over FOLDED text; regex queries run the portable
|
|
4128
|
-
* dialect against the RAW page text — which is why `matchDiacritics`
|
|
4129
|
-
* cannot apply to them (diacritic folding
|
|
4130
|
-
*
|
|
5085
|
+
* dialect against the RAW page text — which is why `matchDiacritics` and
|
|
5086
|
+
* `ignoreWhitespace` cannot apply to them (diacritic folding and whitespace
|
|
5087
|
+
* dropping are properties of the folded text plane; a pattern spells its
|
|
5088
|
+
* own `\s*`). Validate with `validateSearchQuery` for early UI feedback;
|
|
4131
5089
|
* engines re-validate and reject with `EngineErrorCode.InvalidArg`.
|
|
4132
5090
|
*/
|
|
4133
5091
|
interface SearchQuery {
|
|
@@ -4150,6 +5108,17 @@ interface SearchQuery {
|
|
|
4150
5108
|
* LITERAL ONLY: combined with `regex` the query is rejected.
|
|
4151
5109
|
*/
|
|
4152
5110
|
matchDiacritics?: boolean;
|
|
5111
|
+
/**
|
|
5112
|
+
* Drop whitespace on both sides instead of collapsing it, so "invoice"
|
|
5113
|
+
* finds the letter-spaced "i n v o i c e" that OCR and tracked-out headings
|
|
5114
|
+
* produce, and "total amount" finds "totalamount". Default false — the default
|
|
5115
|
+
* fold collapses whitespace runs to one space, so a needle still has to
|
|
5116
|
+
* carry a space wherever the page does. A hit spans the original text
|
|
5117
|
+
* including the dropped whitespace; with `wholeWord` the boundaries are
|
|
5118
|
+
* checked on the ORIGINAL text (the folded plane has no word gaps left).
|
|
5119
|
+
* LITERAL ONLY: combined with `regex` the query is rejected.
|
|
5120
|
+
*/
|
|
5121
|
+
ignoreWhitespace?: boolean;
|
|
4153
5122
|
}
|
|
4154
5123
|
/**
|
|
4155
5124
|
* How much of a match leaves the engine — the permission story:
|
|
@@ -4265,7 +5234,8 @@ interface SearchSlice {
|
|
|
4265
5234
|
*
|
|
4266
5235
|
* Fold version 1:
|
|
4267
5236
|
* - whitespace runs collapse to a single space (any `\s`, including the
|
|
4268
|
-
* spaces some compatibility decompositions emit)
|
|
5237
|
+
* spaces some compatibility decompositions emit) — or are dropped
|
|
5238
|
+
* entirely with `dropWhitespace` (ignoreWhitespace),
|
|
4269
5239
|
* - each code point is NFKD-decomposed (ligatures split: "fi" → "fi",
|
|
4270
5240
|
* "²" → "2"),
|
|
4271
5241
|
* - combining marks are stripped unless `keepMarks`,
|
|
@@ -4288,6 +5258,8 @@ interface FoldOptions {
|
|
|
4288
5258
|
keepCase?: boolean;
|
|
4289
5259
|
/** Preserve combining marks (matchDiacritics). */
|
|
4290
5260
|
keepMarks?: boolean;
|
|
5261
|
+
/** Drop whitespace instead of collapsing it to one space (ignoreWhitespace). */
|
|
5262
|
+
dropWhitespace?: boolean;
|
|
4291
5263
|
}
|
|
4292
5264
|
interface FoldedText {
|
|
4293
5265
|
folded: string;
|
|
@@ -4360,7 +5332,7 @@ declare function validateSearchRegex(pattern: string): SearchRegexValidation;
|
|
|
4360
5332
|
* reject with `InvalidArg`. Literal queries are always valid (an empty
|
|
4361
5333
|
* literal simply finds nothing).
|
|
4362
5334
|
*/
|
|
4363
|
-
type SearchQueryIssue = SearchRegexIssue | 'diacritics-with-regex';
|
|
5335
|
+
type SearchQueryIssue = SearchRegexIssue | 'diacritics-with-regex' | 'ignore-whitespace-with-regex';
|
|
4364
5336
|
type SearchQueryValidation = {
|
|
4365
5337
|
ok: true;
|
|
4366
5338
|
} | {
|
|
@@ -4790,6 +5762,190 @@ interface MetadataUpdateResult {
|
|
|
4790
5762
|
cache: MetadataCache | null;
|
|
4791
5763
|
}
|
|
4792
5764
|
//#endregion
|
|
5765
|
+
//#region src/dto/Measure.d.ts
|
|
5766
|
+
type MeasureFraction = 'decimal' | 'fraction' | 'round' | 'truncate';
|
|
5767
|
+
/** ISO number format. Missing required fields in imported PDFs stay unavailable. */
|
|
5768
|
+
interface PdfNumberFormat {
|
|
5769
|
+
/** Literal unit label, including any intentional whitespace. */
|
|
5770
|
+
unit: string;
|
|
5771
|
+
/** Conversion from the preceding format's units (or the input units for the
|
|
5772
|
+
* first format). Absent when imported /C is missing or malformed; never defaults to 1. */
|
|
5773
|
+
conversion?: number;
|
|
5774
|
+
/** Last component's numeric representation; default decimal. */
|
|
5775
|
+
fraction?: MeasureFraction;
|
|
5776
|
+
/** Decimal denominator (1, 10, 100, …) or fractional denominator (e.g. 16). */
|
|
5777
|
+
precision?: number;
|
|
5778
|
+
/** Retain decimal zeros or the unreduced fraction denominator. */
|
|
5779
|
+
fixed?: boolean;
|
|
5780
|
+
/** Grouping separator; default comma, empty string disables grouping. */
|
|
5781
|
+
thousands?: string;
|
|
5782
|
+
/** Decimal separator; omitted or empty means dot. */
|
|
5783
|
+
decimal?: string;
|
|
5784
|
+
/** Spacing immediately before the unit label. */
|
|
5785
|
+
prefixSpacing?: string;
|
|
5786
|
+
/** Spacing immediately after the unit label. */
|
|
5787
|
+
suffixSpacing?: string;
|
|
5788
|
+
labelPosition?: 'suffix' | 'prefix';
|
|
5789
|
+
}
|
|
5790
|
+
/** Rectilinear /Measure. Empty arrays faithfully represent missing formats on import. */
|
|
5791
|
+
interface PdfMeasure {
|
|
5792
|
+
subtype: 'RL';
|
|
5793
|
+
ratio?: string;
|
|
5794
|
+
/** X-axis conversion from PDF user-space units. */
|
|
5795
|
+
x: PdfNumberFormat[];
|
|
5796
|
+
/** When present, requires cyx to express Y distances in X-axis units. */
|
|
5797
|
+
y?: PdfNumberFormat[];
|
|
5798
|
+
/** Distance display formats, starting from the first X format's unit. */
|
|
5799
|
+
distance: PdfNumberFormat[];
|
|
5800
|
+
/** Area display formats, starting from the square of the first X format's unit. */
|
|
5801
|
+
area: PdfNumberFormat[];
|
|
5802
|
+
angle?: PdfNumberFormat[];
|
|
5803
|
+
slope?: PdfNumberFormat[];
|
|
5804
|
+
origin?: PdfPoint;
|
|
5805
|
+
/** Conversion from the first Y format's units into the first X format's units. */
|
|
5806
|
+
cyx?: number;
|
|
5807
|
+
}
|
|
5808
|
+
/** Read-only presence marker. Foreign dictionaries are preserved in the PDF. */
|
|
5809
|
+
interface PdfForeignMeasure {
|
|
5810
|
+
subtype: 'GEO' | 'unknown';
|
|
5811
|
+
}
|
|
5812
|
+
type PdfMeasurement = PdfMeasure | PdfForeignMeasure;
|
|
5813
|
+
interface PdfViewport {
|
|
5814
|
+
bbox: PdfRect;
|
|
5815
|
+
name?: string;
|
|
5816
|
+
measure?: PdfMeasurement;
|
|
5817
|
+
}
|
|
5818
|
+
interface PageMeasurementViewport extends PdfViewport {
|
|
5819
|
+
owned: boolean;
|
|
5820
|
+
}
|
|
5821
|
+
type LineIntent = 'LineArrow' | 'LineDimension';
|
|
5822
|
+
type PolygonIntent = 'PolygonCloud' | 'PolygonDimension';
|
|
5823
|
+
type PolylineIntent = 'PolyLineDimension';
|
|
5824
|
+
interface LineDimensionCaption {
|
|
5825
|
+
enabled: boolean;
|
|
5826
|
+
position?: 'inline' | 'top';
|
|
5827
|
+
/** Displacement in directed line axes, in PDF units; not a page point. */
|
|
5828
|
+
offset?: {
|
|
5829
|
+
along: number;
|
|
5830
|
+
perpendicular: number;
|
|
5831
|
+
};
|
|
5832
|
+
}
|
|
5833
|
+
interface ShapeDimensionCaption {
|
|
5834
|
+
enabled: boolean;
|
|
5835
|
+
/** Absolute PDF user-space center. Absent = automatic; (0,0) is valid. */
|
|
5836
|
+
center?: PdfPoint;
|
|
5837
|
+
}
|
|
5838
|
+
interface LineLeader {
|
|
5839
|
+
length: number;
|
|
5840
|
+
extension?: number;
|
|
5841
|
+
offset?: number;
|
|
5842
|
+
}
|
|
5843
|
+
interface LineCaptionPatch {
|
|
5844
|
+
enabled?: boolean;
|
|
5845
|
+
position?: 'inline' | 'top' | null;
|
|
5846
|
+
offset?: LineDimensionCaption['offset'] | null;
|
|
5847
|
+
}
|
|
5848
|
+
interface ShapeCaptionPatch {
|
|
5849
|
+
enabled?: boolean;
|
|
5850
|
+
center?: PdfPoint | null;
|
|
5851
|
+
}
|
|
5852
|
+
//#endregion
|
|
5853
|
+
//#region src/measure/units.d.ts
|
|
5854
|
+
declare const METRES: {
|
|
5855
|
+
readonly pt: number;
|
|
5856
|
+
readonly mm: 0.001;
|
|
5857
|
+
readonly cm: 0.01;
|
|
5858
|
+
readonly m: 1;
|
|
5859
|
+
readonly km: 1000;
|
|
5860
|
+
readonly in: 0.0254;
|
|
5861
|
+
readonly ft: 0.3048;
|
|
5862
|
+
readonly yd: 0.9144;
|
|
5863
|
+
readonly mi: 1609.344;
|
|
5864
|
+
};
|
|
5865
|
+
type LengthUnit = keyof typeof METRES;
|
|
5866
|
+
type AreaUnit = `${LengthUnit}2` | 'ha' | 'acre';
|
|
5867
|
+
declare const squareOf: (unit: LengthUnit) => AreaUnit;
|
|
5868
|
+
declare function squareMetres(unit: AreaUnit): number;
|
|
5869
|
+
declare const areaUnitLabel: (unit: AreaUnit) => string;
|
|
5870
|
+
//#endregion
|
|
5871
|
+
//#region src/measure/calibrate.d.ts
|
|
5872
|
+
interface MeasurementFormatOptions {
|
|
5873
|
+
/** Decimal precision denominator: 1, 10, 100, ... */
|
|
5874
|
+
precision: number;
|
|
5875
|
+
fixed?: boolean;
|
|
5876
|
+
areaUnit?: AreaUnit;
|
|
5877
|
+
imperialFeetInches?: boolean;
|
|
5878
|
+
/** Inch fraction denominator when imperialFeetInches is true. Default 16. */
|
|
5879
|
+
fractionalPrecision?: number;
|
|
5880
|
+
}
|
|
5881
|
+
declare function measureFromKnownLength(userSpaceLength: number, real: {
|
|
5882
|
+
value: number;
|
|
5883
|
+
unit: LengthUnit;
|
|
5884
|
+
}, format?: MeasurementFormatOptions): PdfMeasure;
|
|
5885
|
+
declare function measureFromRatio(paper: number, real: number, unit: LengthUnit, userUnit?: number, format?: MeasurementFormatOptions): PdfMeasure;
|
|
5886
|
+
//#endregion
|
|
5887
|
+
//#region src/measure/compute.d.ts
|
|
5888
|
+
interface MeasuredScale {
|
|
5889
|
+
sx: number;
|
|
5890
|
+
sy: number;
|
|
5891
|
+
}
|
|
5892
|
+
declare function scaleOf(measure: PdfMeasure): MeasuredScale | null;
|
|
5893
|
+
declare const measurementPoint: (p: PdfPoint) => PdfPoint;
|
|
5894
|
+
declare function pathLength(points: readonly PdfPoint[], closed: boolean, scale: MeasuredScale): number;
|
|
5895
|
+
declare function polygonArea(points: readonly PdfPoint[], scale: MeasuredScale): number;
|
|
5896
|
+
/** A measured area must have one simple, nonzero boundary. Repeated closing
|
|
5897
|
+
* vertices are allowed in imported PDFs; crossings and overlapping edges are not. */
|
|
5898
|
+
declare function validAreaBoundary(points: readonly PdfPoint[]): boolean;
|
|
5899
|
+
//#endregion
|
|
5900
|
+
//#region src/measure/derive.d.ts
|
|
5901
|
+
interface DimensionInput {
|
|
5902
|
+
subtype: string;
|
|
5903
|
+
intent?: string | null;
|
|
5904
|
+
measure?: PdfMeasurement | null;
|
|
5905
|
+
linePoints?: LinePoints;
|
|
5906
|
+
vertices?: PdfPoint[];
|
|
5907
|
+
contents?: string | null;
|
|
5908
|
+
}
|
|
5909
|
+
interface MeasurementReadout {
|
|
5910
|
+
kind: 'distance' | 'perimeter' | 'area';
|
|
5911
|
+
label: string;
|
|
5912
|
+
/** Value in the first display format's unit. */
|
|
5913
|
+
value: number;
|
|
5914
|
+
perimeter?: string;
|
|
5915
|
+
}
|
|
5916
|
+
interface MeasurementUnavailable {
|
|
5917
|
+
unavailable: 'not-dimension' | 'no-measure' | 'foreign-measure' | 'no-scale' | 'no-distance-format' | 'no-area-format' | 'invalid-format' | 'invalid-geometry';
|
|
5918
|
+
}
|
|
5919
|
+
declare function isDimension(dto: {
|
|
5920
|
+
subtype: string;
|
|
5921
|
+
intent?: string | null;
|
|
5922
|
+
}): boolean;
|
|
5923
|
+
declare const isReadout: (r: MeasurementReadout | MeasurementUnavailable) => r is MeasurementReadout;
|
|
5924
|
+
declare function measurementReadout(dto: DimensionInput): MeasurementReadout | MeasurementUnavailable;
|
|
5925
|
+
declare function deriveMeasurementLabel<T extends DimensionInput>(dto: T): T;
|
|
5926
|
+
//#endregion
|
|
5927
|
+
//#region src/measure/format.d.ts
|
|
5928
|
+
declare function validNumberFormat(nf: PdfNumberFormat): boolean;
|
|
5929
|
+
/** ISO 32000-2 §12.9.2 cascade. PDF float conversions are normalized before use.
|
|
5930
|
+
* Unit text and explicit spacing are preserved, including trailing unit spaces. */
|
|
5931
|
+
declare function formatMeasurement(value: number, formats: readonly PdfNumberFormat[]): string;
|
|
5932
|
+
//#endregion
|
|
5933
|
+
//#region src/measure/viewport.d.ts
|
|
5934
|
+
/** Last containing viewport wins. A foreign measure still wins; never guess a fallback. */
|
|
5935
|
+
declare function viewportForPoint<T extends PdfViewport>(viewports: readonly T[], point: PdfPoint): T | undefined;
|
|
5936
|
+
//#endregion
|
|
5937
|
+
//#region src/measure/validate.d.ts
|
|
5938
|
+
/** Shared preflight for HTTP, workers and calibration helpers. Does not write. */
|
|
5939
|
+
declare function assertWritableMeasure(value: PdfMeasure): void;
|
|
5940
|
+
declare function assertPdfFloat(n: number): void;
|
|
5941
|
+
//#endregion
|
|
5942
|
+
//#region src/mutation/PageScaleResult.d.ts
|
|
5943
|
+
/** A calibration changes document state, with no page pixels or annotation indices changed. */
|
|
5944
|
+
interface PageScaleResult {
|
|
5945
|
+
pageObjectNumber: PageObjectNumber;
|
|
5946
|
+
meta: MutationMeta;
|
|
5947
|
+
}
|
|
5948
|
+
//#endregion
|
|
4793
5949
|
//#region src/annotation/kinds/text-markup.shared.d.ts
|
|
4794
5950
|
/**
|
|
4795
5951
|
* Text-markup family-specific fields. The four text-markup subtypes
|
|
@@ -5031,18 +6187,27 @@ type VertexDTO<S extends string> = AnnotationBase & {
|
|
|
5031
6187
|
//#endregion
|
|
5032
6188
|
//#region src/annotation/kinds/polygon/draft.d.ts
|
|
5033
6189
|
interface PolygonDraft extends AnnotationDraftBase, VertexDraftFields {
|
|
6190
|
+
intent?: PolygonIntent | null;
|
|
6191
|
+
measure?: PdfMeasure | null;
|
|
6192
|
+
caption?: ShapeDimensionCaption | null;
|
|
5034
6193
|
subtype: 'polygon';
|
|
5035
6194
|
cloudyIntensity?: number | null;
|
|
5036
6195
|
}
|
|
5037
6196
|
//#endregion
|
|
5038
6197
|
//#region src/annotation/kinds/polygon/dto.d.ts
|
|
5039
6198
|
type PolygonAnnotationDTO = VertexDTO<'polygon'> & {
|
|
6199
|
+
intent?: PolygonIntent;
|
|
6200
|
+
measure?: PdfMeasurement;
|
|
6201
|
+
caption?: ShapeDimensionCaption;
|
|
5040
6202
|
/** `/BE` cloudy border intensity; `null` when the border carries no effect. */
|
|
5041
6203
|
cloudyIntensity: number | null;
|
|
5042
6204
|
};
|
|
5043
6205
|
//#endregion
|
|
5044
6206
|
//#region src/annotation/kinds/polygon/patch.d.ts
|
|
5045
6207
|
interface PolygonPatch extends AnnotationPatchBase, VertexPatchFields {
|
|
6208
|
+
intent?: PolygonIntent | null;
|
|
6209
|
+
measure?: PdfMeasure | null;
|
|
6210
|
+
caption?: ShapeCaptionPatch | null;
|
|
5046
6211
|
subtype: 'polygon';
|
|
5047
6212
|
/** Tri-state (as `interiorColor`): omitted preserves, a value sets, `null` removes `/BE`. */
|
|
5048
6213
|
cloudyIntensity?: number | null;
|
|
@@ -5055,17 +6220,26 @@ declare const PolygonPatchSchema: z.ZodType<PolygonPatch>;
|
|
|
5055
6220
|
//#endregion
|
|
5056
6221
|
//#region src/annotation/kinds/polyline/draft.d.ts
|
|
5057
6222
|
interface PolylineDraft extends AnnotationDraftBase, VertexDraftFields {
|
|
6223
|
+
intent?: PolylineIntent | null;
|
|
6224
|
+
measure?: PdfMeasure | null;
|
|
6225
|
+
caption?: ShapeDimensionCaption | null;
|
|
5058
6226
|
subtype: 'polyline';
|
|
5059
6227
|
lineEndings?: LineEndings;
|
|
5060
6228
|
}
|
|
5061
6229
|
//#endregion
|
|
5062
6230
|
//#region src/annotation/kinds/polyline/dto.d.ts
|
|
5063
6231
|
type PolylineAnnotationDTO = VertexDTO<'polyline'> & {
|
|
6232
|
+
intent?: PolylineIntent;
|
|
6233
|
+
measure?: PdfMeasurement;
|
|
6234
|
+
caption?: ShapeDimensionCaption;
|
|
5064
6235
|
lineEndings: LineEndings;
|
|
5065
6236
|
};
|
|
5066
6237
|
//#endregion
|
|
5067
6238
|
//#region src/annotation/kinds/polyline/patch.d.ts
|
|
5068
6239
|
interface PolylinePatch extends AnnotationPatchBase, VertexPatchFields {
|
|
6240
|
+
intent?: PolylineIntent | null;
|
|
6241
|
+
measure?: PdfMeasure | null;
|
|
6242
|
+
caption?: ShapeCaptionPatch | null;
|
|
5069
6243
|
subtype: 'polyline';
|
|
5070
6244
|
lineEndings?: LineEndings;
|
|
5071
6245
|
}
|
|
@@ -5077,6 +6251,10 @@ declare const PolylinePatchSchema: z.ZodType<PolylinePatch>;
|
|
|
5077
6251
|
//#endregion
|
|
5078
6252
|
//#region src/annotation/kinds/line/draft.d.ts
|
|
5079
6253
|
interface LineDraft extends AnnotationDraftBase, FilledStyleDraftFields {
|
|
6254
|
+
intent?: LineIntent | null;
|
|
6255
|
+
measure?: PdfMeasure | null;
|
|
6256
|
+
caption?: LineDimensionCaption | null;
|
|
6257
|
+
leader?: LineLeader | null;
|
|
5080
6258
|
subtype: 'line';
|
|
5081
6259
|
/** `/L` the two endpoints — required. */
|
|
5082
6260
|
linePoints: LinePoints;
|
|
@@ -5089,6 +6267,10 @@ interface LineDraft extends AnnotationDraftBase, FilledStyleDraftFields {
|
|
|
5089
6267
|
//#endregion
|
|
5090
6268
|
//#region src/annotation/kinds/line/dto.d.ts
|
|
5091
6269
|
type LineAnnotationDTO = AnnotationBase & {
|
|
6270
|
+
intent?: LineIntent;
|
|
6271
|
+
measure?: PdfMeasurement;
|
|
6272
|
+
caption?: LineDimensionCaption;
|
|
6273
|
+
leader?: LineLeader;
|
|
5092
6274
|
subtype: 'line';
|
|
5093
6275
|
/** `/L` the two endpoints of the line. */
|
|
5094
6276
|
linePoints: LinePoints;
|
|
@@ -5101,6 +6283,10 @@ type LineAnnotationDTO = AnnotationBase & {
|
|
|
5101
6283
|
//#endregion
|
|
5102
6284
|
//#region src/annotation/kinds/line/patch.d.ts
|
|
5103
6285
|
interface LinePatch extends AnnotationPatchBase, FilledStylePatchFields {
|
|
6286
|
+
intent?: LineIntent | null;
|
|
6287
|
+
measure?: PdfMeasure | null;
|
|
6288
|
+
caption?: LineCaptionPatch | null;
|
|
6289
|
+
leader?: LineLeader | null;
|
|
5104
6290
|
subtype: 'line';
|
|
5105
6291
|
linePoints?: LinePoints;
|
|
5106
6292
|
rect?: PdfRect;
|
|
@@ -5231,6 +6417,12 @@ interface FreeTextDraft extends AnnotationDraftBase {
|
|
|
5231
6417
|
fontFamily: FreeTextFont;
|
|
5232
6418
|
fontSize: number;
|
|
5233
6419
|
textAlign: TextAlignment;
|
|
6420
|
+
/**
|
|
6421
|
+
* Rich text (`/RC`). When given, its body is the annotation's body style
|
|
6422
|
+
* (the `/DA` font and size follow it) and its paragraphs are the text;
|
|
6423
|
+
* `contents`, if also given, must equal its plain projection.
|
|
6424
|
+
*/
|
|
6425
|
+
richText?: RichTextDocumentInput;
|
|
5234
6426
|
/** `/Rect` bounding box — required (computed by the caller/plugin). */
|
|
5235
6427
|
rect: PdfRect;
|
|
5236
6428
|
/** `/DA` colour (border + default text). */
|
|
@@ -5265,12 +6457,24 @@ type FreeTextAnnotationDTO = AnnotationBase & {
|
|
|
5265
6457
|
subtype: 'free-text';
|
|
5266
6458
|
/** `/IT` intent. */
|
|
5267
6459
|
intent: FreeTextIntent;
|
|
5268
|
-
/**
|
|
5269
|
-
|
|
6460
|
+
/**
|
|
6461
|
+
* The body face: a standard font name, the `key` of a registered font
|
|
6462
|
+
* whose family/weight/italic match the body, or — for a face the
|
|
6463
|
+
* document embeds but this session did not register — its family name.
|
|
6464
|
+
*/
|
|
6465
|
+
fontFamily: FreeTextFont;
|
|
5270
6466
|
/** `/DA` font size, in points. */
|
|
5271
6467
|
fontSize: number;
|
|
5272
6468
|
/** `/Q` horizontal text alignment. */
|
|
5273
6469
|
textAlign: TextAlignment;
|
|
6470
|
+
/**
|
|
6471
|
+
* The text, as a rich document — always. The annotation's `/RC` when it has
|
|
6472
|
+
* one, else the same shape synthesised from `/Contents`, `/DA` and `/Q`
|
|
6473
|
+
* (one paragraph per line, no run deltas). `contents` is its plain
|
|
6474
|
+
* projection. Every write goes back through the rich path, so a box has
|
|
6475
|
+
* no "plain mode" to fall out of.
|
|
6476
|
+
*/
|
|
6477
|
+
richText: RichTextDocument;
|
|
5274
6478
|
/** `/DA` colour: the border colour and the default text colour. */
|
|
5275
6479
|
color: Color;
|
|
5276
6480
|
/** Text colour override (`TextColor`). Absent when the text follows `color`. */
|
|
@@ -5305,6 +6509,16 @@ interface FreeTextPatch extends AnnotationPatchBase {
|
|
|
5305
6509
|
fontFamily?: FreeTextFont;
|
|
5306
6510
|
fontSize?: number;
|
|
5307
6511
|
textAlign?: TextAlignment;
|
|
6512
|
+
/**
|
|
6513
|
+
* Rich replacement: `/RC`, `/DS`, `/DA`, `/Contents` and the appearance
|
|
6514
|
+
* are all regenerated. A patch that also carries `contents` must agree
|
|
6515
|
+
* with the rich text's plain projection (`InvalidArg` otherwise). A
|
|
6516
|
+
* `contents`-only patch on an annotation with `/RC` rewrites the rich
|
|
6517
|
+
* text as body-style paragraphs: run formatting is lost by design.
|
|
6518
|
+
* `fontFamily` / `fontSize` / `fontColor` on such an annotation change the
|
|
6519
|
+
* body style; runs are deltas, so every run that did not override follows.
|
|
6520
|
+
*/
|
|
6521
|
+
richText?: RichTextDocumentInput;
|
|
5308
6522
|
rect?: PdfRect;
|
|
5309
6523
|
color?: Color;
|
|
5310
6524
|
fontColor?: Color;
|
|
@@ -5883,5 +7097,5 @@ interface AnnotationListPageSnapshot {
|
|
|
5883
7097
|
annotations: AnnotationDTO[];
|
|
5884
7098
|
}
|
|
5885
7099
|
//#endregion
|
|
5886
|
-
export { CaretDraftSchema as $, FilledStyleFields as $a, Color as $c, FormFieldRef as $i, PageNameResult as $n, AnnotationAppearanceRaster as $o, FormImportResult as $r, PageLayout as $s, CircleDraftSchema as $t, FileAttachmentWireDraftSchema as A, buildCommentThreads as Aa, PDF_BITS as Ac, FormKind as Ai, PdfActionWarning as Al, HighlightDraft as An, AnnotationBase as Ao, toOriginalRange as Ar, glyphLooseQuad as As, LineDraft as At, StampAnnotationDTO as B, PatchOfKind as Ba, ParsedScope as Bc, FormFieldDTO as Bi, DocumentMetadata as Bl, PageDeleteResult as Bn, EngineErrorCode as Bo, TextLayoutFrame as Br, PdfOriginSize as Bs, PolygonPatch as Bt, RedactDraft as C, ManifestPage as Ca, expandedCapabilities as Cc, ComboBoxFieldDraft as Ci, ActionReadBudget as Cl, UnderlineAnnotationDTO as Cn, ANNOTATION_SUBTYPES as Co, wordAt as Cr, PageGeometryGlyph as Cs, LinkAnnotationDTO as Ct, FileAttachmentDTOSchema as D, CommentThread as Da, PermissionDenied as Dc, RadioFieldDraft as Di, PdfActionTargetRef as Dl, HighlightPatchSchema as Dn, PdfAnnotationSubtypeCode as Do, SEARCH_FOLD_VERSION as Dr, RotatedGeometryRun as Ds, LinePatchSchema as Dt, WidgetDraft as E, BuildCommentThreadsOptions as Ea, MissingIdentity as Ec, ListBoxFieldDraft as Ei, PdfActionNode as El, HighlightDraftSchema as En, PDF_SUBTYPE_TO_CODE as Eo, FoldedText as Er, RotatedGeometryGlyph as Es, LineDraftSchema as Et, StampDTOSchema as F, classifyRelation as Fa, CollabFilter as Fc, WidgetStyleFields as Fi, SubmitFormPayload as Fl, RedactionApplyScope as Fn, EngineError as Fo, SearchSlice as Fr, boundaryTextOffset as Fs, PolylineAnnotationDTO as Ft, TextDTOSchema as G, FileAttachmentDraft as Ga, AnnotationRef as Gc, ListBoxFieldDTO as Gi, AnnotationFlattenInput as Gn, PdfSaveMode as Go, expandTextRangeToWord as Gr, pdfQuadFromCorners as Gs, VertexPatchFields as Gt, StampFit as H, AttachmentDeleteResult as Ha, ParsedWildcard as Hc, FormFieldFlags as Hi, PageRotateResult as Hn, FontKey as Ho, TextLayoutRun as Hr, normalizePdfRect as Hs, PolygonDraft as Ht, StampWireDraftSchema as I, refKey as Ia, DocCapability as Ic, WidgetStylePatchFields as Ii, decodeSubmitFormFlags as Il, RedactionApplyStatus as In, EngineErrorOptions as Io, SearchSliceBudget as Ir, charBoundaryAtTextOffset as Is, PolylineDraft as It, TextPatch as J, WireAttachmentFile as Ja, AnnotationBorderStyle as Jc, SignatureFieldDTO as Ji, PageFlattenInput as Jn, AnnotationAppearanceImageOptions as Jo, textSegmentsForRange as Jr, pdfRectSize as Js, SquarePatchSchema as Jt, TextDraftSchema as K, FileAttachmentIcon as Ka, RevisionToken as Kc, PushButtonFieldDTO as Ki, AnnotationFlattenItemResult as Kn, CachePins as Ko, textGlyphAt as Kr, pdfRectFromOriginSize as Ks, SquareDTOSchema as Kt, StampWirePatchSchema as L, AnnotationKindModule as La, IdentityClaims as Lc, CheckboxFieldDTO as Li, PdfDestination as Ll, PAGE_INSERT_BLANK_MAX_COUNT as Ln, SerializedEngineError as Lo, SearchSnippet as Lr, charMapViolation as Ls, PolygonDTOSchema as Lt, FileAttachmentPatch as M, AnnotationRelationKind as Ma, AnnotationActor as Mc, WidgetAppearance as Mi, PdfFieldActions as Ml, MetadataUpdateResult as Mn, AnnotationStableId as Mo, SearchMode as Mr, PageTextSnapshot as Ms, PolylineDraftSchema as Mt, FileAttachmentAnnotationDTO as N, AnnotationThread as Na, CollabAction as Nc, WidgetAppearanceSchema as Ni, PdfPageActions as Nl, RedactionApplyItemResult as Nn, decodeStableIdKey as No, SearchQuery as Nr, CharBoundaryBias as Ns, PolylinePatchSchema as Nt, FileAttachmentIconSchema as O, CommentThreadReview as Oa, parseScope as Oc, TextFieldDraft as Oi, PdfActionTree as Ol, HighlightPatch as On, subtypeFromCode as Oo, SearchMatchRange as Or, UprightGeometryRun as Os, LinePatch as Ot, ResourceRefSchema as P, buildThreads as Pa, CollabEntity as Pc, WidgetStyleDraftFields as Pi, SubmitFormFlags as Pl, RedactionApplyResult as Pn, encodeStableIdKey as Po, SearchRequest as Pr, CharMapAnchor as Ps, PolylinePatch as Pt, CaretDTOSchema as Q, FilledStyleDraftFields as Qa, CaretIntent as Qc, FormValueEntry as Qi, PageFlattenUsage as Qn, AnnotationAppearanceMode as Qo, FormFieldUpdateResult as Qr, PageBoxes as Qs, CircleDTOSchema as Qt, StampPatch as R, DTOOfKind as Ra, ParsedCapability as Rc, ComboBoxFieldDTO as Ri, PageObjectNumber as Rl, PageInsertBlankSpec as Rn, deserializeError as Ro, PageTextLayout as Rr, charRangeForTextOffsets as Rs, PolygonDraftSchema as Rt, RedactAnnotationDTO as S, DocumentManifest as Sa, expandRawScope as Sc, CheckboxFieldDraft as Si, PdfSize as Sl, UnderlinePatch as Sn, resolveBinarySource as So, matchLiteral as Sr, createPageImageHandle as Ss, LinkPatch as St, WidgetAnnotationDTO as T, LayerScopes as Ta, InvalidScope as Tc, FormFieldOptionInput as Ti, NamedJavaScriptAction as Tl, HighlightDTOSchema as Tn, PDF_CODE_TO_SUBTYPE as To, FoldOptions as Tr, PageGeometrySnapshot as Ts, LineDTOSchema as Tt, StampWireDraft as U, AttachmentsCache as Ua, PdfBits as Uc, FormFieldOption as Ui, PageRotateInput as Un, FontSpec as Uo, buildPageTextLayout as Ur, pdfQuadBounds as Us, VertexAnnotationFields as Ut, StampDraft as V, AttachmentCreateResult as Va, ParsedVirtual as Vc, FormFieldFamily as Vi, DocumentMetadataTrapped as Vl, PageDeleteInput as Vn, FontHandle as Vo, TextLayoutGlyph as Vr, PdfQuadCorners as Vs, PolygonAnnotationDTO as Vt, NoteIconSchema as W, normalizeAttachmentFileSource as Wa, AnnotationDraftBase as Wc, FormFieldOrigin as Wi, AnnotationAppearanceExportInput as Wn, DEFAULT_PDF_SAVE_MODE as Wo, expandTextRangeToLine as Wr, pdfQuadCorners as Ws, VertexDraftFields as Wt, NoteIcon as X, ColorStyleFields as Xa, AnnotationReplyType as Xc, ToggleFieldWidget as Xi, PageFlattenResult as Xn, AnnotationAppearanceManifest as Xo, FormFieldCreateResult as Xr, pdfRectWidth as Xs, SquareAnnotationDTO as Xt, TextAnnotationDTO as Y, ColorStyleDraftFields as Ya, AnnotationFlags as Yc, TextFieldDTO as Yi, PageFlattenItemResult as Yn, AnnotationAppearanceImagesResult as Yo, FormDataExport as Yr, pdfRectToOriginSize as Ys, SquarePatch as Yt, TextDraft as Z, ColorStylePatchFields as Za, BlendMode as Zc, UnknownFieldDTO as Zi, PageFlattenStatus as Zn, AnnotationAppearanceManifestEntry as Zo, FormFieldDeleteResult as Zr, PageListSnapshot as Zs, SquareDraft as Zt, UnsupportedPatchSchema as _, RefetchReason as _a, CollabTarget as _c, ComboBoxFieldPatch as _i, LinePoints as _l, SquigglyAnnotationDTO as _n, BinaryPayload as _o, SearchRegexValidation as _r, PageRenderFormat as _s, LinkDraftSchema as _t, AnnotationDTOSchema as a, AnnotationMoveResult as aa, OpenInputById as ac, FormEffectStatus as ai, NO_ANNOTATION_FLAGS as al, ShapeDraftFields as an, AttachmentFileBase as ao, PageMoveInput as ar, WeakAnnotationState as as, FreeTextDraftSchema as at, UnsupportedAnnotationDTO as b, PdfLinkTarget as ba, checkCollab as bc, RadioFieldPatch as bi, PdfRect as bl, UnderlineDraftSchema as bn, WireResource as bo, validateSearchRegex as br, PageRenderTarget as bs, PdfLinkTargetWritableSchema as bt, AnnotationKind as c, AppearanceImpact as ca, OpenInputLayerSource as cc, FormSubmissionEntry as ci, Rect as cl, StrikeoutDraftSchema as cn, EmbeddedFileItem as co, searchRectsForRange as cr, PageImageHandle as cs, FreeTextAnnotationDTO as ct, AnnotationSubtypeOfKind as d, semanticEqual as da, OpenOptions as dc, FormSubmissionReceiptSchema as di, StandardFont as dl, StrikeoutAnnotationDTO as dn, NormalizedPatch as do, buildSnippet as dr, PageImageResult as ds, InkDraftSchema as dt, FormWidgetRef as ea, PageRotation as ec, FormRepairResult as ei, FreeTextFont as el, CirclePatchSchema as en, FilledStylePatchFields as eo, PageNameInput as er, AnnotationAppearanceRenderOptions as es, CaretPatchSchema as et, KIND_BY_SUBTYPE as f, AnnotationMutationKind as fa, TokenSource as fc, FormSubmissionRequest as fi, StrikeoutIntent as fl, StrikeoutDraft as fn, normalizeAnnotationDraft as fo, matchPageText as fr, PageImageSource as fs, InkPatchSchema as ft, UnsupportedDraftSchema as g, AnnotationListMutationMeta as ga, pdfPermissions as gc, CheckboxFieldPatch as gi, InkStroke as gl, SquigglyPatch as gn, sniffBinaryMetadata as go, SearchRegexIssue as gr, PageRenderEncodedFormat as gs, LinkDTOSchema as gt, UnsupportedDTOSchema as h, shiftsExistingAnnotationIndices as ha, materializePdfPermissions as hc, FormFieldValue as hi, InkList as hl, SquigglyPatchSchema as hn, BinaryMimeType as ho, SearchQueryValidation as hr, PageRenderBackground as hs, InkDraft as ht, AnnotationDTO as i, AnnotationDeleteResult as ia, OpenInput as ic, FormEffectResult as ii, LineEndings as il, ShapeAnnotationFields as in, AttachmentContent as io, PageStructureCache as ir, UNKNOWN_WEAK_ANNOTATION_STATE as is, FreeTextDTOSchema as it, WireAttachmentFileSchema as j, isStateAnnotation as ja, decodePdfBits as jc, FormSnapshot as ji, PdfAnnotationActions as jl, MetadataCache as jn, AnnotationIdentityQuality as jo, SearchMatch as jr, isRotatedGeometryRun as js, PolylineDTOSchema as jt, FileAttachmentPatchSchema as k, ReviewStatus as ka, validateScopeArray as kc, WidgetPlacement as ki, PdfActionType as kl, HighlightAnnotationDTO as kn, AnnotationPatchBase as ko, foldText as kr, glyphLooseBounds as ks, LineAnnotationDTO as kt, AnnotationPatch as l, AppearanceOutcome as la, OpenInputShare as lc, FormSubmissionEntrySchema as li, Rotation as ll, StrikeoutPatchSchema as ln, EmbeddedFileRef as lo, searchSegmentsForRange as lr, PageImageObjectUrl as ls, FreeTextDraft as lt, WireAnnotationPatch as m, invalidatesWeakIndexRefs as ma, collab as mc, FormDataFormat as mi, CalloutLine as ml, SquigglyDraftSchema as mn, BinaryMetadata as mo, SearchQueryIssue as mr, PageRaster as ms, InkAnnotationDTO as mt, AnnotationListSnapshotAllPages as n, encodeFieldRefKey as na, NamedPageTarget as nc, FormWidgetLinkResult as ni, InkIntent as nl, CircleAnnotationDTO as nn, GeometryStyleFields as no, PageMoveCache as nr, AnnotationAppearancesResult as ns, CaretAnnotationDTO as nt, AnnotationDraft as o, AnnotationUpdateResult as oa, OpenInputBytes as oc, FormEffectsResult as oi, PdfRectDifferences as ol, ShapePatchFields as on, AttachmentFileInfo as oo, canonicalSearchQuery as or, knownWeakAnnotationState as os, FreeTextPatchSchema as ot, WireAnnotationDraft as p, changesAnnotationList as pa, caps as pc, FormSubmissionRequestSchema as pi, TextAlignment as pl, SquigglyDTOSchema as pn, normalizeAnnotationPatch as po, SEARCH_REGEX_MAX_LENGTH as pr, PageNetworkRenderFormat as ps, InkPatch as pt, TextPatchSchema as q, FileAttachmentWireDraft as qa, revisionTokensEqual as qc, RadioFieldDTO as qi, AnnotationFlattenResult as qn, AnnotationAppearanceImage as qo, textGlyphQuad as qr, pdfRectHeight as qs, SquareDraftSchema as qt, ANNOTATION_KINDS as r, AnnotationCreateResult as ra, MetadataPatch as rc, FormEffect as ri, LineEnding as rl, CircleDraft as rn, GeometryStylePatchFields as ro, PageMoveResult as rr, PageState as rs, CaretDraft as rt, AnnotationDraftSchema as s, AppearanceAction as sa, OpenInputLayerBytes as sc, FormFieldDisplay as si, Point as sl, StrikeoutDTOSchema as sn, AttachmentFileSource as so, searchContentEpoch as sr, PageImageBlobSource as ss, FreeTextPatch as st, AnnotationListPageSnapshot as t, decodeFieldRefKey as ta, NamedPageEntry as tc, FormSetValueResult as ti, FreeTextIntent as tl, CirclePatch as tn, GeometryStyleDraftFields as to, PageRemoveNameInput as tr, AnnotationAppearancesQuery as ts, CaretPatch as tt, AnnotationPatchSchema as u, appearanceImpactOf as ua, OpenInputToken as uc, FormSubmissionReceipt as ui, Size as ul, StrikeoutPatch as un, NormalizedDraft as uo, SEARCH_SNIPPET_CONTEXT as ur, PageImageOptions as us, InkDTOSchema as ut, UnsupportedPatch as v, CacheDelta as va, checkAnyCapability as vc, FormFieldPatch as vi, PdfPoint as vl, SquigglyDraft as vn, BinarySource as vo, matchRegex as vr, PageRenderOptions as vs, LinkPatchSchema as vt, WidgetPatch as w, LayerScopePlane as wa, filterMatches as wc, FormFieldDraft as wi, DocumentActionsSnapshot as wl, UnderlineDraft as wn, AnnotationSubtype as wo, wordBefore as wr, PageGeometryRun as ws, LinkDraft as wt, RedactPatch as x, PdfLinkTargetWritable as xa, checkSetGroup as xc, TextFieldPatch as xi, PdfRotation as xl, UnderlinePatchSchema as xn, WireResourceMap as xo, foldOptionsFor as xr, PageRenderViewport as xs, PdfDestinationSchema as xt, UnsupportedDraft as y, MutationMeta as ya, checkCapability as yc, ListBoxFieldPatch as yi, PdfQuad as yl, UnderlineDTOSchema as yn, ResourceRef as yo, validateSearchQuery as yr, PageRenderQuery as ys, PdfLinkTargetSchema as yt, StampWirePatch as z, DraftOfKind as za, ParsedCollab as zc, FormFieldBase as zi, isValidPageObjectNumber as zl, PageInsertResult as zn, serializeError as zo, PdfTextSegment as zr, sliceTextByChars as zs, PolygonPatchSchema as zt };
|
|
5887
|
-
//# sourceMappingURL=AnnotationListSnapshot-
|
|
7100
|
+
export { CaretDraftSchema as $, FormFieldPatch as $a, PageImageSource as $c, PdfAnnotationActions as $d, minLevel as $i, TokenSource as $l, AreaUnit as $n, LayerScopePlane as $o, SEARCH_SNIPPET_CONTEXT as $r, AnnotationSubtype as $s, CircleDraftSchema as $t, decodePdfBits as $u, FileAttachmentWireDraftSchema as A, PdfValue as Aa, FontEmbeddingPermission as Ac, Rect as Ad, TextLayoutGlyph as Ai, pdfQuadBounds as Al, HighlightDraft as An, TextFieldDTO as Ao, PageDeleteInput as Ar, GeometryStyleDraftFields as As, LineDraft as At, SignaturePrepared as Au, StampAnnotationDTO as B, FormEffectStatus as Ba, AnnotationAppearanceImagesResult as Bc, PdfPoint as Bd, FormFieldDeleteResult as Bi, PageLayout as Bl, deriveMeasurementLabel as Bn, AppearanceOutcome as Bo, PageFlattenStatus as Br, NormalizedPatch as Bs, PolygonPatch as Bt, WeakAnnotationState as Bu, RedactDraft as C, ChangeAnalysis as Ca, RichTextParagraph as Cc, FreeTextIntent as Cd, SearchRequest as Ci, charBoundaryAtTextOffset as Cl, UnderlineAnnotationDTO as Cn, FormFieldFlags as Co, RedactionApplyResult as Cr, WireAttachmentFile as Cs, LinkAnnotationDTO as Ct, SignatureAppearanceInput as Cu, FileAttachmentDTOSchema as D, ObjectChangeType as Da, RichTextScript as Dc, NO_ANNOTATION_FLAGS as Dd, PageTextLayout as Di, PdfOriginSize as Dl, HighlightPatchSchema as Dn, PushButtonFieldDTO as Do, PageInsertBlankSpec as Dr, FilledStyleDraftFields as Ds, LinePatchSchema as Dt, SignatureDTO as Du, WidgetDraft as E, ObjectChangeKind as Ea, RichTextRunStyle as Ec, LineEndings as Ed, SearchSnippet as Ei, sliceTextByChars as El, HighlightDraftSchema as En, ListBoxFieldDTO as Eo, PAGE_INSERT_BLANK_MAX_COUNT as Er, ColorStylePatchFields as Es, LineDraftSchema as Et, SignatureCoverage as Eu, StampDTOSchema as F, RevisionStructure as Fa, SessionKind as Fc, TextAlignment as Fd, textGlyphAt as Fi, pdfRectSize as Fl, formatMeasurement as Fn, AnnotationDeleteResult as Fo, AnnotationFlattenItemResult as Fr, AttachmentFileInfo as Fs, PolylineAnnotationDTO as Ft, SignedDocumentPolicy as Fu, TextDTOSchema as G, FormSubmissionReceipt as Ga, AnnotationAppearanceRenderOptions as Gc, ActionReadBudget as Gd, FormWidgetLinkResult as Gi, OpenInput as Gl, measurementPoint as Gn, invalidatesWeakIndexRefs as Go, PageMoveCache as Gr, sniffBinaryMetadata as Gs, VertexPatchFields as Gt, decodeFieldRefKey as Gu, StampFit as H, FormFieldDisplay as Ha, AnnotationAppearanceManifestEntry as Hc, PdfRect as Hd, FormImportResult as Hi, NamedPageEntry as Hl, isReadout as Hn, semanticEqual as Ho, PageNameResult as Hr, normalizeAnnotationPatch as Hs, PolygonDraft as Ht, CachePins as Hu, StampWireDraftSchema as I, StepInput as Ia, DEFAULT_PDF_SAVE_MODE as Ic, CalloutLine as Id, textGlyphQuad as Ii, pdfRectToOriginSize as Il, validNumberFormat as In, AnnotationMoveResult as Io, AnnotationFlattenResult as Ir, AttachmentFileSource as Is, PolylineDraft as It, CacheDelta as Iu, TextPatch as J, FormSubmissionRequestSchema as Ja, PageImageBlobSource as Jc, PdfActionNode as Jd, fieldLockFor as Ji, OpenInputLayerBytes as Jl, scaleOf as Jn, RefetchReason as Jo, PageMoveInput as Jr, ResourceRef as Js, SquarePatchSchema as Jt, MissingIdentity as Ju, TextDraftSchema as K, FormSubmissionReceiptSchema as Ka, AnnotationAppearancesQuery as Kc, DocumentActionsSnapshot as Kd, SIGNATURE_POLICY_VERSION as Ki, OpenInputById as Kl, pathLength as Kn, shiftsExistingAnnotationIndices as Ko, PageMoveResult as Kr, BinaryPayload as Ks, SquareDTOSchema as Kt, encodeFieldRefKey as Ku, StampWirePatchSchema as L, StepVerdict as La, PdfSaveMode as Lc, InkList as Ld, textSegmentsForRange as Li, pdfRectWidth as Ll, DimensionInput as Ln, AnnotationUpdateResult as Lo, PageFlattenInput as Lr, EmbeddedFileItem as Ls, PolygonDTOSchema as Lt, MutationMeta as Lu, FileAttachmentPatch as M, RevisionAnalysis as Ma, FontIdentityInfo as Mc, Size as Md, buildPageTextLayout as Mi, pdfQuadFromCorners as Ml, assertPdfFloat as Mn, UnknownFieldDTO as Mo, PageRotateInput as Mr, GeometryStylePatchFields as Ms, PolylineDraftSchema as Mt, SignatureSigner as Mu, FileAttachmentAnnotationDTO as N, RevisionField as Na, FontKey as Nc, StandardFont as Nd, expandTextRangeToLine as Ni, pdfRectFromOriginSize as Nl, assertWritableMeasure as Nn, FormValueEntry as No, AnnotationAppearanceExportInput as Nr, AttachmentContent as Ns, PolylinePatchSchema as Nt, SignatureSnapshot as Nu, FileAttachmentIconSchema as O, ObjectReadStatus as Oa, richTextParagraphsFromPlainText as Oc, PdfRectDifferences as Od, PdfTextSegment as Oi, PdfQuadCorners as Ol, HighlightPatch as On, RadioFieldDTO as Oo, PageInsertResult as Or, FilledStyleFields as Os, LinePatch as Ot, SignatureKind as Ou, ResourceRefSchema as P, RevisionHealth as Pa, FontSpec as Pc, StrikeoutIntent as Pd, expandTextRangeToWord as Pi, pdfRectHeight as Pl, viewportForPoint as Pn, AnnotationCreateResult as Po, AnnotationFlattenInput as Pr, AttachmentFileBase as Ps, PolylinePatch as Pt, SignatureSubFilter as Pu, CaretDTOSchema as Q, ComboBoxFieldPatch as Qa, PageImageResult as Qc, PdfActionWarning as Qd, lockNameCovers as Qi, OpenOptions as Ql, measureFromRatio as Qn, ManifestPage as Qo, searchSegmentsForRange as Qr, ANNOTATION_SUBTYPES as Qs, CircleDTOSchema as Qt, PDF_BITS as Qu, StampPatch as R, FormEffect as Ra, AnnotationAppearanceImage as Rc, InkStroke as Rd, FormDataExport as Ri, PageListSnapshot as Rl, MeasurementReadout as Rn, AppearanceAction as Ro, PageFlattenItemResult as Rr, EmbeddedFileRef as Rs, PolygonDraftSchema as Rt, PageState as Ru, RedactAnnotationDTO as S, Assessment as Sa, RichTextMargins as Sc, FreeTextFont as Sd, SearchQuery as Si, boundaryTextOffset as Sl, UnderlinePatch as Sn, FormFieldFamily as So, RedactionApplyItemResult as Sr, FileAttachmentWireDraft as Ss, LinkPatch as St, SignatureAbortResult as Su, WidgetAnnotationDTO as T, ObjectChange as Ta, RichTextRun as Tc, LineEnding as Td, SearchSliceBudget as Ti, charRangeForTextOffsets as Tl, HighlightDTOSchema as Tn, FormFieldOrigin as To, RedactionApplyStatus as Tr, ColorStyleFields as Ts, LineDTOSchema as Tt, SignatureCompleteResult as Tu, StampWireDraft as U, FormSubmissionEntry as Ua, AnnotationAppearanceMode as Uc, PdfRotation as Ud, FormRepairResult as Ui, NamedPageTarget as Ul, measurementReadout as Un, AnnotationMutationKind as Uo, PageNameInput as Ur, BinaryMetadata as Us, VertexAnnotationFields as Ut, FormFieldRef as Uu, StampDraft as V, FormEffectsResult as Va, AnnotationAppearanceManifest as Vc, PdfQuad as Vd, FormFieldUpdateResult as Vi, PageRotation as Vl, isDimension as Vn, appearanceImpactOf as Vo, PageFlattenUsage as Vr, normalizeAnnotationDraft as Vs, PolygonAnnotationDTO as Vt, knownWeakAnnotationState as Vu, NoteIconSchema as W, FormSubmissionEntrySchema as Wa, AnnotationAppearanceRaster as Wc, PdfSize as Wd, FormSetValueResult as Wi, MetadataPatch as Wl, MeasuredScale as Wn, changesAnnotationList as Wo, PageRemoveNameInput as Wr, BinaryMimeType as Ws, VertexDraftFields as Wt, FormWidgetRef as Wu, NoteIcon as X, FormFieldValue as Xa, PageImageObjectUrl as Xc, PdfActionTree as Xd, levelFromPermission as Xi, OpenInputShare as Xl, MeasurementFormatOptions as Xn, PdfLinkTargetWritable as Xo, searchContentEpoch as Xr, WireResourceMap as Xs, SquareAnnotationDTO as Xt, parseScope as Xu, TextAnnotationDTO as Y, FormDataFormat as Ya, PageImageHandle as Yc, PdfActionTargetRef as Yd, levelAllows as Yi, OpenInputLayerSource as Yl, validAreaBoundary as Yn, PdfLinkTarget as Yo, canonicalSearchQuery as Yr, WireResource as Ys, SquarePatch as Yt, PermissionDenied as Yu, TextDraft as Z, CheckboxFieldPatch as Za, PageImageOptions as Zc, PdfActionType as Zd, lockCovers as Zi, OpenInputToken as Zl, measureFromKnownLength as Zn, DocumentManifest as Zo, searchRectsForRange as Zr, resolveBinarySource as Zs, SquareDraft as Zt, validateScopeArray as Zu, UnsupportedPatchSchema as _, parsePdfValue as _a, RichTextBody as _c, AnnotationFlags as _d, SearchMatchRange as _i, glyphLooseQuad as _l, SquigglyAnnotationDTO as _n, WidgetStylePatchFields as _o, PolylineIntent as _r, AttachmentDeleteResult as _s, LinkDraftSchema as _t, DocumentVersionRef as _u, AnnotationDTOSchema as a, worstVerdict as aa, AnnotationBase as ac, IdentityClaims as ad, PdfDestination as af, SearchRegexIssue as ai, PageRenderOptions as al, ShapeDraftFields as an, FormFieldDraft as ao, LineCaptionPatch as ar, buildCommentThreads as as, FreeTextDraftSchema as at, checkAnyCapability as au, UnsupportedAnnotationDTO as b, stableStringify as ba, RichTextDocument as bc, CaretIntent as bd, SearchMatch as bi, CharBoundaryBias as bl, UnderlineDraftSchema as bn, FormFieldBase as bo, MetadataCache as br, FileAttachmentDraft as bs, PdfLinkTargetWritableSchema as bt, ModificationLevel as bu, AnnotationKind as c, EdgeResolverBudget as ca, decodeStableIdKey as cc, ParsedScope as cd, DocumentMetadata as cf, validateSearchQuery as ci, PageRenderViewport as cl, StrikeoutDraftSchema as cn, RadioFieldDraft as co, LineLeader as cr, AnnotationThread as cs, FreeTextAnnotationDTO as ct, checkSetGroup as cu, AnnotationSubtypeOfKind as d, restrictionsFor as da, EngineErrorOptions as dc, PdfBits as dd, matchLiteral as di, PageGeometryRun as dl, StrikeoutAnnotationDTO as dn, FormKind as do, PdfForeignMeasure as dr, refKey as ds, InkDraftSchema as dt, filterMatches as du, protectedCapabilities as ea, PDF_CODE_TO_SUBTYPE as ec, AnnotationActor as ed, PdfFieldActions as ef, buildSnippet as ei, PageNetworkRenderFormat as el, CirclePatchSchema as en, ListBoxFieldPatch as eo, LengthUnit as er, LayerScopes as es, CaretPatchSchema as et, caps as eu, KIND_BY_SUBTYPE as f, evaluateStep as fa, SerializedEngineError as fc, AnnotationDraftBase as fd, wordAt as fi, PageGeometrySnapshot as fl, StrikeoutDraft as fn, FormSnapshot as fo, PdfMeasure as fr, AnnotationKindModule as fs, InkPatchSchema as ft, BaseVersionInfo as fu, UnsupportedDraftSchema as g, dictEntries as ga, RichTextAlign as gc, AnnotationBorderStyle as gd, SEARCH_FOLD_VERSION as gi, glyphLooseBounds as gl, SquigglyPatch as gn, WidgetStyleFields as go, PolygonIntent as gr, AttachmentCreateResult as gs, LinkDTOSchema as gt, DocumentProtection as gu, UnsupportedDTOSchema as h, changedKeys as ha, EngineErrorCode as hc, revisionTokensEqual as hd, FoldedText as hi, UprightGeometryRun as hl, SquigglyPatchSchema as hn, WidgetStyleDraftFields as ho, PdfViewport as hr, PatchOfKind as hs, InkDraft as ht, DocumentFieldLock as hu, AnnotationDTO as i, primaryFinding as ia, AnnotationPatchBase as ic, DocCapability as id, decodeSubmitFormFlags as if, SearchQueryValidation as ii, PageRenderFormat as il, ShapeAnnotationFields as in, ComboBoxFieldDraft as io, squareOf as ir, ReviewStatus as is, FreeTextDTOSchema as it, CollabTarget as iu, WireAttachmentFileSchema as j, RestrictionAnchor as ja, FontHandle as jc, Rotation as jd, TextLayoutRun as ji, pdfQuadCorners as jl, PageScaleResult as jn, ToggleFieldWidget as jo, PageRotateResult as jr, GeometryStyleFields as js, PolylineDTOSchema as jt, SignatureSeedValue as ju, FileAttachmentPatchSchema as k, ObjectReferrer as ka, richTextPlainText as kc, Point as kd, TextLayoutFrame as ki, normalizePdfRect as kl, HighlightAnnotationDTO as kn, SignatureFieldDTO as ko, PageDeleteResult as kr, FilledStylePatchFields as ks, LineAnnotationDTO as kt, SignaturePrepareInput as ku, AnnotationPatch as l, ResolvedUsage as la, encodeStableIdKey as lc, ParsedVirtual as ld, DocumentMetadataTrapped as lf, validateSearchRegex as li, createPageImageHandle as ll, StrikeoutPatchSchema as ln, TextFieldDraft as lo, MeasureFraction as lr, buildThreads as ls, FreeTextDraft as lt, expandRawScope as lu, WireAnnotationPatch as m, sameEffectiveValue as ma, serializeError as mc, RevisionToken as md, FoldOptions as mi, RotatedGeometryRun as ml, SquigglyDraftSchema as mn, WidgetAppearanceSchema as mo, PdfNumberFormat as mr, DraftOfKind as ms, InkAnnotationDTO as mt, DocMdpPermission as mu, AnnotationListSnapshotAllPages as n, combine as na, PdfAnnotationSubtypeCode as nc, CollabEntity as nd, SubmitFormFlags as nf, SEARCH_REGEX_MAX_LENGTH as ni, PageRenderBackground as nl, CircleAnnotationDTO as nn, TextFieldPatch as no, areaUnitLabel as nr, CommentThread as ns, CaretAnnotationDTO as nt, materializePdfPermissions as nu, AnnotationDraft as o, DEFAULT_EDGE_RESOLVER_BUDGET as oa, AnnotationIdentityQuality as oc, ParsedCapability as od, PageObjectNumber as of, SearchRegexValidation as oi, PageRenderQuery as ol, ShapePatchFields as on, FormFieldOptionInput as oo, LineDimensionCaption as or, isStateAnnotation as os, FreeTextPatchSchema as ot, checkCapability as ou, WireAnnotationDraft as p, restrictionsOf as pa, deserializeError as pc, AnnotationRef as pd, wordBefore as pi, RotatedGeometryGlyph as pl, SquigglyDTOSchema as pn, WidgetAppearance as po, PdfMeasurement as pr, DTOOfKind as ps, InkPatch as pt, DigestAlgorithm as pu, TextPatchSchema as q, FormSubmissionRequest as qa, AnnotationAppearancesResult as qc, NamedJavaScriptAction as qd, deriveProtection as qi, OpenInputBytes as ql, polygonArea as qn, AnnotationListMutationMeta as qo, PageStructureCache as qr, BinarySource as qs, SquareDraftSchema as qt, InvalidScope as qu, ANNOTATION_KINDS as r, conclude as ra, subtypeFromCode as rc, CollabFilter as rd, SubmitFormPayload as rf, SearchQueryIssue as ri, PageRenderEncodedFormat as rl, CircleDraft as rn, CheckboxFieldDraft as ro, squareMetres as rr, CommentThreadReview as rs, CaretDraft as rt, pdfPermissions as ru, AnnotationDraftSchema as s, EdgeResolver as sa, AnnotationStableId as sc, ParsedCollab as sd, isValidPageObjectNumber as sf, matchRegex as si, PageRenderTarget as sl, StrikeoutDTOSchema as sn, ListBoxFieldDraft as so, LineIntent as sr, AnnotationRelationKind as ss, FreeTextPatch as st, checkCollab as su, AnnotationListPageSnapshot as t, assessmentOf as ta, PDF_SUBTYPE_TO_CODE as tc, CollabAction as td, PdfPageActions as tf, matchPageText as ti, PageRaster as tl, CirclePatch as tn, RadioFieldPatch as to, METRES as tr, BuildCommentThreadsOptions as ts, CaretPatch as tt, collab as tu, AnnotationPatchSchema as u, USAGE_INCOMPLETE as ua, EngineError as uc, ParsedWildcard as ud, foldOptionsFor as ui, PageGeometryGlyph as ul, StrikeoutPatch as un, WidgetPlacement as uo, PageMeasurementViewport as ur, classifyRelation as us, InkDTOSchema as ut, expandedCapabilities as uu, UnsupportedPatch as v, pdfValueEquals as va, RichTextDecoration as vc, AnnotationReplyType as vd, foldText as vi, isRotatedGeometryRun as vl, SquigglyDraft as vn, CheckboxFieldDTO as vo, ShapeCaptionPatch as vr, AttachmentsCache as vs, LinkPatchSchema as vt, FieldLockAction as vu, WidgetPatch as w, ChangeFinding as wa, RichTextParagraphProps as wc, InkIntent as wd, SearchSlice as wi, charMapViolation as wl, UnderlineDraft as wn, FormFieldOption as wo, RedactionApplyScope as wr, ColorStyleDraftFields as ws, LinkDraft as wt, SignatureCompleteInput as wu, RedactPatch as x, AnalyzeInput as xa, RichTextDocumentInput as xc, Color as xd, SearchMode as xi, CharMapAnchor as xl, UnderlinePatchSchema as xn, FormFieldDTO as xo, MetadataUpdateResult as xr, FileAttachmentIcon as xs, PdfDestinationSchema as xt, PdfRevision as xu, UnsupportedDraft as y, refsOf as ya, RichTextDirection as yc, BlendMode as yd, toOriginalRange as yi, PageTextSnapshot as yl, UnderlineDTOSchema as yn, ComboBoxFieldDTO as yo, ShapeDimensionCaption as yr, normalizeAttachmentFileSource as ys, PdfLinkTargetSchema as yt, FieldLockSpec as yu, StampWirePatch as z, FormEffectResult as za, AnnotationAppearanceImageOptions as zc, LinePoints as zd, FormFieldCreateResult as zi, PageBoxes as zl, MeasurementUnavailable as zn, AppearanceImpact as zo, PageFlattenResult as zr, NormalizedDraft as zs, PolygonPatchSchema as zt, UNKNOWN_WEAK_ANNOTATION_STATE as zu };
|
|
7101
|
+
//# sourceMappingURL=AnnotationListSnapshot-D9R5n2Kf.d.ts.map
|