@embedpdf/engine-core 3.0.0-next.15 → 3.0.0-next.16
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/{AnnotationList-CkijRHet.d.cts → AnnotationList-DcyhF2kU.d.cts} +1836 -1308
- package/dist/{AnnotationList-CkijRHet.d.ts → AnnotationList-DcyhF2kU.d.ts} +1836 -1308
- package/dist/{Change-CjImsrN0.cjs → Change-Ct-dB8D5.cjs} +115 -2
- package/dist/Change-Ct-dB8D5.cjs.map +1 -0
- package/dist/{Change-CKoxfTNY.js → Change-tMR34hTU.js} +92 -3
- package/dist/Change-tMR34hTU.js.map +1 -0
- package/dist/{DocumentRenderService-BfFdFSwI.cjs → DocumentRenderService-9IjSQEIU.cjs} +2 -1
- package/dist/{DocumentRenderService-BfFdFSwI.cjs.map → DocumentRenderService-9IjSQEIU.cjs.map} +1 -1
- package/dist/{DocumentRenderService-DV3J9lMz.js → DocumentRenderService-DFrZ9wfW.js} +2 -1
- package/dist/{DocumentRenderService-DV3J9lMz.js.map → DocumentRenderService-DFrZ9wfW.js.map} +1 -1
- package/dist/{DocumentSecurityService-e6vp2de8.d.cts → DocumentSecurityService-D2zA4NKi.d.cts} +2 -2
- package/dist/{DocumentSecurityService-CU1M6Q7m.d.ts → DocumentSecurityService-YJV9df8P.d.ts} +2 -2
- package/dist/{LocalEngine-DFoBm4B3.d.cts → LocalEngine-DBt2-GWF.d.ts} +102 -18
- package/dist/{LocalEngine-DPriFujS.d.ts → LocalEngine-IA9zh3Jh.d.cts} +102 -18
- package/dist/{authority-DLMNR7ff.cjs → authority-BFp6XM04.cjs} +373 -52
- package/dist/authority-BFp6XM04.cjs.map +1 -0
- package/dist/{authority-B3BklsB4.js → authority-PuxpGFhJ.js} +320 -53
- package/dist/authority-PuxpGFhJ.js.map +1 -0
- package/dist/{builders-CNj0POeY.js → builders-DV62HA3I.js} +6 -2
- package/dist/builders-DV62HA3I.js.map +1 -0
- package/dist/{builders-Cgdp_YCn.cjs → builders-DgTAj_tP.cjs} +6 -2
- package/dist/builders-DgTAj_tP.cjs.map +1 -0
- package/dist/{calibrate-DJBXnhLE.cjs → calibrate-DJbi1wuK.cjs} +118 -25
- package/dist/calibrate-DJbi1wuK.cjs.map +1 -0
- package/dist/{calibrate-7T3fnP8-.js → calibrate-nQFgCuki.js} +83 -26
- package/dist/calibrate-nQFgCuki.js.map +1 -0
- package/dist/charmap-Cprti1ta.js.map +1 -1
- package/dist/charmap-aYlefQP9.cjs.map +1 -1
- package/dist/conformance.cjs +1744 -75
- package/dist/conformance.cjs.map +1 -1
- package/dist/conformance.d.cts +105 -10
- package/dist/conformance.d.ts +105 -10
- package/dist/conformance.js +1738 -76
- package/dist/conformance.js.map +1 -1
- package/dist/index.cjs +25 -6
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7 -7
- package/dist/public.cjs +6 -4
- package/dist/public.d.cts +5 -5
- package/dist/public.d.ts +5 -5
- package/dist/public.js +5 -5
- package/dist/{resolver-CzxmD9Ck.js → resolver-BBggAxQc.js} +6 -3
- package/dist/resolver-BBggAxQc.js.map +1 -0
- package/dist/{resolver-D2OCtE8F.cjs → resolver-BWSWSF6R.cjs} +6 -3
- package/dist/resolver-BWSWSF6R.cjs.map +1 -0
- package/dist/{runtime-Cl0v56mm.d.ts → runtime-BaDKjxiu.d.ts} +67 -140
- package/dist/{runtime-p1WDzDo4.d.cts → runtime-CWEuiwbk.d.cts} +67 -140
- package/dist/runtime.cjs +267 -7
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.d.cts +5 -5
- package/dist/runtime.d.ts +5 -5
- package/dist/runtime.js +246 -8
- package/dist/runtime.js.map +1 -1
- package/dist/{schema-DzlUNk38.js → schema-6S2VmlAj.js} +8 -2
- package/dist/schema-6S2VmlAj.js.map +1 -0
- package/dist/{schema-C-gU4vj7.cjs → schema-miH6tWQC.cjs} +13 -1
- package/dist/schema-miH6tWQC.cjs.map +1 -0
- package/dist/{schemas-D6xOGjqg.js → schemas-BE2QGOit.js} +256 -59
- package/dist/schemas-BE2QGOit.js.map +1 -0
- package/dist/{schemas-Berf1swF.cjs → schemas-DljJR9ut.cjs} +397 -80
- package/dist/schemas-DljJR9ut.cjs.map +1 -0
- package/dist/validation.cjs +1 -1
- package/dist/validation.d.cts +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.js +1 -1
- package/dist/{viewport-DlL5Bxbg.cjs → viewport-CHG9qQUb.cjs} +2 -2
- package/dist/{viewport-DlL5Bxbg.cjs.map → viewport-CHG9qQUb.cjs.map} +1 -1
- package/dist/{viewport-BJW13EGZ.js → viewport-DQR5LyX3.js} +2 -2
- package/dist/{viewport-BJW13EGZ.js.map → viewport-DQR5LyX3.js.map} +1 -1
- package/dist/wire.cjs +225 -57
- package/dist/wire.cjs.map +1 -1
- package/dist/wire.d.cts +3548 -1151
- package/dist/wire.d.ts +3548 -1151
- package/dist/wire.js +198 -53
- package/dist/wire.js.map +1 -1
- package/package.json +1 -1
- package/dist/Change-CKoxfTNY.js.map +0 -1
- package/dist/Change-CjImsrN0.cjs.map +0 -1
- package/dist/authority-B3BklsB4.js.map +0 -1
- package/dist/authority-DLMNR7ff.cjs.map +0 -1
- package/dist/builders-CNj0POeY.js.map +0 -1
- package/dist/builders-Cgdp_YCn.cjs.map +0 -1
- package/dist/calibrate-7T3fnP8-.js.map +0 -1
- package/dist/calibrate-DJBXnhLE.cjs.map +0 -1
- package/dist/resolver-CzxmD9Ck.js.map +0 -1
- package/dist/resolver-D2OCtE8F.cjs.map +0 -1
- package/dist/schema-C-gU4vj7.cjs.map +0 -1
- package/dist/schema-DzlUNk38.js.map +0 -1
- package/dist/schemas-Berf1swF.cjs.map +0 -1
- package/dist/schemas-D6xOGjqg.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver-D2OCtE8F.cjs","names":["EngineError","EngineErrorCode","materializePdfPermissions"],"sources":["../src/auth/scope/errors.ts","../src/identity/AnnotationRef.ts","../src/signature/protection.ts","../src/auth/scope/parser.ts","../src/auth/scope/resolver.ts"],"sourcesContent":["import { EngineError } from '../../errors/EngineError';\nimport { EngineErrorCode } from '../../errors/EngineErrorCode';\nimport type { AnnotationRef } from '../../identity/AnnotationRef';\n\n/**\n * Thrown by {@link parseScope} / {@link validateScopeArray} when a scope\n * string does not match any known grammar (capability, collab, virtual,\n * or wildcard). An `EngineError` with code `InvalidArg`.\n *\n * Carries the offending scope verbatim so route/JWT-layer error\n * handlers can echo it to the customer.\n */\nexport class InvalidScope extends EngineError {\n override readonly name: string = 'InvalidScope';\n\n constructor(\n public readonly scope: string,\n reason: string,\n ) {\n super(EngineErrorCode.InvalidArg, `invalid scope \"${scope}\": ${reason}`, {\n details: { scope, reason },\n });\n }\n}\n\n/**\n * Thrown by route guards and engine-local enforcement when a capability\n * or collab action is denied for the current request/handle. An\n * `EngineError` with code `Forbidden`, on both engines.\n *\n * `required` (also `details.required`) names what the caller needed (e.g.\n * \"doc.render\" or \"annotations:update\"). When any of several would have\n * done, `anyOf` (also `details.anyOf`) lists them and `required` is the\n * first. `context` is an optional label such as \"engine-local\" or a route.\n */\nexport class PermissionDenied extends EngineError {\n override readonly name: string = 'PermissionDenied';\n\n constructor(\n public readonly required: string,\n public readonly context?: string,\n public readonly anyOf?: readonly string[],\n /** The annotations it was refused for, when one write covers several (a thread's delete). */\n public readonly refs?: readonly AnnotationRef[],\n ) {\n super(\n EngineErrorCode.Forbidden,\n `permission denied${context ? ` (${context})` : ''}: ${anyOf ? `one of ${anyOf.join(', ')}` : required}${refs ? ` for ${refs.length} annotation${refs.length === 1 ? '' : 's'}` : ''}`,\n {\n details: {\n required,\n ...(context === undefined ? {} : { context }),\n ...(anyOf === undefined ? {} : { anyOf: [...anyOf] }),\n ...(refs === undefined ? {} : { refs: [...refs] }),\n },\n },\n );\n }\n}\n\n/**\n * Thrown at engine-local open time when the supplied scope includes\n * collab filters (`:self`, `:group=...`) but the identity claims needed\n * to resolve them are missing. Fails loudly at open so the configuration\n * mistake is visible immediately instead of producing silent denies at\n * every annotation mutation. An `EngineError` with code `InvalidArg`.\n */\nexport class MissingIdentity extends EngineError {\n override readonly name: string = 'MissingIdentity';\n\n constructor(public readonly scope: string) {\n super(\n EngineErrorCode.InvalidArg,\n `scope \"${scope}\" requires an identity (userId and/or groups)`,\n {\n details: { scope },\n },\n );\n }\n}\n","import type { PageRef } from './PageRef';\n\n/**\n * How callers address an annotation, and how the engine names one. Every\n * annotation has one name for life:\n *\n * - `objectNumber`: an annotation born as a PDF object, in the uploaded\n * file or written later. Object numbers are never reused.\n * - `baseIndex`: an annotation born inline in the uploaded file (a\n * dictionary in the page's `/Annots`, with no object number of its own).\n * Its name is its position in that page's `/Annots` in the uploaded\n * file, which never changes. It keeps this name after a write gives it\n * an object number.\n *\n * An annotation's `/NM` is data, not a name: files can carry the same one\n * twice. A ref that names no annotation on its page fails with `NotFound`.\n */\nexport type AnnotationRef =\n | {\n kind: 'objectNumber';\n page: PageRef;\n objectNumber: number;\n }\n | {\n kind: 'baseIndex';\n page: PageRef;\n baseIndex: number;\n };\n\n/**\n * URL-safe encoding of a ref without its page, used by the cloud HTTP\n * surface as the `:annotKey` route parameter beside `:pageKey`\n * (`encodePageKey`). Decoded by `decodeAnnotKey`.\n *\n * `{ kind: 'objectNumber', objectNumber: 42 }` -> `'obj:42'`\n * `{ kind: 'baseIndex', baseIndex: 2 }` -> `'base:2'`\n */\nexport function encodeAnnotKey(ref: AnnotationRef): string {\n if (ref.kind === 'objectNumber') {\n if (!Number.isInteger(ref.objectNumber) || ref.objectNumber <= 0) {\n throw new RangeError(\n `encodeAnnotKey: objectNumber must be a positive integer, got ${ref.objectNumber}`,\n );\n }\n return `obj:${ref.objectNumber}`;\n }\n if (!Number.isInteger(ref.baseIndex) || ref.baseIndex < 0) {\n throw new RangeError(\n `encodeAnnotKey: baseIndex must be a non-negative integer, got ${ref.baseIndex}`,\n );\n }\n return `base:${ref.baseIndex}`;\n}\n\n/**\n * Inverse of `encodeAnnotKey`, on the page the route names. Returns `null`\n * for malformed input so the server can answer 400 InvalidArg with a useful\n * message instead of throwing. The input is the already-`decodeURIComponent`-ed\n * segment from the route path.\n */\nexport function decodeAnnotKey(page: PageRef, key: string): AnnotationRef | null {\n const number = (prefix: string, min: number): number | null => {\n if (!key.startsWith(prefix)) return null;\n const rest = key.slice(prefix.length);\n const n = Number.parseInt(rest, 10);\n return Number.isInteger(n) && n >= min && String(n) === rest ? n : null;\n };\n const objectNumber = number('obj:', 1);\n if (objectNumber !== null) return { kind: 'objectNumber', page, objectNumber };\n const baseIndex = number('base:', 0);\n if (baseIndex !== null) return { kind: 'baseIndex', page, baseIndex };\n return null;\n}\n","import type { Coordinates } from '../pageSpace/coordinates';\nimport type { DocCapability } from '../auth/scope/types';\nimport type {\n DocMdpPermission,\n DocumentFieldLock,\n DocumentProtection,\n FieldLockSpec,\n ModificationLevel,\n SignatureDTO,\n} from './types';\n\n/**\n * Bumped whenever the derivation below (or a judgement rule) changes meaning.\n * Rides every protection and every analysis, and keys the cloud's immutable\n * analysis URLs. The current policy is calibrated on the 91 Acrobat\n * observations in `packages/engine/main/test/fixtures/signature-compat`:\n * each signature is judged on the net state of the document against the\n * revision it sealed; an object written again with the sealed value is not\n * a modification; an approval signature permits commenting; field\n * properties are judged per level; a lock binds only the signature that\n * declares it; a changed shared resource must be allowed by every use.\n */\nexport const SIGNATURE_POLICY_VERSION = 4;\n\n/**\n * How a validator reads an approval signature. ISO 32000 defines permitted\n * changes only for certification signatures; Acrobat reads an approval\n * signature as \"Form Fill-in, Signing and Commenting are allowed\" (its own\n * permission text under every such signature) and keeps it valid through a\n * Square annotation added, deleted or recoloured afterwards (fixtures\n * `signature-compat/v3/88`, `/90` and `/91`: \"Annotations Created/Deleted/\n * Modified\", signature valid). pyHanko judges stricter (fill only); Acrobat\n * is the validator recipients use, so the baseline is `annotate`.\n */\nexport const APPROVAL_BASELINE: ModificationLevel = 'annotate';\n\nconst LEVEL_RANK: Record<ModificationLevel, number> = { none: 0, lta: 1, fill: 2, annotate: 3 };\n\n/** DocMDP `/P` → the modification level it permits. */\nexport function levelFromPermission(permission: DocMdpPermission): ModificationLevel {\n return permission === 1 ? 'lta' : permission === 2 ? 'fill' : 'annotate';\n}\n\nexport function minLevel(a: ModificationLevel, b: ModificationLevel): ModificationLevel {\n return LEVEL_RANK[a] <= LEVEL_RANK[b] ? a : b;\n}\n\n/** Whether `level` (null = unsigned, everything allowed) permits changes of kind `needed`. */\nexport function levelAllows(level: ModificationLevel | null, needed: ModificationLevel): boolean {\n return level === null || LEVEL_RANK[level] >= LEVEL_RANK[needed];\n}\n\n/** Hierarchical name match: `group` covers `group.total`. */\nexport function lockNameCovers(lockedName: string, fieldName: string): boolean {\n return fieldName === lockedName || fieldName.startsWith(`${lockedName}.`);\n}\n\nexport function lockCovers(spec: FieldLockSpec, fieldName: string): boolean {\n switch (spec.action) {\n case 'all':\n return true;\n case 'include':\n return spec.fields.some((name) => lockNameCovers(name, fieldName));\n case 'exclude':\n return !spec.fields.some((name) => lockNameCovers(name, fieldName));\n }\n}\n\n/**\n * Derive what the signatures already in a document mean for what comes\n * after. Pure and versioned (`SIGNATURE_POLICY_VERSION`); the same function\n * runs in the browser worker, on the native server, and in the conformance\n * suite.\n *\n * enforced = min(certification P, every signed field's /Lock /P), or null\n * when nothing was declared. What the engine refuses.\n * judged = enforced, or the approval baseline when signatures exist\n * without a declaration, or null when nothing is signed. What\n * the revision analysis judges later changes against. A\n * declaration governs the judgement too: a P=3 certifier really\n * did allow annotations.\n * fieldLocks = every signed signature's FieldMDP and the /Lock of every\n * signed field. Unsigned fields' /Lock entries describe a\n * future signature and lock nothing yet.\n */\nexport function deriveProtection(signatures: ReadonlyArray<SignatureDTO>): DocumentProtection {\n let signed = false;\n let enforced: ModificationLevel | null = null;\n let certification: DocumentProtection['certification'] = null;\n const fieldLocks: DocumentFieldLock[] = [];\n\n for (const sig of signatures) {\n if (!sig.signed) continue;\n signed = true;\n if (sig.catalogCertification && sig.docMdp !== null && certification === null) {\n certification = { signatureIndex: sig.index, permission: sig.docMdp };\n enforced = minLevel(enforced ?? 'annotate', levelFromPermission(sig.docMdp));\n }\n if (sig.fieldMdp) {\n fieldLocks.push({ signatureIndex: sig.index, source: 'fieldmdp', spec: sig.fieldMdp });\n }\n if (sig.lock) {\n fieldLocks.push({ signatureIndex: sig.index, source: 'lock', spec: sig.lock });\n if (sig.lock.permission !== undefined) {\n enforced = minLevel(enforced ?? 'annotate', levelFromPermission(sig.lock.permission));\n }\n }\n }\n\n const judged = signed ? (enforced ?? APPROVAL_BASELINE) : null;\n return { enforced, judged, certification, fieldLocks, policyVersion: SIGNATURE_POLICY_VERSION };\n}\n\n/** The lock that freezes `fieldName`, if any. */\nexport function fieldLockFor(\n protection: DocumentProtection,\n fieldName: string,\n): DocumentFieldLock | null {\n for (const lock of protection.fieldLocks) {\n if (lockCovers(lock.spec, fieldName)) return lock;\n }\n return null;\n}\n\n/**\n * Every capability a protection can remove: the most it ever takes away.\n * A check of any other capability never needs the document's protection.\n */\nexport const PROTECTABLE_CAPABILITIES = [\n 'doc.download.flattened',\n 'doc.pages.modify',\n 'doc.pages.assemble',\n 'doc.redact',\n 'doc.attachments.modify',\n 'doc.forms.modify',\n 'doc.forms.script',\n 'doc.annotate.modify',\n 'doc.annotate.import',\n 'doc.forms.fill',\n 'doc.forms.import',\n] as const satisfies readonly DocCapability[];\n\nexport type ProtectableCapability = (typeof PROTECTABLE_CAPABILITIES)[number];\n\nconst PROTECTABLE: ReadonlySet<DocCapability> = new Set(PROTECTABLE_CAPABILITIES);\n\n/** Whether a protection can ever remove `capability`. */\nexport function isProtectableCapability(\n capability: DocCapability,\n): capability is ProtectableCapability {\n return PROTECTABLE.has(capability);\n}\n\n/**\n * The capabilities a protection removes from every caller, admin scope\n * included — document-derived authority, exactly like encryption bits.\n *\n * Only what was declared is refused: a refusal is a promise a signer made,\n * never a guess about a validator. A certification (or a lock with /P)\n * declares what may follow, and everything outside that — page edits,\n * redaction, field authoring, attachments, and below P=3 annotations, below\n * P=2 form fill — is refused. A plain approval signature declares nothing:\n * the same edits stay possible and are then judged, the verdict saying the\n * signature no longer holds, exactly as Acrobat does. The one exception is a\n * rewrite: it does not invalidate signatures, it erases them, so any signed\n * document refuses it. Per-field locks are enforced by the form mutator.\n */\nexport function protectedCapabilities(protection: DocumentProtection | null): Set<DocCapability> {\n const out = new Set<DocCapability>();\n if (!protection || protection.judged === null) return out;\n out.add('doc.download.flattened');\n if (protection.enforced === null) return out; // nothing declared: judged, not refused\n out.add('doc.pages.modify');\n out.add('doc.pages.assemble');\n out.add('doc.redact');\n out.add('doc.attachments.modify');\n out.add('doc.forms.modify');\n out.add('doc.forms.script');\n if (!levelAllows(protection.enforced, 'annotate')) {\n out.add('doc.annotate.modify');\n out.add('doc.annotate.import');\n }\n if (!levelAllows(protection.enforced, 'fill')) {\n out.add('doc.forms.fill');\n out.add('doc.forms.import');\n }\n return out;\n}\n\n/** Why `protection` refuses `capability`: the message of a `ProtectedDocument` refusal. */\nexport function describeProtection(\n capability: DocCapability,\n protection: DocumentProtection,\n): string {\n const cause = protection.certification\n ? `certification signature ${protection.certification.signatureIndex} (permission ${protection.certification.permission})`\n : `an existing signature (declared level '${protection.enforced ?? 'none declared'}')`;\n return `the document is signed: ${cause} forbids '${capability}'`;\n}\n","import { InvalidScope } from './errors';\nimport type { CollabAction, CollabFilter, DocCapability, FieldAction, ParsedScope } from './types';\n\n/**\n * Closed set of recognized capability strings. Membership is the\n * authoritative source of truth — adding a new capability requires\n * extending the `DocCapability` union and adding it here. The parser\n * rejects anything outside this set.\n *\n * Removed legacy names (e.g., `doc.read`, `doc.edit-pages`, `doc.save`)\n * are deliberately absent so any JWT carrying them fails at verify\n * time with a clear error.\n */\nconst KNOWN_CAPABILITIES: ReadonlySet<DocCapability> = new Set([\n 'doc.open',\n 'doc.render',\n 'doc.text.select',\n 'doc.text.copy',\n 'doc.text.search',\n 'doc.content.copy',\n 'doc.download',\n 'doc.download.flattened',\n 'doc.print',\n 'doc.print.high',\n 'doc.pages.modify',\n 'doc.pages.assemble',\n 'doc.forms.read',\n 'doc.forms.fill',\n 'doc.forms.modify',\n 'doc.forms.import',\n 'doc.forms.script',\n 'doc.forms.submit',\n 'doc.annotate.read',\n 'doc.annotate.modify',\n 'doc.annotate.import',\n 'doc.metadata.modify',\n 'doc.attachments.modify',\n 'doc.redact',\n 'doc.sign',\n 'doc.sign.certify',\n]);\n\n/**\n * Parse a single scope string into a structured `ParsedScope`.\n *\n * Recognised shapes:\n * - `\"*\"` → wildcard\n * - `\"pdf.permissions\"` → virtual (expands at resolve time)\n * - `\"a.b.c...\"` (dotted) → capability\n * - `\"entity:action:filter\"` (colons) → collab\n *\n * Throws {@link InvalidScope} for any string that fails to match one of\n * those shapes, or whose capability/entity/action/filter is not in the\n * closed enum.\n */\nexport function parseScope(raw: string): ParsedScope {\n if (raw === '*') return { kind: 'wildcard' };\n if (raw === 'pdf.permissions') return { kind: 'virtual', name: 'pdf.permissions' };\n if (raw.includes(':')) return parseCollab(raw);\n return parseCapability(raw);\n}\n\n/**\n * Validate every entry in a scope array by attempting to parse it.\n * Throws on the first invalid string. Discards the parse output —\n * callers re-parse at resolution time to keep the array as the\n * authoritative payload.\n */\nexport function validateScopeArray(raw: ReadonlyArray<string>): void {\n for (const s of raw) parseScope(s);\n}\n\nfunction parseCollab(raw: string): ParsedScope {\n // Split on the first two colons only. Filter values may contain\n // colons (UUIDs with `urn:uuid:...`, subject ids like `auth0|user:1`).\n const idx1 = raw.indexOf(':');\n const idx2 = raw.indexOf(':', idx1 + 1);\n if (idx1 === -1 || idx2 === -1) {\n throw new InvalidScope(raw, 'collab scope requires entity:action:filter');\n }\n const entity = raw.slice(0, idx1);\n const action = raw.slice(idx1 + 1, idx2);\n const filterStr = raw.slice(idx2 + 1);\n\n if (entity === 'fields') return parseFieldScope(raw, action, filterStr);\n if (entity !== 'annotations') {\n throw new InvalidScope(raw, `unknown collab entity: ${entity}`);\n }\n if (\n action !== 'create' &&\n action !== 'update' &&\n action !== 'delete' &&\n action !== 'set-group' &&\n action !== '*'\n ) {\n throw new InvalidScope(raw, `unknown collab action: ${action}`);\n }\n const filter = parseFilter(filterStr, raw);\n\n // `set-group` is a group-assignment authority, not a per-record collab\n // filter. The only meaningful filter values are `all` (assign to any\n // group) and `group=X` (assign to group X). `:self` and `:createdBy=Y`\n // can't be sensibly applied to \"what group is this annotation in\", so\n // we reject them at parse time rather than silently always-denying.\n if (action === 'set-group' && (filter.kind === 'self' || filter.kind === 'createdBy')) {\n throw new InvalidScope(\n raw,\n `set-group only supports :all or :group=<id> filters (got :${filter.kind})`,\n );\n }\n\n return {\n kind: 'collab',\n entity,\n action: action as CollabAction | '*',\n filter,\n };\n}\n\n/**\n * `fields:<fill|sign|set-group|*>:<all|group=NAME>`. A field's group is who\n * fills it, and a field records no creator, so `self` and `createdBy=` are\n * refused.\n */\nfunction parseFieldScope(raw: string, action: string, filterStr: string): ParsedScope {\n if (action !== 'fill' && action !== 'sign' && action !== 'set-group' && action !== '*') {\n throw new InvalidScope(raw, `unknown fields action: ${action}`);\n }\n const filter = parseFilter(filterStr, raw);\n if (filter.kind !== 'all' && filter.kind !== 'group') {\n throw new InvalidScope(\n raw,\n `fields only support :all or :group=<id> filters (got :${filter.kind})`,\n );\n }\n return { kind: 'collab', entity: 'fields', action: action as FieldAction | '*', filter };\n}\n\nfunction parseFilter(s: string, raw: string): CollabFilter {\n if (s === 'all') return { kind: 'all' };\n if (s === 'self') return { kind: 'self' };\n if (s.startsWith('createdBy=')) {\n const v = s.slice('createdBy='.length);\n if (!v) throw new InvalidScope(raw, 'createdBy= requires a value');\n return { kind: 'createdBy', userId: v };\n }\n if (s.startsWith('group=')) {\n const v = s.slice('group='.length);\n if (!v) throw new InvalidScope(raw, 'group= requires a value');\n return { kind: 'group', groupId: v };\n }\n throw new InvalidScope(raw, `unknown filter: ${s}`);\n}\n\n// Capability shape: lowercase dotted segments, e.g. \"doc.text.copy\".\n// Validates shape first, then membership in the closed set.\nconst CAPABILITY_SHAPE = /^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)+$/;\n\nfunction parseCapability(raw: string): ParsedScope {\n if (!CAPABILITY_SHAPE.test(raw)) {\n throw new InvalidScope(raw, 'invalid capability name shape');\n }\n if (!KNOWN_CAPABILITIES.has(raw as DocCapability)) {\n throw new InvalidScope(raw, `unknown capability: ${raw}`);\n }\n return { kind: 'capability', name: raw as DocCapability };\n}\n","import { materializePdfPermissions } from './builders';\nimport { parseScope } from './parser';\nimport type {\n CollabAction,\n CollabEntity,\n CollabFilter,\n DocCapability,\n Identity,\n ParsedScope,\n PdfBits,\n} from './types';\nimport { protectedCapabilities } from '../../signature/protection';\nimport type { DocumentProtection } from '../../signature/types';\n\n/**\n * Resolved collab subject — the per-record identity bits that collab\n * filters are tested against. Sourced from the target record's stored\n * `/EMBD_Metadata/UserID` and `/GroupID` at mutation time.\n */\nexport interface CollabTarget {\n userId?: string;\n groupId?: string;\n}\n\n/** The collab target of a record read with nullable owner fields (an annotation). */\nexport function collabTargetOf(owner: {\n userId?: string | null;\n groupId?: string | null;\n}): CollabTarget {\n return {\n ...(owner.userId ? { userId: owner.userId } : {}),\n ...(owner.groupId ? { groupId: owner.groupId } : {}),\n };\n}\n\n/**\n * True iff the given capability is granted by the scope array plus the\n * PDF bits visible via `pdf.permissions` expansion.\n *\n * Wildcard `*` short-circuits to true. Anything not explicitly granted\n * (or expanded from `pdf.permissions`) is denied.\n */\nexport function checkCapability(\n capability: DocCapability,\n rawScope: ReadonlyArray<string>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null = null,\n): boolean {\n // Document-derived authority comes first: what the signatures in the\n // file forbid, no scope grants — the wildcard included.\n if (protectedCapabilities(protection).has(capability)) return false;\n const parsed = rawScope.map(parseScope);\n if (parsed.some((s) => s.kind === 'wildcard')) return true;\n return expandedCapabilities(parsed, pdfBits, protection).has(capability);\n}\n\n/**\n * True iff the scope grants at least one of `capabilities`. Convenience\n * for routes like `/text` (`doc.text.copy` or `doc.text.search`) and\n * `/geometry` (`doc.text.select` or `doc.text.search`).\n */\nexport function checkAnyCapability(\n capabilities: ReadonlyArray<DocCapability>,\n rawScope: ReadonlyArray<string>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null = null,\n): boolean {\n return capabilities.some((c) => checkCapability(c, rawScope, pdfBits, protection));\n}\n\n/**\n * True iff the scope grants the collab action against the target record.\n *\n * Narrowing model. For each action independently:\n * 1. wildcard `*` → allow (global escape hatch)\n * 2. if any collab scope applies to this action → narrow: only those\n * collab filters decide. If none match the target, deny — even if\n * `doc.annotate.modify` is also present. This is what makes\n * `[modify, update:self]` correctly mean \"edit own only\" rather\n * than \"edit anyone via modify-bypass.\"\n * 3. otherwise, if `doc.annotate.modify` is present → allow. This is\n * the broad PDF-bit-derived default for create/update/delete when\n * no per-action collab filter has been written.\n * 4. otherwise → deny.\n *\n * For create: `target` should be built by the caller from JWT identity\n * (`{ userId: caller.userId, groupId: caller.groupId }`). `:self` and\n * `:all` then trivially pass; `:group=X` is the meaningful filter (only\n * matches when the caller's default group is X).\n *\n * For update / delete: `target` is the existing row's owner.\n */\nexport function checkCollab(\n action: CollabAction,\n target: CollabTarget,\n rawScope: ReadonlyArray<string>,\n identity: Identity,\n pdfBits: PdfBits,\n): boolean {\n const parsed = rawScope.map(parseScope);\n if (parsed.some((s) => s.kind === 'wildcard')) return true;\n\n const applicableCollab = parsed.filter(\n (s): s is Extract<ParsedScope, { entity: 'annotations' }> =>\n s.kind === 'collab' &&\n s.entity === 'annotations' &&\n (s.action === action || s.action === '*'),\n );\n\n if (applicableCollab.length > 0) {\n // Narrow: presence of any applicable collab scope shadows\n // `modify`-as-default for this action.\n return applicableCollab.some((s) => filterMatches(s.filter, target, identity));\n }\n\n // No collab scope for this action — fall back to the broad default.\n return expandedCapabilities(parsed, pdfBits).has('doc.annotate.modify');\n}\n\n/**\n * Compute the full set of granted capabilities after expanding\n * `pdf.permissions` and applying implication rules.\n *\n * Implications applied:\n * - `doc.annotate.modify` implies `doc.annotate.read` (you can't\n * sensibly modify what you can't see).\n * - `doc.forms.modify` implies `doc.forms.fill` and `doc.forms.read`.\n * - `doc.forms.fill` implies `doc.forms.read`.\n * - any annotation collab scope implies `doc.annotate.read`, because\n * mutation routes need to see the target row to evaluate the\n * collab filter against its current owner.\n * - any field collab scope implies `doc.forms.read`: filling in or\n * signing a field means seeing the form. Groups limit writes, never\n * reads.\n *\n * Does not short-circuit on wildcard — callers do that themselves\n * before calling this. Returning the expanded set is useful for the\n * `/access` response's `effectiveScope` and for advisory UI surfacing.\n */\nexport function expandedCapabilities(\n parsed: ReadonlyArray<ParsedScope>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null = null,\n): Set<DocCapability> {\n const out = new Set<DocCapability>();\n let hasAnnotationCollab = false;\n let hasFieldCollab = false;\n\n for (const s of parsed) {\n if (s.kind === 'capability') {\n out.add(s.name);\n } else if (s.kind === 'virtual' && s.name === 'pdf.permissions') {\n addPdfPermissions(out, pdfBits);\n } else if (s.kind === 'collab' && s.entity === 'annotations') {\n hasAnnotationCollab = true;\n } else if (s.kind === 'collab' && s.entity === 'fields') {\n hasFieldCollab = true;\n }\n }\n\n // Implications (apply after the explicit additions above)\n if (out.has('doc.annotate.modify')) out.add('doc.annotate.read');\n if (out.has('doc.forms.modify')) {\n out.add('doc.forms.fill');\n out.add('doc.forms.read');\n }\n if (out.has('doc.forms.fill')) out.add('doc.forms.read');\n if (hasAnnotationCollab) out.add('doc.annotate.read');\n if (hasFieldCollab) out.add('doc.forms.read');\n\n // Subtraction last: a signed document's own restrictions win over any\n // grant or implication.\n for (const removed of protectedCapabilities(protection)) out.delete(removed);\n\n return out;\n}\n\n/**\n * Convenience wrapper: takes the raw scope array, parses each entry,\n * returns the expanded capability set. Exposed for the `/access`\n * endpoint and for the SDK helper that surfaces `effectiveScope`.\n */\nexport function expandRawScope(\n rawScope: ReadonlyArray<string>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null = null,\n): Set<DocCapability> {\n return expandedCapabilities(rawScope.map(parseScope), pdfBits, protection);\n}\n\n/**\n * Authority to put a record of `entity` in a specific group: an annotation,\n * or a form field.\n *\n * Set-group is decoupled from the write capabilities (`doc.annotate.modify`,\n * `doc.forms.modify`). The reasoning: those describe row access — what kind\n * of write you can do to which existing rows — and map to PDF permission\n * bits. Set-group is a cloud-only *assignment authority*: which destination\n * group can you put a record into? There is no PDF-bit counterpart, so it\n * doesn't inherit from them.\n *\n * Resolution order:\n * 1. newGroupId === callerDefaultGroupId → true (no real reassignment\n * is happening; the record gets the caller's default group)\n * 2. wildcard `*` → true (global escape hatch)\n * 3. `<entity>:set-group:all` → true\n * 4. `<entity>:set-group:group=<newGroupId>` → true\n * 5. `<entity>:*:all` or `<entity>:*:group=<newGroupId>` → true\n * (action wildcard includes set-group)\n * 6. otherwise → false\n *\n * A user with `set-group:group=legal` can put records in the legal group\n * whatever their own group is — that's the whole point.\n */\nexport function checkSetGroup(\n entity: CollabEntity,\n newGroupId: string,\n callerDefaultGroupId: string | undefined,\n rawScope: ReadonlyArray<string>,\n): boolean {\n // No authority needed when the caller is assigning their default group.\n if (newGroupId === callerDefaultGroupId) return true;\n\n const parsed = rawScope.map(parseScope);\n if (parsed.some((s) => s.kind === 'wildcard')) return true;\n\n for (const s of parsed) {\n if (s.kind !== 'collab') continue;\n if (s.entity !== entity) continue;\n if (s.action !== 'set-group' && s.action !== '*') continue;\n if (s.filter.kind === 'all') return true;\n if (s.filter.kind === 'group' && s.filter.groupId === newGroupId) return true;\n // :self and :createdBy are rejected at parse time for set-group, so\n // they never appear here. The action-wildcard path could carry those\n // filters legitimately for other actions — silently skip those, they\n // can't satisfy a set-group check.\n }\n return false;\n}\n\n/**\n * True iff the scope lets the caller `action` (fill in, or sign) a form\n * field in `groupId` (`null` for a field in no group).\n *\n * Narrowing, per action, as for annotations:\n * 1. wildcard `*` → allow;\n * 2. if any `fields:<action>` scope exists (or `fields:*`) → only those\n * decide: the field must match one of their filters, even when the\n * broad capability is also present. A field in no group then matches\n * only `:all`;\n * 3. otherwise the broad capability decides, for every field:\n * `doc.forms.fill` to fill, `doc.sign` to sign.\n *\n * Nothing here narrows form design (`doc.forms.modify`).\n */\nexport function checkFieldAction(\n action: 'fill' | 'sign',\n groupId: string | null,\n rawScope: ReadonlyArray<string>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null = null,\n): boolean {\n const broad: DocCapability = action === 'fill' ? 'doc.forms.fill' : 'doc.sign';\n if (protectedCapabilities(protection).has(broad)) return false;\n const parsed = rawScope.map(parseScope);\n if (parsed.some((s) => s.kind === 'wildcard')) return true;\n\n const applicable = parsed.filter(\n (s) =>\n s.kind === 'collab' && s.entity === 'fields' && (s.action === action || s.action === '*'),\n ) as Extract<ParsedScope, { entity: 'fields' }>[];\n if (applicable.length > 0) {\n return applicable.some(\n (s) => s.filter.kind === 'all' || (groupId !== null && s.filter.groupId === groupId),\n );\n }\n return expandedCapabilities(parsed, pdfBits, protection).has(broad);\n}\n\n/**\n * The form fields a session may act on, by group: every field (`all`), or\n * only the fields of `groups` (none when the list is empty). A field in no\n * group counts only under `all`.\n */\nexport type FieldGroupRight =\n | { readonly all: true }\n | { readonly all: false; readonly groups: readonly string[] };\n\n/** What a session may do with form fields, per action, as group lists a viewer can show. */\nexport interface FieldRights {\n /** The fields it may fill in. */\n readonly fill: FieldGroupRight;\n /** The fields it may sign. */\n readonly sign: FieldGroupRight;\n /** The groups it may put a field in: its own default group always among them. */\n readonly setGroup: FieldGroupRight;\n}\n\n/**\n * {@link checkFieldAction} and {@link checkSetGroup} as lists: for each\n * action, every field or the groups the scope names, so a designer can\n * offer exactly the groups a field may go in, and a filler see whose fields\n * are theirs. The same rules, read the other way round.\n */\nexport function fieldRightsOf(\n rawScope: ReadonlyArray<string>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null,\n callerDefaultGroupId: string | undefined,\n): FieldRights {\n const parsed = rawScope.map(parseScope);\n const wildcard = parsed.some((s) => s.kind === 'wildcard');\n const fieldScopes = (action: 'fill' | 'sign' | 'set-group') =>\n parsed.filter(\n (s) =>\n s.kind === 'collab' && s.entity === 'fields' && (s.action === action || s.action === '*'),\n ) as Extract<ParsedScope, { entity: 'fields' }>[];\n const fromScopes = (\n scopes: Extract<ParsedScope, { entity: 'fields' }>[],\n extra: readonly string[] = [],\n ): FieldGroupRight => {\n if (scopes.some((s) => s.filter.kind === 'all')) return { all: true };\n const groups = scopes.flatMap((s) => (s.filter.kind === 'group' ? [s.filter.groupId] : []));\n return { all: false, groups: [...new Set([...groups, ...extra])] };\n };\n const NONE: FieldGroupRight = { all: false, groups: [] };\n\n const writing = (action: 'fill' | 'sign'): FieldGroupRight => {\n const broad: DocCapability = action === 'fill' ? 'doc.forms.fill' : 'doc.sign';\n if (protectedCapabilities(protection).has(broad)) return NONE;\n if (wildcard) return { all: true };\n const scopes = fieldScopes(action);\n if (scopes.length > 0) return fromScopes(scopes);\n return expandedCapabilities(parsed, pdfBits, protection).has(broad) ? { all: true } : NONE;\n };\n\n const own = callerDefaultGroupId !== undefined ? [callerDefaultGroupId] : [];\n return {\n fill: writing('fill'),\n sign: writing('sign'),\n setGroup: wildcard ? { all: true } : fromScopes(fieldScopes('set-group'), own),\n };\n}\n\n/**\n * Whether the scope lets the caller `action` some form field: the broad\n * capability, or any `fields:<action>` scope. What a form verb checks\n * before its fields are known; each field is checked in the write.\n */\nexport function checkAnyFieldAction(\n action: 'fill' | 'sign',\n rawScope: ReadonlyArray<string>,\n pdfBits: PdfBits,\n protection: DocumentProtection | null = null,\n): boolean {\n const broad: DocCapability = action === 'fill' ? 'doc.forms.fill' : 'doc.sign';\n if (protectedCapabilities(protection).has(broad)) return false;\n const parsed = rawScope.map(parseScope);\n if (parsed.some((s) => s.kind === 'wildcard')) return true;\n if (\n parsed.some(\n (s) =>\n s.kind === 'collab' && s.entity === 'fields' && (s.action === action || s.action === '*'),\n )\n ) {\n return true;\n }\n return expandedCapabilities(parsed, pdfBits, protection).has(broad);\n}\n\n/**\n * Test a single collab filter against a target record. Every filter but\n * `self` compares one fact on the record with the value the scope names:\n *\n * all → always matches\n * self → matches if identity.userId === target.userId\n * createdBy=<X> → matches if target.userId === X\n * group=<X> → matches if target.groupId === X\n */\nexport function filterMatches(filter: CollabFilter, target: CollabTarget, id: Identity): boolean {\n switch (filter.kind) {\n case 'all':\n return true;\n case 'self':\n return !!id.userId && target.userId === id.userId;\n case 'createdBy':\n return target.userId === filter.userId;\n case 'group':\n return target.groupId === filter.groupId;\n }\n}\n\n/**\n * Translate `pdf.permissions` (virtual scope) into the concrete\n * capabilities it represents under the current PDF bit configuration:\n * {@link materializePdfPermissions}, the one reading of the bits.\n */\nfunction addPdfPermissions(out: Set<DocCapability>, b: PdfBits): void {\n for (const capability of materializePdfPermissions(b)) out.add(capability);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-C-gU4vj7.cjs","names":["z","z","z","STANDARD_FONTS","z","z","PAGE_SPACE","z","z","z","z","validNumberFormat","z","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","z","z","z","z","PdfAnnotationSubtypeCode","z","z","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","z","PdfAnnotationSubtypeCode","z","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","z","PdfAnnotationSubtypeCode","z","PdfAnnotationSubtypeCode","z","PdfAnnotationSubtypeCode","z","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","z","z","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","z","z","PdfAnnotationSubtypeCode","PdfAnnotationSubtypeCode","z","z","PdfAnnotationSubtypeCode","z","z","PdfAnnotationSubtypeCode","z","z","z"],"sources":["../src/identity/PageRef.schema.ts","../src/geometry/schemas.ts","../src/annotation/base.schema.ts","../src/dto/PdfDestination.schema.ts","../src/annotation/kinds/link/values.ts","../src/dto/PdfAction.schema.ts","../src/annotation/declaration.ts","../src/dto/IsoDateTime.schema.ts","../src/dto/Measure.schema.ts","../src/annotation/kinds/shared-fields.ts","../src/annotation/kinds/caret/declaration.ts","../src/annotation/kinds/caret/index.ts","../src/annotation/kinds/circle/declaration.ts","../src/annotation/kinds/circle/index.ts","../src/wire/resourceKeys.ts","../src/dto/Attachment.schema.ts","../src/annotation/kinds/file-attachment/values.ts","../src/annotation/kinds/file-attachment/declaration.ts","../src/annotation/kinds/file-attachment/index.ts","../src/annotation/kinds/free-text/values.ts","../src/annotation/kinds/free-text/declaration.ts","../src/annotation/kinds/free-text/index.ts","../src/annotation/kinds/highlight/declaration.ts","../src/annotation/kinds/highlight/index.ts","../src/annotation/kinds/ink/declaration.ts","../src/annotation/kinds/ink/index.ts","../src/annotation/kinds/line/declaration.ts","../src/annotation/kinds/line/index.ts","../src/annotation/kinds/link/declaration.ts","../src/annotation/kinds/link/index.ts","../src/annotation/kinds/polygon/declaration.ts","../src/annotation/kinds/polygon/index.ts","../src/annotation/kinds/polyline/declaration.ts","../src/annotation/kinds/polyline/index.ts","../src/annotation/kinds/popup/declaration.ts","../src/annotation/kinds/popup/index.ts","../src/annotation/kinds/redact/declaration.ts","../src/annotation/kinds/redact/index.ts","../src/annotation/kinds/square/declaration.ts","../src/annotation/kinds/square/index.ts","../src/annotation/kinds/squiggly/declaration.ts","../src/annotation/kinds/squiggly/index.ts","../src/annotation/kinds/stamp/values.ts","../src/annotation/kinds/stamp/declaration.ts","../src/annotation/kinds/stamp/index.ts","../src/annotation/kinds/strikeout/declaration.ts","../src/annotation/kinds/strikeout/index.ts","../src/annotation/kinds/text/values.ts","../src/annotation/kinds/text/declaration.ts","../src/annotation/kinds/text/index.ts","../src/annotation/kinds/underline/declaration.ts","../src/annotation/kinds/underline/index.ts","../src/annotation/kinds/unsupported/declaration.ts","../src/annotation/kinds/unsupported/index.ts","../src/identity/FormFieldRef.schema.ts","../src/annotation/kinds/widget/declaration.ts","../src/annotation/kinds/widget/index.ts","../src/annotation/kinds/declarations.ts","../src/annotation/kinds/widget.shared.ts","../src/annotation/kinds/index.ts","../src/forms/schema.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { PageRef } from './PageRef';\n\n/** Wire form of `PageRef` — see the type. */\nexport const PageRefSchema: z.ZodType<PageRef> = z.object({\n kind: z.literal('objectNumber'),\n objectNumber: z.number().int().positive(),\n});\n","/**\n * Zod schemas for engine PDF-document geometry. Exported from `wire.ts` only\n * (never from `shared.ts`/`runtime`) so the zod-free runtime stays zod-free.\n */\n\nimport { z } from 'zod';\n\nimport type { PageBox, PagePoint, PageQuad } from './pageSpace';\nimport type {\n CalloutLine,\n InkList,\n LinePoints,\n PdfPoint,\n PdfQuad,\n PdfRect,\n PdfRotation,\n PdfSize,\n} from './primitives';\n\nexport const PdfPointSchema: z.ZodType<PdfPoint> = z.object({\n x: z.number(),\n y: z.number(),\n});\n\nexport const LinePointsSchema: z.ZodType<LinePoints> = z.object({\n start: PdfPointSchema,\n end: PdfPointSchema,\n});\n\n/** `/CL` callout leader line — two points (straight) or three (knee-jointed). */\nexport const CalloutLineSchema: z.ZodType<CalloutLine> = z.union([\n z.tuple([PdfPointSchema, PdfPointSchema]),\n z.tuple([PdfPointSchema, PdfPointSchema, PdfPointSchema]),\n]);\n\n/** `/InkList` — an array of strokes, each an array of points. */\nexport const InkListSchema: z.ZodType<InkList> = z.array(z.array(PdfPointSchema));\n\n/** A rect's edges are finite, as `isFinitePdfRect` checks them on the page. */\nexport const PdfRectSchema: z.ZodType<PdfRect> = z.object({\n left: z.number().finite(),\n bottom: z.number().finite(),\n right: z.number().finite(),\n top: z.number().finite(),\n});\n\nexport const PdfSizeSchema: z.ZodType<PdfSize> = z.object({\n width: z.number().nonnegative(),\n height: z.number().nonnegative(),\n});\n\nexport const PdfQuadSchema: z.ZodType<PdfQuad> = z.object({\n upperLeft: PdfPointSchema,\n upperRight: PdfPointSchema,\n lowerLeft: PdfPointSchema,\n lowerRight: PdfPointSchema,\n});\n\nexport const PdfRotationSchema: z.ZodType<PdfRotation> = z.union([\n z.literal(0),\n z.literal(90),\n z.literal(180),\n z.literal(270),\n]);\n\n// ── page space ──\n\nexport const PagePointSchema: z.ZodType<PagePoint> = z.object({\n x: z.number(),\n y: z.number(),\n});\n\n/** A box is finite, as a rect is (`PdfRectSchema`). */\nexport const PageBoxSchema: z.ZodType<PageBox> = z.object({\n x: z.number().finite(),\n y: z.number().finite(),\n width: z.number().finite().nonnegative(),\n height: z.number().finite().nonnegative(),\n});\n\nexport const PageQuadSchema: z.ZodType<PageQuad> = z.object({\n upperLeft: PagePointSchema,\n upperRight: PagePointSchema,\n lowerLeft: PagePointSchema,\n lowerRight: PagePointSchema,\n});\n","import { PageRefSchema } from '../identity/PageRef.schema';\nimport { z } from 'zod';\n\nimport type {\n AnnotationBorderStyle,\n BlendMode,\n CaretIntent,\n Color,\n DrawnBorderStyle,\n FreeTextIntent,\n InkIntent,\n LineEnding,\n LineEndings,\n StandardFont,\n StrikeoutIntent,\n TextAlignment,\n VerticalAlignment,\n WidgetBorderStyle,\n WidgetCheckStyle,\n} from './primitives';\nimport { STANDARD_FONTS } from './primitives';\nimport { PdfPointSchema, PdfRectSchema } from '../geometry/schemas';\nimport type { AnnotationRef } from '../identity/AnnotationRef';\n\n/** @deprecated Use `PdfPointSchema` from `../geometry/schemas`. */\nexport const PointSchema = PdfPointSchema;\n/** @deprecated Use `PdfRectSchema` from `../geometry/schemas`. */\nexport const RectSchema = PdfRectSchema;\n\nexport const ColorSchema: z.ZodType<Color> = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/, \"expected a color as '#rrggbb'\");\n\nexport const AnnotationBorderStyleSchema: z.ZodType<AnnotationBorderStyle> = z.enum([\n 'solid',\n 'dashed',\n 'beveled',\n 'inset',\n]);\n\nexport const WidgetBorderStyleSchema: z.ZodType<WidgetBorderStyle> = z.enum([\n 'solid',\n 'dashed',\n 'beveled',\n 'inset',\n 'underline',\n]);\n\nexport const WidgetCheckStyleSchema: z.ZodType<WidgetCheckStyle> = z.enum([\n 'check',\n 'cross',\n 'star',\n 'circle',\n 'square',\n 'diamond',\n]);\n\n/** What a write takes for a border that isn't a widget's. */\nexport const DrawnBorderStyleSchema: z.ZodType<DrawnBorderStyle> = z.enum(['solid', 'dashed']);\n\nexport const LineEndingSchema: z.ZodType<LineEnding> = z.enum([\n 'none',\n 'square',\n 'circle',\n 'diamond',\n 'open-arrow',\n 'closed-arrow',\n 'butt',\n 'r-open-arrow',\n 'r-closed-arrow',\n 'slash',\n]);\n\nexport const LineEndingsSchema: z.ZodType<LineEndings> = z.object({\n start: LineEndingSchema,\n end: LineEndingSchema,\n});\n\nexport const StandardFontSchema: z.ZodType<StandardFont> = z.enum(STANDARD_FONTS);\n\nexport const TextAlignmentSchema: z.ZodType<TextAlignment> = z.enum(['left', 'center', 'right']);\n\nexport const FreeTextIntentSchema: z.ZodType<FreeTextIntent> = z.enum([\n 'free-text',\n 'free-text-callout',\n 'free-text-typewriter',\n]);\n\n/** The intents a write makes: a typewriter is only sent back as read. */\nexport const FreeTextIntentWriteSchema: z.ZodType<Exclude<FreeTextIntent, 'free-text-typewriter'>> =\n z.enum(['free-text', 'free-text-callout']);\n\nexport const VerticalAlignmentSchema: z.ZodType<VerticalAlignment> = z.enum([\n 'top',\n 'middle',\n 'bottom',\n]);\n\nexport const CaretIntentSchema: z.ZodType<CaretIntent> = z.literal('replace');\n\nexport const StrikeoutIntentSchema: z.ZodType<StrikeoutIntent> = z.literal('strikeout-text-edit');\n\nexport const InkIntentSchema: z.ZodType<InkIntent> = z.literal('ink-highlight');\n\nexport const BlendModeSchema: z.ZodType<BlendMode> = z.enum([\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n]);\n\nexport const AnnotationRefSchema: z.ZodType<AnnotationRef> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('objectNumber'),\n page: PageRefSchema,\n objectNumber: z.number().int().positive(),\n }),\n z.object({\n kind: z.literal('baseIndex'),\n page: PageRefSchema,\n baseIndex: z.number().int().nonnegative(),\n }),\n]);\n","import { z } from 'zod';\n\nimport type { PageDestination, PdfDestination } from './PdfDestination';\nimport { PageRefSchema } from '../identity/PageRef.schema';\n\nconst page = PageRefSchema;\n/** Spec-nullable axis value: absent and `null` both mean \"retain current\". */\nconst axis = z.number().nullable().optional();\n\n/**\n * Runtime schema for {@link PdfDestination}. Lives beside its DTO in `dto/`\n * so every destination-shaped surface (link targets, action-node payloads,\n * the document `openDestination`) shares one schema without an import cycle\n * through the annotation tree.\n */\nexport const PdfDestinationSchema: z.ZodType<PdfDestination> = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('xyz'), page, left: axis, top: axis, zoom: axis }),\n z.object({ kind: z.literal('fit'), page }),\n z.object({ kind: z.literal('fitH'), page, top: axis }),\n z.object({ kind: z.literal('fitV'), page, left: axis }),\n z.object({\n kind: z.literal('fitR'),\n page,\n left: z.number(),\n bottom: z.number(),\n right: z.number(),\n top: z.number(),\n }),\n z.object({ kind: z.literal('fitB'), page }),\n z.object({ kind: z.literal('fitBH'), page, top: axis }),\n z.object({ kind: z.literal('fitBV'), page, left: axis }),\n]) as unknown as z.ZodType<PdfDestination>;\n\n/** A destination in page space: measured from the top-left of its page's visible box. */\nexport const PageDestinationSchema: z.ZodType<PageDestination> = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('xyz'), page, x: axis, y: axis, zoom: axis }),\n z.object({ kind: z.literal('fit'), page }),\n z.object({ kind: z.literal('fitH'), page, y: axis }),\n z.object({ kind: z.literal('fitV'), page, x: axis }),\n z.object({\n kind: z.literal('fitR'),\n page,\n x: z.number(),\n y: z.number(),\n width: z.number().nonnegative(),\n height: z.number().nonnegative(),\n }),\n z.object({ kind: z.literal('fitB'), page }),\n z.object({ kind: z.literal('fitBH'), page, y: axis }),\n z.object({ kind: z.literal('fitBV'), page, x: axis }),\n]) as unknown as z.ZodType<PageDestination>;\n","import { z } from 'zod';\n\nimport type { PdfDestination } from '../../../dto/PdfDestination';\nimport { PageDestinationSchema, PdfDestinationSchema } from '../../../dto/PdfDestination.schema';\nimport type { PdfLinkTarget, PdfLinkTargetWritable } from '../../../dto/PdfLinkTarget';\n\nexport { PdfDestinationSchema };\n\n/** A link target's two schemas, a read and a write, for destinations of one kind. */\nfunction linkTargetSchemasFor<Destination>(destination: z.ZodType<Destination>) {\n const goto = z.object({ kind: z.literal('goto'), destination });\n const uri = z.object({ kind: z.literal('uri'), uri: z.string() });\n const read = z.discriminatedUnion('kind', [\n goto,\n uri,\n z.object({ kind: z.literal('goto-remote'), file: z.string() }),\n z.object({ kind: z.literal('launch'), path: z.string() }),\n z.object({ kind: z.literal('javascript') }),\n z.object({ kind: z.literal('named'), name: z.string() }),\n z.object({ kind: z.literal('unsupported') }),\n ]) as unknown as z.ZodType<PdfLinkTarget<Destination>>;\n /** Drafts and patches author `goto`, `uri` and the standard named verbs; see {@link PdfLinkTargetWritable}. */\n const named = z.object({\n kind: z.literal('named'),\n name: z.enum(['NextPage', 'PrevPage', 'FirstPage', 'LastPage']),\n });\n const write = z.discriminatedUnion('kind', [goto, uri, named]) as unknown as z.ZodType<\n PdfLinkTargetWritable<Destination>\n >;\n return { read, write };\n}\n\nconst PAGE_SPACE = linkTargetSchemasFor(PageDestinationSchema);\nconst FILE_SPACE = linkTargetSchemasFor(PdfDestinationSchema);\n\n/** A link's target: a destination in page space. */\nexport const PdfLinkTargetSchema = PAGE_SPACE.read;\n/** What a create or an update may set as a link's target. */\nexport const PdfLinkTargetWritableSchema = PAGE_SPACE.write;\n\n/** A link's target as the engine reads the file: a destination in the file's coordinates. */\nexport const FileLinkTargetSchema: z.ZodType<PdfLinkTarget<PdfDestination>> = FILE_SPACE.read;\nexport const FileLinkTargetWritableSchema: z.ZodType<PdfLinkTargetWritable<PdfDestination>> =\n FILE_SPACE.write;\n","import { z } from 'zod';\n\nimport type {\n DocumentActionsSnapshot,\n FieldActionsPatch,\n FieldScriptWrite,\n PdfActionNode,\n PdfActionTargetRef,\n PdfActionTree,\n PdfActionType,\n PdfActionWrite,\n WidgetActionsPatch,\n} from './PdfAction';\nimport { PageDestinationSchema, PdfDestinationSchema } from './PdfDestination.schema';\n\nexport const PdfActionTargetRefSchema: z.ZodType<PdfActionTargetRef> = z.discriminatedUnion(\n 'kind',\n [\n z.object({ kind: z.literal('name'), name: z.string() }),\n z.object({ kind: z.literal('objectNumber'), objectNumber: z.number().int().positive() }),\n ],\n) as unknown as z.ZodType<PdfActionTargetRef>;\n\nconst SubmitFormFlagsSchema = z.object({\n raw: z.number().int().nonnegative(),\n exclude: z.boolean(),\n includeNoValueFields: z.boolean(),\n format: z.enum(['fdf', 'html', 'xfdf', 'pdf']),\n method: z.enum(['post', 'get']),\n submitCoordinates: z.boolean(),\n includeAppendSaves: z.boolean(),\n includeAnnotations: z.boolean(),\n canonicalFormat: z.boolean(),\n exclNonUserAnnots: z.boolean(),\n exclFKey: z.boolean(),\n embedForm: z.boolean(),\n});\n\n/**\n * The action schemas for one kind of destination: in the file's coordinates\n * or in page space. Everything but a `goto`'s destination is the same.\n */\nfunction actionSchemasFor<Destination>(destination: z.ZodType<Destination>) {\n /** Fields every node arm repeats — zod 3's discriminatedUnion needs plain\n * object options, so the recursion (`next`) lives inline per arm and the\n * whole union sits behind one `z.lazy`. */\n const nodeCommon = {\n subtype: z.string(),\n next: z.array(z.lazy(() => node)),\n };\n const arm = <T extends string>(type: T, shape: z.ZodRawShape = {}) =>\n z.object({ type: z.literal(type), ...nodeCommon, ...shape });\n const arms = [\n arm('javascript', { script: z.string() }),\n arm('goto', { destination }),\n arm('uri', { uri: z.string(), isMap: z.boolean() }),\n arm('named', { name: z.string() }),\n arm('hide', { targets: z.array(PdfActionTargetRefSchema), hide: z.boolean() }),\n arm('reset-form', {\n fields: z.array(PdfActionTargetRefSchema).nullable(),\n exclude: z.boolean(),\n }),\n arm('goto-remote', { filePath: z.string() }),\n arm('goto-embedded', { filePath: z.string() }),\n arm('launch', { filePath: z.string() }),\n arm('rendition', { script: z.string().optional() }),\n arm('submit-form', {\n // Optional as a whole and complete when present — the atomic-payload\n // law; a pre-payload producer (older runtime/server) omits the key.\n payload: z\n .object({\n url: z.string(),\n fields: z.array(PdfActionTargetRefSchema).nullable(),\n flags: SubmitFormFlagsSchema,\n charSet: z.string().optional(),\n })\n .optional(),\n }),\n arm('thread'),\n arm('sound'),\n arm('movie'),\n arm('import-data'),\n arm('set-ocg-state'),\n arm('transition'),\n arm('goto-3d-view'),\n arm('unknown'),\n ] as const;\n const node: z.ZodType<PdfActionNode<Destination>> = z.lazy(\n () =>\n z.discriminatedUnion('type', [...arms]) as unknown as z.ZodType<PdfActionNode<Destination>>,\n );\n const tree: z.ZodType<PdfActionTree<Destination>> = z.object({\n root: node.nullable(),\n incomplete: z.boolean(),\n warningFlags: z.number().int().nonnegative(),\n warnings: z.array(z.enum(['cycle-dropped', 'malformed-next', 'incomplete', 'payload-dropped'])),\n });\n const fieldActions = z.object({\n keystroke: tree.optional(),\n format: tree.optional(),\n validate: tree.optional(),\n calculate: tree.optional(),\n });\n const pageActions = z.object({\n open: tree.optional(),\n close: tree.optional(),\n });\n const annotationActions = z.object({\n activate: tree.optional(),\n cursorEnter: tree.optional(),\n cursorExit: tree.optional(),\n mouseDown: tree.optional(),\n mouseUp: tree.optional(),\n focus: tree.optional(),\n blur: tree.optional(),\n pageOpen: tree.optional(),\n pageClose: tree.optional(),\n pageVisible: tree.optional(),\n pageInvisible: tree.optional(),\n });\n const documentActions = z\n .object({\n nameTreeScripts: z.array(z.object({ name: z.string(), action: tree })),\n openAction: tree.nullable(),\n // Defaulted so a pre-payload server response (field absent) still parses\n // and every parsed snapshot carries the key.\n openDestination: destination.nullable().default(null),\n willClose: tree.optional(),\n willSave: tree.optional(),\n didSave: tree.optional(),\n willPrint: tree.optional(),\n didPrint: tree.optional(),\n })\n .superRefine((snapshot, context) => {\n // `/OpenAction` is one catalog entry — a dictionary (action) or an array\n // (destination). Both non-null cannot come from a correct reader.\n if (snapshot.openAction !== null && (snapshot.openDestination ?? null) !== null) {\n context.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'openAction and openDestination are mutually exclusive',\n path: ['openDestination'],\n });\n }\n }) as unknown as z.ZodType<DocumentActionsSnapshot<Destination>>;\n return { arms, node, tree, fieldActions, pageActions, annotationActions, documentActions };\n}\n\nconst PAGE_SPACE = actionSchemasFor(PageDestinationSchema);\nconst PDF_SPACE = actionSchemasFor(PdfDestinationSchema);\n\n/**\n * The write schemas for one kind of destination: an action a write makes,\n * and a widget's actions patch.\n */\nfunction actionWriteSchemasFor<Destination>(destination: z.ZodType<Destination>) {\n // A fresh schema at each place, so a generator names the action there and\n // never points into another one.\n const next = () => ({ next: z.array(z.lazy(() => node)).optional() });\n const arms = [\n z.object({ type: z.literal('javascript'), script: z.string(), ...next() }),\n z.object({ type: z.literal('goto'), destination, ...next() }),\n z.object({ type: z.literal('uri'), uri: z.string().min(1), ...next() }),\n z.object({ type: z.literal('named'), name: z.string().min(1), ...next() }),\n z.object({\n type: z.literal('hide'),\n targets: z.array(PdfActionTargetRefSchema).min(1),\n hide: z.boolean(),\n ...next(),\n }),\n z.object({\n type: z.literal('reset-form'),\n fields: z.array(PdfActionTargetRefSchema).nullable(),\n exclude: z.boolean(),\n ...next(),\n }),\n z.object({\n type: z.literal('submit-form'),\n url: z.string().min(1),\n fields: z.array(PdfActionTargetRefSchema).nullable(),\n flags: z.number().int().nonnegative().optional(),\n ...next(),\n }),\n ] as const;\n const node: z.ZodType<PdfActionWrite<Destination>> = z.lazy(\n () =>\n z.discriminatedUnion('type', [...arms]) as unknown as z.ZodType<PdfActionWrite<Destination>>,\n );\n const event = () => node.nullable().optional();\n const widgetActions: z.ZodType<WidgetActionsPatch<Destination>> = z\n .object({\n activate: event(),\n cursorEnter: event(),\n cursorExit: event(),\n mouseDown: event(),\n mouseUp: event(),\n focus: event(),\n blur: event(),\n pageOpen: event(),\n pageClose: event(),\n pageVisible: event(),\n pageInvisible: event(),\n })\n .strict() as unknown as z.ZodType<WidgetActionsPatch<Destination>>;\n return { node, widgetActions };\n}\n\nconst PAGE_SPACE_WRITES = actionWriteSchemasFor(PageDestinationSchema);\nconst PDF_SPACE_WRITES = actionWriteSchemasFor(PdfDestinationSchema);\n\n/** An action a write makes, its destinations in page space. */\nexport const PdfActionWriteSchema: z.ZodType<PdfActionWrite> = PAGE_SPACE_WRITES.node;\n\n/** A widget's actions to write, by event, their destinations in page space. */\nexport const WidgetActionsPatchSchema: z.ZodType<WidgetActionsPatch> =\n PAGE_SPACE_WRITES.widgetActions;\n\n/** A widget's actions to write, as the engine writes the file: destinations in its coordinates. */\nexport const FileWidgetActionsPatchSchema = PDF_SPACE_WRITES.widgetActions;\n\nexport const PdfActionNodeSchema: z.ZodType<PdfActionNode> = PAGE_SPACE.node;\n\n/** The `/S` vocabulary, derived from the union arms so it cannot drift. */\nexport const PdfActionTypeSchema: z.ZodType<PdfActionType> = z.enum(\n PAGE_SPACE.arms.map((option) => option.shape.type.value) as [PdfActionType, ...PdfActionType[]],\n) as unknown as z.ZodType<PdfActionType>;\n\nexport const PdfActionTreeSchema: z.ZodType<PdfActionTree> = PAGE_SPACE.tree;\nexport const PdfFieldActionsSchema = PAGE_SPACE.fieldActions;\nexport const PdfPageActionsSchema = PAGE_SPACE.pageActions;\nexport const DocumentActionsSnapshotSchema: z.ZodType<DocumentActionsSnapshot> =\n PAGE_SPACE.documentActions;\n\n/** An annotation's actions (`/A`, `/AA`), their destinations in page space. */\nexport const PdfAnnotationActionsSchema = PAGE_SPACE.annotationActions;\n\n/** An annotation's actions as the engine reads the file: destinations in the file's coordinates. */\nexport const FileAnnotationActionsSchema = PDF_SPACE.annotationActions;\n\n/**\n * A field event's script: JavaScript all through. Any other action type is\n * refused here, at the boundary.\n */\nexport const FieldScriptWriteSchema: z.ZodType<FieldScriptWrite> = z.lazy(() =>\n z.object({\n type: z.literal('javascript'),\n script: z.string(),\n next: z.array(FieldScriptWriteSchema).optional(),\n }),\n);\n\n/** A field's scripts to write, by event: a script sets one, `null` removes it. */\nexport const FieldActionsPatchSchema: z.ZodType<FieldActionsPatch> = z.object({\n keystroke: FieldScriptWriteSchema.nullable().optional(),\n format: FieldScriptWriteSchema.nullable().optional(),\n validate: FieldScriptWriteSchema.nullable().optional(),\n calculate: FieldScriptWriteSchema.nullable().optional(),\n});\n\n/**\n * Stable public component names for generators that project the action wire\n * model into OpenAPI or another schema format. Keep reusable boundaries here;\n * individual action arms remain owned by `PdfActionNodeSchema`.\n */\nexport const PdfActionWireComponents = {\n PdfActionTargetRef: PdfActionTargetRefSchema,\n PageDestination: PageDestinationSchema,\n PdfActionNode: PdfActionNodeSchema,\n PdfActionTree: PdfActionTreeSchema,\n PdfFieldActions: PdfFieldActionsSchema,\n PdfPageActions: PdfPageActionsSchema,\n PdfAnnotationActions: PdfAnnotationActionsSchema,\n DocumentActionsSnapshot: DocumentActionsSnapshotSchema,\n FieldScriptWrite: FieldScriptWriteSchema,\n FieldActionsPatch: FieldActionsPatchSchema,\n PdfActionWrite: PdfActionWriteSchema,\n WidgetActionsPatch: WidgetActionsPatchSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n","import { z } from 'zod';\n\nimport { PdfLinkTargetSchema, PdfLinkTargetWritableSchema } from './kinds/link/values';\nimport type { AnnotationResourceRole } from './resources';\nimport type { PdfAnnotationActions, WidgetActionsPatch } from '../dto/PdfAction';\nimport { PdfAnnotationActionsSchema, WidgetActionsPatchSchema } from '../dto/PdfAction.schema';\nimport type { PageDestination, PdfDestination } from '../dto/PdfDestination';\nimport type { PageBox, PagePoint, PageQuad } from '../geometry/pageSpace';\nimport type { PdfPoint, PdfQuad } from '../geometry/primitives';\nimport { PageBoxSchema } from '../geometry/schemas';\nimport type { Coordinates, PageCoordinates, PdfCoordinates } from '../pageSpace/coordinates';\n\n/**\n * One declaration per annotation kind. Each field says who writes it, what it\n * reads as, what a write accepts, and whether it can be absent. The read,\n * create and update shapes and their zod schemas are derived from it, so they\n * can't drift apart.\n *\n * - A read is complete: every field is present, and `null` when absent.\n * - A create takes the data fields; a field left out gets the kind's default.\n * - An update takes any data field; a field left out is unchanged, `null`\n * removes it, and a value replaces it whole.\n * - Attribution, engine and preserved fields are accepted on every write, so\n * a read DTO can be passed straight back. A data field whose read has more\n * values than a write can make (`readBack()`) takes them in an update too:\n * sent back unchanged it is kept, any other such value is refused. An\n * engine field marked `readBack()` is worked out from other fields: an\n * update takes the value a read returned. The one such field, a drawn\n * kind's `rect`, also takes another rect, which puts the shape there\n * (`shapeForRect`), and a box kind's create takes it with a quarter turn\n * in place of its `box`.\n */\n\n/**\n * Who writes a field.\n *\n * - `data`: the caller, on create and update.\n * - `attribution`: the engine, from the session's identity; an import may\n * restore it.\n * - `engine`: the engine only; addresses, links it keeps in sync, values\n * derived from other fields.\n * - `preserved`: read from the PDF but not writable. An update that sends it\n * back keeps it; a copy leaves it out and reports it.\n */\nexport type FieldOwner = 'data' | 'attribution' | 'engine' | 'preserved';\n\n/**\n * What a field holds that is measured on the page, so a value can be\n * converted between the file's coordinates and page space (see\n * `geometry/pageSpace.ts`).\n *\n * - `none`: nothing measured on the page.\n * - `length`: numbers with position-like names that are sizes, not places\n * (a paragraph's margins); never converted.\n * - `point`, `points`, `strokes` (lists of points), `box`, `quads`,\n * `linePoints` (`{ start, end }`), `calloutLine` (two or three points),\n * `topLeft` (a box's left and top edges): places on the annotation's page.\n * - `measure`: a scale whose `origin` is a place on the page.\n * - `linkTarget`, `actions`: destinations, each measured on the page it\n * goes to.\n */\nexport type FieldSpace =\n | 'none'\n | 'length'\n | 'point'\n | 'points'\n | 'strokes'\n | 'box'\n | 'quads'\n | 'linePoints'\n | 'calloutLine'\n | 'measure'\n | 'linkTarget'\n | 'actions';\n\nexport interface FieldTraits {\n readonly owner: FieldOwner;\n /** A read returns `null` when the PDF entry is absent. */\n readonly readNullable: boolean;\n /** A write may send `null` to leave the entry out or remove it. */\n readonly writeNullable: boolean;\n /** A create must supply the field: it has no default. */\n readonly required: boolean;\n /** The field can't change after create. */\n readonly createOnly: boolean;\n /** An update also takes what a read returns (kept only when unchanged). */\n readonly readBack: boolean;\n /** What the field holds that is measured on the page. */\n readonly space: FieldSpace;\n}\n\nexport type Override<Traits, Changed> = Omit<Traits, keyof Changed> & Changed;\n\nexport interface Field<Read, Write, Traits> {\n readonly read: z.ZodType<Read>;\n readonly write: z.ZodType<Write>;\n readonly traits: Traits & FieldTraits;\n /** An absent entry reads as `null`, and a write may send `null`. */\n nullable(): Field<Read, Write, Override<Traits, { readNullable: true; writeNullable: true }>>;\n /** An absent entry reads as `null`, but a write must send a value. */\n nullableOnRead(): Field<Read, Write, Override<Traits, { readNullable: true }>>;\n /** A create may leave the field out, and the kind's default applies. */\n optional(): Field<Read, Write, Override<Traits, { required: false }>>;\n /** The field can't change after create. */\n createOnly(): Field<Read, Write, Override<Traits, { createOnly: true }>>;\n /** A write accepts a different schema than a read returns. */\n writes<NextWrite>(schema: z.ZodType<NextWrite>): Field<Read, NextWrite, Traits>;\n /**\n * An update also takes the values only a read returns, so a read DTO can\n * be sent back: such a value is kept when it's unchanged and refused\n * otherwise. A create still takes only what `writes` accepts. On an engine\n * field every value is a read's: any other than the current one is refused.\n */\n readBack(): Field<Read, Write, Override<Traits, { readBack: true }>>;\n /** What the field holds that is measured on the page. */\n space<Space extends FieldSpace>(\n space: Space,\n ): Field<Read, Write, Override<Traits, { space: Space }>>;\n}\n\nexport type AnyField = Field<any, any, any>;\n\nexport type KindFields = { readonly [name: string]: AnyField };\n\nfunction createField<Read, Write, Traits>(\n read: z.ZodType<Read>,\n write: z.ZodType<Write>,\n traits: Traits & FieldTraits,\n): Field<Read, Write, Traits> {\n const next = <Changed extends Partial<FieldTraits>>(changed: Changed) =>\n createField(read, write, { ...traits, ...changed }) as never;\n return {\n read,\n write,\n traits,\n nullable: () => next({ readNullable: true, writeNullable: true }),\n nullableOnRead: () => next({ readNullable: true }),\n optional: () => next({ required: false }),\n createOnly: () => next({ createOnly: true }),\n readBack: () => next({ readBack: true }),\n space: (space) => next({ space }),\n writes: (schema) => createField(read, schema, traits),\n };\n}\n\nexport interface OwnerTraits<Owner extends FieldOwner, Required extends boolean> {\n owner: Owner;\n readNullable: false;\n writeNullable: false;\n required: Required;\n createOnly: false;\n readBack: false;\n space: 'none';\n}\n\nconst ownedBy = <Owner extends FieldOwner, Required extends boolean>(\n owner: Owner,\n required: Required,\n): OwnerTraits<Owner, Required> => ({\n owner,\n readNullable: false,\n writeNullable: false,\n required,\n createOnly: false,\n readBack: false,\n space: 'none',\n});\n\n/** Field builders for {@link defineKind}. */\nexport const field = {\n /** Written by the caller. Required on create until marked `optional()`. */\n data: <Value>(schema: z.ZodType<Value>) => createField(schema, schema, ownedBy('data', true)),\n /** Stamped by the engine from the session's identity. */\n attribution: <Value>(schema: z.ZodType<Value>) =>\n createField(schema, schema, ownedBy('attribution', false)),\n /** Written only by the engine. */\n engine: <Value>(schema: z.ZodType<Value>) =>\n createField(schema, schema, ownedBy('engine', false)),\n /** Read from the PDF and kept in place, but not writable. */\n preserved: <Value>(schema: z.ZodType<Value>) =>\n createField(schema, schema, ownedBy('preserved', false)),\n};\n\n// ── derived shapes ──\n\ntype Simplify<Shape> = { [Name in keyof Shape]: Shape[Name] } & {};\n\ntype ReadValue<F> =\n F extends Field<infer Read, infer _Write, infer Traits>\n ? Traits extends { readNullable: true }\n ? Read | null\n : Read\n : never;\n\ntype WriteValue<F> =\n F extends Field<infer _Read, infer Write, infer Traits>\n ? Traits extends { writeNullable: true }\n ? Write | null\n : Write\n : never;\n\n/** What an update takes: the write, and for a `readBack()` field the read too. */\ntype UpdateValue<F> =\n F extends Field<infer Read, infer _Write, infer Traits>\n ? Traits extends { readBack: true }\n ? WriteValue<F> | (Traits extends { readNullable: true } ? Read | null : Read)\n : WriteValue<F>\n : never;\n\ntype NamesWhere<Fields extends KindFields, Condition> = {\n [Name in keyof Fields]: Fields[Name]['traits'] extends Condition ? Name : never;\n}[keyof Fields];\n\ntype AcceptedNames<Fields extends KindFields> = NamesWhere<\n Fields,\n { owner: 'attribution' | 'engine' | 'preserved' }\n>;\n\n// ── page space ──\n\ntype SpaceOf<F> = F extends { traits: { space: infer Space } } ? Space : never;\n\n/** A value's points and quads, named for page space: the same shapes. */\ntype PagePointsIn<Value> = Value extends PdfQuad\n ? PageQuad\n : Value extends PdfPoint\n ? PagePoint\n : Value extends object\n ? { [Key in keyof Value]: PagePointsIn<Value[Key]> }\n : Value;\n\n/**\n * A field's value in page space, by what the field holds: a box becomes a\n * `PageBox`, a destination a `PageDestination`, and points and quads keep\n * their shapes under page-space names. `null` and a value left out stay as\n * they are.\n */\nexport type PageValue<Space, Value> = Value extends null | undefined\n ? Value\n : Space extends 'box'\n ? PageBox\n : Space extends 'linkTarget'\n ? Value extends { destination: PdfDestination }\n ? Omit<Value, 'destination'> & { destination: PageDestination }\n : Value\n : Space extends 'actions'\n ? Value extends PdfAnnotationActions<PdfDestination>\n ? PdfAnnotationActions<PageDestination>\n : Value extends WidgetActionsPatch<PdfDestination>\n ? WidgetActionsPatch<PageDestination>\n : Value\n : Space extends 'none' | 'length'\n ? Value\n : PagePointsIn<Value>;\n\n/**\n * A field's value in the space `C` stands for: the file's coordinates, as\n * the field is declared, or page space.\n */\ntype InSpace<C extends Coordinates, F, Value> = C extends PdfCoordinates\n ? Value\n : PageValue<SpaceOf<F>, Value>;\n\nexport type ReadShape<Fields extends KindFields, C extends Coordinates = PageCoordinates> = {\n [Name in keyof Fields]: InSpace<C, Fields[Name], ReadValue<Fields[Name]>>;\n};\n\nexport type CreateShape<Fields extends KindFields, C extends Coordinates = PageCoordinates> = {\n [Name in NamesWhere<Fields, { owner: 'data'; required: true }>]: InSpace<\n C,\n Fields[Name],\n WriteValue<Fields[Name]>\n >;\n} & {\n [Name in NamesWhere<Fields, { owner: 'data'; required: false }>]?: InSpace<\n C,\n Fields[Name],\n WriteValue<Fields[Name]>\n >;\n} & {\n [Name in AcceptedNames<Fields>]?: InSpace<C, Fields[Name], ReadValue<Fields[Name]>>;\n};\n\nexport type UpdateShape<Fields extends KindFields, C extends Coordinates = PageCoordinates> = {\n [Name in NamesWhere<Fields, { owner: 'data' }>]?: InSpace<\n C,\n Fields[Name],\n UpdateValue<Fields[Name]>\n >;\n} & {\n [Name in AcceptedNames<Fields>]?: InSpace<C, Fields[Name], ReadValue<Fields[Name]>>;\n};\n\n/** A kind's optional data fields a read never shows as `null` and that hold nothing placed on the page. */\ntype ConstantDefaultNames<Fields extends KindFields> = NamesWhere<\n Fields,\n { owner: 'data'; required: false; readNullable: false; space: 'none' }\n>;\n\n/**\n * What a create that leaves out a data field reads back, per field. A field\n * a read never shows as `null`, holding nothing placed on the page, needs a\n * value. The others may name one: left out, a read says `null`, or the\n * engine works the value out (a redaction's quads, a free text's rich text).\n */\nexport type DefaultsShape<Fields extends KindFields> = {\n [Name in ConstantDefaultNames<Fields>]: ReadValue<Fields[Name]>;\n} & {\n [Name in Exclude<\n NamesWhere<Fields, { owner: 'data'; required: false }>,\n ConstantDefaultNames<Fields>\n >]?: ReadValue<Fields[Name]>;\n};\n\n// ── kinds ──\n\n/** The resources a kind takes, by role (`annotation/resources.ts`). */\nexport type KindResources = { readonly [Role in AnnotationResourceRole]?: 'required' | 'optional' };\n\nexport type KindRead<\n Subtype extends string,\n Fields extends KindFields,\n C extends Coordinates = PageCoordinates,\n> = Simplify<{ subtype: Subtype } & ReadShape<Fields, C>>;\nexport type KindCreate<\n Subtype extends string,\n Fields extends KindFields,\n C extends Coordinates = PageCoordinates,\n> = Simplify<{ subtype: Subtype } & CreateShape<Fields, C>>;\nexport type KindUpdate<\n Subtype extends string,\n Fields extends KindFields,\n C extends Coordinates = PageCoordinates,\n> = Simplify<{ subtype?: Subtype } & UpdateShape<Fields, C>>;\n\n/** A kind's three schemas: its read, and what a create and an update take. */\nexport interface KindSchemas<\n Subtype extends string,\n Fields extends KindFields,\n C extends Coordinates = PageCoordinates,\n> {\n /**\n * Validates a read: every field present. Fields it doesn't declare are\n * dropped, so a reader tolerates a newer writer.\n */\n readonly read: z.ZodType<KindRead<Subtype, Fields, C>>;\n /** Validates the data of a create. */\n readonly create: z.ZodType<KindCreate<Subtype, Fields, C>>;\n /** Validates the data of an update. */\n readonly update: z.ZodType<KindUpdate<Subtype, Fields, C>>;\n}\n\nexport interface KindDeclaration<\n Subtype extends string,\n Fields extends KindFields,\n Resources extends KindResources,\n> {\n readonly subtype: Subtype;\n readonly fields: Fields;\n readonly resources: Resources;\n /** Validates a read in page space: every field present. */\n readonly readSchema: z.ZodType<KindRead<Subtype, Fields>>;\n /** Validates the data of a create, in page space. */\n readonly createSchema: z.ZodType<KindCreate<Subtype, Fields>>;\n /** Validates the data of an update, in page space. */\n readonly updateSchema: z.ZodType<KindUpdate<Subtype, Fields>>;\n /** The same three in the file's coordinates, which the engine checks its writes with. */\n readonly fileSchemas: KindSchemas<Subtype, Fields, PdfCoordinates>;\n /**\n * The write schema of each `readBack()` field, in the file's coordinates:\n * an update's value outside it is a read-only value, kept only when\n * unchanged. `null` for an engine field, which no value writes.\n */\n readonly readBackWrites: Readonly<Record<string, z.ZodTypeAny | null>>;\n /** The zod shapes behind the three page-space schemas, to build variants from. */\n readonly shapes: {\n readonly read: z.ZodRawShape;\n readonly create: z.ZodRawShape;\n readonly update: z.ZodRawShape;\n };\n}\n\nexport type AnyKindDeclaration = KindDeclaration<string, KindFields, any>;\n\n/**\n * The complete read shape of a kind: what `list`, `get` and `listRaw` return.\n * In page space unless `C` is `PdfCoordinates`, as the engine reads the file.\n */\nexport type ReadOf<Declaration, C extends Coordinates = PageCoordinates> =\n Declaration extends KindDeclaration<infer Subtype, infer Fields, infer _Resources>\n ? KindRead<Subtype, Fields, C>\n : never;\n\n/** The data a create accepts. A read of the same kind is always assignable. */\nexport type CreateOf<Declaration, C extends Coordinates = PageCoordinates> =\n Declaration extends KindDeclaration<infer Subtype, infer Fields, infer _Resources>\n ? KindCreate<Subtype, Fields, C>\n : never;\n\n/** What a create that leaves out a data field reads back (see `annotation/defaults.ts`). */\nexport type DefaultsOf<Declaration> =\n Declaration extends KindDeclaration<infer _Subtype, infer Fields, infer _Resources>\n ? DefaultsShape<Fields>\n : never;\n\n/** The data an update accepts. */\nexport type UpdateOf<Declaration, C extends Coordinates = PageCoordinates> =\n Declaration extends KindDeclaration<infer Subtype, infer Fields, infer _Resources>\n ? KindUpdate<Subtype, Fields, C>\n : never;\n\n/**\n * The page-space schema of a field that holds a box or destinations, whose\n * shape differs from the file's: a box is `{ x, y, width, height }`, and a\n * destination is measured from its page's top-left. Every other place has\n * the same shape in both spaces.\n */\nconst PAGE_SPACE_SCHEMAS: Partial<\n Record<FieldSpace, { readonly read: z.ZodTypeAny; readonly write: z.ZodTypeAny }>\n> = {\n box: { read: PageBoxSchema, write: PageBoxSchema },\n linkTarget: { read: PdfLinkTargetSchema, write: PdfLinkTargetWritableSchema },\n // Only a widget writes its actions; every other kind's are kept as read.\n actions: { read: PdfAnnotationActionsSchema, write: WidgetActionsPatchSchema },\n};\n\ninterface ZodShapes {\n read: Record<string, z.ZodTypeAny>;\n create: Record<string, z.ZodTypeAny>;\n update: Record<string, z.ZodTypeAny>;\n readBackWrites: Record<string, z.ZodTypeAny | null>;\n}\n\n/** The zod shapes of a kind's fields, each field's schemas given by `schemasOf`. */\nfunction shapesOf(\n subtype: string,\n fields: KindFields,\n schemasOf: (spec: AnyField) => { read: z.ZodTypeAny; write: z.ZodTypeAny },\n): ZodShapes {\n const read: Record<string, z.ZodTypeAny> = { subtype: z.literal(subtype) };\n const create: Record<string, z.ZodTypeAny> = { subtype: z.literal(subtype) };\n const update: Record<string, z.ZodTypeAny> = { subtype: z.literal(subtype).optional() };\n const readBackWrites: Record<string, z.ZodTypeAny | null> = {};\n for (const [name, spec] of Object.entries(fields)) {\n const { owner, readNullable, writeNullable, required, readBack } = spec.traits;\n const schemas = schemasOf(spec);\n read[name] = readNullable ? schemas.read.nullable() : schemas.read;\n if (owner === 'data') {\n const write = writeNullable ? schemas.write.nullable() : schemas.write;\n create[name] = required ? write : write.optional();\n // A field read and written as one schema takes that schema back,\n // nullable when either side is: a union of the two would name it twice.\n const sameSchema = schemas.read === schemas.write;\n const readBackUpdate = sameSchema\n ? readNullable || writeNullable\n ? schemas.write.nullable()\n : schemas.write\n : z.union([write, read[name]!]);\n update[name] = (readBack ? readBackUpdate : write).optional();\n if (readBack) readBackWrites[name] = write;\n } else {\n // Accepted so a read DTO can be sent back; the engine decides what happens to it.\n create[name] = readBack ? read[name]!.optional() : z.unknown().optional();\n update[name] = readBack ? read[name]!.optional() : z.unknown().optional();\n if (readBack) readBackWrites[name] = null;\n }\n }\n return { read, create, update, readBackWrites };\n}\n\n/**\n * Declares an annotation kind from its fields and the resources it takes\n * beside its data. Fields are declared as the file holds them; the page-space\n * schemas follow from what each field holds (`space`).\n */\nexport function defineKind<\n Subtype extends string,\n Fields extends KindFields,\n Resources extends KindResources = Record<never, never>,\n>(\n subtype: Subtype,\n fields: Fields,\n resources: Resources = {} as Resources,\n): KindDeclaration<Subtype, Fields, Resources> {\n const file = shapesOf(subtype, fields, (spec) => spec);\n const page = shapesOf(\n subtype,\n fields,\n (spec) => PAGE_SPACE_SCHEMAS[spec.traits.space as FieldSpace] ?? spec,\n );\n return {\n subtype,\n fields,\n resources,\n readSchema: z.object(page.read) as never,\n createSchema: z.object(page.create).strict() as never,\n updateSchema: z.object(page.update).strict() as never,\n fileSchemas: {\n read: z.object(file.read) as never,\n create: z.object(file.create).strict() as never,\n update: z.object(file.update).strict() as never,\n },\n readBackWrites: file.readBackWrites,\n shapes: { read: page.read, create: page.create, update: page.update },\n };\n}\n","import { z } from 'zod';\n\nimport type { DateInput, IsoDateTime } from './IsoDateTime';\n\n/** ISO 8601 with an offset (`Z` or `±HH:mm`) or without one. */\nexport const IsoDateTimeSchema: z.ZodType<IsoDateTime> = z\n .string()\n .datetime({ offset: true, local: true });\n\n/**\n * A moment in a write. JSON carries the string; a `Date` only ever arrives\n * in-process (the local engine), and becomes that string on the wire.\n */\nexport const DateInputSchema: z.ZodType<DateInput> = z.union([IsoDateTimeSchema, z.date()]);\n","import { z } from 'zod';\nimport { PageBoxSchema } from '../geometry/schemas';\nimport { validNumberFormat } from '../measure/format';\n\nconst float = z\n .number()\n .finite()\n .refine((n) => Number.isFinite(Math.fround(n)), 'Outside PDF float range');\nconst point = z.object({ x: float, y: float }).strict();\nconst positive = float.refine((n) => Math.fround(n) > 0, 'Must be positive in PDF float precision');\nexport const PdfNumberFormatSchema = z.object({\n unit: z.string(),\n conversion: float.optional(),\n fraction: z.enum(['decimal', 'fraction', 'round', 'truncate']).optional(),\n precision: z.number().int().optional(),\n fixed: z.boolean().optional(),\n thousands: z.string().optional(),\n decimal: z.string().optional(),\n prefixSpacing: z.string().optional(),\n suffixSpacing: z.string().optional(),\n labelPosition: z.enum(['suffix', 'prefix']).optional(),\n});\nexport const PdfMeasureSchema = z.object({\n subtype: z.literal('rectilinear'),\n ratio: z.string().optional(),\n x: z.array(PdfNumberFormatSchema),\n y: z.array(PdfNumberFormatSchema).optional(),\n distance: z.array(PdfNumberFormatSchema),\n area: z.array(PdfNumberFormatSchema),\n angle: z.array(PdfNumberFormatSchema).optional(),\n slope: z.array(PdfNumberFormatSchema).optional(),\n origin: point.optional(),\n cyx: float.optional(),\n});\nconst writableFormat = PdfNumberFormatSchema.extend({\n conversion: positive,\n precision: z.number().int().min(1).max(2147483647).optional(),\n}).refine(validNumberFormat, 'Invalid number format precision');\nexport const PdfMeasureWriteSchema = PdfMeasureSchema.extend({\n x: z.array(writableFormat),\n y: z.array(writableFormat).optional(),\n distance: z.array(writableFormat),\n area: z.array(writableFormat),\n angle: z.array(writableFormat).optional(),\n slope: z.array(writableFormat).optional(),\n cyx: positive.optional(),\n});\nconst geoMeasure = z.object({ subtype: z.literal('geospatial') });\nconst unknownMeasure = z.object({ subtype: z.literal('unknown') });\nexport const PdfForeignMeasureSchema = z.union([geoMeasure, unknownMeasure]);\nexport const PageScaleInputSchema = z.object({ measure: PdfMeasureWriteSchema.nullable() });\nexport const PdfMeasurementSchema = z.discriminatedUnion('subtype', [\n PdfMeasureSchema,\n geoMeasure,\n unknownMeasure,\n]);\nexport const PageMeasurementViewportSchema = z.object({\n bbox: PageBoxSchema,\n name: z.string().nullable(),\n measure: PdfMeasurementSchema.nullable(),\n owned: z.boolean(),\n});\n/** See `PageMeasurementViewportList`. */\nexport const PageMeasurementViewportListSchema = z.object({\n viewports: z.array(PageMeasurementViewportSchema),\n});\nexport const LineIntentSchema = z.enum(['line-arrow', 'line-dimension']);\nexport const PolygonIntentSchema = z.enum(['polygon-cloud', 'polygon-dimension']);\nexport const PolylineIntentSchema = z.literal('polyline-dimension');\nconst offset = z.object({ along: float, perpendicular: float }).strict();\nexport const LineDimensionCaptionSchema = z\n .object({\n enabled: z.boolean(),\n position: z.enum(['inline', 'top']).optional(),\n offset: offset.optional(),\n })\n .strict();\nexport const ShapeDimensionCaptionSchema = z\n .object({ enabled: z.boolean(), center: point.optional() })\n .strict();\nexport const LineCaptionPatchSchema = z\n .object({\n enabled: z.boolean().optional(),\n position: z.enum(['inline', 'top']).nullable().optional(),\n offset: offset.nullable().optional(),\n })\n .strict();\nexport const ShapeCaptionPatchSchema = z\n .object({ enabled: z.boolean().optional(), center: point.nullable().optional() })\n .strict();\nexport const LineLeaderSchema = z\n .object({\n length: float,\n extension: float.refine((n) => n >= 0).optional(),\n offset: float.refine((n) => n >= 0).optional(),\n })\n .strict();\n","import { z } from 'zod';\n\nimport { DateInputSchema, IsoDateTimeSchema } from '../../dto/IsoDateTime.schema';\nimport type { PdfForeignMeasure, PdfMeasure } from '../../dto/Measure';\nimport {\n PdfForeignMeasureSchema,\n PdfMeasurementSchema,\n PdfMeasureWriteSchema,\n} from '../../dto/Measure.schema';\nimport { FileAnnotationActionsSchema } from '../../dto/PdfAction.schema';\nimport {\n PdfPointSchema,\n PdfQuadSchema,\n PdfRectSchema,\n PdfRotationSchema,\n} from '../../geometry/schemas';\nimport { PageRefSchema } from '../../identity/PageRef.schema';\nimport {\n AnnotationBorderStyleSchema,\n DrawnBorderStyleSchema,\n AnnotationRefSchema,\n BlendModeSchema,\n ColorSchema,\n} from '../base.schema';\nimport { field } from '../declaration';\nimport type { FreeTextFont } from '../primitives';\n\n/** `/IRT` and `/RT`: the annotation this one replies to, and how it relates to it. */\nexport const AnnotationReplySchema = z.object({\n to: AnnotationRefSchema,\n type: z.enum(['reply', 'group']),\n});\n\n/** A write may leave out `type`: an absent `/RT` means `'reply'` (ISO 32000-2 §12.5.6.2). */\nexport const AnnotationReplyWriteSchema = z.object({\n to: AnnotationRefSchema,\n type: z.enum(['reply', 'group']).optional(),\n});\n\n/** A standard font name or a registered font key; the writer resolves which. */\nexport const FontNameSchema = z.string().min(1) as unknown as z.ZodType<FreeTextFont>;\n\n/** One `/F` bit (ISO 32000-2 §12.5.3); every bit defaults to off. */\nconst flag = () => field.data(z.boolean()).optional();\n\n/** Fields every annotation kind has. */\nexport const annotationBaseFields = {\n ref: field.engine(AnnotationRefSchema),\n page: field.engine(PageRefSchema),\n /**\n * Whether the file holds its appearance (`/AP /N`). Without one, every\n * viewer draws the annotation from its fields: the engine in memory, never\n * written.\n */\n hasAppearance: field.engine(z.boolean()),\n /**\n * `/AS`: which state of its appearance the annotation shows, when the\n * appearance has states (a check box's `Off` and its on state); `null`\n * when it names none. The appearance images are labelled with the same\n * names, so this picks the one to show.\n */\n appearanceState: field.engine(z.string()).nullable(),\n nm: field.data(z.string()).nullable().optional().createOnly(),\n rect: field.data(PdfRectSchema).space('box'),\n contents: field.data(z.string()).nullable().optional(),\n subject: field.data(z.string()).nullable().optional(),\n blendMode: field.data(BlendModeSchema).optional(),\n invisible: flag(),\n hidden: flag(),\n print: flag(),\n noZoom: flag(),\n noRotate: flag(),\n noView: flag(),\n readOnly: flag(),\n locked: flag(),\n toggleNoView: flag(),\n lockedContents: flag(),\n reply: field.data(AnnotationReplySchema).writes(AnnotationReplyWriteSchema).nullable().optional(),\n /** `/Popup`, kept in sync by the engine from the popup's `parent`. */\n popup: field.engine(AnnotationRefSchema).nullable(),\n /** `/EMBD_Metadata/GroupID`: the group that owns the annotation. */\n groupId: field.data(z.string().min(1)).nullable().optional(),\n author: field.attribution(z.string()).nullable(),\n /** `/CreationDate`. */\n createdAt: field.attribution(IsoDateTimeSchema).writes(DateInputSchema).nullable(),\n /** `/M`. */\n modifiedAt: field.attribution(IsoDateTimeSchema).writes(DateInputSchema).nullable(),\n userId: field.attribution(z.string()).nullable(),\n createdBy: field.attribution(z.string()).nullable(),\n /** `/EMBD_Metadata/UpdatedBy`. */\n modifiedBy: field.attribution(z.string()).nullable(),\n /** The session that restored this annotation's attribution in an import. */\n importedBy: field.engine(z.string()).nullable(),\n /** `/A` and `/AA`. */\n actions: field.preserved(FileAnnotationActionsSchema).nullable().space('actions'),\n};\n\n// ── style ──\n\nexport const colorStyleFields = {\n color: field.data(ColorSchema).optional(),\n opacity: field.data(z.number().min(0).max(1)).optional(),\n};\n\nexport const geometryStyleFields = {\n ...colorStyleFields,\n strokeWidth: field.data(z.number().nonnegative()).optional(),\n /** `beveled` and `inset` are read from other apps' files and kept; only widgets draw them. */\n borderStyle: field\n .data(AnnotationBorderStyleSchema)\n .writes(DrawnBorderStyleSchema)\n .readBack()\n .optional(),\n dashArray: field.data(z.array(z.number().nonnegative())).nullable().optional(),\n};\n\nexport const filledStyleFields = {\n ...geometryStyleFields,\n interiorColor: field.data(ColorSchema).nullable().optional(),\n};\n\n/**\n * `rect` where another field gives the shape (a box, points, quads): where\n * the annotation sits on the page, the upright box around all it draws. The\n * engine works it out from the shape, so a create's `rect` is worked out\n * again. An update's `rect` other than the one read puts the shape there\n * (`shapeForRect`); the rect read, sent back, changes nothing.\n */\nexport const drawnRectFields = {\n rect: field.engine(PdfRectSchema).readBack().space('box'),\n};\n\n/**\n * The turn of a kind drawn from points (line, polyline, polygon, ink): the\n * points are upright, and the turn takes them about the middle of their box,\n * as a square turns about its box.\n */\nexport const pointsTurnFields = {\n /** Degrees clockwise, about the middle of the points' box. */\n rotation: field.data(z.number()).nullable().optional(),\n};\n\n/**\n * A kind drawn about a box that can turn: square, circle, free text, stamp\n * and caret. The caller gives the box and the turn; `rect` takes in the\n * turned box and what the drawing adds around it (a cloudy border's bumps, a\n * callout's line and arrow).\n *\n * A create gives `box`, or `rect` with a quarter turn: where the turned box\n * stands on the page, which pins the box down (`pdfQuarterTurnBox`). At any\n * other angle many boxes share one rect, so a create by `rect` is refused.\n */\nexport const boxFields = {\n ...drawnRectFields,\n /** The shape's own box, before any turn: a callout's text box. */\n box: field.data(PdfRectSchema).space('box').optional(),\n /** Degrees clockwise, about the middle of `box`. */\n rotation: field.data(z.number()).nullable().optional(),\n};\n\n/**\n * A widget's frame and its turn: the box its contents are laid out in, and\n * a quarter turn (`/MK /R`, which the file holds counterclockwise), so every\n * viewer can lay an upright editor over it. `rect` is where the widget\n * stands on the page, the box turned. A create gives `box` or `rect`, as a\n * box kind's does.\n */\nexport const widgetBoxFields = {\n ...drawnRectFields,\n /** The box the contents are laid out in, before the turn: `rect` with its sides swapped under 90 and 270. */\n box: field.data(PdfRectSchema).space('box').optional(),\n /** Degrees clockwise, a quarter turn, about the middle of `box`; `null` upright. */\n rotation: field.data(PdfRotationSchema).nullable().optional(),\n};\n\n// ── families ──\n\nexport const textMarkupFields = {\n ...annotationBaseFields,\n ...colorStyleFields,\n /** The box around the quads. */\n ...drawnRectFields,\n quadPoints: field.data(z.array(PdfQuadSchema).min(1)).space('quads'),\n};\n\nexport const shapeFields = {\n ...annotationBaseFields,\n ...filledStyleFields,\n ...boxFields,\n cloudyIntensity: field.data(z.number().positive()).nullable().optional(),\n};\n\nexport const vertexFields = {\n ...annotationBaseFields,\n ...filledStyleFields,\n ...drawnRectFields,\n vertices: field.data(z.array(PdfPointSchema)).space('points'),\n ...pointsTurnFields,\n};\n\n/**\n * `/Measure`. A write takes a rectilinear scale, or sends back the marker a read\n * returned for a scale the engine can't model.\n */\nexport const measureField = field\n .data(PdfMeasurementSchema)\n .writes(\n z.union([PdfMeasureWriteSchema, PdfForeignMeasureSchema]) as z.ZodType<\n PdfMeasure | PdfForeignMeasure\n >,\n )\n .nullable()\n .optional()\n .space('measure');\n\n/** Our caption on a polygon or polyline measurement; `null` when the shape has no caption flag. */\nexport const shapeCaptionFields = {\n captionEnabled: field.data(z.boolean()).nullable().optional(),\n /** `null` places the caption automatically. */\n captionCenter: field.data(PdfPointSchema).nullable().optional().space('point'),\n};\n","import { CaretIntentSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, boxFields, colorStyleFields } from '../shared-fields';\n\nexport const CaretDeclaration = defineKind('caret', {\n ...annotationBaseFields,\n ...colorStyleFields,\n ...boxFields,\n intent: field.data(CaretIntentSchema).nullable().optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { CaretDeclaration } from './declaration';\n\nexport { CaretDeclaration } from './declaration';\n\nexport type CaretAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof CaretDeclaration,\n C\n>;\nexport type CaretDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof CaretDeclaration,\n C\n>;\nexport type CaretPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof CaretDeclaration,\n C\n>;\n\nexport const CaretDTOSchema = CaretDeclaration.readSchema;\nexport const CaretDraftSchema = CaretDeclaration.createSchema;\nexport const CaretPatchSchema = CaretDeclaration.updateSchema;\n\nexport const CaretKind: AnnotationKindModule<'caret', CaretAnnotation, CaretDraft, CaretPatch> = {\n subtype: 'caret',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.CARET,\n dtoSchema: CaretDTOSchema,\n draftSchema: CaretDraftSchema,\n patchSchema: CaretPatchSchema,\n readBackWrites: CaretDeclaration.readBackWrites,\n};\n","import { defineKind } from '../../declaration';\nimport { shapeFields } from '../shared-fields';\n\nexport const CircleDeclaration = defineKind('circle', shapeFields);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { CircleDeclaration } from './declaration';\n\nexport { CircleDeclaration } from './declaration';\n\nexport type CircleAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof CircleDeclaration,\n C\n>;\nexport type CircleDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof CircleDeclaration,\n C\n>;\nexport type CirclePatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof CircleDeclaration,\n C\n>;\n\nexport const CircleDTOSchema = CircleDeclaration.readSchema;\nexport const CircleDraftSchema = CircleDeclaration.createSchema;\nexport const CirclePatchSchema = CircleDeclaration.updateSchema;\n\nexport const CircleKind: AnnotationKindModule<\n 'circle',\n CircleAnnotation,\n CircleDraft,\n CirclePatch\n> = {\n subtype: 'circle',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.CIRCLE,\n dtoSchema: CircleDTOSchema,\n draftSchema: CircleDraftSchema,\n patchSchema: CirclePatchSchema,\n readBackWrites: CircleDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\n/**\n * A multipart message carries each file as a part `resource:<key>`, and its\n * JSON names the file by role: `resources: { <role>: <key> }`, on the\n * object the files belong to. These are those objects, one per set of roles.\n */\n\n/** A file's key: the `<key>` of its `resource:<key>` part. */\nexport const ResourceKeySchema = z.string().min(1);\n\n/** An annotation write's files: its drawing and its attached file. */\nexport const AnnotationResourceKeysSchema = z\n .object({ appearance: ResourceKeySchema.optional(), file: ResourceKeySchema.optional() })\n .strict();\n\n/** A drawn appearance: a signature's mark, as a one-page PDF or an image. */\nexport const AppearanceResourceKeysSchema = z.object({ appearance: ResourceKeySchema }).strict();\n\n/** An attachment's file. */\nexport const FileResourceKeysSchema = z.object({ file: ResourceKeySchema }).strict();\n\n/** The PDF whose pages an insert copies in. */\nexport const SourceResourceKeysSchema = z.object({ source: ResourceKeySchema }).strict();\n\n/** An answer's picture. */\nexport const ImageResourceKeysSchema = z.object({ image: ResourceKeySchema }).strict();\n","import { z } from 'zod';\n\nimport { IsoDateTimeSchema } from './IsoDateTime.schema';\nimport { FileResourceKeysSchema } from '../wire/resourceKeys';\n\nimport type {\n Attachment,\n AttachmentFileInfo,\n AttachmentRef,\n WireAttachmentFile,\n} from './Attachment';\n\n/**\n * Wire schemas for the attachment vocabulary (see `Attachment.ts`). The\n * write-side `AttachmentFileSource` carries bytes and never appears on the\n * wire; `WireAttachmentFile` is its form there.\n */\n\nexport const WireAttachmentFileSchema: z.ZodType<WireAttachmentFile> = z.object({\n resources: FileResourceKeysSchema,\n name: z.string().min(1),\n mimeType: z.string().optional(),\n description: z.string().optional(),\n});\n\nexport const AttachmentFileInfoSchema: z.ZodType<AttachmentFileInfo> = z.object({\n name: z.string(),\n mimeType: z.string().nullable(),\n description: z.string().nullable(),\n size: z.number().int().nonnegative().nullable(),\n checksum: z.string().nullable(),\n createdAt: IsoDateTimeSchema.nullable(),\n modifiedAt: IsoDateTimeSchema.nullable(),\n});\n\nexport const AttachmentRefSchema: z.ZodType<AttachmentRef> = z.object({\n kind: z.literal('key'),\n key: z.string().min(1),\n});\n\nexport const AttachmentSchema: z.ZodType<Attachment> = z.object({\n // A foreign tree entry whose key can't be read lists with an empty key.\n ref: z.object({ kind: z.literal('key'), key: z.string() }),\n name: z.string(),\n mimeType: z.string().nullable(),\n description: z.string().nullable(),\n size: z.number().int().nonnegative().nullable(),\n checksum: z.string().nullable(),\n createdAt: IsoDateTimeSchema.nullable(),\n modifiedAt: IsoDateTimeSchema.nullable(),\n index: z.number().int().nonnegative(),\n});\n","import { z } from 'zod';\n\n/** `/Name` icon of a file attachment annotation (ISO 32000-2 §12.5.6.15). */\nexport type FileAttachmentIcon = 'push-pin' | 'paperclip' | 'graph' | 'tag';\n\nexport const FileAttachmentIconSchema: z.ZodType<FileAttachmentIcon> = z.enum([\n 'push-pin',\n 'paperclip',\n 'graph',\n 'tag',\n]);\n","import { z } from 'zod';\n\nimport { AttachmentFileInfoSchema } from '../../../dto/Attachment.schema';\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, colorStyleFields } from '../shared-fields';\nimport { FileAttachmentIconSchema } from './values';\n\n/**\n * The file's metadata; its bytes travel as the `file` resource. What a read\n * adds (size, checksum, creation date) comes from the bytes and is ignored.\n * A create may leave it out when the resource is a `File`, which brings its\n * name and type.\n */\nconst AttachmentFileWriteSchema = z.object({\n name: z.string().min(1),\n mimeType: z.string().nullable().optional(),\n description: z.string().nullable().optional(),\n});\n\n/** A file on the page: its icon fills `rect`, 20×20 at the usual size. */\nexport const FileAttachmentDeclaration = defineKind(\n 'file-attachment',\n {\n ...annotationBaseFields,\n ...colorStyleFields,\n icon: field.data(FileAttachmentIconSchema).optional(),\n /**\n * `null` when the file specification has no embedded file. A write takes\n * what a read returns, so a read can be copied: on a create `null` is the\n * same as leaving it out, and an update that sends back the `null` a read\n * returned changes nothing (a file can't be removed).\n */\n file: field\n .data(AttachmentFileInfoSchema)\n .writes(AttachmentFileWriteSchema)\n .nullable()\n .optional(),\n },\n { file: 'required' },\n);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { FileAttachmentDeclaration } from './declaration';\n\nexport { FileAttachmentDeclaration } from './declaration';\nexport { FileAttachmentIconSchema } from './values';\nexport type { FileAttachmentIcon } from './values';\n\nexport type FileAttachmentAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof FileAttachmentDeclaration,\n C\n>;\n/**\n * `file` is the file's name, MIME type and description; its bytes travel\n * beside the data, as the `file` resource. In an update, `file` replaces all\n * three, and the `file` resource replaces the bytes.\n */\nexport type FileAttachmentDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof FileAttachmentDeclaration,\n C\n>;\nexport type FileAttachmentPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof FileAttachmentDeclaration,\n C\n>;\n\nexport const FileAttachmentDTOSchema = FileAttachmentDeclaration.readSchema;\nexport const FileAttachmentDraftSchema = FileAttachmentDeclaration.createSchema;\nexport const FileAttachmentPatchSchema = FileAttachmentDeclaration.updateSchema;\n\nexport const FileAttachmentKind: AnnotationKindModule<\n 'file-attachment',\n FileAttachmentAnnotation,\n FileAttachmentDraft,\n FileAttachmentPatch\n> = {\n subtype: 'file-attachment',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.FILEATTACHMENT,\n dtoSchema: FileAttachmentDTOSchema,\n draftSchema: FileAttachmentDraftSchema,\n patchSchema: FileAttachmentPatchSchema,\n readBackWrites: FileAttachmentDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { ColorSchema } from '../../base.schema';\nimport type {\n RichTextAlign,\n RichTextDocument,\n RichTextDocumentInput,\n RichTextParagraph,\n RichTextRunStyle,\n} from '../../../dto/RichText';\n\n/** How a paragraph's lines line up: a free text's `textAlign` too. */\nexport const RichTextAlignSchema: z.ZodType<RichTextAlign> = z.enum([\n 'left',\n 'center',\n 'right',\n 'justify',\n]);\n\nconst RichTextRunStyleShape = {\n family: z.string().min(1),\n weight: z.number().int().min(100).max(900),\n italic: z.boolean(),\n size: z.number().nonnegative(),\n color: ColorSchema,\n decoration: z.array(z.enum(['underline', 'line-through', 'word'])),\n script: z.enum(['normal', 'sub', 'super']),\n letterSpacing: z.number(),\n horizontalScale: z.number().positive(),\n unknown: z.string().optional(),\n};\nconst RichTextParagraphPropsShape = {\n align: RichTextAlignSchema,\n dir: z.enum(['ltr', 'rtl']),\n lineHeight: z.number().positive().optional(),\n margins: z\n .object({ top: z.number(), bottom: z.number(), left: z.number(), right: z.number() })\n .optional(),\n textIndent: z.number().optional(),\n unknown: z.string().optional(),\n};\nconst RichTextRunStyleDeltaSchema: z.ZodType<Partial<RichTextRunStyle>> = z\n .object(RichTextRunStyleShape)\n .partial();\nconst RichTextParagraphSchema: z.ZodType<RichTextParagraph> = z\n .object({\n ...RichTextParagraphPropsShape,\n runs: z.array(z.object({ text: z.string(), style: RichTextRunStyleDeltaSchema.optional() })),\n })\n .partial({ align: true, dir: true }) as unknown as z.ZodType<RichTextParagraph>;\nexport const RichTextDocumentSchema: z.ZodType<RichTextDocument> = z.object({\n body: z.object({ ...RichTextRunStyleShape, ...RichTextParagraphPropsShape }),\n paragraphs: z.array(RichTextParagraphSchema),\n}) as unknown as z.ZodType<RichTextDocument>;\nexport const RichTextDocumentInputSchema: z.ZodType<RichTextDocumentInput> = z.object({\n body: z\n .object({ ...RichTextRunStyleShape, ...RichTextParagraphPropsShape })\n .partial()\n .optional(),\n paragraphs: z.array(RichTextParagraphSchema),\n}) as unknown as z.ZodType<RichTextDocumentInput>;\n","import { z } from 'zod';\n\nimport { CalloutLineSchema } from '../../../geometry/schemas';\nimport {\n AnnotationBorderStyleSchema,\n ColorSchema,\n DrawnBorderStyleSchema,\n FreeTextIntentSchema,\n FreeTextIntentWriteSchema,\n LineEndingSchema,\n VerticalAlignmentSchema,\n} from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, boxFields, FontNameSchema } from '../shared-fields';\nimport { RichTextAlignSchema, RichTextDocumentInputSchema, RichTextDocumentSchema } from './values';\n\nexport const FreeTextDeclaration = defineKind('free-text', {\n ...annotationBaseFields,\n ...boxFields,\n /**\n * A create without it is a callout when it has a `calloutLine`, else a\n * plain box. A typewriter another app made is kept as it is.\n */\n intent: field.data(FreeTextIntentSchema).writes(FreeTextIntentWriteSchema).readBack().optional(),\n /** The text's font: the rich text body's. Helvetica when a create leaves it out. */\n fontFamily: field.data(FontNameSchema).optional(),\n /** The body's size in points: 12 when a create leaves it out. */\n fontSize: field.data(z.number().positive()).optional(),\n /** The body's alignment: left when a create leaves it out. */\n textAlign: field.data(RichTextAlignSchema).optional(),\n /** Where the lines sit in the box: top when a create leaves it out. */\n verticalAlign: field.data(VerticalAlignmentSchema).optional(),\n richText: field\n .data(RichTextDocumentSchema)\n .writes(RichTextDocumentInputSchema)\n .optional()\n .space('length'),\n /** The border's color, and a callout line's. */\n color: field.data(ColorSchema).optional(),\n /** The text's color: the rich text body's. Black when a create leaves it out. */\n fontColor: field.data(ColorSchema).optional(),\n interiorColor: field.data(ColorSchema).nullable().optional(),\n opacity: field.data(z.number().min(0).max(1)).optional(),\n strokeWidth: field.data(z.number().nonnegative()).optional(),\n borderStyle: field\n .data(AnnotationBorderStyleSchema)\n .writes(DrawnBorderStyleSchema)\n .readBack()\n .optional(),\n dashArray: field.data(z.array(z.number().nonnegative())).nullable().optional(),\n cloudyIntensity: field.data(z.number().positive()).nullable().optional(),\n calloutLine: field.data(CalloutLineSchema).nullable().optional().space('calloutLine'),\n lineEnding: field.data(LineEndingSchema).nullable().optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { FreeTextDeclaration } from './declaration';\n\nexport { FreeTextDeclaration } from './declaration';\nexport { RichTextDocumentInputSchema, RichTextDocumentSchema } from './values';\n\nexport type FreeTextAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof FreeTextDeclaration,\n C\n>;\nexport type FreeTextDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof FreeTextDeclaration,\n C\n>;\nexport type FreeTextPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof FreeTextDeclaration,\n C\n>;\n\nexport const FreeTextDTOSchema = FreeTextDeclaration.readSchema;\nexport const FreeTextDraftSchema = FreeTextDeclaration.createSchema;\nexport const FreeTextPatchSchema = FreeTextDeclaration.updateSchema;\n\nexport const FreeTextKind: AnnotationKindModule<\n 'free-text',\n FreeTextAnnotation,\n FreeTextDraft,\n FreeTextPatch\n> = {\n subtype: 'free-text',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.FREETEXT,\n dtoSchema: FreeTextDTOSchema,\n draftSchema: FreeTextDraftSchema,\n patchSchema: FreeTextPatchSchema,\n readBackWrites: FreeTextDeclaration.readBackWrites,\n};\n","import { defineKind } from '../../declaration';\nimport { textMarkupFields } from '../shared-fields';\n\nexport const HighlightDeclaration = defineKind('highlight', textMarkupFields);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { HighlightDeclaration } from './declaration';\n\nexport { HighlightDeclaration } from './declaration';\n\nexport type HighlightAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof HighlightDeclaration,\n C\n>;\nexport type HighlightDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof HighlightDeclaration,\n C\n>;\nexport type HighlightPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof HighlightDeclaration,\n C\n>;\n\nexport const HighlightDTOSchema = HighlightDeclaration.readSchema;\nexport const HighlightDraftSchema = HighlightDeclaration.createSchema;\nexport const HighlightPatchSchema = HighlightDeclaration.updateSchema;\n\nexport const HighlightKind: AnnotationKindModule<\n 'highlight',\n HighlightAnnotation,\n HighlightDraft,\n HighlightPatch\n> = {\n subtype: 'highlight',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.HIGHLIGHT,\n dtoSchema: HighlightDTOSchema,\n draftSchema: HighlightDraftSchema,\n patchSchema: HighlightPatchSchema,\n readBackWrites: HighlightDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { InkListSchema, PdfPointSchema } from '../../../geometry/schemas';\nimport { InkIntentSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport {\n annotationBaseFields,\n drawnRectFields,\n geometryStyleFields,\n pointsTurnFields,\n} from '../shared-fields';\n\nexport const InkDeclaration = defineKind('ink', {\n ...annotationBaseFields,\n ...geometryStyleFields,\n /** More than 0 on a write: ink has no fill, so a line of 0 draws nothing. */\n strokeWidth: field\n .data(z.number().nonnegative())\n .writes(z.number().positive())\n .readBack()\n .optional(),\n ...drawnRectFields,\n /** At least one stroke on a write, and no stroke without points. */\n inkList: field\n .data(InkListSchema)\n .writes(z.array(z.array(PdfPointSchema).min(1)).min(1))\n .readBack()\n .space('strokes'),\n intent: field.data(InkIntentSchema).nullable().optional(),\n ...pointsTurnFields,\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { InkDeclaration } from './declaration';\n\nexport { InkDeclaration } from './declaration';\n\nexport type InkAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof InkDeclaration,\n C\n>;\nexport type InkDraft<C extends Coordinates = PageCoordinates> = CreateOf<typeof InkDeclaration, C>;\nexport type InkPatch<C extends Coordinates = PageCoordinates> = UpdateOf<typeof InkDeclaration, C>;\n\nexport const InkDTOSchema = InkDeclaration.readSchema;\nexport const InkDraftSchema = InkDeclaration.createSchema;\nexport const InkPatchSchema = InkDeclaration.updateSchema;\n\nexport const InkKind: AnnotationKindModule<'ink', InkAnnotation, InkDraft, InkPatch> = {\n subtype: 'ink',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.INK,\n dtoSchema: InkDTOSchema,\n draftSchema: InkDraftSchema,\n patchSchema: InkPatchSchema,\n readBackWrites: InkDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { LineIntentSchema, LineLeaderSchema } from '../../../dto/Measure.schema';\nimport { LinePointsSchema } from '../../../geometry/schemas';\nimport { LineEndingsSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport {\n annotationBaseFields,\n drawnRectFields,\n filledStyleFields,\n measureField,\n pointsTurnFields,\n} from '../shared-fields';\n\nexport const LineDeclaration = defineKind('line', {\n ...annotationBaseFields,\n ...filledStyleFields,\n ...drawnRectFields,\n linePoints: field.data(LinePointsSchema).space('linePoints'),\n lineEndings: field.data(LineEndingsSchema).optional(),\n ...pointsTurnFields,\n intent: field.data(LineIntentSchema).nullable().optional(),\n measure: measureField,\n /** `/Cap`: paint `/Contents` on the line. */\n captionEnabled: field.data(z.boolean()).nullable().optional(),\n /** `/CP`. */\n captionPosition: field.data(z.enum(['inline', 'top'])).optional(),\n /** `/CO`, along the line and its normal; `null` is the normal position. */\n captionOffset: field\n .data(z.object({ along: z.number(), perpendicular: z.number() }))\n .nullable()\n .optional(),\n /** `/LL`, `/LLE` and `/LLO`. */\n leader: field.data(LineLeaderSchema).nullable().optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { LineDeclaration } from './declaration';\n\nexport { LineDeclaration } from './declaration';\n\nexport type LineAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof LineDeclaration,\n C\n>;\nexport type LineDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof LineDeclaration,\n C\n>;\nexport type LinePatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof LineDeclaration,\n C\n>;\n\nexport const LineDTOSchema = LineDeclaration.readSchema;\nexport const LineDraftSchema = LineDeclaration.createSchema;\nexport const LinePatchSchema = LineDeclaration.updateSchema;\n\nexport const LineKind: AnnotationKindModule<'line', LineAnnotation, LineDraft, LinePatch> = {\n subtype: 'line',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.LINE,\n dtoSchema: LineDTOSchema,\n draftSchema: LineDraftSchema,\n patchSchema: LinePatchSchema,\n readBackWrites: LineDeclaration.readBackWrites,\n};\n","import { defineKind, field } from '../../declaration';\nimport { annotationBaseFields } from '../shared-fields';\nimport { FileLinkTargetSchema, FileLinkTargetWritableSchema } from './values';\n\nexport const LinkDeclaration = defineKind('link', {\n ...annotationBaseFields,\n target: field\n .data(FileLinkTargetSchema)\n .writes(FileLinkTargetWritableSchema)\n .nullable()\n .readBack()\n .space('linkTarget'),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { LinkDeclaration } from './declaration';\n\nexport { LinkDeclaration } from './declaration';\nexport { PdfDestinationSchema, PdfLinkTargetSchema, PdfLinkTargetWritableSchema } from './values';\n\nexport type LinkAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof LinkDeclaration,\n C\n>;\nexport type LinkDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof LinkDeclaration,\n C\n>;\nexport type LinkPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof LinkDeclaration,\n C\n>;\n\nexport const LinkDTOSchema = LinkDeclaration.readSchema;\nexport const LinkDraftSchema = LinkDeclaration.createSchema;\nexport const LinkPatchSchema = LinkDeclaration.updateSchema;\n\nexport const LinkKind: AnnotationKindModule<'link', LinkAnnotation, LinkDraft, LinkPatch> = {\n subtype: 'link',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.LINK,\n dtoSchema: LinkDTOSchema,\n draftSchema: LinkDraftSchema,\n patchSchema: LinkPatchSchema,\n readBackWrites: LinkDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { PolygonIntentSchema } from '../../../dto/Measure.schema';\nimport { PdfPointSchema } from '../../../geometry/schemas';\nimport { defineKind, field } from '../../declaration';\nimport { measureField, shapeCaptionFields, vertexFields } from '../shared-fields';\n\nexport const PolygonDeclaration = defineKind('polygon', {\n ...vertexFields,\n /** At least three points on a write; fewer enclose nothing. */\n vertices: field\n .data(z.array(PdfPointSchema))\n .writes(z.array(PdfPointSchema).min(3))\n .readBack()\n .space('points'),\n ...shapeCaptionFields,\n intent: field.data(PolygonIntentSchema).nullable().optional(),\n measure: measureField,\n cloudyIntensity: field.data(z.number().positive()).nullable().optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { PolygonDeclaration } from './declaration';\n\nexport { PolygonDeclaration } from './declaration';\n\nexport type PolygonAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof PolygonDeclaration,\n C\n>;\nexport type PolygonDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof PolygonDeclaration,\n C\n>;\nexport type PolygonPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof PolygonDeclaration,\n C\n>;\n\nexport const PolygonDTOSchema = PolygonDeclaration.readSchema;\nexport const PolygonDraftSchema = PolygonDeclaration.createSchema;\nexport const PolygonPatchSchema = PolygonDeclaration.updateSchema;\n\nexport const PolygonKind: AnnotationKindModule<\n 'polygon',\n PolygonAnnotation,\n PolygonDraft,\n PolygonPatch\n> = {\n subtype: 'polygon',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.POLYGON,\n dtoSchema: PolygonDTOSchema,\n draftSchema: PolygonDraftSchema,\n patchSchema: PolygonPatchSchema,\n readBackWrites: PolygonDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { PolylineIntentSchema } from '../../../dto/Measure.schema';\nimport { PdfPointSchema } from '../../../geometry/schemas';\nimport { LineEndingsSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport { measureField, shapeCaptionFields, vertexFields } from '../shared-fields';\n\nexport const PolylineDeclaration = defineKind('polyline', {\n ...vertexFields,\n /** At least two points on a write; fewer draw nothing. */\n vertices: field\n .data(z.array(PdfPointSchema))\n .writes(z.array(PdfPointSchema).min(2))\n .readBack()\n .space('points'),\n ...shapeCaptionFields,\n intent: field.data(PolylineIntentSchema).nullable().optional(),\n measure: measureField,\n lineEndings: field.data(LineEndingsSchema).optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { PolylineDeclaration } from './declaration';\n\nexport { PolylineDeclaration } from './declaration';\n\nexport type PolylineAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof PolylineDeclaration,\n C\n>;\nexport type PolylineDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof PolylineDeclaration,\n C\n>;\nexport type PolylinePatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof PolylineDeclaration,\n C\n>;\n\nexport const PolylineDTOSchema = PolylineDeclaration.readSchema;\nexport const PolylineDraftSchema = PolylineDeclaration.createSchema;\nexport const PolylinePatchSchema = PolylineDeclaration.updateSchema;\n\nexport const PolylineKind: AnnotationKindModule<\n 'polyline',\n PolylineAnnotation,\n PolylineDraft,\n PolylinePatch\n> = {\n subtype: 'polyline',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.POLYLINE,\n dtoSchema: PolylineDTOSchema,\n draftSchema: PolylineDraftSchema,\n patchSchema: PolylinePatchSchema,\n readBackWrites: PolylineDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { AnnotationRefSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields } from '../shared-fields';\n\n/** The window that shows its parent annotation's text. */\nexport const PopupDeclaration = defineKind('popup', {\n ...annotationBaseFields,\n /**\n * `/Parent`: the annotation this popup shows. Required on create; `null`\n * on a read of a popup whose PDF names none, which an update may send\n * back unchanged.\n */\n parent: field.data(AnnotationRefSchema).nullableOnRead().readBack(),\n /** `/Open`: whether the window is shown open. `false` when the PDF doesn't say. */\n open: field.data(z.boolean()).optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { PopupDeclaration } from './declaration';\n\nexport { PopupDeclaration } from './declaration';\n\nexport type PopupAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof PopupDeclaration,\n C\n>;\nexport type PopupDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof PopupDeclaration,\n C\n>;\nexport type PopupPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof PopupDeclaration,\n C\n>;\n\nexport const PopupDTOSchema = PopupDeclaration.readSchema;\nexport const PopupDraftSchema = PopupDeclaration.createSchema;\nexport const PopupPatchSchema = PopupDeclaration.updateSchema;\n\nexport const PopupKind: AnnotationKindModule<'popup', PopupAnnotation, PopupDraft, PopupPatch> = {\n subtype: 'popup',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.POPUP,\n dtoSchema: PopupDTOSchema,\n draftSchema: PopupDraftSchema,\n patchSchema: PopupPatchSchema,\n readBackWrites: PopupDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { PdfQuadSchema, PdfRectSchema } from '../../../geometry/schemas';\nimport { ColorSchema, TextAlignmentSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, colorStyleFields, FontNameSchema } from '../shared-fields';\n\nexport const RedactDeclaration = defineKind('redact', {\n ...annotationBaseFields,\n ...colorStyleFields,\n /** Worked out from the quads when a create gives quads and no `rect`. */\n rect: field.data(PdfRectSchema).optional().space('box'),\n quadPoints: field.data(z.array(PdfQuadSchema)).optional().space('quads'),\n interiorColor: field.data(ColorSchema).nullable().optional(),\n overlayText: field.data(z.string()).nullable().optional(),\n repeat: field.data(z.boolean()).optional(),\n /** A standard font or a registered key, as on free text. */\n fontFamily: field.data(FontNameSchema).optional(),\n /** `0` fits the label to the region. */\n fontSize: field.data(z.number().nonnegative()).optional(),\n fontColor: field.data(ColorSchema).optional(),\n textAlign: field.data(TextAlignmentSchema).optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { RedactDeclaration } from './declaration';\n\nexport { RedactDeclaration } from './declaration';\n\nexport type RedactAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof RedactDeclaration,\n C\n>;\nexport type RedactDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof RedactDeclaration,\n C\n>;\nexport type RedactPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof RedactDeclaration,\n C\n>;\n\nexport const RedactDTOSchema = RedactDeclaration.readSchema;\nexport const RedactDraftSchema = RedactDeclaration.createSchema;\nexport const RedactPatchSchema = RedactDeclaration.updateSchema;\n\nexport const RedactKind: AnnotationKindModule<\n 'redact',\n RedactAnnotation,\n RedactDraft,\n RedactPatch\n> = {\n subtype: 'redact',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.REDACT,\n dtoSchema: RedactDTOSchema,\n draftSchema: RedactDraftSchema,\n patchSchema: RedactPatchSchema,\n readBackWrites: RedactDeclaration.readBackWrites,\n};\n","import { defineKind } from '../../declaration';\nimport { shapeFields } from '../shared-fields';\n\nexport const SquareDeclaration = defineKind('square', shapeFields);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { SquareDeclaration } from './declaration';\n\nexport { SquareDeclaration } from './declaration';\n\nexport type SquareAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof SquareDeclaration,\n C\n>;\nexport type SquareDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof SquareDeclaration,\n C\n>;\nexport type SquarePatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof SquareDeclaration,\n C\n>;\n\nexport const SquareDTOSchema = SquareDeclaration.readSchema;\nexport const SquareDraftSchema = SquareDeclaration.createSchema;\nexport const SquarePatchSchema = SquareDeclaration.updateSchema;\n\nexport const SquareKind: AnnotationKindModule<\n 'square',\n SquareAnnotation,\n SquareDraft,\n SquarePatch\n> = {\n subtype: 'square',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.SQUARE,\n dtoSchema: SquareDTOSchema,\n draftSchema: SquareDraftSchema,\n patchSchema: SquarePatchSchema,\n readBackWrites: SquareDeclaration.readBackWrites,\n};\n","import { defineKind } from '../../declaration';\nimport { textMarkupFields } from '../shared-fields';\n\nexport const SquigglyDeclaration = defineKind('squiggly', textMarkupFields);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { SquigglyDeclaration } from './declaration';\n\nexport { SquigglyDeclaration } from './declaration';\n\nexport type SquigglyAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof SquigglyDeclaration,\n C\n>;\nexport type SquigglyDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof SquigglyDeclaration,\n C\n>;\nexport type SquigglyPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof SquigglyDeclaration,\n C\n>;\n\nexport const SquigglyDTOSchema = SquigglyDeclaration.readSchema;\nexport const SquigglyDraftSchema = SquigglyDeclaration.createSchema;\nexport const SquigglyPatchSchema = SquigglyDeclaration.updateSchema;\n\nexport const SquigglyKind: AnnotationKindModule<\n 'squiggly',\n SquigglyAnnotation,\n SquigglyDraft,\n SquigglyPatch\n> = {\n subtype: 'squiggly',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.SQUIGGLY,\n dtoSchema: SquigglyDTOSchema,\n draftSchema: SquigglyDraftSchema,\n patchSchema: SquigglyPatchSchema,\n readBackWrites: SquigglyDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\n/**\n * How a stamp's appearance is scaled into its box (CSS `object-fit`\n * vocabulary): `'contain'` keeps the aspect ratio and stays fully visible,\n * `'cover'` keeps the aspect ratio and fills the box, cropping if needed, and\n * `'fill'` stretches.\n */\nexport type StampFit = 'contain' | 'cover' | 'fill';\n\nexport const StampFitSchema: z.ZodType<StampFit> = z.enum(['contain', 'cover', 'fill']);\n","import { z } from 'zod';\n\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, boxFields } from '../shared-fields';\nimport { StampFitSchema } from './values';\n\nexport const StampDeclaration = defineKind(\n 'stamp',\n {\n ...annotationBaseFields,\n ...boxFields,\n /** `/Name`: the stamp's label, such as `Approved`. */\n name: field.data(z.string()).nullable().optional(),\n /**\n * How the drawing is scaled into the box, and re-fit when the box changes\n * (`/EMBD_Metadata/AppearanceFit`). `null` when the PDF doesn't record it,\n * as for a stamp another tool made; the engine then fits with `'fill'`,\n * the way a PDF places any appearance in its `/Rect`. A create without it\n * fits with `'contain'` and records that.\n */\n fit: field.data(StampFitSchema).nullable().optional(),\n /** `/CA`, painted once over the whole drawing. */\n opacity: field.data(z.number().min(0).max(1)).optional(),\n },\n { appearance: 'required' },\n);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { StampDeclaration } from './declaration';\n\nexport { StampDeclaration } from './declaration';\nexport { StampFitSchema } from './values';\nexport type { StampFit } from './values';\n\nexport type StampAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof StampDeclaration,\n C\n>;\n/** The drawing travels beside the data, as the `appearance` resource; `fit` says how it fills the box. */\nexport type StampDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof StampDeclaration,\n C\n>;\nexport type StampPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof StampDeclaration,\n C\n>;\n\nexport const StampDTOSchema = StampDeclaration.readSchema;\nexport const StampDraftSchema = StampDeclaration.createSchema;\nexport const StampPatchSchema = StampDeclaration.updateSchema;\n\nexport const StampKind: AnnotationKindModule<'stamp', StampAnnotation, StampDraft, StampPatch> = {\n subtype: 'stamp',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.STAMP,\n dtoSchema: StampDTOSchema,\n draftSchema: StampDraftSchema,\n patchSchema: StampPatchSchema,\n readBackWrites: StampDeclaration.readBackWrites,\n};\n","import { StrikeoutIntentSchema } from '../../base.schema';\nimport { defineKind, field } from '../../declaration';\nimport { textMarkupFields } from '../shared-fields';\n\nexport const StrikeoutDeclaration = defineKind('strikeout', {\n ...textMarkupFields,\n intent: field.data(StrikeoutIntentSchema).nullable().optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { StrikeoutDeclaration } from './declaration';\n\nexport { StrikeoutDeclaration } from './declaration';\n\nexport type StrikeoutAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof StrikeoutDeclaration,\n C\n>;\nexport type StrikeoutDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof StrikeoutDeclaration,\n C\n>;\nexport type StrikeoutPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof StrikeoutDeclaration,\n C\n>;\n\nexport const StrikeoutDTOSchema = StrikeoutDeclaration.readSchema;\nexport const StrikeoutDraftSchema = StrikeoutDeclaration.createSchema;\nexport const StrikeoutPatchSchema = StrikeoutDeclaration.updateSchema;\n\nexport const StrikeoutKind: AnnotationKindModule<\n 'strikeout',\n StrikeoutAnnotation,\n StrikeoutDraft,\n StrikeoutPatch\n> = {\n subtype: 'strikeout',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.STRIKEOUT,\n dtoSchema: StrikeoutDTOSchema,\n draftSchema: StrikeoutDraftSchema,\n patchSchema: StrikeoutPatchSchema,\n readBackWrites: StrikeoutDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\n/** `/Name` icon of a text (sticky note) annotation. */\nexport type NoteIcon =\n | 'comment'\n | 'key'\n | 'note'\n | 'help'\n | 'new-paragraph'\n | 'paragraph'\n | 'insert';\n\nexport const NoteIconSchema: z.ZodType<NoteIcon> = z.enum([\n 'comment',\n 'key',\n 'note',\n 'help',\n 'new-paragraph',\n 'paragraph',\n 'insert',\n]);\n","import { z } from 'zod';\n\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, colorStyleFields } from '../shared-fields';\nimport { NoteIconSchema } from './values';\n\n/** A note: its icon fills `rect`, 20×20 at the usual size. */\nexport const TextDeclaration = defineKind('text', {\n ...annotationBaseFields,\n ...colorStyleFields,\n icon: field.data(NoteIconSchema).optional(),\n /**\n * `/Open`: whether the note's window shows open. Kept equal to its\n * popup's `open`: a write sets both. `false` when the PDF doesn't say.\n */\n open: field.data(z.boolean()).optional(),\n /** `/State`: standard states in lowercase, custom ones as written. */\n state: field.data(z.string().min(1)).nullable().optional(),\n stateModel: field.data(z.string().min(1)).nullable().optional(),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { TextDeclaration } from './declaration';\n\nexport { TextDeclaration } from './declaration';\nexport type { NoteIcon } from './values';\nexport { NoteIconSchema } from './values';\n\nexport type TextAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof TextDeclaration,\n C\n>;\nexport type TextDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof TextDeclaration,\n C\n>;\nexport type TextPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof TextDeclaration,\n C\n>;\n\nexport const TextDTOSchema = TextDeclaration.readSchema;\nexport const TextDraftSchema = TextDeclaration.createSchema;\nexport const TextPatchSchema = TextDeclaration.updateSchema;\n\nexport const TextKind: AnnotationKindModule<'text', TextAnnotation, TextDraft, TextPatch> = {\n subtype: 'text',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.TEXT,\n dtoSchema: TextDTOSchema,\n draftSchema: TextDraftSchema,\n patchSchema: TextPatchSchema,\n readBackWrites: TextDeclaration.readBackWrites,\n};\n","import { defineKind } from '../../declaration';\nimport { textMarkupFields } from '../shared-fields';\n\nexport const UnderlineDeclaration = defineKind('underline', textMarkupFields);\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { UnderlineDeclaration } from './declaration';\n\nexport { UnderlineDeclaration } from './declaration';\n\nexport type UnderlineAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof UnderlineDeclaration,\n C\n>;\nexport type UnderlineDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof UnderlineDeclaration,\n C\n>;\nexport type UnderlinePatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof UnderlineDeclaration,\n C\n>;\n\nexport const UnderlineDTOSchema = UnderlineDeclaration.readSchema;\nexport const UnderlineDraftSchema = UnderlineDeclaration.createSchema;\nexport const UnderlinePatchSchema = UnderlineDeclaration.updateSchema;\n\nexport const UnderlineKind: AnnotationKindModule<\n 'underline',\n UnderlineAnnotation,\n UnderlineDraft,\n UnderlinePatch\n> = {\n subtype: 'underline',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.UNDERLINE,\n dtoSchema: UnderlineDTOSchema,\n draftSchema: UnderlineDraftSchema,\n patchSchema: UnderlinePatchSchema,\n readBackWrites: UnderlineDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\n\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields } from '../shared-fields';\n\n/** An annotation of a type the engine doesn't model: only the shared fields are read. */\nexport const UnsupportedDeclaration = defineKind('unsupported', {\n ...annotationBaseFields,\n rawSubtypeCode: field.engine(z.number().int()),\n rawSubtypeName: field.engine(z.string()).nullable(),\n});\n","import { z } from 'zod';\n\nimport type { ReadOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { UnsupportedDeclaration } from './declaration';\n\nexport { UnsupportedDeclaration } from './declaration';\n\nexport type UnsupportedAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof UnsupportedDeclaration,\n C\n>;\n/** An annotation of a type the engine doesn't model can't be created or updated. */\nexport type UnsupportedDraft = never;\nexport type UnsupportedPatch = never;\n\nexport const UnsupportedDTOSchema = UnsupportedDeclaration.readSchema;\nexport const UnsupportedDraftSchema: z.ZodType<never> = z.never();\nexport const UnsupportedPatchSchema: z.ZodType<never> = z.never();\n\nexport const UnsupportedKind: AnnotationKindModule<\n 'unsupported',\n UnsupportedAnnotation,\n UnsupportedDraft,\n UnsupportedPatch\n> = {\n subtype: 'unsupported',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.UNKNOWN,\n dtoSchema: UnsupportedDTOSchema,\n draftSchema: UnsupportedDraftSchema,\n patchSchema: UnsupportedPatchSchema,\n readBackWrites: UnsupportedDeclaration.readBackWrites,\n};\n","import { z } from 'zod';\nimport type { FormFieldRef } from './FormFieldRef';\n\n/** Wire form of `FormFieldRef` — see the type. */\nexport const FormFieldRefSchema: z.ZodType<FormFieldRef> = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('objectNumber'),\n objectNumber: z.number().int().positive(),\n }),\n z.object({\n kind: z.literal('fqn'),\n name: z.string().min(1),\n }),\n]);\n","import { z } from 'zod';\n\nimport {\n ColorSchema,\n TextAlignmentSchema,\n WidgetBorderStyleSchema,\n WidgetCheckStyleSchema,\n} from '../../base.schema';\nimport {\n FileAnnotationActionsSchema,\n FileWidgetActionsPatchSchema,\n} from '../../../dto/PdfAction.schema';\nimport { FormFieldRefSchema } from '../../../identity/FormFieldRef.schema';\nimport { defineKind, field } from '../../declaration';\nimport { annotationBaseFields, FontNameSchema, widgetBoxFields } from '../shared-fields';\n\nexport const WidgetDeclaration = defineKind('widget', {\n ...annotationBaseFields,\n ...widgetBoxFields,\n color: field.data(ColorSchema).nullable().optional(),\n interiorColor: field.data(ColorSchema).nullable().optional(),\n strokeWidth: field.data(z.number().nonnegative()).optional(),\n borderStyle: field.data(WidgetBorderStyleSchema).optional(),\n /** The border's dash pattern (`/BS /D`), for a dashed border; `null` for the default (3 on, 3 off). */\n dashArray: field.data(z.array(z.number().nonnegative())).nullable().optional(),\n /**\n * The font `/DA` names, as a free text names its font: a standard font's\n * name, a registered font's key, or the family of a font the document has.\n * `null` when `/DA` names none. A write takes a standard name or a key.\n */\n fontFamily: field.data(FontNameSchema).nullable().optional(),\n fontSize: field.data(z.number().nonnegative()).nullable().optional(),\n fontColor: field.data(ColorSchema).nullable().optional(),\n textAlign: field.data(TextAlignmentSchema).optional(),\n /**\n * A push button's caption (`/MK /CA`), drawn centred on the button.\n * `null` for every other widget, whose `/MK /CA` is no caption (a\n * checkbox's is its symbol); a caption written to one is refused.\n */\n caption: field.data(z.string()).nullable().optional(),\n /**\n * The symbol a checkbox's or radio button's widget shows while it's on\n * (`/MK /CA`); `null` shows its family's own, a checkbox's check and a\n * radio button's circle. Always `null` for other widgets, and one written\n * to another widget is refused.\n */\n checkStyle: field.data(WidgetCheckStyleSchema).nullable().optional(),\n /**\n * `/A` and `/AA`: what the widget does when clicked, entered, focused and\n * so on. A write sets an event's action, `null` removes it, an event left\n * out keeps what it has; `null` for the whole removes them all. The\n * actions a read returns, sent back unchanged, are kept.\n */\n actions: field\n .data(FileAnnotationActionsSchema)\n .writes(FileWidgetActionsPatchSchema)\n .readBack()\n .nullable()\n .optional()\n .space('actions'),\n /** The field the widget belongs to, or `null` when it's in none. */\n field: field.engine(FormFieldRefSchema).nullable(),\n /** Its field's family, so a widget reads as what it is without the form. */\n fieldFamily: field.engine(\n z.enum([\n 'text',\n 'checkbox',\n 'radio',\n 'combobox',\n 'listbox',\n 'pushbutton',\n 'signature',\n 'unknown',\n ]),\n ),\n});\n","import type { CreateOf, ReadOf, UpdateOf } from '../../declaration';\nimport type { Coordinates, PageCoordinates } from '../../../pageSpace/coordinates';\nimport type { AnnotationKindModule } from '../../registry';\nimport { PdfAnnotationSubtypeCode } from '../../subtype';\nimport { WidgetDeclaration } from './declaration';\n\nexport { WidgetDeclaration } from './declaration';\n\nexport type WidgetAnnotation<C extends Coordinates = PageCoordinates> = ReadOf<\n typeof WidgetDeclaration,\n C\n>;\nexport type WidgetDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n typeof WidgetDeclaration,\n C\n>;\nexport type WidgetPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n typeof WidgetDeclaration,\n C\n>;\n\nexport const WidgetDTOSchema = WidgetDeclaration.readSchema;\nexport const WidgetDraftSchema = WidgetDeclaration.createSchema;\nexport const WidgetPatchSchema = WidgetDeclaration.updateSchema;\n\nexport const WidgetKind: AnnotationKindModule<\n 'widget',\n WidgetAnnotation,\n WidgetDraft,\n WidgetPatch\n> = {\n subtype: 'widget',\n pdfSubtypeCode: PdfAnnotationSubtypeCode.WIDGET,\n dtoSchema: WidgetDTOSchema,\n draftSchema: WidgetDraftSchema,\n patchSchema: WidgetPatchSchema,\n readBackWrites: WidgetDeclaration.readBackWrites,\n};\n","import type { CreateOf, ReadOf, UpdateOf } from '../declaration';\nimport type { Coordinates, PageCoordinates } from '../../pageSpace/coordinates';\nimport { CaretDeclaration } from './caret/declaration';\nimport { CircleDeclaration } from './circle/declaration';\nimport { FileAttachmentDeclaration } from './file-attachment/declaration';\nimport { FreeTextDeclaration } from './free-text/declaration';\nimport { HighlightDeclaration } from './highlight/declaration';\nimport { InkDeclaration } from './ink/declaration';\nimport { LineDeclaration } from './line/declaration';\nimport { LinkDeclaration } from './link/declaration';\nimport { PolygonDeclaration } from './polygon/declaration';\nimport { PolylineDeclaration } from './polyline/declaration';\nimport { PopupDeclaration } from './popup/declaration';\nimport { RedactDeclaration } from './redact/declaration';\nimport { SquareDeclaration } from './square/declaration';\nimport { SquigglyDeclaration } from './squiggly/declaration';\nimport { StampDeclaration } from './stamp/declaration';\nimport { StrikeoutDeclaration } from './strikeout/declaration';\nimport { TextDeclaration } from './text/declaration';\nimport { UnderlineDeclaration } from './underline/declaration';\nimport { UnsupportedDeclaration } from './unsupported/declaration';\nimport { WidgetDeclaration } from './widget/declaration';\n\n/** Every annotation kind's declaration, in the engine's catalog order. */\nexport const ANNOTATION_DECLARATIONS = [\n HighlightDeclaration,\n UnderlineDeclaration,\n SquigglyDeclaration,\n StrikeoutDeclaration,\n CircleDeclaration,\n SquareDeclaration,\n PolygonDeclaration,\n PolylineDeclaration,\n LineDeclaration,\n LinkDeclaration,\n InkDeclaration,\n FreeTextDeclaration,\n CaretDeclaration,\n TextDeclaration,\n StampDeclaration,\n FileAttachmentDeclaration,\n WidgetDeclaration,\n RedactDeclaration,\n PopupDeclaration,\n UnsupportedDeclaration,\n] as const;\n\nexport type AnnotationDeclaration = (typeof ANNOTATION_DECLARATIONS)[number];\n\n/** The kinds a create or an update can name: every kind the engine models. */\nexport type WritableAnnotationDeclaration = Exclude<\n AnnotationDeclaration,\n typeof UnsupportedDeclaration\n>;\n\n/**\n * The complete read of any annotation, discriminated by `subtype`: in page\n * space, or in the file's coordinates with `PdfCoordinates`.\n */\nexport type Annotation<C extends Coordinates = PageCoordinates> = ReadOf<AnnotationDeclaration, C>;\n\n/**\n * What `create()` takes, and what the worker protocol and the HTTP surface\n * carry: pure JSON. Bytes travel beside it, as resources\n * (`annotation/resources.ts`).\n */\nexport type AnnotationDraft<C extends Coordinates = PageCoordinates> = CreateOf<\n WritableAnnotationDeclaration,\n C\n>;\n\n/** What `update()` takes. */\nexport type AnnotationPatch<C extends Coordinates = PageCoordinates> = UpdateOf<\n WritableAnnotationDeclaration,\n C\n>;\n\n/** Looks up a kind's declaration by its `subtype`. */\nexport function declarationOf(subtype: string): AnnotationDeclaration | null {\n return ANNOTATION_DECLARATIONS.find((declaration) => declaration.subtype === subtype) ?? null;\n}\n","import { z } from 'zod';\n\nimport type { WidgetAnnotation, WidgetPatch } from './widget';\nimport { WidgetDeclaration } from './widget/declaration';\n\nconst WIDGET_STYLE_NAMES = [\n 'color',\n 'interiorColor',\n 'strokeWidth',\n 'borderStyle',\n 'dashArray',\n 'fontFamily',\n 'fontSize',\n 'fontColor',\n 'textAlign',\n 'caption',\n 'checkStyle',\n] as const;\n\ntype WidgetStyleName = (typeof WIDGET_STYLE_NAMES)[number];\n\n/** A widget's appearance characteristics (`/MK`, a push button's caption among them) and default appearance (`/DA`). */\nexport type WidgetStyleFields = Pick<WidgetAnnotation, WidgetStyleName>;\nexport type WidgetStyleDraftFields = Pick<WidgetPatch, WidgetStyleName>;\nexport type WidgetStylePatchFields = WidgetStyleDraftFields;\nexport type WidgetAppearance = WidgetStyleDraftFields;\n\n/** The style fields' schemas, as a widget annotation's update takes them. */\nexport const WIDGET_STYLE_SHAPE: Record<WidgetStyleName, z.ZodTypeAny> = Object.fromEntries(\n WIDGET_STYLE_NAMES.map((name) => [name, WidgetDeclaration.shapes.update[name]!]),\n) as Record<WidgetStyleName, z.ZodTypeAny>;\n\nexport const WidgetAppearanceSchema = z\n .object(WIDGET_STYLE_SHAPE)\n .strict() as unknown as z.ZodType<WidgetAppearance>;\n","import { z } from 'zod';\n\nimport type { PdfCoordinates } from '../../pageSpace/coordinates';\nimport { CaretKind } from './caret';\nimport { CircleKind } from './circle';\nimport { FileAttachmentKind } from './file-attachment';\nimport { FreeTextKind } from './free-text';\nimport { HighlightKind } from './highlight';\nimport { InkKind } from './ink';\nimport { LineKind } from './line';\nimport { LinkKind } from './link';\nimport { PolygonKind } from './polygon';\nimport { PolylineKind } from './polyline';\nimport { PopupKind } from './popup';\nimport { RedactKind } from './redact';\nimport { SquareKind } from './square';\nimport { SquigglyKind } from './squiggly';\nimport { StampKind } from './stamp';\nimport { StrikeoutKind } from './strikeout';\nimport { TextKind } from './text';\nimport { UnderlineKind } from './underline';\nimport { UnsupportedKind } from './unsupported';\nimport { WidgetKind } from './widget';\nimport { ANNOTATION_DECLARATIONS, declarationOf } from './declarations';\nimport type { Annotation, AnnotationDraft, AnnotationPatch } from './declarations';\n\nexport * from './highlight';\nexport * from './underline';\nexport * from './squiggly';\nexport * from './strikeout';\nexport * from './circle';\nexport * from './square';\nexport * from './polygon';\nexport * from './polyline';\nexport * from './line';\nexport * from './link';\nexport * from './ink';\nexport * from './free-text';\nexport * from './caret';\nexport * from './text';\nexport * from './stamp';\nexport * from './file-attachment';\nexport * from './widget';\nexport * from './redact';\nexport * from './popup';\nexport * from './unsupported';\nexport * from './text-markup.shared';\nexport * from './shape.shared';\nexport * from './style.shared';\nexport * from './vertex.shared';\nexport * from './widget.shared';\nexport { ANNOTATION_DECLARATIONS, declarationOf };\nexport type {\n AnnotationDeclaration,\n Annotation,\n AnnotationDraft,\n AnnotationPatch,\n WritableAnnotationDeclaration,\n} from './declarations';\n\nexport type { CreateOf, ReadOf, UpdateOf } from '../declaration';\n\n/**\n * The closed-world catalog of currently-implemented annotation kinds.\n *\n * Adding a new subtype is one folder under `kinds/<name>/` with its\n * `declaration.ts` and `index.ts`, and one entry in this tuple and in\n * `declarations.ts`. The discriminated unions and zod discriminator below regenerate\n * automatically; no other file in the package needs to change.\n *\n * Every subtype the engine has not yet wired up rides on\n * `UnsupportedKind`. The wire format is stable: when a per-subtype reader\n * lands later, the engine starts emitting the dedicated DTO instead of\n * `unsupported`, and existing clients widen their handling without a\n * version bump.\n */\nexport const ANNOTATION_KINDS = [\n HighlightKind,\n UnderlineKind,\n SquigglyKind,\n StrikeoutKind,\n CircleKind,\n SquareKind,\n PolygonKind,\n PolylineKind,\n LineKind,\n LinkKind,\n InkKind,\n FreeTextKind,\n CaretKind,\n TextKind,\n StampKind,\n FileAttachmentKind,\n WidgetKind,\n RedactKind,\n PopupKind,\n UnsupportedKind,\n] as const;\n\nexport type AnnotationKind = (typeof ANNOTATION_KINDS)[number];\n\nexport type AnnotationSubtypeOfKind = AnnotationKind['subtype'];\n\n/**\n * Lookup helper for the engine's reader catalog and identity resolver.\n * O(1) by `subtype` literal at runtime.\n */\nexport const KIND_BY_SUBTYPE: Readonly<{\n [K in AnnotationKind as K['subtype']]: K;\n}> = Object.freeze(\n Object.fromEntries(ANNOTATION_KINDS.map((kind) => [kind.subtype, kind])) as Record<\n AnnotationSubtypeOfKind,\n AnnotationKind\n >,\n) as Readonly<{ [K in AnnotationKind as K['subtype']]: K }>;\n\n/**\n * Runtime zod schema for the discriminated union. The cast unwinds the\n * generic schema map into the specific tuple form `discriminatedUnion`\n * needs. Servers and cloud clients use this to validate every annotation\n * payload on the wire.\n */\nexport const AnnotationSchema: z.ZodType<Annotation> = z.discriminatedUnion('subtype', [\n HighlightKind.dtoSchema,\n UnderlineKind.dtoSchema,\n SquigglyKind.dtoSchema,\n StrikeoutKind.dtoSchema,\n CircleKind.dtoSchema,\n SquareKind.dtoSchema,\n PolygonKind.dtoSchema,\n PolylineKind.dtoSchema,\n LineKind.dtoSchema,\n LinkKind.dtoSchema,\n InkKind.dtoSchema,\n FreeTextKind.dtoSchema,\n CaretKind.dtoSchema,\n TextKind.dtoSchema,\n StampKind.dtoSchema,\n FileAttachmentKind.dtoSchema,\n WidgetKind.dtoSchema,\n RedactKind.dtoSchema,\n PopupKind.dtoSchema,\n UnsupportedKind.dtoSchema,\n] as unknown as [\n z.ZodDiscriminatedUnionOption<'subtype'>,\n ...z.ZodDiscriminatedUnionOption<'subtype'>[],\n]) as unknown as z.ZodType<Annotation>;\n\n/** Validates a create's data against its kind. */\nexport const AnnotationDraftSchema: z.ZodType<AnnotationDraft> = z.discriminatedUnion('subtype', [\n HighlightKind.draftSchema,\n UnderlineKind.draftSchema,\n SquigglyKind.draftSchema,\n StrikeoutKind.draftSchema,\n CircleKind.draftSchema,\n SquareKind.draftSchema,\n PolygonKind.draftSchema,\n PolylineKind.draftSchema,\n LineKind.draftSchema,\n LinkKind.draftSchema,\n InkKind.draftSchema,\n FreeTextKind.draftSchema,\n CaretKind.draftSchema,\n TextKind.draftSchema,\n StampKind.draftSchema,\n FileAttachmentKind.draftSchema,\n WidgetKind.draftSchema,\n RedactKind.draftSchema,\n PopupKind.draftSchema,\n] as unknown as [\n z.ZodDiscriminatedUnionOption<'subtype'>,\n ...z.ZodDiscriminatedUnionOption<'subtype'>[],\n]) as unknown as z.ZodType<AnnotationDraft>;\n\n/**\n * Validates a patch against every kind. A\n * patch may leave out its `subtype`, so this only checks that the patch fits\n * some kind; {@link annotationPatchSchemaOf} checks it against its target.\n */\nexport const AnnotationPatchSchema: z.ZodType<AnnotationPatch> = z.union(\n ANNOTATION_KINDS.filter((kind) => kind.subtype !== 'unsupported').map(\n (kind) => kind.patchSchema,\n ) as unknown as [z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]],\n) as unknown as z.ZodType<AnnotationPatch>;\n\n/** The patch schema of one kind: how an update of an annotation of that kind is checked. */\nexport function annotationPatchSchemaOf(\n subtype: AnnotationSubtypeOfKind,\n): z.ZodType<AnnotationPatch> {\n return KIND_BY_SUBTYPE[subtype].patchSchema as unknown as z.ZodType<AnnotationPatch>;\n}\n\n/**\n * A create's data in the file's coordinates, checked against its kind: the\n * engine's own check, after the worker converted the data from page space.\n */\nexport const FileAnnotationDraftSchema: z.ZodType<AnnotationDraft<PdfCoordinates>> =\n z.discriminatedUnion(\n 'subtype',\n ANNOTATION_DECLARATIONS.filter((declaration) => declaration.subtype !== 'unsupported').map(\n (declaration) => declaration.fileSchemas.create,\n ) as unknown as [\n z.ZodDiscriminatedUnionOption<'subtype'>,\n ...z.ZodDiscriminatedUnionOption<'subtype'>[],\n ],\n ) as unknown as z.ZodType<AnnotationDraft<PdfCoordinates>>;\n\n/** An update's data in the file's coordinates, checked against the kind it changes. */\nexport function fileAnnotationPatchSchemaOf(\n subtype: AnnotationSubtypeOfKind,\n): z.ZodType<AnnotationPatch<PdfCoordinates>> {\n return declarationOf(subtype)!.fileSchemas.update as unknown as z.ZodType<\n AnnotationPatch<PdfCoordinates>\n >;\n}\n","import { FormFieldRefSchema } from '../identity/FormFieldRef.schema';\nimport { PageRefSchema } from '../identity/PageRef.schema';\nimport { AnnotationRefSchema } from '../annotation/base.schema';\nimport { z } from 'zod';\n\nimport { WidgetDTOSchema } from '../annotation/kinds/widget';\nimport { WIDGET_STYLE_SHAPE, WidgetAppearanceSchema } from '../annotation/kinds/widget.shared';\nimport { PageBoxSchema, PdfRotationSchema } from '../geometry/schemas';\nimport type { FormWidget } from '../identity/FormFieldRef';\nimport type { FormFieldDraft, FormFieldOptionInput, WidgetPlacement } from './draft';\nimport type { FormFieldPatch } from './patch';\nimport type { FormFieldDTO, FormFieldOption, FormFieldWidget, ToggleFieldWidget } from './field';\nimport type { FormKind, FormSnapshot } from './snapshot';\nimport type { FormFieldValue } from './value';\nimport type { FormValueEntry } from './value-entry';\nimport { IsoDateTimeSchema } from '../dto/IsoDateTime.schema';\nimport {\n FieldActionsPatchSchema,\n PdfFieldActionsSchema,\n WidgetActionsPatchSchema,\n} from '../dto/PdfAction.schema';\n\nexport { FormFieldRefSchema };\n\nconst FormWidgetShape = {\n // The annotation address, present exactly when the widget is indirect and placed.\n ref: AnnotationRefSchema.nullable(),\n // 0 = direct (unaddressable) widget; null page = unplaced widget.\n objectNumber: z.number().int().nonnegative(),\n page: PageRefSchema.nullable(),\n};\n\nexport const FormWidgetSchema: z.ZodType<FormWidget> = z.object(FormWidgetShape);\n\nexport const FormFieldWidgetSchema: z.ZodType<FormFieldWidget> = FormWidgetSchema;\n\nexport const ToggleFieldWidgetSchema: z.ZodType<ToggleFieldWidget> = z.object({\n ...FormWidgetShape,\n onState: z.string(),\n exportValue: z.string(),\n checked: z.boolean(),\n});\n\nexport const FormFieldOptionSchema: z.ZodType<FormFieldOption> = z.object({\n label: z.string(),\n value: z.string(),\n selected: z.boolean(),\n});\n\nexport const FormValueEntrySchema: z.ZodType<FormValueEntry> = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('none') }),\n z.object({ kind: z.literal('scalar'), value: z.string() }),\n z.object({ kind: z.literal('array'), values: z.array(z.string()) }),\n z.object({ kind: z.literal('unsupported') }),\n]);\n\nconst FormFieldBaseShape = {\n ref: FormFieldRefSchema,\n name: z.string(),\n origin: z.enum(['acroform', 'recovered']),\n readOnly: z.boolean(),\n required: z.boolean(),\n noExport: z.boolean(),\n alternateName: z.string().nullable(),\n mappingName: z.string().nullable(),\n valueEntry: FormValueEntrySchema,\n defaultValueEntry: FormValueEntrySchema,\n actions: PdfFieldActionsSchema.optional(),\n groupId: z.string().nullable(),\n createdBy: z.string().nullable(),\n createdAt: IsoDateTimeSchema.nullable(),\n filledBy: z.string().nullable(),\n filledByName: z.string().nullable(),\n filledAt: IsoDateTimeSchema.nullable(),\n importedBy: z.string().nullable(),\n widgets: z.array(FormFieldWidgetSchema),\n};\n\nexport const FormFieldDTOSchema: z.ZodType<FormFieldDTO> = z.discriminatedUnion('family', [\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('text'),\n value: z.string(),\n defaultValue: z.string(),\n maxLength: z.number().int().positive().nullable(),\n multiline: z.boolean(),\n password: z.boolean(),\n comb: z.boolean(),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('checkbox'),\n checked: z.boolean(),\n exportValue: z.string(),\n widgets: z.array(ToggleFieldWidgetSchema),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('radio'),\n value: z.string(),\n radiosInUnison: z.boolean(),\n noToggleToOff: z.boolean(),\n widgets: z.array(ToggleFieldWidgetSchema),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('combobox'),\n value: z.string(),\n defaultValue: z.string(),\n edit: z.boolean(),\n options: z.array(FormFieldOptionSchema),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('listbox'),\n selectedValues: z.array(z.string()),\n defaultValue: z.array(z.string()),\n multiSelect: z.boolean(),\n options: z.array(FormFieldOptionSchema),\n topIndex: z.number().int().nonnegative(),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('pushbutton'),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('signature'),\n }),\n z.object({\n ...FormFieldBaseShape,\n family: z.literal('unknown'),\n rawValue: z.string(),\n }),\n]) as unknown as z.ZodType<FormFieldDTO>;\n\nexport const FormKindSchema: z.ZodType<FormKind> = z.enum(['none', 'acroform', 'xfa']);\n\nexport const FormSnapshotSchema: z.ZodType<FormSnapshot> = z.object({\n formKind: FormKindSchema,\n needsAppearances: z.boolean(),\n fields: z.array(FormFieldDTOSchema),\n widgets: z.array(WidgetDTOSchema),\n calculationOrder: z.array(FormFieldRefSchema.nullable()),\n}) as unknown as z.ZodType<FormSnapshot>;\n\n/**\n * `{ value }`, `{ checked }` or `{ selectedValues }`: one object with exactly\n * one of the three, so the wire has no untagged union (the API reference\n * labels variants by a discriminating literal, and a value has none to add).\n */\nexport const FormFieldValueSchema: z.ZodType<FormFieldValue> = z\n .object({\n value: z.string().nullable().optional(),\n checked: z.boolean().optional(),\n selectedValues: z.array(z.string()).optional(),\n })\n .strict()\n .refine(\n (value) =>\n [value.value, value.checked, value.selectedValues].filter((set) => set !== undefined)\n .length === 1,\n { message: 'exactly one of value, checked or selectedValues' },\n ) as unknown as z.ZodType<FormFieldValue>;\n\nexport { WidgetAppearanceSchema };\n\nexport const WidgetPlacementSchema: z.ZodType<WidgetPlacement> = z\n .object({\n page: PageRefSchema,\n rect: PageBoxSchema.optional(),\n box: PageBoxSchema.optional(),\n rotation: PdfRotationSchema.optional(),\n exportValue: z.string().min(1).optional(),\n actions: WidgetActionsPatchSchema.optional(),\n ...WIDGET_STYLE_SHAPE,\n })\n .strict() as unknown as z.ZodType<WidgetPlacement>;\n\nexport const FormFieldOptionInputSchema: z.ZodType<FormFieldOptionInput> = z.object({\n label: z.string(),\n value: z.string(),\n});\n\nconst FormFieldDraftBaseShape = {\n name: z.string().min(1),\n readOnly: z.boolean().optional(),\n required: z.boolean().optional(),\n noExport: z.boolean().optional(),\n alternateName: z.string().optional(),\n mappingName: z.string().optional(),\n groupId: z.string().min(1).max(256).optional(),\n actions: FieldActionsPatchSchema.optional(),\n widgets: z.array(WidgetPlacementSchema).optional(),\n};\n\n/** A draft that names a member its family doesn't have is refused, not trimmed. */\nexport const FormFieldDraftSchema: z.ZodType<FormFieldDraft> = z.discriminatedUnion('family', [\n z\n .object({\n ...FormFieldDraftBaseShape,\n family: z.literal('text'),\n defaultValue: z.string().optional(),\n maxLength: z.number().int().positive().optional(),\n multiline: z.boolean().optional(),\n password: z.boolean().optional(),\n comb: z.boolean().optional(),\n })\n .strict(),\n z.object({ ...FormFieldDraftBaseShape, family: z.literal('checkbox') }).strict(),\n z\n .object({\n ...FormFieldDraftBaseShape,\n family: z.literal('radio'),\n radiosInUnison: z.boolean().optional(),\n noToggleToOff: z.boolean().optional(),\n })\n .strict(),\n z\n .object({\n ...FormFieldDraftBaseShape,\n family: z.literal('combobox'),\n edit: z.boolean().optional(),\n options: z.array(FormFieldOptionInputSchema).optional(),\n defaultValue: z.string().optional(),\n })\n .strict(),\n z\n .object({\n ...FormFieldDraftBaseShape,\n family: z.literal('listbox'),\n multiSelect: z.boolean().optional(),\n options: z.array(FormFieldOptionInputSchema).optional(),\n defaultValue: z.array(z.string()).optional(),\n })\n .strict(),\n z.object({ ...FormFieldDraftBaseShape, family: z.literal('pushbutton') }).strict(),\n z.object({ ...FormFieldDraftBaseShape, family: z.literal('signature') }).strict(),\n]) as unknown as z.ZodType<FormFieldDraft>;\n\nconst FormFieldPatchBaseShape = {\n name: z.string().min(1).optional(),\n readOnly: z.boolean().optional(),\n required: z.boolean().optional(),\n noExport: z.boolean().optional(),\n alternateName: z.string().nullable().optional(),\n mappingName: z.string().nullable().optional(),\n groupId: z.string().min(1).max(256).optional(),\n actions: FieldActionsPatchSchema.optional(),\n};\n\n/**\n * One object on the wire: the family is optional (the engine knows it from\n * the ref), so there is no discriminator, and the engine refuses members\n * the field's family doesn't have.\n */\nexport const FormFieldPatchSchema: z.ZodType<FormFieldPatch> = z\n .object({\n ...FormFieldPatchBaseShape,\n family: z\n .enum(['text', 'checkbox', 'radio', 'combobox', 'listbox', 'pushbutton', 'signature'])\n .optional(),\n // A string for text fields and dropdowns, option values for a list.\n defaultValue: z\n .union([z.string(), z.array(z.string())])\n .nullable()\n .optional(),\n maxLength: z.number().int().positive().nullable().optional(),\n multiline: z.boolean().optional(),\n password: z.boolean().optional(),\n comb: z.boolean().optional(),\n radiosInUnison: z.boolean().optional(),\n noToggleToOff: z.boolean().optional(),\n edit: z.boolean().optional(),\n multiSelect: z.boolean().optional(),\n options: z.array(FormFieldOptionInputSchema).optional(),\n })\n .strict() as unknown as z.ZodType<FormFieldPatch>;\n"],"mappings":"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"}
|