@embedpdf/engine-core 3.0.0-next.14 → 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.
Files changed (135) hide show
  1. package/dist/AnnotationList-DcyhF2kU.d.cts +27691 -0
  2. package/dist/AnnotationList-DcyhF2kU.d.ts +27691 -0
  3. package/dist/Change-Ct-dB8D5.cjs +1133 -0
  4. package/dist/Change-Ct-dB8D5.cjs.map +1 -0
  5. package/dist/Change-tMR34hTU.js +978 -0
  6. package/dist/Change-tMR34hTU.js.map +1 -0
  7. package/dist/DocumentRenderService-9IjSQEIU.cjs +121 -0
  8. package/dist/DocumentRenderService-9IjSQEIU.cjs.map +1 -0
  9. package/dist/DocumentRenderService-DFrZ9wfW.js +86 -0
  10. package/dist/DocumentRenderService-DFrZ9wfW.js.map +1 -0
  11. package/dist/{DocumentSecurityService-Ca6EK3-3.d.ts → DocumentSecurityService-D2zA4NKi.d.cts} +100 -112
  12. package/dist/{DocumentSecurityService-CIx1MT0T.d.cts → DocumentSecurityService-YJV9df8P.d.ts} +100 -112
  13. package/dist/LocalDocumentHandle-D02FMm-Z.cjs +53 -0
  14. package/dist/LocalDocumentHandle-D02FMm-Z.cjs.map +1 -0
  15. package/dist/LocalDocumentHandle-DAPdaOt_.js +30 -0
  16. package/dist/LocalDocumentHandle-DAPdaOt_.js.map +1 -0
  17. package/dist/LocalEngine-DBt2-GWF.d.ts +1649 -0
  18. package/dist/LocalEngine-IA9zh3Jh.d.cts +1649 -0
  19. package/dist/PageInsertBlankInput-CXHAM7l6.cjs +17 -0
  20. package/dist/PageInsertBlankInput-CXHAM7l6.cjs.map +1 -0
  21. package/dist/PageInsertBlankInput-DhVYVJ_S.js +12 -0
  22. package/dist/PageInsertBlankInput-DhVYVJ_S.js.map +1 -0
  23. package/dist/authority-BFp6XM04.cjs +2997 -0
  24. package/dist/authority-BFp6XM04.cjs.map +1 -0
  25. package/dist/authority-PuxpGFhJ.js +2506 -0
  26. package/dist/authority-PuxpGFhJ.js.map +1 -0
  27. package/dist/builders-DV62HA3I.js +165 -0
  28. package/dist/builders-DV62HA3I.js.map +1 -0
  29. package/dist/builders-DgTAj_tP.cjs +188 -0
  30. package/dist/builders-DgTAj_tP.cjs.map +1 -0
  31. package/dist/calibrate-DJbi1wuK.cjs +3012 -0
  32. package/dist/calibrate-DJbi1wuK.cjs.map +1 -0
  33. package/dist/calibrate-nQFgCuki.js +2461 -0
  34. package/dist/calibrate-nQFgCuki.js.map +1 -0
  35. package/dist/charmap-Cprti1ta.js +239 -0
  36. package/dist/charmap-Cprti1ta.js.map +1 -0
  37. package/dist/charmap-aYlefQP9.cjs +304 -0
  38. package/dist/charmap-aYlefQP9.cjs.map +1 -0
  39. package/dist/conformance.cjs +18146 -5258
  40. package/dist/conformance.cjs.map +1 -1
  41. package/dist/conformance.d.cts +1024 -170
  42. package/dist/conformance.d.ts +1024 -170
  43. package/dist/conformance.js +18148 -5309
  44. package/dist/conformance.js.map +1 -1
  45. package/dist/format-Bp3QFSH1.cjs +574 -0
  46. package/dist/format-Bp3QFSH1.cjs.map +1 -0
  47. package/dist/format-Dgg428Kb.js +461 -0
  48. package/dist/format-Dgg428Kb.js.map +1 -0
  49. package/dist/index.cjs +342 -116
  50. package/dist/index.d.cts +2 -2
  51. package/dist/index.d.ts +2 -2
  52. package/dist/index.js +14 -5
  53. package/dist/pageRefs-B3ur7Ckm.cjs +51 -0
  54. package/dist/pageRefs-B3ur7Ckm.cjs.map +1 -0
  55. package/dist/pageRefs-DkbuxSCV.js +40 -0
  56. package/dist/pageRefs-DkbuxSCV.js.map +1 -0
  57. package/dist/public.cjs +59 -0
  58. package/dist/public.d.cts +5 -0
  59. package/dist/public.d.ts +5 -0
  60. package/dist/public.js +9 -0
  61. package/dist/resolveAnnotationDraft-7Ke4nV7F.cjs +3646 -0
  62. package/dist/resolveAnnotationDraft-7Ke4nV7F.cjs.map +1 -0
  63. package/dist/resolveAnnotationDraft-CUpf0SMh.js +3167 -0
  64. package/dist/resolveAnnotationDraft-CUpf0SMh.js.map +1 -0
  65. package/dist/{resolver-inAVzsWt.js → resolver-BBggAxQc.js} +298 -145
  66. package/dist/resolver-BBggAxQc.js.map +1 -0
  67. package/dist/{resolver-CYVNV4hn.cjs → resolver-BWSWSF6R.cjs} +351 -144
  68. package/dist/resolver-BWSWSF6R.cjs.map +1 -0
  69. package/dist/runtime-BaDKjxiu.d.ts +1959 -0
  70. package/dist/runtime-CWEuiwbk.d.cts +1959 -0
  71. package/dist/runtime.cjs +986 -297
  72. package/dist/runtime.cjs.map +1 -1
  73. package/dist/runtime.d.cts +5 -1372
  74. package/dist/runtime.d.ts +5 -1372
  75. package/dist/runtime.js +634 -179
  76. package/dist/runtime.js.map +1 -1
  77. package/dist/schema-6S2VmlAj.js +2087 -0
  78. package/dist/schema-6S2VmlAj.js.map +1 -0
  79. package/dist/schema-miH6tWQC.cjs +3046 -0
  80. package/dist/schema-miH6tWQC.cjs.map +1 -0
  81. package/dist/schemas-BE2QGOit.js +1851 -0
  82. package/dist/schemas-BE2QGOit.js.map +1 -0
  83. package/dist/schemas-DljJR9ut.cjs +2798 -0
  84. package/dist/schemas-DljJR9ut.cjs.map +1 -0
  85. package/dist/subtype-CG4WpIRj.js +129 -0
  86. package/dist/subtype-CG4WpIRj.js.map +1 -0
  87. package/dist/subtype-aDt5TFmK.cjs +158 -0
  88. package/dist/subtype-aDt5TFmK.cjs.map +1 -0
  89. package/dist/validation.cjs +578 -0
  90. package/dist/validation.cjs.map +1 -0
  91. package/dist/validation.d.cts +174 -0
  92. package/dist/validation.d.ts +174 -0
  93. package/dist/validation.js +571 -0
  94. package/dist/validation.js.map +1 -0
  95. package/dist/value-BFS1R8ek.cjs +435 -0
  96. package/dist/value-BFS1R8ek.cjs.map +1 -0
  97. package/dist/value-Dhc8eYcx.js +340 -0
  98. package/dist/value-Dhc8eYcx.js.map +1 -0
  99. package/dist/viewport-CHG9qQUb.cjs +671 -0
  100. package/dist/viewport-CHG9qQUb.cjs.map +1 -0
  101. package/dist/viewport-DQR5LyX3.js +540 -0
  102. package/dist/viewport-DQR5LyX3.js.map +1 -0
  103. package/dist/wire.cjs +1242 -420
  104. package/dist/wire.cjs.map +1 -1
  105. package/dist/wire.d.cts +14840 -830
  106. package/dist/wire.d.ts +14840 -830
  107. package/dist/wire.js +985 -261
  108. package/dist/wire.js.map +1 -1
  109. package/package.json +10 -1
  110. package/dist/AbortError-DwuHPK_I.js +0 -27
  111. package/dist/AbortError-DwuHPK_I.js.map +0 -1
  112. package/dist/AbortError-P0RU0Mgg.cjs +0 -38
  113. package/dist/AbortError-P0RU0Mgg.cjs.map +0 -1
  114. package/dist/AnnotationListSnapshot-D9R5n2Kf.d.cts +0 -7101
  115. package/dist/AnnotationListSnapshot-D9R5n2Kf.d.ts +0 -7101
  116. package/dist/Engine-EWWHhEIi.d.ts +0 -1277
  117. package/dist/Engine-FNaAEjfb.d.cts +0 -1277
  118. package/dist/derive-BbsDk_Kz.cjs +0 -880
  119. package/dist/derive-BbsDk_Kz.cjs.map +0 -1
  120. package/dist/derive-DAFJolWu.js +0 -647
  121. package/dist/derive-DAFJolWu.js.map +0 -1
  122. package/dist/format-Bbphf4zR.js +0 -435
  123. package/dist/format-Bbphf4zR.js.map +0 -1
  124. package/dist/format-D_epWlob.cjs +0 -518
  125. package/dist/format-D_epWlob.cjs.map +0 -1
  126. package/dist/resolver-CYVNV4hn.cjs.map +0 -1
  127. package/dist/resolver-inAVzsWt.js.map +0 -1
  128. package/dist/schemas-CFQGvWiu.js +0 -3243
  129. package/dist/schemas-CFQGvWiu.js.map +0 -1
  130. package/dist/schemas-D0g6tKa9.cjs +0 -4694
  131. package/dist/schemas-D0g6tKa9.cjs.map +0 -1
  132. package/dist/viewport-BWeNHZmb.cjs +0 -3503
  133. package/dist/viewport-BWeNHZmb.cjs.map +0 -1
  134. package/dist/viewport-CvMcadfQ.js +0 -3072
  135. package/dist/viewport-CvMcadfQ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas-DljJR9ut.cjs","names":["z","z","PdfLinkTargetSchema","PdfActionTreeSchema","ColorSchema","PdfLinkTargetWritableSchema","z","IsoDateTimeSchema","DateInputSchema","EngineErrorCode","PageRefSchema","AnnotationSchema","charMapViolation","PageBoxSchema","PageQuadSchema","ANNOTATION_APPEARANCE_MODES","ImageResourceKeysSchema","AnnotationRefSchema","FormFieldRefSchema","AnnotationDraftSchema","AnnotationPatchSchema","PdfLinkTargetSchema","PdfLinkTargetWritableSchema","FormWidgetSchema","FormFieldDTOSchema","FormFieldValueSchema","FormFieldDraftSchema","FormFieldPatchSchema","WidgetPlacementSchema","WidgetDTOSchema","WidgetPatchSchema","PdfSizeSchema","PdfRotationSchema","PdfRectSchema","PdfPageActionsSchema","AttachmentRefSchema","AttachmentSchema","AttachmentFileInfoSchema","AttachmentFileBaseSchema","toBase64","fromBase64","FormFieldWidgetSchema","AppearanceResourceKeysSchema"],"sources":["../src/wire/renderFamilies.ts","../src/identity/OutlineItemRef.schema.ts","../src/dto/DocumentOutline.schema.ts","../src/wire/schemas.ts"],"sourcesContent":["import type { DocCapability } from '../auth/scope';\nimport type { LayerScopePlane } from '../dto/LayerScopes';\nimport type { PageRenderLayers, PrintDpi } from '../dto/PageRender';\nimport type { DocResourceId } from './resources';\n\n/**\n * The four page pictures, by what they draw beside the page content: nothing\n * (`pages`), the annotations (`annotations`), the form fields (`fields`), or\n * both (`all`). The family is in the path, never in the token. Who may see a\n * picture and which planes it depends on differ per family, and a CDN grant\n * is a path prefix.\n */\nexport type PageRenderFamily = 'pages' | 'annotations' | 'fields' | 'all';\n\n/** A page pin a picture's token carries. */\nexport type PageRenderPin = 'contentVersion' | 'annotationVersion' | 'widgetVersion';\n\nexport interface PageRenderFamilySpec {\n readonly family: PageRenderFamily;\n /** Its resource at the document's shared path, and at a layer's. */\n readonly resource: DocResourceId;\n readonly layerResource: DocResourceId;\n /** What the picture draws beside the page content. */\n readonly draws: PageRenderLayers;\n /** The path between the document and the page key: `render/annotations/pages`. */\n readonly path: string;\n /** What reading the picture needs. */\n readonly needs: ReadonlyArray<DocCapability>;\n /**\n * The planes the picture depends on. It's read at the document's shared\n * path while a layer inherits every one of them.\n */\n readonly planes: ReadonlyArray<LayerScopePlane>;\n /** The page pins a versioned request carries: each plane's own. */\n readonly pins: ReadonlyArray<PageRenderPin>;\n /** The print tier of a print picture ({@link PAGE_PRINT_FAMILIES}); null for the screen. */\n readonly print: PagePrintTierSpec | null;\n}\n\nexport const PAGE_RENDER_FAMILIES: Readonly<Record<PageRenderFamily, PageRenderFamilySpec>> = {\n pages: {\n family: 'pages',\n resource: 'page-render',\n layerResource: 'layer-page-render',\n draws: { includeAnnotations: false, includeFormFields: false },\n path: 'render/pages',\n needs: ['doc.render'],\n planes: ['content'],\n pins: ['contentVersion'],\n print: null,\n },\n annotations: {\n family: 'annotations',\n resource: 'page-render-annotations',\n layerResource: 'layer-page-render-annotations',\n draws: { includeAnnotations: true, includeFormFields: false },\n path: 'render/annotations/pages',\n needs: ['doc.render', 'doc.annotate.read'],\n planes: ['content', 'annotations'],\n pins: ['contentVersion', 'annotationVersion'],\n print: null,\n },\n fields: {\n family: 'fields',\n resource: 'page-render-fields',\n layerResource: 'layer-page-render-fields',\n draws: { includeAnnotations: false, includeFormFields: true },\n path: 'render/fields/pages',\n needs: ['doc.render', 'doc.forms.read'],\n planes: ['content', 'forms'],\n pins: ['contentVersion', 'widgetVersion'],\n print: null,\n },\n all: {\n family: 'all',\n resource: 'page-render-all',\n layerResource: 'layer-page-render-all',\n draws: { includeAnnotations: true, includeFormFields: true },\n path: 'render/all/pages',\n needs: ['doc.render', 'doc.annotate.read', 'doc.forms.read'],\n planes: ['content', 'annotations', 'forms'],\n pins: ['contentVersion', 'annotationVersion', 'widgetVersion'],\n print: null,\n },\n};\n\n/** The family of a picture that draws `layers`. */\nexport function pageRenderFamilyOf(layers: PageRenderLayers): PageRenderFamily {\n if (layers.includeAnnotations) return layers.includeFormFields ? 'all' : 'annotations';\n return layers.includeFormFields ? 'fields' : 'pages';\n}\n\n/**\n * The two print tiers, named for the right each needs: `print` (150 DPI,\n * `doc.print`) and `print-high` (300 DPI, `doc.print.high`). The tier is a\n * right, so like the family it is in the path, never in the token.\n */\nexport type PagePrintTier = 'print' | 'print-high';\n\nexport interface PagePrintTierSpec {\n readonly tier: PagePrintTier;\n readonly dpi: PrintDpi;\n /** What the tier needs on top of its family's rights. */\n readonly needs: ReadonlyArray<DocCapability>;\n}\n\nexport const PAGE_PRINT_TIERS: Readonly<Record<PagePrintTier, PagePrintTierSpec>> = {\n print: { tier: 'print', dpi: 150, needs: ['doc.print'] },\n 'print-high': { tier: 'print-high', dpi: 300, needs: ['doc.print', 'doc.print.high'] },\n};\n\n/** The tier that prints at `dpi`. */\nexport function pagePrintTierOf(dpi: PrintDpi): PagePrintTier {\n return dpi === 300 ? 'print-high' : 'print';\n}\n\n/**\n * The print pictures: each of the four families, printed at each tier. A\n * print picture draws what its family draws, by the print rules: layers in\n * their print state, annotations and fields by their `print` flag. So no\n * print family is a screen picture under another name, and each needs its\n * family's rights plus its tier's. It keeps its family's planes and pins,\n * and its path is the family's with the tier after `render/`:\n * `render/print-high/annotations/pages`.\n */\nexport const PAGE_PRINT_FAMILIES: Readonly<\n Record<PagePrintTier, Readonly<Record<PageRenderFamily, PageRenderFamilySpec>>>\n> = {\n print: {\n pages: printFamily('print', 'pages', 'page-print', 'layer-page-print'),\n annotations: printFamily(\n 'print',\n 'annotations',\n 'page-print-annotations',\n 'layer-page-print-annotations',\n ),\n fields: printFamily('print', 'fields', 'page-print-fields', 'layer-page-print-fields'),\n all: printFamily('print', 'all', 'page-print-all', 'layer-page-print-all'),\n },\n 'print-high': {\n pages: printFamily('print-high', 'pages', 'page-print-high', 'layer-page-print-high'),\n annotations: printFamily(\n 'print-high',\n 'annotations',\n 'page-print-high-annotations',\n 'layer-page-print-high-annotations',\n ),\n fields: printFamily(\n 'print-high',\n 'fields',\n 'page-print-high-fields',\n 'layer-page-print-high-fields',\n ),\n all: printFamily('print-high', 'all', 'page-print-high-all', 'layer-page-print-high-all'),\n },\n};\n\n/** Every page picture: the four screen families and the eight print ones. */\nexport const PAGE_PICTURES: ReadonlyArray<PageRenderFamilySpec> = [\n ...Object.values(PAGE_RENDER_FAMILIES),\n ...Object.values(PAGE_PRINT_FAMILIES).flatMap((tier) => Object.values(tier)),\n];\n\n/** The picture that draws `layers`, for the screen or printed at `dpi`. */\nexport function pagePictureOf(\n layers: PageRenderLayers,\n printDpi: PrintDpi | undefined,\n): PageRenderFamilySpec {\n const family = pageRenderFamilyOf(layers);\n return printDpi === undefined\n ? PAGE_RENDER_FAMILIES[family]\n : PAGE_PRINT_FAMILIES[pagePrintTierOf(printDpi)][family];\n}\n\nfunction printFamily(\n tier: PagePrintTier,\n family: PageRenderFamily,\n resource: DocResourceId,\n layerResource: DocResourceId,\n): PageRenderFamilySpec {\n const screen = PAGE_RENDER_FAMILIES[family];\n const print = PAGE_PRINT_TIERS[tier];\n return {\n ...screen,\n resource,\n layerResource,\n path: `render/${tier}/${screen.path.slice('render/'.length)}`,\n needs: [...screen.needs, ...print.needs],\n print,\n };\n}\n","import { z } from 'zod';\n\nimport type { OutlineItemRef } from './OutlineItemRef';\n\n/** Wire form of `OutlineItemRef` — see the type. */\nexport const OutlineItemRefSchema: z.ZodType<OutlineItemRef> = z.object({\n kind: z.literal('objectNumber'),\n objectNumber: z.number().int().positive(),\n});\n","import { z } from 'zod';\n\nimport type {\n DocumentOutline,\n OutlineItem,\n OutlineItemDraft,\n OutlineItemPatch,\n} from './DocumentOutline';\nimport { PdfActionTreeSchema } from './PdfAction.schema';\nimport { ColorSchema } from '../annotation/base.schema';\nimport { PdfLinkTargetSchema, PdfLinkTargetWritableSchema } from '../annotation/kinds/link/values';\nimport { OutlineItemRefSchema } from '../identity/OutlineItemRef.schema';\n\n/** Wire form of an `OutlineItem` (page space) — see the type. */\nexport const OutlineItemSchema: z.ZodType<OutlineItem> = z.object({\n ref: OutlineItemRefSchema,\n parent: OutlineItemRefSchema.nullable(),\n title: z.string(),\n target: PdfLinkTargetSchema.nullable(),\n action: PdfActionTreeSchema.nullable(),\n open: z.boolean(),\n color: ColorSchema.nullable(),\n bold: z.boolean(),\n italic: z.boolean(),\n});\n\n/** Wire form of a `DocumentOutline` (page space): what `GET …/outline` answers. */\nexport const DocumentOutlineSchema: z.ZodType<DocumentOutline> = z.object({\n items: z.array(OutlineItemSchema),\n incomplete: z.boolean(),\n});\n\n/**\n * A title as a write takes it: at most 32,767 UTF-16 code units, the most a\n * PDF text string holds in every PDF app (ISO 32000-2 Annex C).\n */\nconst OutlineTitleSchema = z.string().max(32_767);\n\nconst outlineFields = {\n title: OutlineTitleSchema,\n target: PdfLinkTargetWritableSchema.nullable().optional(),\n color: ColorSchema.nullable().optional(),\n bold: z.boolean().optional(),\n italic: z.boolean().optional(),\n};\n\n/** Wire form of an `OutlineItemDraft` (page space). */\nexport const OutlineItemDraftSchema: z.ZodType<OutlineItemDraft> = z.object(outlineFields).strict();\n\n/** Wire form of an `OutlineItemPatch` (page space). */\nexport const OutlineItemPatchSchema: z.ZodType<OutlineItemPatch> = z\n .object({ ...outlineFields, title: OutlineTitleSchema.optional(), open: z.boolean().optional() })\n .strict();\n","import type { Identity } from '../auth/scope/types';\nimport { PageRefSchema } from '../identity/PageRef.schema';\nimport { z } from 'zod';\n\nimport { DateInputSchema, IsoDateTimeSchema } from '../dto/IsoDateTime.schema';\n\nimport type { AnnotationList } from '../annotation/AnnotationList';\nimport { AnnotationRefSchema } from '../annotation/base.schema';\nimport {\n AnnotationDraftSchema,\n AnnotationPatchSchema,\n AnnotationSchema,\n PdfLinkTargetSchema,\n PdfLinkTargetWritableSchema,\n} from '../annotation/kinds';\nimport { WidgetDTOSchema, WidgetPatchSchema } from '../annotation/kinds/widget';\nimport {\n ANNOTATION_APPEARANCE_MODES,\n type AnnotationAppearanceImageOptions,\n type AnnotationAppearanceBatch,\n type AnnotationAppearanceMode,\n type AnnotationAppearancesQuery,\n type WidgetAppearancesQuery,\n} from '../dto/AnnotationRender';\nimport {\n AttachmentFileBaseSchema,\n AttachmentFileInfoSchema,\n AttachmentRefSchema,\n AttachmentSchema,\n} from '../dto/Attachment.schema';\nimport { AppearanceResourceKeysSchema, ImageResourceKeysSchema } from './resourceKeys';\nimport {\n PAGE_PRINT_FAMILIES,\n PAGE_RENDER_FAMILIES,\n type PagePrintTier,\n type PageRenderFamily,\n type PageRenderFamilySpec,\n type PageRenderPin,\n} from './renderFamilies';\nimport type { CachePins } from '../dto/CachePins';\nimport type { DocumentManifest, ManifestPage } from '../dto/DocumentManifest';\nimport type { LayerScopes } from '../dto/LayerScopes';\nimport type { CustomMetadata } from '../dto/CustomMetadata';\nimport type { CustomMetadataPatch } from '../dto/CustomMetadataPatch';\nimport type { DocumentMetadata } from '../dto/DocumentMetadata';\nimport type { MetadataPatch } from '../dto/MetadataPatch';\nimport type { AnalyzeInput, ChangeAnalysis } from '../signature/analysis/types';\nimport type {\n BaseVersionInfo,\n DocumentProtection,\n DocumentVersionRef,\n FieldLockSpec,\n PdfRevision,\n SignatureCancelResult,\n SignatureCompleteResult,\n SignatureDTO,\n SignaturePrepared,\n SignatureSeedValue,\n SignatureSnapshot,\n} from '../signature/types';\nimport type { PageGeometryRun, PageGeometrySnapshot } from '../dto/PageGeometrySnapshot';\nimport { charMapViolation } from '../text/charmap';\nimport type { PageBoxes, PageLayout } from '../dto/PageLayout';\nimport type { PageListSnapshot } from '../dto/PageListSnapshot';\nimport type { NamedPageEntry } from '../dto/NamedPage';\nimport type { PageImageOptions, PageNetworkRenderFormat, PageRenderQuery } from '../dto/PageRender';\nimport type { PageTextSnapshot } from '../dto/PageTextSnapshot';\nimport { PdfPageActionsSchema } from '../dto/PdfAction.schema';\nimport type { PdfSaveMode } from '../dto/PdfSaveMode';\nimport type { DocumentSecurityState, PdfPermissionInfo } from '../engine/DocumentSecurityService';\nimport type { SerializedEngineError } from '../errors/EngineError';\nimport { EngineErrorCode } from '../errors/EngineErrorCode';\nimport {\n FormFieldDraftSchema,\n FormFieldDTOSchema,\n FormFieldPatchSchema,\n FormFieldWidgetSchema,\n FormWidgetSchema,\n WidgetPlacementSchema,\n} from '../forms/schema';\nimport { FormFieldRefSchema, FormFieldValueSchema } from '../forms/schema';\nimport {\n PageBoxSchema,\n PageQuadSchema,\n PdfQuadSchema,\n PdfRectSchema,\n PdfRotationSchema,\n PdfSizeSchema,\n} from '../geometry/schemas';\nimport type { AppearanceOutcome } from '../annotation/appearance';\nimport type { AnnotationListMutationMeta } from '../mutation/AnnotationListMutationMeta';\nimport type {\n AnnotationCreateResult,\n AnnotationDeleteResult,\n AnnotationReorderResult,\n AnnotationUpdateResult,\n} from '../mutation/AnnotationMutationResults';\nimport type {\n AttachmentCreateResult,\n AttachmentDeleteResult,\n AttachmentRestoreResult,\n AttachmentMutationMeta,\n} from '../mutation/AttachmentMutationResults';\nimport type { AttachmentList } from '../dto/Attachment';\nimport type {\n FormFieldCreateResult,\n FormCalculationsReorderResult,\n FormFieldDeleteResult,\n FormFieldUpdateResult,\n FormRepairResult,\n FormMutationMeta,\n FormResetResult,\n FormSetValueResult,\n FormWidgetDeleteResult,\n FormWidgetLinkResult,\n FormWidgetRestoreResult,\n FormWidgetsReorderResult,\n FormWidgetUpdateResult,\n} from '../mutation/FormMutationResults';\nimport type { CustomMetadataUpdateResult } from '../mutation/CustomMetadataUpdateResult';\nimport type { MetadataUpdateResult } from '../mutation/MetadataUpdateResult';\nimport type { CacheDelta, MutationMeta } from '../mutation/MutationMeta';\nimport type { PageDeleteResult } from '../mutation/PageDeleteResult';\nimport { PAGE_INSERT_BLANK_MAX_COUNT } from '../mutation/PageInsertBlankInput';\nimport type { PageInsertResult } from '../mutation/PageInsertResult';\nimport type { PageRestoreResult } from '../mutation/PageRestoreResult';\nimport type { PageFlattenInput, PageFlattenResult } from '../mutation/PageFlattenResult';\nimport type { PageExtractInput } from '../dto/PageExtract';\nimport {\n DocumentOutlineSchema,\n OutlineItemDraftSchema,\n OutlineItemPatchSchema,\n OutlineItemSchema,\n} from '../dto/DocumentOutline.schema';\nimport { OutlineItemRefSchema } from '../identity/OutlineItemRef.schema';\nimport type { RedactionApplyResult, RedactionApplyScope } from '../mutation/RedactionApplyResult';\nimport type { ListPosition } from '../mutation/ListPosition';\nimport type { PageReorderResult } from '../mutation/PageReorderResult';\nimport type {\n AnnotationAppearanceExportInput,\n AnnotationFlattenInput,\n AnnotationFlattenResult,\n} from '../mutation/AnnotationFlattenResult';\nimport type {\n OutlineCreateResult,\n OutlineDeleteResult,\n OutlineMoveResult,\n OutlineMutationMeta,\n OutlineOrder,\n OutlineRestoreResult,\n OutlineUpdateResult,\n} from '../mutation/OutlineMutationResults';\nimport type { PageNameInput, PageRemoveNameInput } from '../mutation/PageNameInput';\nimport type { PageNameResult } from '../mutation/PageNameResult';\nimport type { PageRotateResult } from '../mutation/PageRotateResult';\nimport type {\n AnnotationImportBody,\n AnnotationImportOptions,\n AnnotationImportResult,\n} from '../transfer/annotationImport';\nimport type { FormExportSelection } from '../transfer/formExport';\nimport type {\n FormImportBody,\n FormImportOptions,\n FormImportResult,\n FormValuesImportBody,\n FormValuesImportOptions,\n FormValuesImportResult,\n} from '../transfer/formImport';\nimport type { AnnotationExportSelection } from '../transfer/exportSelection';\nimport { fromBase64, toBase64 } from '../resource/base64';\nimport type {\n SearchMatch,\n SearchQuery,\n SearchRequest,\n SearchSlice,\n SearchSnippet,\n} from '../search/types';\nimport type { PdfTextSegment } from '../text/layout';\nexport type { CacheDelta, MutationMeta } from '../mutation/MutationMeta';\n\n/** Who a session acts for; see `Identity` in `auth/scope/types.ts`. */\nexport const IdentitySchema: z.ZodType<Identity> = z\n .object({\n userId: z.string().min(1).max(256).optional(),\n displayName: z.string().min(1).max(256).optional(),\n email: z.string().min(1).max(256).optional(),\n title: z.string().min(1).max(256).optional(),\n organization: z.string().min(1).max(256).optional(),\n organizationalUnit: z.string().min(1).max(256).optional(),\n groupId: z.string().min(1).max(256).optional(),\n })\n .strict();\n\nexport const DocumentMetadataSchema: z.ZodType<DocumentMetadata> = z.object({\n title: z.string().nullable(),\n author: z.string().nullable(),\n subject: z.string().nullable(),\n keywords: z.string().nullable(),\n producer: z.string().nullable(),\n creator: z.string().nullable(),\n createdAt: IsoDateTimeSchema.nullable(),\n modifiedAt: IsoDateTimeSchema.nullable(),\n trapped: z.enum(['true', 'false', 'unknown']),\n});\n\n/**\n * Three-state metadata patch. Mirrors annotation patch semantics:\n * `undefined` leaves a field, `null` clears it, a value sets it.\n */\nexport const MetadataPatchSchema: z.ZodType<MetadataPatch> = z\n .object({\n title: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n subject: z.string().nullable().optional(),\n keywords: z.string().nullable().optional(),\n producer: z.string().nullable().optional(),\n creator: z.string().nullable().optional(),\n createdAt: DateInputSchema.nullable().optional(),\n modifiedAt: DateInputSchema.nullable().optional(),\n trapped: z.enum(['true', 'false', 'unknown']).optional(),\n })\n .strict();\n\n/** The Info dict's other keys, `{ key: value }`. */\nexport const CustomMetadataSchema: z.ZodType<CustomMetadata> = z.record(z.string(), z.string());\n\n/**\n * A custom-key patch: every key is a field (string sets, `null` removes, left\n * out stays). Which keys a PDF can hold is the engine's check, so a refusal\n * names the key the same way on both engines.\n */\nexport const CustomMetadataPatchSchema: z.ZodType<CustomMetadataPatch> = z.record(\n z.string(),\n z.string().nullable(),\n);\n\nexport const OpenDocumentResponseSchema = z.object({\n id: z.string(),\n});\nexport type OpenDocumentResponse = z.infer<typeof OpenDocumentResponseSchema>;\n\n/**\n * Wire shape of `GET /v1/docs/:docId/head`. Mirrors the server-side\n * `DocumentHead` interface; the schema is the source of truth so\n * older SDKs talking to newer servers degrade gracefully (extra\n * fields are accepted and ignored).\n *\n * `docVersion` is the single monotonic integer per doc; it bumps on\n * any mutation that could change the manifest's content (page list,\n * per-page content, per-page annotations), which\n * makes `/manifest@docVersion=N` fully content-addressed and cache-friendly.\n * The server's layer mutations bump it.\n */\nexport const DocumentHeadSchema = z.object({\n id: z.string(),\n baseSha: z.string(),\n storageSizeBytes: z.number().int().nonnegative(),\n docVersion: z.number().int().positive(),\n state: z.enum(['pending', 'ready', 'failed', 'deleting']),\n encryption: z.object({\n state: z.enum(['unknown', 'none', 'encrypted', 'unsupported']),\n requiresPassword: z.boolean().nullable(),\n }),\n permissions: z.object({\n known: z.boolean(),\n bits: z.number().int().nonnegative().nullable(),\n allAllowed: z.boolean().nullable(),\n openedAs: z.enum(['none', 'user', 'owner']).nullable(),\n securityHandlerRevision: z.number().int().nullable(),\n canUpgradeToOwner: z.boolean(),\n }),\n access: z.object({\n required: z.boolean(),\n reasons: z.array(z.enum(['password', 'cdn', 'permissions-unknown'])),\n endpoint: z.string().optional(),\n }),\n});\nexport type DocumentHead = z.infer<typeof DocumentHeadSchema>;\n\nexport const AccessRequestSchema = z.object({\n /** Deprecated: identity now rides the path\n * (`/v1/docs/:docId/layers/:layerName/access`). Kept optional for the\n * legacy `/v1/access` alias, which requires `docId` in the body. */\n docId: z.string().min(1).optional(),\n layerName: z.string().min(1).optional(),\n password: z.string().optional(),\n passwordGrant: z.string().optional(),\n mode: z.enum(['any', 'owner']).optional(),\n /**\n * How many object numbers the caller's editing session wants now, at\n * most 32: 8 for a new session when absent, 0 for a client that holds\n * enough.\n */\n objectNumbers: z.number().int().nonnegative().optional(),\n});\nexport type AccessRequest = z.infer<typeof AccessRequestSchema>;\n\n/** `first`, `first + 1`, …, `first + count - 1`. */\nexport const ObjectNumberRangeSchema = z.object({\n first: z.number().int().positive(),\n count: z.number().int().positive(),\n});\n\n/** See `EditSessionAccess`. */\nexport const EditSessionAccessSchema = z.object({\n session: z.enum(['new', 'revived', 'live']),\n expiresIn: z.number().int().nonnegative(),\n objectNumbers: z.array(ObjectNumberRangeSchema),\n});\n\n/** See `EditSessionStatus`: the event stream's `session` event. */\nexport const EditSessionStatusSchema = z.object({\n held: z.array(ObjectNumberRangeSchema),\n expiresIn: z.number().int().nonnegative(),\n});\n\n/** `POST …/object-numbers`: a bulk reservation. */\nexport const ObjectNumberReservationRequestSchema = z.object({\n count: z.number().int().positive(),\n});\n\nexport const ObjectNumberReservationResponseSchema = z.object({\n objectNumbers: z.array(ObjectNumberRangeSchema),\n expiresIn: z.number().int().nonnegative(),\n});\n\n/**\n * Typed boolean view of the PDF user-access permission word. Names\n * mirror the `PdfBits` shape in @embedpdf/engine-core/auth/scope; ISO\n * bit numbers (3, 4, 5, 6, 9, 10, 11, 12).\n */\nconst PdfBitsObjectSchema = z.object({\n bit3: z.boolean(),\n bit4: z.boolean(),\n bit5: z.boolean(),\n bit6: z.boolean(),\n bit9: z.boolean(),\n bit10: z.boolean(),\n bit11: z.boolean(),\n bit12: z.boolean(),\n});\n\n/**\n * Capability-shaped advisory for the client UI. Mirrors\n * `PdfPermissionAdvisory` in @embedpdf/engine-core/runtime; one\n * boolean per UI badge.\n */\nconst PdfPermissionAdvisoryObjectSchema = z.object({\n canPrint: z.boolean(),\n canPrintHigh: z.boolean(),\n canCopy: z.boolean(),\n canAnnotate: z.boolean(),\n canFillForms: z.boolean(),\n canModifyForms: z.boolean(),\n canModifyPages: z.boolean(),\n canAssemble: z.boolean(),\n});\n\nconst PdfPermissionInfoObjectSchema: z.ZodType<PdfPermissionInfo> = z.object({\n known: z.boolean(),\n allAllowed: z.boolean().nullable(),\n bits: z.number().int().nonnegative().nullable(),\n openedAs: z.enum(['none', 'user', 'owner']).nullable(),\n securityHandlerRevision: z.number().int().nullable(),\n // Enriched fields from /access (commit 14). Optional so /head, which\n // doesn't always populate them, stays valid against this schema too.\n flags: PdfBitsObjectSchema.optional(),\n advisory: PdfPermissionAdvisoryObjectSchema.optional(),\n});\n\nconst PdfPermissionInfoSchema = PdfPermissionInfoObjectSchema.nullable();\n\nexport const DocumentSecurityStateSchema: z.ZodType<DocumentSecurityState> = z.object({\n encryption: z.object({\n state: z.enum(['unknown', 'none', 'encrypted', 'unsupported']),\n requiresPassword: z.boolean().nullable(),\n }),\n permissions: z.object({\n known: z.boolean(),\n bits: z.number().int().nonnegative().nullable(),\n allAllowed: z.boolean().nullable(),\n openedAs: z.enum(['none', 'user', 'owner']).nullable(),\n securityHandlerRevision: z.number().int().nullable(),\n canUpgradeToOwner: z.boolean(),\n }),\n access: z.object({\n required: z.boolean(),\n reasons: z.array(z.enum(['password', 'cdn', 'permissions-unknown'])),\n endpoint: z.string().optional(),\n }),\n});\n\nconst positiveCount = z.number().int().positive();\n\n/** See `BundleLimits`. */\nexport const BundleLimitsSchema = z\n .object({\n bundleBytes: positiveCount,\n manifestBytes: positiveCount,\n items: positiveCount,\n pages: positiveCount,\n resources: positiveCount,\n resourceBytes: positiveCount,\n imagePixels: positiveCount,\n })\n .strict();\n\nexport const AccessResponseSchema = z.object({\n security: DocumentSecurityStateSchema,\n cdn: z.object({\n adapter: z.enum(['none', 'cloudfront', 'cloud-cdn', 'bunny', 'azure-fd', 'custom-hmac']),\n expiresAt: z.number().int().positive(),\n cache: z.object({\n scope: z.enum(['browser-private', 'edge-shared']),\n immutableVersionedReads: z.boolean(),\n }),\n baseUrlOverrides: z.record(z.string(), z.string()).nullable(),\n authHeader: z.object({ name: z.string(), value: z.string() }).nullable(),\n // Optional signing channels — each adapter populates the subset it uses\n signedQueryParams: z.record(z.string(), z.string()).nullable(),\n signedCookies: z\n .array(\n z.object({\n name: z.string(),\n value: z.string(),\n domain: z.string().optional(),\n path: z.string().optional(),\n expires: z.number().int().optional(),\n }),\n )\n .nullable(),\n signedPathPolicies: z\n .array(\n z.object({\n pathPrefix: z.string(),\n queryParams: z.record(z.string(), z.string()),\n }),\n )\n .nullable(),\n }),\n passwordGrant: z.string().nullable(),\n pdfPermissions: PdfPermissionInfoSchema,\n scope: z.array(z.string()),\n /**\n * Concrete capability set granted to this caller after expanding\n * `pdf.permissions` and applying resolver implication rules. Client\n * UI should drive feature visibility off this, not off raw `scope`.\n * Always present in /access responses (server populates from\n * `expandRawScope`). Sorted alphabetically for stable change\n * detection.\n */\n effectiveScope: z.array(z.string()),\n /** What the document's signatures forbid; `effectiveScope` already leaves it out. */\n protection: z.lazy(() => DocumentProtectionSchema).nullable(),\n identity: IdentitySchema,\n originPasswordPolicy: z.object({\n mode: z.enum(['not-needed', 'client-retry', 'server-session']),\n }),\n expiresAt: z.number().int().positive(),\n /**\n * The deployment's render lattice — the canonical parameter points the\n * server treats as durable, CDN-shared artifacts. Lives here and never in\n * the manifest: manifests are version-pinned immutable objects; the\n * lattice is mutable deployment policy. The SDK exposes it (and a pure\n * `snap` helper) but never conforms requests implicitly — the same render\n * call must not return different pixels on local vs cloud. When\n * `enforced` is true the server rejects off-lattice render tokens with\n * 400; when false, off-lattice renders are computed but not persisted.\n * Absent on older servers → treat as unenforced/unknown.\n */\n renderPolicy: z\n .object({\n /**\n * Full-page renders quantize on `viewport.width` — the bounded\n * quantity is output pixels, never zoom (PDF page space is\n * effectively unbounded, so a scale lattice bounds artifact count\n * but not size).\n */\n fullPage: z.object({\n widths: z.array(z.number().int().positive()),\n }),\n /**\n * Reserved for deep-zoom tile support: scale-based pyramid ×\n * fixed tile size, constant per-job cost. Absent until the tiling\n * plugin ships.\n */\n tiles: z\n .object({\n tileSizes: z.array(z.number().int().positive()),\n scales: z.array(z.number().positive()),\n })\n .optional(),\n /**\n * Annotation-appearance lattice — scale-based (appearances are sized\n * by `rect × scale` and must track the page's effective render scale\n * for crisp composites).\n */\n appearances: z\n .object({\n scales: z.array(z.number().positive()),\n })\n .optional(),\n /** Worker-side output budget for degenerate page geometry. */\n maxRenderPixels: z.number().int().positive().optional(),\n formats: z.array(z.enum(['webp', 'png'])),\n background: z.enum(['white']),\n enforced: z.boolean(),\n })\n .optional(),\n /** The deployment's limits for an annotation import (see `BundleLimits`). */\n bundleLimits: BundleLimitsSchema,\n /** The caller's editing session (see `DocumentAccessInfo.edit`). */\n edit: EditSessionAccessSchema.optional(),\n});\nexport type AccessResponse = z.infer<typeof AccessResponseSchema>;\nexport type RenderPolicy = NonNullable<AccessResponse['renderPolicy']>;\n\nexport const PdfSaveModeSchema: z.ZodType<PdfSaveMode> = z.enum(['incremental', 'rewrite']);\n\nconst engineErrorCodeValues = Object.values(EngineErrorCode) as [\n EngineErrorCode,\n ...EngineErrorCode[],\n];\n\nexport const EngineErrorPayloadSchema: z.ZodType<SerializedEngineError> = z.object({\n name: z.literal('EngineError'),\n code: z.enum(engineErrorCodeValues),\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const CachePinsSchema: z.ZodType<CachePins> = z.object({\n contentVersion: z.number().int().positive(),\n annotationVersion: z.number().int().positive(),\n widgetVersion: z.number().int().positive(),\n});\n\n/**\n * Plane scopes are derived from the version counters when a layer manifest\n * is built, never stored. Absent on base manifests: consumers treat absence\n * as all-'layer' (never wrong, only unshared).\n */\nconst LayerScopeValueSchema = z.enum(['base', 'layer']);\nexport const LayerScopesSchema: z.ZodType<LayerScopes> = z.object({\n content: LayerScopeValueSchema,\n annotations: LayerScopeValueSchema,\n forms: LayerScopeValueSchema,\n layout: LayerScopeValueSchema,\n attachments: LayerScopeValueSchema,\n metadata: LayerScopeValueSchema,\n actions: LayerScopeValueSchema,\n outline: LayerScopeValueSchema,\n});\nexport type { LayerScopes, LayerScopePlane } from '../dto/LayerScopes';\n\n/**\n * Per-page envelope inside `DocumentManifest`: the page, plus the\n * cache-busting integers the SDK embeds in leaf URLs\n * (`/pages/:pon/text@contentVersion=N`, `/pages/:pon/annotations@annotationVersion=N`).\n *\n * `contentVersion` bumps when the page's content stream changes\n * (text, page reorder doesn't, the pon is durable). `annotationVersion`\n * bumps when /Annots gains/loses entries or when a tracked annotation\n * mutates. The server derives both from its per-layer page state.\n */\nexport const ManifestPageSchema: z.ZodType<ManifestPage> = z.object({\n page: PageRefSchema,\n cache: CachePinsSchema,\n});\nexport type { ManifestPage } from '../dto/DocumentManifest';\n\n/**\n * Wire shape of `GET /v1/docs/:docId/manifest@docVersion=N`. Content-addressed\n * by `docVersion`; safe to cache with `Cache-Control: public,\n * max-age=31536000, immutable`.\n */\nexport const DocumentManifestSchema = z.object({\n docVersion: z.number().int().positive(),\n layoutVersion: z.number().int().positive(),\n metadataVersion: z.number().int().positive(),\n actionsVersion: z.number().int().positive().default(1),\n attachmentsVersion: z.number().int().positive().default(1),\n annotationsVersion: z.number().int().positive().default(1),\n formsVersion: z.number().int().positive().default(1),\n outlineVersion: z.number().int().positive().default(1),\n auditHead: z.number().int().nonnegative(),\n baseSha: z.string(),\n // Signing fences (absent on pre-signature servers: unwritten, unknown length).\n layerVersion: z.number().int().nonnegative().default(0),\n working: z.boolean().default(false),\n baseByteLength: z.number().int().nonnegative().default(0),\n // Plane scopes: layer manifests only; absent = all-'layer'.\n scopes: LayerScopesSchema.optional(),\n // Defined further down; lazy so this schema can come first.\n protection: z.lazy(() => DocumentProtectionSchema).nullable(),\n pages: z.array(ManifestPageSchema),\n}) as unknown as z.ZodType<DocumentManifest>;\nexport type { DocumentManifest } from '../dto/DocumentManifest';\n\n/** What both engines' `annotations.list()` return, and the server's list endpoints send. */\nexport const AnnotationListSchema: z.ZodType<AnnotationList> = z.object({\n annotations: z.array(AnnotationSchema),\n pages: z.array(PageRefSchema),\n auditHead: z.number().int().nonnegative().optional(),\n});\n\n/**\n * Wire shape of `GET …/text/pages/:pon/data@<contentVersion>` and the\n * `pages.text` worker result: the UTF-16-faithful extraction, the character\n * space size (`charCount` — the space geometry runs tile; not `text.length`),\n * and the optional character→text anchor map. Malformed maps are rejected\n * here with the shared `charMapViolation` invariants — absent/empty map\n * requires `charCount === text.length` (identity).\n */\nexport const PageTextSnapshotSchema: z.ZodType<PageTextSnapshot> = z\n .object({\n text: z.string(),\n charCount: z.number().int().nonnegative(),\n charMap: z\n .array(z.tuple([z.number().int().nonnegative(), z.number().int().nonnegative()]))\n .optional(),\n })\n .superRefine((snapshot, ctx) => {\n const violation = charMapViolation(snapshot.charCount, snapshot.text.length, snapshot.charMap);\n if (violation !== null) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['charMap'], message: violation });\n }\n });\n\nexport const PageGeometryGlyphSchema = z.object({\n loose: PageBoxSchema,\n tight: PageBoxSchema.optional(),\n space: z.literal(true).optional(),\n empty: z.literal(true).optional(),\n});\n\nexport const RotatedGeometryGlyphSchema = z.object({\n loose: PageQuadSchema,\n tight: PageQuadSchema.optional(),\n space: z.literal(true).optional(),\n empty: z.literal(true).optional(),\n});\n\nexport const UprightGeometryRunSchema = z.object({\n rect: PageBoxSchema,\n start: z.number().int().nonnegative(),\n glyphs: z.array(PageGeometryGlyphSchema),\n fontSize: z.number().optional(),\n});\n\nexport const RotatedGeometryRunSchema = z.object({\n rect: PageBoxSchema,\n start: z.number().int().nonnegative(),\n glyphs: z.array(RotatedGeometryGlyphSchema),\n rotation: z.number(),\n ascentFlip: z.boolean(),\n fontSize: z.number().optional(),\n});\n\n// Rotated first: in zod's default strip mode the upright shape would accept a\n// zero-glyph rotated run and silently drop its angle; the rotated shape can\n// never swallow an upright run (it requires `rotation`/`ascentFlip`).\nexport const PageGeometryRunSchema: z.ZodType<PageGeometryRun> = z.union([\n RotatedGeometryRunSchema,\n UprightGeometryRunSchema,\n]);\n\nexport const PageGeometrySnapshotSchema: z.ZodType<PageGeometrySnapshot> = z.object({\n runs: z.array(PageGeometryRunSchema),\n});\n\n/**\n * Search wire shapes: the request body of the layer search route and the\n * `search.query` worker/route result. The server re-validates the query\n * semantics (`validateSearchQuery`: regex dialect + flag combos) after\n * parse — the schema only checks structure.\n */\nconst searchQueryObject = z.object({\n text: z.string(),\n regex: z.boolean().optional(),\n matchCase: z.boolean().optional(),\n wholeWord: z.boolean().optional(),\n matchDiacritics: z.boolean().optional(),\n ignoreWhitespace: z.boolean().optional(),\n});\nexport const SearchQuerySchema: z.ZodType<SearchQuery> = searchQueryObject;\n\nexport const SearchRequestSchema: z.ZodType<SearchRequest> = searchQueryObject.extend({\n snippets: z.boolean().optional(),\n from: PageRefSchema.optional(),\n cursor: z.string().optional(),\n limit: z\n .object({\n matches: z.number().int().positive().optional(),\n pages: z.number().int().positive().optional(),\n })\n .optional(),\n});\n\nexport const SearchSnippetSchema: z.ZodType<SearchSnippet> = z.object({\n before: z.string(),\n match: z.string(),\n after: z.string(),\n});\n\nexport const PdfTextSegmentSchema: z.ZodType<PdfTextSegment> = z.object({\n quad: PageQuadSchema,\n rect: PageBoxSchema,\n advance: z.union([z.literal(1), z.literal(-1)]),\n});\n\nexport const SearchMatchSchema: z.ZodType<SearchMatch> = z.object({\n page: PageRefSchema,\n start: z.number().int().nonnegative(),\n count: z.number().int().positive(),\n segments: z.array(PdfTextSegmentSchema),\n snippet: SearchSnippetSchema.optional(),\n});\n\nexport const SearchSliceSchema: z.ZodType<SearchSlice> = z.object({\n matches: z.array(SearchMatchSchema),\n nextCursor: z.string().nullable(),\n pagesSearched: z.number().int().nonnegative(),\n pageCount: z.number().int().nonnegative(),\n});\n\nexport const PageNetworkRenderFormatSchema: z.ZodType<PageNetworkRenderFormat> = z.enum([\n 'png',\n 'webp',\n]);\n\n/**\n * Wire schema for the cloud render endpoints, applied to the **nested**\n * shape produced by `unflatten(...)` of the parsed token or query string.\n *\n * Adding a new render option is one change here (a new field plus any\n * cross-field rule in `superRefine`) plus one entry in\n * `RenderTokenSchema.fields`. The token codec, flatten/unflatten helpers,\n * route handlers, and SDK URL builder are all generic and pick the new\n * field up automatically.\n *\n * Coercion: token fields and query strings both arrive as strings, so every\n * scalar uses `z.coerce.*`. Discriminated unions on `viewport.kind` and\n * `target.kind` enforce viewport / rect coherence by construction — no\n * superRefine for \"fields must appear together\" rules.\n */\n\nconst RenderViewportSchema = z.discriminatedUnion('kind', [\n z\n .object({\n kind: z.literal('width'),\n width: z.coerce.number().positive().finite(),\n })\n .strict(),\n z\n .object({\n kind: z.literal('scale'),\n scale: z.coerce.number().positive().finite().optional(),\n })\n .strict(),\n]);\n\nconst RenderTargetSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('page') }).strict(),\n z\n .object({\n kind: z.literal('rect'),\n rect: z\n .object({\n x: z.coerce.number().finite(),\n y: z.coerce.number().finite(),\n width: z.coerce.number().positive().finite(),\n height: z.coerce.number().positive().finite(),\n })\n .strict(),\n })\n .strict(),\n]);\n\nconst RenderRotationSchema = z.preprocess(\n (raw) => (raw === undefined ? undefined : Number(raw)),\n z.number().refine((n) => n === 0 || n === 90 || n === 180 || n === 270, {\n message: 'render rotation must be 0, 90, 180, or 270',\n }),\n);\n\nconst RenderBackgroundSchema = z.enum(['white', 'transparent']);\n\n/** WebP quality, 0 (smallest) to 1 (best) — the `canvas.toBlob` scale. */\nconst RenderQualitySchema = z.coerce.number().min(0).max(1);\n\nconst AppearanceModeSchema = z.enum(['normal', 'rollover', 'down']);\n\n/**\n * A token's `modes`: the modes it asks for, in the engine's mode order,\n * joined by `-` (`normal-down`). Anything else is refused, so one set of\n * modes has one spelling and one URL.\n */\nconst AppearanceModesSchema = z.string().transform((value, ctx) => {\n const modes = value.split('-') as AnnotationAppearanceMode[];\n const canonical = ANNOTATION_APPEARANCE_MODES.filter((mode) => modes.includes(mode));\n if (\n canonical.length === 0 ||\n canonical.length === ANNOTATION_APPEARANCE_MODES.length ||\n canonical.join('-') !== value\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'modes must name some but not all of normal, rollover, down, in that order, joined by -',\n });\n return z.NEVER;\n }\n return canonical;\n});\n\n/**\n * The query/token schema of one picture family (`PAGE_RENDER_FAMILIES`).\n * What a picture draws is in its path, never its token, so each family has\n * its own schema, built from one shared base:\n *\n * - its pins are the family's own (`contentVersion`, plus\n * `annotationVersion` and `widgetVersion` for the planes it draws), and\n * `.strict()` refuses any other, so a pin the family doesn't depend on\n * is unrepresentable;\n * - a versioned request (one with `contentVersion`) carries every one of\n * them, since the picture changes with each.\n *\n * A print picture (`PAGE_PRINT_FAMILIES`) takes only its pins and its image\n * format: its path says what it draws and at which DPI, and its size comes\n * from that and the paper, so a page has one print picture per family and\n * tier.\n *\n * The transform stamps what the picture draws (and, for a print picture,\n * `usage` and its `dpi` viewport) onto the parsed options, so the worker\n * options downstream need no family.\n */\nfunction buildPageRenderQuerySchema(picture: PageRenderFamilySpec): z.ZodType<PageRenderQuery> {\n const { family, draws, pins, print } = picture;\n const pinFields: Record<string, z.ZodTypeAny> = {};\n for (const pin of pins) pinFields[pin] = z.coerce.number().int().positive().optional();\n const screenFields: Record<string, z.ZodTypeAny> = print\n ? {}\n : {\n viewport: RenderViewportSchema.optional(),\n target: RenderTargetSchema.optional(),\n rotation: RenderRotationSchema.optional(),\n background: RenderBackgroundSchema.optional(),\n };\n return z\n .object({\n ...pinFields,\n format: PageNetworkRenderFormatSchema.optional(),\n quality: RenderQualitySchema.optional(),\n ...screenFields,\n })\n .strict()\n .superRefine((v, ctx) => {\n const pinned = v as Partial<Record<PageRenderPin, number>>;\n if (pinned.contentVersion === undefined) {\n for (const pin of pins) {\n if (pinned[pin] === undefined) continue;\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [pin],\n message: `${pin} requires contentVersion`,\n });\n }\n return;\n }\n if (v.format === undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['format'],\n message: 'versioned render requires format',\n });\n }\n for (const pin of pins) {\n if (pinned[pin] !== undefined) continue;\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [pin],\n message: `a versioned ${family} picture requires ${pin}`,\n });\n }\n })\n .transform((v) => {\n const pinned = v as Partial<Record<PageRenderPin, number>>;\n const screen = v as Pick<PageImageOptions, 'target' | 'viewport' | 'rotation' | 'background'>;\n const options: PageImageOptions = {\n ...(screen.target ? { target: screen.target } : {}),\n ...(screen.viewport ? { viewport: screen.viewport } : {}),\n ...(screen.rotation !== undefined ? { rotation: screen.rotation } : {}),\n ...(screen.background !== undefined ? { background: screen.background } : {}),\n ...(v.quality !== undefined ? { quality: v.quality } : {}),\n ...(v.format !== undefined ? { format: v.format } : {}),\n ...draws,\n ...(print\n ? { usage: 'print' as const, viewport: { kind: 'dpi' as const, dpi: print.dpi } }\n : {}),\n };\n const query: PageRenderQuery = { options };\n for (const pin of pins) {\n if (pinned[pin] !== undefined) query[pin] = pinned[pin];\n }\n return query;\n }) as unknown as z.ZodType<PageRenderQuery>;\n}\n\n/** Query/token schemas of the four picture families, by family. */\nexport const PageRenderQuerySchemas: Readonly<\n Record<PageRenderFamily, z.ZodType<PageRenderQuery>>\n> = {\n pages: buildPageRenderQuerySchema(PAGE_RENDER_FAMILIES.pages),\n annotations: buildPageRenderQuerySchema(PAGE_RENDER_FAMILIES.annotations),\n fields: buildPageRenderQuerySchema(PAGE_RENDER_FAMILIES.fields),\n all: buildPageRenderQuerySchema(PAGE_RENDER_FAMILIES.all),\n};\n\n/** Query/token schemas of the print pictures, by tier and family. */\nexport const PagePrintQuerySchemas: Readonly<\n Record<PagePrintTier, Readonly<Record<PageRenderFamily, z.ZodType<PageRenderQuery>>>>\n> = {\n print: {\n pages: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES.print.pages),\n annotations: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES.print.annotations),\n fields: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES.print.fields),\n all: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES.print.all),\n },\n 'print-high': {\n pages: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES['print-high'].pages),\n annotations: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES['print-high'].annotations),\n fields: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES['print-high'].fields),\n all: buildPageRenderQuerySchema(PAGE_PRINT_FAMILIES['print-high'].all),\n },\n};\n\n/** The query/token schema of `picture`, screen or print. */\nexport function pagePictureQuerySchema(picture: PageRenderFamilySpec): z.ZodType<PageRenderQuery> {\n return picture.print\n ? PagePrintQuerySchemas[picture.print.tier][picture.family]\n : PageRenderQuerySchemas[picture.family];\n}\n\n/**\n * Query/token schema of an appearance batch, keyed by `pin`. Mirrors\n * `PageRenderQuerySchema` but without page target/background or\n * `includeAnnotations` (appearances are always annotation-derived), and keyed\n * by the page's pin for its family only — appearance bitmaps do not depend on\n * page base content, so `contentVersion` is not part of the cache key. The\n * endpoint renders every mode and state an annotation stores, or the `modes`\n * asked for.\n */\nfunction buildAppearancesQuerySchema<Pin extends 'annotationVersion' | 'widgetVersion'>(pin: Pin) {\n return z\n .object({\n [pin]: z.coerce.number().int().positive().optional(),\n format: PageNetworkRenderFormatSchema.optional(),\n modes: AppearanceModesSchema.optional(),\n rotation: RenderRotationSchema.optional(),\n viewport: RenderViewportSchema.optional(),\n quality: RenderQualitySchema.optional(),\n } as Record<string, z.ZodTypeAny>)\n .strict()\n .superRefine((v, ctx) => {\n // A versioned (cacheable) request pins its version and must declare\n // the encoded format so the cached URL is unambiguous.\n if (v[pin] !== undefined && v.format === undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['format'],\n message: 'versioned appearance render requires format',\n });\n }\n })\n .transform((v) => {\n const options: AnnotationAppearanceImageOptions = {\n ...(v.rotation !== undefined ? { rotation: v.rotation } : {}),\n ...(v.viewport ? { viewport: v.viewport } : {}),\n ...(v.quality !== undefined ? { quality: v.quality } : {}),\n ...(v.format !== undefined ? { format: v.format } : {}),\n ...(v.modes !== undefined ? { modes: v.modes } : {}),\n };\n return { options, ...(v[pin] !== undefined ? { [pin]: v[pin] } : {}) };\n });\n}\n\n/** Query/token schema of a page's annotation images (`annotations/pages/{p}/appearances@`). */\nexport const AnnotationAppearancesQuerySchema = buildAppearancesQuerySchema(\n 'annotationVersion',\n) as unknown as z.ZodType<AnnotationAppearancesQuery>;\n\n/** Query/token schema of a page's widget images (`form/pages/{p}/appearances@`). */\nexport const WidgetAppearancesQuerySchema = buildAppearancesQuerySchema(\n 'widgetVersion',\n) as unknown as z.ZodType<WidgetAppearancesQuery>;\n\n/**\n * The `body` part of the appearance `multipart/form-data` response.\n * Wire-stable; the cloud client validates the parsed `body` part against\n * this before reconstructing image handles from the binary parts.\n */\nexport const AnnotationAppearanceBatchSchema: z.ZodType<AnnotationAppearanceBatch> = z.object({\n page: PageRefSchema,\n appearances: z.array(\n z.object({\n resources: ImageResourceKeysSchema,\n ref: AnnotationRefSchema,\n mode: AppearanceModeSchema,\n state: z.string().nullable(),\n rect: PageBoxSchema,\n width: z.number().int().positive(),\n height: z.number().int().positive(),\n format: PageNetworkRenderFormatSchema,\n contentType: z.string().min(1),\n }),\n ),\n});\n\nexport const CacheDeltaSchema: z.ZodType<CacheDelta> = z.object({\n previousDocVersion: z.number().int().nonnegative(),\n docVersion: z.number().int().positive(),\n annotationsVersion: z.number().int().positive().optional(),\n formsVersion: z.number().int().positive().optional(),\n layoutVersion: z.number().int().positive().optional(),\n metadataVersion: z.number().int().positive().optional(),\n attachmentsVersion: z.number().int().positive().optional(),\n outlineVersion: z.number().int().positive().optional(),\n layerVersion: z.number().int().nonnegative().optional(),\n working: z.boolean().optional(),\n pages: z.array(\n z.object({\n page: PageRefSchema,\n cache: CachePinsSchema,\n }),\n ),\n});\n\nexport const MutationMetaSchema: z.ZodType<MutationMeta> = z.object({\n affectedPages: z.array(PageRefSchema),\n cacheDelta: CacheDeltaSchema.nullable(),\n opId: z.string(),\n undoable: z.boolean(),\n});\n\n/**\n * Where rows go in their list, on the wire: `'start'`, `'end'`, or one\n * object naming exactly one neighbour (`before` or `after`).\n */\nfunction listPositionSchema<Ref>(ref: z.ZodType<Ref>): z.ZodType<ListPosition<Ref>> {\n return z.union([\n z.enum(['start', 'end']),\n z\n .object({ before: ref.optional(), after: ref.optional() })\n .strict()\n .refine((position) => (position.before === undefined) !== (position.after === undefined), {\n message: 'exactly one of before or after',\n }),\n ]) as unknown as z.ZodType<ListPosition<Ref>>;\n}\n\n/** Where pages go among the document's pages. */\nexport const PagePositionSchema = listPositionSchema(PageRefSchema);\n\n/** Where annotations go among their page's annotations, or widgets among its widgets. */\nexport const AnnotationPositionSchema = listPositionSchema(AnnotationRefSchema);\n\n/** Where fields go in the form's calculation order. */\nexport const FieldPositionSchema = listPositionSchema(FormFieldRefSchema);\n\n/** Where outline items go among one parent's children. */\nexport const OutlinePositionSchema = listPositionSchema(OutlineItemRefSchema);\n\n/**\n * Stable public component names for the models every part of the document\n * wire shares (page refs, a write's meta, the metadata), like\n * `AnnotationWireComponents`.\n */\nexport const DocumentWireComponents = {\n PageRef: PageRefSchema,\n PagePosition: PagePositionSchema,\n CacheDelta: CacheDeltaSchema,\n MutationMeta: MutationMetaSchema,\n DocumentMetadata: DocumentMetadataSchema,\n MetadataPatch: MetadataPatchSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\n/** Per-page side-effect envelope every annotation mutation returns. Mirrors `AnnotationListMutationMeta`. */\nexport const AnnotationListMutationMetaSchema: z.ZodType<AnnotationListMutationMeta> = z.object({\n affectedPages: z.array(PageRefSchema),\n cacheDelta: CacheDeltaSchema.nullable(),\n opId: z.string(),\n undoable: z.boolean(),\n changed: z.array(AnnotationRefSchema),\n});\n\nexport const AnnotationCreateResultSchema: z.ZodType<AnnotationCreateResult> = z.object({\n annotation: AnnotationSchema,\n meta: AnnotationListMutationMetaSchema,\n});\n\nexport const AnnotationImportResultSchema: z.ZodType<AnnotationImportResult> = z.object({\n annotations: z.array(AnnotationSchema),\n refMap: z.array(z.object({ from: AnnotationRefSchema, to: AnnotationRefSchema })),\n dropped: z.array(\n z.object({\n ref: AnnotationRefSchema,\n field: z.string().optional(),\n reason: z.enum([\n 'unsupported-kind',\n 'widget',\n 'geospatial',\n 'unknown-measure',\n 'unsupported-action',\n 'unsupported-value',\n 'name-conflict',\n 'parent-dropped',\n 'parent-missing',\n 'popup-taken',\n ]),\n }),\n ),\n meta: AnnotationListMutationMetaSchema,\n}) as z.ZodType<AnnotationImportResult>;\n\n/** The engine's `/AP` verdict riding every update result (see engine-core\n * `annotation/appearance.ts`). `changed` drives client raster invalidation. */\nexport const AppearanceOutcomeSchema: z.ZodType<AppearanceOutcome> = z.object({\n action: z.enum(['preserved', 'regenerated', 'generation-unavailable', 'restored']),\n changed: z.boolean(),\n});\n\nexport const AnnotationUpdateResultSchema: z.ZodType<AnnotationUpdateResult> = z.object({\n annotation: AnnotationSchema,\n appearance: AppearanceOutcomeSchema,\n meta: AnnotationListMutationMetaSchema,\n});\n\nexport const AnnotationDeleteResultSchema: z.ZodType<AnnotationDeleteResult> = z.object({\n meta: AnnotationListMutationMetaSchema,\n});\n\n/**\n * Stable public component names for the annotation wire model, so an OpenAPI\n * projection names each once (`Annotation`, not one type per response that\n * carries one), like `PdfActionWireComponents`.\n */\nexport const AnnotationWireComponents = {\n Annotation: AnnotationSchema,\n AnnotationRef: AnnotationRefSchema,\n AnnotationDraft: AnnotationDraftSchema,\n AnnotationPatch: AnnotationPatchSchema,\n PdfLinkTarget: PdfLinkTargetSchema,\n PdfLinkTargetWritable: PdfLinkTargetWritableSchema,\n AnnotationList: AnnotationListSchema,\n AnnotationMutationMeta: AnnotationListMutationMetaSchema,\n AnnotationPosition: AnnotationPositionSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\n/** What `page.annotations.reorder` takes on the wire. */\nexport const AnnotationReorderBodySchema = z\n .object({ refs: z.array(AnnotationRefSchema).min(1), position: AnnotationPositionSchema })\n .strict();\n\n/** A stacking-order change: the page's annotations in their new order, as refs. */\nexport const AnnotationReorderResultSchema: z.ZodType<AnnotationReorderResult> = z.object({\n order: z.array(AnnotationRefSchema),\n meta: AnnotationListMutationMetaSchema,\n});\n\n/** A single-field write's meta: the envelope plus the fields and widgets it changed. */\nexport const FormMutationMetaSchema: z.ZodType<FormMutationMeta> = z.object({\n affectedPages: z.array(PageRefSchema),\n cacheDelta: CacheDeltaSchema.nullable(),\n opId: z.string(),\n undoable: z.boolean(),\n changedFields: z.array(FormFieldRefSchema),\n changedWidgets: z.array(FormWidgetSchema),\n redrawnWidgets: z.array(FormWidgetSchema),\n});\n\n/**\n * Stable public component names for the form wire model, so an OpenAPI\n * projection names each once (`FormField`, not one type per response that\n * carries one), like `AnnotationWireComponents`.\n */\nexport const FormWireComponents = {\n FormFieldRef: FormFieldRefSchema,\n FormField: FormFieldDTOSchema,\n FormFieldValue: FormFieldValueSchema,\n FormWidget: FormWidgetSchema,\n FormFieldDraft: FormFieldDraftSchema,\n FormFieldPatch: FormFieldPatchSchema,\n FieldPosition: FieldPositionSchema,\n WidgetPlacement: WidgetPlacementSchema,\n WidgetAnnotation: WidgetDTOSchema,\n WidgetPatch: WidgetPatchSchema,\n FormMutationMeta: FormMutationMetaSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\nexport const FormSetValueResultSchema: z.ZodType<FormSetValueResult> = z.object({\n field: FormFieldDTOSchema,\n widgets: z.array(WidgetDTOSchema),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormSetValueResult>;\n\nexport const FormResetResultSchema: z.ZodType<FormResetResult> = z.object({\n fields: z.array(FormFieldDTOSchema),\n widgets: z.array(WidgetDTOSchema),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormResetResult>;\n\n/** What `reset` takes on the wire: the fields to reset, or none for the whole form. */\nexport const FormResetBodySchema = z\n .object({ refs: z.array(FormFieldRefSchema).optional() })\n .strict();\n\n/** What `updateWidget` takes on the wire: the widget patch (`PATCH …/form/widgets/{p}/{key}`). */\nexport const FormWidgetUpdateBodySchema = z.object({ patch: WidgetPatchSchema }).strict();\n\nexport const FormImportResultSchema: z.ZodType<FormImportResult> = z.object({\n fields: z.array(FormFieldDTOSchema),\n widgets: z.array(WidgetDTOSchema),\n refMap: z.array(z.object({ from: FormFieldRefSchema, to: FormFieldRefSchema })),\n dropped: z.array(\n z.object({\n ref: FormFieldRefSchema.nullable(),\n widget: AnnotationRefSchema.optional(),\n field: z.string().optional(),\n reason: z.enum([\n 'name-conflict',\n 'no-field',\n 'unsupported-family',\n 'script-not-allowed',\n 'unsupported-action',\n ]),\n }),\n ),\n calculationOrder: z.array(FormFieldRefSchema).optional(),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormImportResult>;\n\nexport const FormValuesImportResultSchema: z.ZodType<FormValuesImportResult> = z.object({\n fields: z.array(FormFieldDTOSchema),\n widgets: z.array(WidgetDTOSchema),\n dropped: z.array(\n z.object({\n ref: FormFieldRefSchema,\n reason: z.enum([\n 'no-field',\n 'wrong-family',\n 'value-not-allowed',\n 'locked',\n 'fill-not-allowed',\n ]),\n }),\n ),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormValuesImportResult>;\n\nexport const FormFieldCreateResultSchema: z.ZodType<FormFieldCreateResult> = z.object({\n field: FormFieldDTOSchema,\n widgets: z.array(WidgetDTOSchema),\n calculationOrder: z.array(FormFieldRefSchema).optional(),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormFieldCreateResult>;\n\nexport const FormFieldUpdateResultSchema: z.ZodType<FormFieldUpdateResult> = z.object({\n field: FormFieldDTOSchema,\n widgets: z.array(WidgetDTOSchema),\n calculationOrder: z.array(FormFieldRefSchema).optional(),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormFieldUpdateResult>;\n\nexport const FormWidgetUpdateResultSchema: z.ZodType<FormWidgetUpdateResult> = z.object({\n widget: WidgetDTOSchema,\n appearance: AppearanceOutcomeSchema,\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormWidgetUpdateResult>;\n\n/** What `forms.reorderWidgets` takes on the wire: the widgets of one page and where they go. */\nexport const FormWidgetsReorderBodySchema = z\n .object({ widgets: z.array(AnnotationRefSchema).min(1), position: AnnotationPositionSchema })\n .strict();\n\n/** A widget stacking-order change: the page's widgets in their new order, as refs. */\nexport const FormWidgetsReorderResultSchema: z.ZodType<FormWidgetsReorderResult> = z.object({\n page: PageRefSchema,\n order: z.array(AnnotationRefSchema),\n meta: FormMutationMetaSchema,\n});\n\nexport const FormFieldDeleteResultSchema: z.ZodType<FormFieldDeleteResult> = z.object({\n calculationOrder: z.array(FormFieldRefSchema).optional(),\n meta: FormMutationMetaSchema,\n});\n\n/** What `forms.reorderCalculations` takes on the wire: the fields and where they go. */\nexport const FormCalculationsReorderBodySchema = z\n .object({ fields: z.array(FormFieldRefSchema).min(1), position: FieldPositionSchema })\n .strict();\n\n/** A calculation-order change: the form's whole new order. */\nexport const FormCalculationsReorderResultSchema: z.ZodType<FormCalculationsReorderResult> =\n z.object({\n calculationOrder: z.array(FormFieldRefSchema),\n meta: FormMutationMetaSchema,\n });\n\nexport const FormWidgetLinkResultSchema: z.ZodType<FormWidgetLinkResult> = z.object({\n field: FormFieldDTOSchema,\n widgets: z.array(WidgetDTOSchema),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormWidgetLinkResult>;\n\nexport const FormWidgetDeleteResultSchema: z.ZodType<FormWidgetDeleteResult> = z.object({\n widget: AnnotationRefSchema,\n page: PageRefSchema,\n field: FormFieldDTOSchema.nullable(),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormWidgetDeleteResult>;\n\nexport const FormWidgetRestoreResultSchema: z.ZodType<FormWidgetRestoreResult> = z.object({\n field: FormFieldDTOSchema.nullable(),\n widgets: z.array(WidgetDTOSchema),\n meta: FormMutationMetaSchema,\n}) as unknown as z.ZodType<FormWidgetRestoreResult>;\n\nexport const FormRepairResultSchema: z.ZodType<FormRepairResult> = z.object({\n acroformCreated: z.boolean(),\n fieldsLinked: z.number().int().nonnegative(),\n widgetsLinked: z.number().int().nonnegative(),\n fieldsUnrepairable: z.number().int().nonnegative(),\n appearancesBaked: z.number().int().nonnegative(),\n needsAppearancesCleared: z.boolean(),\n meta: MutationMetaSchema,\n});\n\n/**\n * A PDF box in PDF user space as a `PdfRect` (`{ left, bottom, right, top }`,\n * y-up edges, un-rotated, not origin-normalized). Re-exported from the\n * canonical geometry schema so the wire and the runtime agree.\n */\nexport { PdfRectSchema };\n\n/** A page's five boxes in page space: measured from the top-left of the crop box. */\nexport const PageBoxesSchema: z.ZodType<PageBoxes> = z.object({\n media: PageBoxSchema,\n crop: PageBoxSchema,\n bleed: PageBoxSchema,\n trim: PageBoxSchema,\n art: PageBoxSchema,\n});\n\n/**\n * Pure geometry for one page (`pages.list()` element). No annotation\n * liveness — that lives on annotation reads and the manifest.\n */\nexport const PageLayoutSchema: z.ZodType<PageLayout> = z.object({\n index: z.number().int().nonnegative(),\n ref: PageRefSchema,\n label: z.string().nullable(),\n size: PdfSizeSchema,\n rotation: PdfRotationSchema,\n userUnit: z.number().positive(),\n tabOrder: z.enum(['rows', 'columns', 'structure', 'annotations', 'widgets']).nullable(),\n boxes: PageBoxesSchema,\n pdfCropBox: PdfRectSchema,\n actions: PdfPageActionsSchema.optional(),\n});\n\nexport const PageFlattenResultSchema: z.ZodType<PageFlattenResult> = z.object({\n pages: z.array(PageRefSchema),\n usage: z.enum(['display', 'print']),\n results: z.array(\n z.object({\n page: PageRefSchema,\n status: z.enum(['applied', 'unchanged']),\n }),\n ),\n meta: MutationMetaSchema,\n});\n\n/** See `AnnotationFlattenResult`. */\nexport const AnnotationFlattenResultSchema: z.ZodType<AnnotationFlattenResult> = z.object({\n page: PageRefSchema,\n usage: z.enum(['display', 'print']),\n results: z.array(\n z.object({\n ref: AnnotationRefSchema,\n status: z.enum(['applied', 'unchanged']),\n }),\n ),\n meta: MutationMetaSchema,\n});\n\n/** `annotations.flatten` input — see `AnnotationFlattenInput`. */\nexport const AnnotationFlattenInputSchema: z.ZodType<AnnotationFlattenInput> = z.object({\n refs: z.array(AnnotationRefSchema).min(1),\n usage: z.enum(['display', 'print']),\n});\n\n/** `annotations.exportAppearance` input — see `AnnotationAppearanceExportInput`. */\nexport const AnnotationAppearanceExportInputSchema: z.ZodType<AnnotationAppearanceExportInput> =\n z.object({\n refs: z.array(AnnotationRefSchema).min(1),\n });\n\n/** `doc.annotations.export` selection — see `AnnotationExportSelection`. */\nexport const AnnotationExportSelectionSchema: z.ZodType<AnnotationExportSelection> = z\n .object({\n refs: z.array(AnnotationRefSchema).optional(),\n pages: z.array(PageRefSchema).optional(),\n include: z.enum(['references', 'threads']).optional(),\n })\n .strict();\n\n/**\n * The body of a POST annotation export: the pins a GET's token carries and\n * the selection, for one a URL can't carry.\n */\nexport const AnnotationsExportRequestSchema = z\n .object({\n annotationsVersion: z.number().int().positive(),\n layoutVersion: z.number().int().positive(),\n selection: AnnotationExportSelectionSchema,\n })\n .strict();\n\n/** Where an import puts each page of a bundle — see `BundleImportPages`. */\nconst BundleImportPagesSchema = z.union([\n z.literal('same'),\n z.literal('by-position'),\n z.array(z.object({ from: PageRefSchema, to: PageRefSchema }).strict()),\n]);\n\n/** `doc.forms.export` selection — see `FormExportSelection`. */\nexport const FormExportSelectionSchema: z.ZodType<FormExportSelection> = z\n .object({\n fields: z.array(FormFieldRefSchema).optional(),\n pages: z.array(PageRefSchema).optional(),\n })\n .strict();\n\n/**\n * The body of a POST form export: the pins a GET's token carries and the\n * selection, for one a URL can't carry.\n */\nexport const FormExportRequestSchema = z\n .object({\n formsVersion: z.number().int().positive(),\n layoutVersion: z.number().int().positive(),\n selection: FormExportSelectionSchema,\n })\n .strict();\n\n/** `doc.forms.import` options on the wire; the `opId` is the `Idempotency-Key` header. */\nexport const FormImportOptionsSchema: z.ZodType<Omit<FormImportOptions, 'opId'>> = z\n .object({\n pages: BundleImportPagesSchema.optional(),\n attribution: z.enum(['restore', 'stamp']).optional(),\n values: z.boolean().optional(),\n })\n .strict();\n\n/** `doc.forms.importValues` options on the wire. */\nexport const FormValuesImportOptionsSchema: z.ZodType<Omit<FormValuesImportOptions, 'opId'>> = z\n .object({ attribution: z.enum(['restore', 'stamp']).optional() })\n .strict();\n\n/** A form bundle's envelope: its rows are the worker's to check, as an annotation bundle's. */\nconst FormBundleEnvelopeSchema = z\n .object({\n format: z.literal('embedpdf/form'),\n version: z.literal(1),\n pages: z.array(z.unknown()),\n fields: z.array(z.unknown()),\n widgets: z.array(z.unknown()),\n calculationOrder: z.array(z.unknown()),\n })\n .strict();\n\n/** The `body` part of a form import request. */\nexport const FormImportBodySchema: z.ZodType<FormImportBody> = z\n .object({ bundle: FormBundleEnvelopeSchema, options: FormImportOptionsSchema })\n .strict() as unknown as z.ZodType<FormImportBody>;\n\n/** The `body` part of a form values import request. */\nexport const FormValuesImportBodySchema: z.ZodType<FormValuesImportBody> = z\n .object({ bundle: FormBundleEnvelopeSchema, options: FormValuesImportOptionsSchema })\n .strict() as unknown as z.ZodType<FormValuesImportBody>;\n\n/** `doc.annotations.import` options on the wire; the `opId` is the `Idempotency-Key` header. */\nexport const AnnotationImportOptionsSchema: z.ZodType<Omit<AnnotationImportOptions, 'opId'>> = z\n .object({\n pages: BundleImportPagesSchema.optional(),\n attribution: z.enum(['restore', 'stamp']).optional(),\n })\n .strict();\n\n/**\n * The `body` part of an import request. Only its envelope is checked\n * here: the bundle's pages and items are the worker's to check, against the\n * limits and each kind's create schema.\n */\nexport const AnnotationImportBodySchema: z.ZodType<AnnotationImportBody> = z\n .object({\n bundle: z\n .object({\n format: z.literal('embedpdf/annotations'),\n version: z.literal(1),\n pages: z.array(z.unknown()),\n items: z.array(z.unknown()),\n })\n .strict(),\n options: AnnotationImportOptionsSchema,\n })\n .strict() as unknown as z.ZodType<AnnotationImportBody>;\n\nexport const PageFlattenInputSchema: z.ZodType<PageFlattenInput> = z.object({\n pages: z.array(PageRefSchema),\n usage: z.enum(['display', 'print']),\n});\n\n/**\n * `{ pages }` or `{ annotations }`: one object with exactly one of the two,\n * so the wire has no untagged union (the API reference labels variants by a\n * discriminating literal, and a scope has none to add).\n */\nexport const RedactionApplyScopeSchema: z.ZodType<RedactionApplyScope> = z\n .object({\n pages: z.array(PageRefSchema).optional(),\n annotations: z.array(AnnotationRefSchema).optional(),\n })\n .strict()\n .refine((scope) => (scope.pages === undefined) !== (scope.annotations === undefined), {\n message: 'exactly one of pages or annotations',\n }) as unknown as z.ZodType<RedactionApplyScope>;\n\nexport const RedactionApplyResultSchema: z.ZodType<RedactionApplyResult> = z.object({\n scope: RedactionApplyScopeSchema,\n results: z.array(\n z.object({\n page: PageRefSchema,\n status: z.enum(['applied', 'unchanged']),\n removedAnnotationCount: z.number().int().nonnegative(),\n }),\n ),\n removedAnnotationCount: z.number().int().nonnegative(),\n meta: MutationMetaSchema,\n});\n\n/**\n * Snapshot of every page in display order. Pages are addressed by\n * `pageObjectNumber` everywhere except the per-element `index`, which is\n * display order and intentionally not an identity. Carries geometry only.\n */\n/** See `NamedPageEntry`: decoded key + what it resolves to. */\nexport const NamedPageEntrySchema: z.ZodType<NamedPageEntry> = z.object({\n name: z.string(),\n target: z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('page'), page: PageRefSchema }),\n z.object({ kind: z.literal('template'), objectNumber: z.number().int().positive() }),\n z.object({ kind: z.literal('dangling') }),\n ]),\n});\n\nexport const PageListSnapshotSchema: z.ZodType<PageListSnapshot> = z.object({\n pageCount: z.number().int().nonnegative(),\n pages: z.array(PageLayoutSchema),\n namedPages: z.array(NamedPageEntrySchema),\n});\n\n/** `pages.setName` input — see `PageNameInput`. */\nexport const PageNameInputSchema: z.ZodType<PageNameInput> = z.object({\n name: z.string().min(1),\n page: PageRefSchema,\n replace: z.string().min(1).optional(),\n});\n\n/** `pages.removeName` input — see `PageRemoveNameInput`. */\nexport const PageRemoveNameInputSchema: z.ZodType<PageRemoveNameInput> = z.object({\n name: z.string().min(1),\n});\n\n/**\n * Page reorder result. No per-page revision is bumped (they survive a page\n * reorder). The whole new order is returned so callers swap their snapshot.\n */\nexport const PageReorderResultSchema: z.ZodType<PageReorderResult> = z.object({\n pages: z.array(PageRefSchema),\n layout: PageListSnapshotSchema,\n meta: MutationMetaSchema,\n});\n\n/** Named-page mutation result — layout-shaped, see `PageNameResult`. */\nexport const PageNameResultSchema: z.ZodType<PageNameResult> = z.object({\n layout: PageListSnapshotSchema,\n meta: MutationMetaSchema,\n});\n\n/**\n * Page rotate result. Rotation is presentation metadata over normalized\n * content: nothing per-page invalidates; the new `layout` carries the\n * rotation values (see `PageRotateResult`).\n */\nexport const PageRotateResultSchema: z.ZodType<PageRotateResult> = z.object({\n layout: PageListSnapshotSchema,\n meta: MutationMetaSchema,\n});\n\n/**\n * Page delete result. Deleted page object numbers are retired (never recycled); surviving\n * pages keep identity + revisions (see `PageDeleteResult`).\n */\nexport const PageDeleteResultSchema: z.ZodType<PageDeleteResult> = z.object({\n layout: PageListSnapshotSchema,\n meta: MutationMetaSchema,\n});\n\n/**\n * What blank pages to make (`PageInsertBlankSpec`). `size` is in PDF points\n * (un-rotated); `count` shares the contract cap with the worker so a request\n * the schema accepts cannot then fail the worker's own guard.\n */\nexport const PageInsertBlankSpecSchema = z.object({\n size: z.object({\n width: z.number().positive().finite(),\n height: z.number().positive().finite(),\n }),\n count: z.number().int().min(1).max(PAGE_INSERT_BLANK_MAX_COUNT).optional(),\n});\n\n/**\n * Page extract input: the pages to export, in the order they should appear,\n * and `pages.extract()`'s options (`PageExtractOptions`).\n */\nexport const PageExtractInputSchema: z.ZodType<PageExtractInput> = z\n .object({\n pages: z.array(PageRefSchema).min(1),\n flatten: z\n .object({ usage: z.enum(['display', 'print']).optional() })\n .strict()\n .optional(),\n includeAnnotations: z.boolean().optional(),\n includeFormFields: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Page insert result — shared by bytes-insert and blank-insert: the fresh\n * page object numbers in insertion order plus the full new layout (see `PageInsertResult`).\n */\nexport const PageInsertResultSchema: z.ZodType<PageInsertResult> = z.object({\n insertedPages: z.array(PageRefSchema),\n layout: PageListSnapshotSchema,\n meta: MutationMetaSchema,\n});\n\n/** Page restore result: the pages an undo brought back (see `PageRestoreResult`). */\nexport const PageRestoreResultSchema: z.ZodType<PageRestoreResult> = z.object({\n pages: z.array(PageRefSchema),\n layout: PageListSnapshotSchema,\n meta: MutationMetaSchema,\n});\n\n/** See `AttachmentMutationMeta`. */\nexport const AttachmentMutationMetaSchema: z.ZodType<AttachmentMutationMeta> = z.object({\n affectedPages: z.array(PageRefSchema),\n cacheDelta: CacheDeltaSchema.nullable(),\n opId: z.string(),\n undoable: z.boolean(),\n changed: z.array(AttachmentRefSchema),\n});\n\nexport const AttachmentCreateResultSchema: z.ZodType<AttachmentCreateResult> = z.object({\n attachment: AttachmentSchema,\n meta: AttachmentMutationMetaSchema,\n});\n\nexport const AttachmentRestoreResultSchema: z.ZodType<AttachmentRestoreResult> = z.object({\n attachment: AttachmentSchema,\n meta: AttachmentMutationMetaSchema,\n});\n\nexport const AttachmentDeleteResultSchema: z.ZodType<AttachmentDeleteResult> = z.object({\n meta: AttachmentMutationMetaSchema,\n});\n\n/** See `AttachmentList`. */\nexport const AttachmentListSchema: z.ZodType<AttachmentList> = z.object({\n attachments: z.array(AttachmentSchema),\n});\n\n/** Embedded files (`doc.attachments`): the models the OpenAPI projection names. */\nexport const AttachmentWireComponents = {\n AttachmentRef: AttachmentRefSchema,\n AttachmentFileInfo: AttachmentFileInfoSchema,\n Attachment: AttachmentSchema,\n AttachmentList: AttachmentListSchema,\n AttachmentFileBase: AttachmentFileBaseSchema,\n AttachmentMutationMeta: AttachmentMutationMetaSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\n/**\n * Metadata write result: the re-read `metadata`. On the cloud,\n * `meta.cacheDelta` advances only `docVersion` and `metadataVersion`.\n */\nexport const MetadataUpdateResultSchema: z.ZodType<MetadataUpdateResult> = z.object({\n metadata: DocumentMetadataSchema,\n meta: MutationMetaSchema,\n});\n\nexport const CustomMetadataUpdateResultSchema: z.ZodType<CustomMetadataUpdateResult> = z.object({\n custom: CustomMetadataSchema,\n meta: MutationMetaSchema,\n});\n\n/** The meta of every outline write: `MutationMeta` and the items it touched. */\nexport const OutlineMutationMetaSchema: z.ZodType<OutlineMutationMeta> = z.object({\n affectedPages: z.array(PageRefSchema),\n cacheDelta: CacheDeltaSchema.nullable(),\n opId: z.string(),\n undoable: z.boolean(),\n changed: z.array(OutlineItemRefSchema),\n});\n\n/** One parent's children as a write left them; `parent: null` is the top level. */\nexport const OutlineOrderSchema: z.ZodType<OutlineOrder> = z.object({\n parent: OutlineItemRefSchema.nullable(),\n children: z.array(OutlineItemRefSchema),\n});\n\nexport const OutlineCreateResultSchema: z.ZodType<OutlineCreateResult> = z.object({\n item: OutlineItemSchema,\n order: OutlineOrderSchema,\n meta: OutlineMutationMetaSchema,\n});\n\nexport const OutlineUpdateResultSchema: z.ZodType<OutlineUpdateResult> = z.object({\n item: OutlineItemSchema,\n meta: OutlineMutationMetaSchema,\n});\n\nexport const OutlineMoveResultSchema: z.ZodType<OutlineMoveResult> = z.object({\n orders: z.array(OutlineOrderSchema),\n meta: OutlineMutationMetaSchema,\n});\n\nexport const OutlineDeleteResultSchema: z.ZodType<OutlineDeleteResult> = z.object({\n meta: OutlineMutationMetaSchema,\n});\n\nexport const OutlineRestoreResultSchema: z.ZodType<OutlineRestoreResult> = z.object({\n items: z.array(OutlineItemSchema),\n order: OutlineOrderSchema,\n meta: OutlineMutationMetaSchema,\n});\n\n/**\n * Stable public component names for the outline wire model, so an OpenAPI\n * projection names each once (`OutlineItem`, not one type per response or op\n * that carries one), like `AnnotationWireComponents`.\n */\nexport const OutlineWireComponents = {\n OutlineItemRef: OutlineItemRefSchema,\n OutlineItem: OutlineItemSchema,\n DocumentOutline: DocumentOutlineSchema,\n OutlineItemDraft: OutlineItemDraftSchema,\n OutlineItemPatch: OutlineItemPatchSchema,\n OutlinePosition: OutlinePositionSchema,\n OutlineOrder: OutlineOrderSchema,\n OutlineMutationMeta: OutlineMutationMetaSchema,\n} as const satisfies Record<string, z.ZodTypeAny>;\n\n// ---------------------------------------------------------------------------\n// Digital signatures: the JSON forms of the two-phase signing DTOs.\n//\n// `SignaturePrepared.digest` and `SignatureCompleteInput.cms` are bytes;\n// `JSON.stringify` turns a typed array into an index-keyed object, which\n// the completion gate then rejects. These codecs are the one definition\n// the HTTP bodies and the server's durable `prepared_json` share.\n// ---------------------------------------------------------------------------\n\nexport { fromBase64, toBase64 };\n\nconst Base64Schema = z.string().regex(/^[A-Za-z0-9+/]*={0,2}$/, 'base64');\n\nexport const DocumentVersionRefSchema: z.ZodType<DocumentVersionRef> = z.object({\n baseSha256: z.string().regex(/^[0-9a-f]{64}$/),\n editsVersion: z.number().int().nonnegative(),\n});\n\nexport const ByteRangeSchema = z.tuple([\n z.number().int().nonnegative(),\n z.number().int().nonnegative(),\n z.number().int().nonnegative(),\n z.number().int().nonnegative(),\n]);\n\n/** `SignaturePrepared` with the digest as base64. */\nexport const SignaturePreparedWireSchema = z.object({\n signingId: z.string().min(1),\n digest: Base64Schema,\n algorithm: z.enum(['sha256', 'sha384', 'sha512']),\n byteRange: ByteRangeSchema,\n contentsSize: z.number().int().positive(),\n subFilter: z.string(),\n expectedVersion: DocumentVersionRefSchema,\n expiresAt: z.string().nullable(),\n});\nexport type SignaturePreparedWire = z.infer<typeof SignaturePreparedWireSchema>;\n\nexport function encodePrepared(prepared: SignaturePrepared): SignaturePreparedWire {\n return { ...prepared, digest: toBase64(prepared.digest) };\n}\n\nexport function decodePrepared(wire: SignaturePreparedWire): SignaturePrepared {\n return {\n ...wire,\n digest: fromBase64(wire.digest),\n subFilter: wire.subFilter as SignaturePrepared['subFilter'],\n };\n}\n\n/** The JSON body of a completion: the CMS as base64 beside the fence. */\nexport const SignatureCompleteBodySchema = z.object({\n cms: Base64Schema.refine((v) => v.length > 0, 'cms is required'),\n expectedVersion: DocumentVersionRefSchema,\n});\nexport type SignatureCompleteBody = z.infer<typeof SignatureCompleteBodySchema>;\n\n// ---------------------------------------------------------------------------\n// Digital signatures: the read-side DTOs, the prepare body, the analysis\n// query, and the version catalog.\n// ---------------------------------------------------------------------------\n\nconst DocMdpPermissionSchema = z.union([z.literal(1), z.literal(2), z.literal(3)]);\nconst ModificationLevelSchema = z.enum(['none', 'lta', 'fill', 'annotate']);\nconst DigestAlgorithmSchema = z.enum(['sha1', 'sha256', 'sha384', 'sha512']);\n\nexport const FieldLockSpecSchema: z.ZodType<FieldLockSpec> = z.object({\n action: z.enum(['all', 'include', 'exclude']),\n fields: z.array(z.string()),\n permission: DocMdpPermissionSchema.optional(),\n});\n\nexport const SignatureSeedValueSchema: z.ZodType<SignatureSeedValue> = z.object({\n requiredFlags: z.number().int(),\n presentFlags: z.number().int(),\n version: z.number().int().nullable(),\n mdp: z.union([z.literal(0), z.literal(1), z.literal(2), z.literal(3)]).nullable(),\n filter: z.string().nullable(),\n subFilters: z.array(z.string()),\n digestMethods: z.array(z.string()),\n reasons: z.array(z.string()),\n unsupportedRequired: z.boolean(),\n});\n\nexport const SignatureDTOSchema: z.ZodType<SignatureDTO> = z.object({\n index: z.number().int().nonnegative(),\n field: FormFieldRefSchema,\n fieldName: z.string(),\n widget: FormFieldWidgetSchema.nullable(),\n signed: z.boolean(),\n kind: z.enum(['signature', 'timestamp']),\n filter: z.string().nullable(),\n subFilter: z.string().nullable(),\n byteRange: ByteRangeSchema.nullable(),\n contentsSize: z.number().int().nonnegative(),\n coverage: z.enum(['whole-revision', 'partial', 'malformed']).nullable(),\n revisionIndex: z.number().int().nonnegative().nullable(),\n signer: z.object({\n name: z.string().nullable(),\n reason: z.string().nullable(),\n location: z.string().nullable(),\n contactInfo: z.string().nullable(),\n signedAt: IsoDateTimeSchema.nullable(),\n }),\n docMdp: DocMdpPermissionSchema.nullable(),\n catalogCertification: z.boolean(),\n fieldMdp: FieldLockSpecSchema.nullable(),\n lock: FieldLockSpecSchema.nullable(),\n seedValue: SignatureSeedValueSchema.nullable(),\n});\n\nexport const DocumentProtectionSchema: z.ZodType<DocumentProtection> = z.object({\n enforced: ModificationLevelSchema.nullable(),\n judged: ModificationLevelSchema.nullable(),\n certification: z\n .object({ signatureIndex: z.number().int().nonnegative(), permission: DocMdpPermissionSchema })\n .nullable(),\n fieldLocks: z.array(\n z.object({\n signatureIndex: z.number().int().nonnegative(),\n source: z.enum(['fieldmdp', 'lock']),\n spec: FieldLockSpecSchema,\n }),\n ),\n policyVersion: z.number().int(),\n});\n\nexport const PdfRevisionSchema: z.ZodType<PdfRevision> = z.object({\n index: z.number().int().nonnegative(),\n end: z.number().int().nonnegative(),\n xrefOffset: z.number().int().nonnegative(),\n signatureIndex: z.number().int().nonnegative().nullable(),\n});\n\nexport const SignatureSnapshotSchema: z.ZodType<SignatureSnapshot> = z.object({\n chainValid: z.boolean(),\n revisions: z.array(PdfRevisionSchema),\n signatures: z.array(SignatureDTOSchema),\n protection: DocumentProtectionSchema,\n});\n\nexport const BaseVersionInfoSchema: z.ZodType<BaseVersionInfo> = z.object({\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n byteLength: z.number().int().nonnegative(),\n});\n\nexport const SignatureCompleteResultSchema: z.ZodType<SignatureCompleteResult> = z.object({\n status: z.enum(['completed', 'already-completed']),\n signature: SignatureDTOSchema,\n version: BaseVersionInfoSchema,\n previous: DocumentVersionRefSchema,\n protection: DocumentProtectionSchema,\n meta: MutationMetaSchema,\n});\n\nexport const SignatureCancelResultSchema: z.ZodType<SignatureCancelResult> = z.object({\n status: z.enum(['cancelled', 'already-completed', 'unknown']),\n});\n\nconst ChangeFindingSchema = z.object({\n rule: z.string(),\n verdict: z.enum(['permitted', 'forbidden', 'incomplete']),\n objectNumber: z.number().int().nonnegative(),\n edge: z.string().optional(),\n detail: z.string().optional(),\n});\n\nconst AnalysisDetailSchema = z.enum(['summary', 'full']);\n\n/** The analysis: one verdict (`current`) with its findings, the restrictions it was judged under, and facts about the revisions in between. */\nexport const ChangeAnalysisSchema = z.object({\n mode: z.enum(['authoritative', 'exploratory']),\n policyVersion: z.number().int(),\n basis: z.object({\n version: BaseVersionInfoSchema,\n editsVersion: z.number().int().nonnegative(),\n source: z.enum(['persisted', 'working-copy']),\n }),\n since: z.object({\n revisionIndex: z.number().int().nonnegative(),\n signatureIndex: z.number().int().nonnegative().nullable(),\n }),\n until: z.object({ revisionIndex: z.number().int().nonnegative() }),\n restrictions: z.array(\n z.object({\n signatureIndex: z.number().int().nonnegative(),\n revisionIndex: z.number().int().nonnegative(),\n source: z.enum(['docmdp', 'fieldmdp', 'lock']),\n own: z.boolean(),\n permission: z.union([z.literal(1), z.literal(2), z.literal(3)]).optional(),\n fields: z.unknown().optional(),\n }),\n ),\n current: z.object({\n verdict: z.enum(['unchanged', 'permitted', 'forbidden', 'indeterminate']),\n complete: z.boolean(),\n primary: ChangeFindingSchema.optional(),\n findings: z.array(ChangeFindingSchema),\n method: z.enum(['net-state', 'net-state+replay']),\n }),\n later: z.object({\n revisionCount: z.number().int().nonnegative(),\n undoneObjectNumbers: z.array(z.number().int().nonnegative()),\n }),\n /** Equals `current.verdict`. */\n verdict: z.enum(['unchanged', 'permitted', 'forbidden', 'indeterminate']),\n /** The step DTOs are large and evolving; carried verbatim. */\n steps: z.array(z.unknown()),\n}) as unknown as z.ZodType<ChangeAnalysis>;\n\nconst SignatureSignerInputSchema = z.object({\n name: z.string().optional(),\n reason: z.string().optional(),\n location: z.string().optional(),\n contactInfo: z.string().optional(),\n signedAt: IsoDateTimeSchema.optional(),\n});\n\n/** The `body` part of a visual signature fill: which part holds the one-page PDF. */\nexport const SignatureAppearanceBodySchema = z.object({\n resources: AppearanceResourceKeysSchema,\n});\nexport type SignatureAppearanceBody = z.infer<typeof SignatureAppearanceBodySchema>;\n\n/**\n * The `body` part of a prepare: `SignaturePrepareInput` with the\n * appearance artwork named by the key of its part instead of inline bytes.\n */\nexport const SignaturePrepareBodySchema = z.object({\n field: FormFieldRefSchema,\n kind: z.enum(['signature', 'timestamp']).optional(),\n subFilter: z.enum(['adbe.pkcs7.detached', 'ETSI.CAdES.detached']).optional(),\n digest: z.enum(['sha256', 'sha384', 'sha512']).optional(),\n contentsSize: z.number().int().positive().optional(),\n signer: SignatureSignerInputSchema.optional(),\n certify: z.object({ permission: DocMdpPermissionSchema }).optional(),\n lock: FieldLockSpecSchema.optional(),\n resources: AppearanceResourceKeysSchema.optional(),\n});\nexport type SignaturePrepareBody = z.infer<typeof SignaturePrepareBodySchema>;\n\nconst optionalIndex = z.coerce.number().int().nonnegative().optional();\n\n/** Layer analysis query (the current form): exactly one `since.*`; the working copy is the end. */\nexport const LayerAnalysisQuerySchema = z\n .object({\n 'since.signature': optionalIndex,\n 'since.revision': optionalIndex,\n level: ModificationLevelSchema.optional(),\n detail: AnalysisDetailSchema.optional(),\n })\n .refine((q) => (q['since.signature'] === undefined) !== (q['since.revision'] === undefined), {\n message: 'exactly one of since.signature / since.revision is required',\n });\nexport type LayerAnalysisQuery = z.infer<typeof LayerAnalysisQuerySchema>;\n\n/** Version analysis query: as the layer's, plus `until` (a revision index; default the last). */\nexport const VersionAnalysisQuerySchema = z\n .object({\n 'since.signature': optionalIndex,\n 'since.revision': optionalIndex,\n until: optionalIndex,\n level: ModificationLevelSchema.optional(),\n detail: AnalysisDetailSchema.optional(),\n /** The judging policy version the caller expects — a cache key, not an input (version responses are immutable). */\n policy: optionalIndex,\n })\n .refine((q) => (q['since.signature'] === undefined) !== (q['since.revision'] === undefined), {\n message: 'exactly one of since.signature / since.revision is required',\n });\nexport type VersionAnalysisQuery = z.infer<typeof VersionAnalysisQuerySchema>;\n\nexport function analyzeInputFromQuery(\n query: LayerAnalysisQuery | VersionAnalysisQuery,\n until: AnalyzeInput['until'],\n): AnalyzeInput {\n const since =\n query['since.signature'] !== undefined\n ? { signatureIndex: query['since.signature'] }\n : { revisionIndex: query['since.revision'] ?? 0 };\n return {\n since,\n ...(until !== undefined ? { until } : {}),\n ...(query.level !== undefined ? { exploratoryLevel: query.level } : {}),\n ...(query.detail !== undefined ? { detail: query.detail } : {}),\n };\n}\n\n/** One row of the document's version catalog. */\nexport const DocumentVersionSchema = z.object({\n sha256: z.string().regex(/^[0-9a-f]{64}$/),\n byteLength: z.number().int().nonnegative(),\n number: z.number().int().positive(),\n parentSha256: z.string().nullable(),\n producer: z.enum(['upload', 'signature']),\n signingId: z.string().nullable(),\n createdAt: z.number().int(),\n});\nexport type DocumentVersion = z.infer<typeof DocumentVersionSchema>;\n\nexport const DocumentVersionsSchema = z.object({\n /** `documents.base_sha`: the version every layer is over, or behind. */\n head: z.string().regex(/^[0-9a-f]{64}$/),\n /** Oldest first. */\n versions: z.array(DocumentVersionSchema),\n});\nexport type DocumentVersions = z.infer<typeof DocumentVersionsSchema>;\n\nexport { DigestAlgorithmSchema, ModificationLevelSchema };\n\nexport const PageScaleResultSchema = z.object({\n page: PageRefSchema,\n meta: MutationMetaSchema,\n});\n"],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ //#region src/annotation/subtype.ts
2
+ /**
3
+ * Closed-world string catalog of annotation subtypes the wire format knows
4
+ * about. The TypeScript discriminated union `Annotation` is keyed on this
5
+ * literal type. PDFium's integer subtype code is mapped onto these strings
6
+ * by the reader registry.
7
+ *
8
+ * `unsupported` is the forward-compat fallback for any PDF subtype the
9
+ * engine has no reader for. Unknown subtypes never
10
+ * silently disappear from the wire — they round-trip as
11
+ * `{ subtype: 'unsupported', rawSubtypeCode }`.
12
+ */
13
+ const ANNOTATION_SUBTYPES = [
14
+ "text",
15
+ "link",
16
+ "free-text",
17
+ "line",
18
+ "square",
19
+ "circle",
20
+ "polygon",
21
+ "polyline",
22
+ "highlight",
23
+ "underline",
24
+ "squiggly",
25
+ "strikeout",
26
+ "stamp",
27
+ "caret",
28
+ "ink",
29
+ "popup",
30
+ "file-attachment",
31
+ "redact",
32
+ "widget",
33
+ "unsupported"
34
+ ];
35
+ /**
36
+ * PDFium subtype codes from `FPDFAnnot_GetSubtype`. Mirrors
37
+ * `FPDF_ANNOTATION_SUBTYPE` in `public/fpdf_annot.h`. We keep this here
38
+ * (rather than importing from @embedpdf/engine-runtime) so the engine-core
39
+ * package has zero PDFium dependency.
40
+ */
41
+ const PdfAnnotationSubtypeCode = {
42
+ UNKNOWN: 0,
43
+ TEXT: 1,
44
+ LINK: 2,
45
+ FREETEXT: 3,
46
+ LINE: 4,
47
+ SQUARE: 5,
48
+ CIRCLE: 6,
49
+ POLYGON: 7,
50
+ POLYLINE: 8,
51
+ HIGHLIGHT: 9,
52
+ UNDERLINE: 10,
53
+ SQUIGGLY: 11,
54
+ STRIKEOUT: 12,
55
+ STAMP: 13,
56
+ CARET: 14,
57
+ INK: 15,
58
+ POPUP: 16,
59
+ FILEATTACHMENT: 17,
60
+ SOUND: 18,
61
+ MOVIE: 19,
62
+ WIDGET: 20,
63
+ SCREEN: 21,
64
+ PRINTERMARK: 22,
65
+ TRAPNET: 23,
66
+ WATERMARK: 24,
67
+ THREED: 25,
68
+ RICHMEDIA: 26,
69
+ XFAWIDGET: 27,
70
+ REDACT: 28
71
+ };
72
+ /**
73
+ * Map from PDFium codes to wire-stable string subtypes. A code missing here
74
+ * reads as 'unsupported'.
75
+ */
76
+ const PDF_CODE_TO_SUBTYPE = Object.freeze({
77
+ [PdfAnnotationSubtypeCode.TEXT]: "text",
78
+ [PdfAnnotationSubtypeCode.LINK]: "link",
79
+ [PdfAnnotationSubtypeCode.FREETEXT]: "free-text",
80
+ [PdfAnnotationSubtypeCode.LINE]: "line",
81
+ [PdfAnnotationSubtypeCode.SQUARE]: "square",
82
+ [PdfAnnotationSubtypeCode.CIRCLE]: "circle",
83
+ [PdfAnnotationSubtypeCode.POLYGON]: "polygon",
84
+ [PdfAnnotationSubtypeCode.POLYLINE]: "polyline",
85
+ [PdfAnnotationSubtypeCode.HIGHLIGHT]: "highlight",
86
+ [PdfAnnotationSubtypeCode.UNDERLINE]: "underline",
87
+ [PdfAnnotationSubtypeCode.SQUIGGLY]: "squiggly",
88
+ [PdfAnnotationSubtypeCode.STRIKEOUT]: "strikeout",
89
+ [PdfAnnotationSubtypeCode.STAMP]: "stamp",
90
+ [PdfAnnotationSubtypeCode.CARET]: "caret",
91
+ [PdfAnnotationSubtypeCode.INK]: "ink",
92
+ [PdfAnnotationSubtypeCode.POPUP]: "popup",
93
+ [PdfAnnotationSubtypeCode.FILEATTACHMENT]: "file-attachment",
94
+ [PdfAnnotationSubtypeCode.WIDGET]: "widget",
95
+ [PdfAnnotationSubtypeCode.REDACT]: "redact"
96
+ });
97
+ /**
98
+ * Reverse map for write paths that need to turn a wire subtype back into the
99
+ * PDFium integer code without importing the zod-backed annotation registry.
100
+ */
101
+ const PDF_SUBTYPE_TO_CODE = Object.freeze({
102
+ text: PdfAnnotationSubtypeCode.TEXT,
103
+ link: PdfAnnotationSubtypeCode.LINK,
104
+ "free-text": PdfAnnotationSubtypeCode.FREETEXT,
105
+ line: PdfAnnotationSubtypeCode.LINE,
106
+ square: PdfAnnotationSubtypeCode.SQUARE,
107
+ circle: PdfAnnotationSubtypeCode.CIRCLE,
108
+ polygon: PdfAnnotationSubtypeCode.POLYGON,
109
+ polyline: PdfAnnotationSubtypeCode.POLYLINE,
110
+ highlight: PdfAnnotationSubtypeCode.HIGHLIGHT,
111
+ underline: PdfAnnotationSubtypeCode.UNDERLINE,
112
+ squiggly: PdfAnnotationSubtypeCode.SQUIGGLY,
113
+ strikeout: PdfAnnotationSubtypeCode.STRIKEOUT,
114
+ stamp: PdfAnnotationSubtypeCode.STAMP,
115
+ caret: PdfAnnotationSubtypeCode.CARET,
116
+ ink: PdfAnnotationSubtypeCode.INK,
117
+ popup: PdfAnnotationSubtypeCode.POPUP,
118
+ "file-attachment": PdfAnnotationSubtypeCode.FILEATTACHMENT,
119
+ redact: PdfAnnotationSubtypeCode.REDACT,
120
+ widget: PdfAnnotationSubtypeCode.WIDGET,
121
+ unsupported: PdfAnnotationSubtypeCode.UNKNOWN
122
+ });
123
+ function subtypeFromCode(code) {
124
+ return PDF_CODE_TO_SUBTYPE[code] ?? "unsupported";
125
+ }
126
+ //#endregion
127
+ export { subtypeFromCode as a, PdfAnnotationSubtypeCode as i, PDF_CODE_TO_SUBTYPE as n, PDF_SUBTYPE_TO_CODE as r, ANNOTATION_SUBTYPES as t };
128
+
129
+ //# sourceMappingURL=subtype-CG4WpIRj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtype-CG4WpIRj.js","names":[],"sources":["../src/annotation/subtype.ts"],"sourcesContent":["/**\n * Closed-world string catalog of annotation subtypes the wire format knows\n * about. The TypeScript discriminated union `Annotation` is keyed on this\n * literal type. PDFium's integer subtype code is mapped onto these strings\n * by the reader registry.\n *\n * `unsupported` is the forward-compat fallback for any PDF subtype the\n * engine has no reader for. Unknown subtypes never\n * silently disappear from the wire — they round-trip as\n * `{ subtype: 'unsupported', rawSubtypeCode }`.\n */\nexport const ANNOTATION_SUBTYPES = [\n 'text',\n 'link',\n 'free-text',\n 'line',\n 'square',\n 'circle',\n 'polygon',\n 'polyline',\n 'highlight',\n 'underline',\n 'squiggly',\n 'strikeout',\n 'stamp',\n 'caret',\n 'ink',\n 'popup',\n 'file-attachment',\n 'redact',\n 'widget',\n 'unsupported',\n] as const;\n\nexport type AnnotationSubtype = (typeof ANNOTATION_SUBTYPES)[number];\n\n/**\n * PDFium subtype codes from `FPDFAnnot_GetSubtype`. Mirrors\n * `FPDF_ANNOTATION_SUBTYPE` in `public/fpdf_annot.h`. We keep this here\n * (rather than importing from @embedpdf/engine-runtime) so the engine-core\n * package has zero PDFium dependency.\n */\nexport const PdfAnnotationSubtypeCode = {\n UNKNOWN: 0,\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n RICHMEDIA: 26,\n XFAWIDGET: 27,\n REDACT: 28,\n} as const;\n\nexport type PdfAnnotationSubtypeCode =\n (typeof PdfAnnotationSubtypeCode)[keyof typeof PdfAnnotationSubtypeCode];\n\n/**\n * Map from PDFium codes to wire-stable string subtypes. A code missing here\n * reads as 'unsupported'.\n */\nexport const PDF_CODE_TO_SUBTYPE: Readonly<Record<number, AnnotationSubtype>> = Object.freeze({\n [PdfAnnotationSubtypeCode.TEXT]: 'text',\n [PdfAnnotationSubtypeCode.LINK]: 'link',\n [PdfAnnotationSubtypeCode.FREETEXT]: 'free-text',\n [PdfAnnotationSubtypeCode.LINE]: 'line',\n [PdfAnnotationSubtypeCode.SQUARE]: 'square',\n [PdfAnnotationSubtypeCode.CIRCLE]: 'circle',\n [PdfAnnotationSubtypeCode.POLYGON]: 'polygon',\n [PdfAnnotationSubtypeCode.POLYLINE]: 'polyline',\n [PdfAnnotationSubtypeCode.HIGHLIGHT]: 'highlight',\n [PdfAnnotationSubtypeCode.UNDERLINE]: 'underline',\n [PdfAnnotationSubtypeCode.SQUIGGLY]: 'squiggly',\n [PdfAnnotationSubtypeCode.STRIKEOUT]: 'strikeout',\n [PdfAnnotationSubtypeCode.STAMP]: 'stamp',\n [PdfAnnotationSubtypeCode.CARET]: 'caret',\n [PdfAnnotationSubtypeCode.INK]: 'ink',\n [PdfAnnotationSubtypeCode.POPUP]: 'popup',\n [PdfAnnotationSubtypeCode.FILEATTACHMENT]: 'file-attachment',\n [PdfAnnotationSubtypeCode.WIDGET]: 'widget',\n [PdfAnnotationSubtypeCode.REDACT]: 'redact',\n});\n\n/**\n * Reverse map for write paths that need to turn a wire subtype back into the\n * PDFium integer code without importing the zod-backed annotation registry.\n */\nexport const PDF_SUBTYPE_TO_CODE: Readonly<Record<AnnotationSubtype, PdfAnnotationSubtypeCode>> =\n Object.freeze({\n text: PdfAnnotationSubtypeCode.TEXT,\n link: PdfAnnotationSubtypeCode.LINK,\n 'free-text': PdfAnnotationSubtypeCode.FREETEXT,\n line: PdfAnnotationSubtypeCode.LINE,\n square: PdfAnnotationSubtypeCode.SQUARE,\n circle: PdfAnnotationSubtypeCode.CIRCLE,\n polygon: PdfAnnotationSubtypeCode.POLYGON,\n polyline: PdfAnnotationSubtypeCode.POLYLINE,\n highlight: PdfAnnotationSubtypeCode.HIGHLIGHT,\n underline: PdfAnnotationSubtypeCode.UNDERLINE,\n squiggly: PdfAnnotationSubtypeCode.SQUIGGLY,\n strikeout: PdfAnnotationSubtypeCode.STRIKEOUT,\n stamp: PdfAnnotationSubtypeCode.STAMP,\n caret: PdfAnnotationSubtypeCode.CARET,\n ink: PdfAnnotationSubtypeCode.INK,\n popup: PdfAnnotationSubtypeCode.POPUP,\n 'file-attachment': PdfAnnotationSubtypeCode.FILEATTACHMENT,\n redact: PdfAnnotationSubtypeCode.REDACT,\n widget: PdfAnnotationSubtypeCode.WIDGET,\n unsupported: PdfAnnotationSubtypeCode.UNKNOWN,\n });\n\nexport function subtypeFromCode(code: number): AnnotationSubtype {\n return PDF_CODE_TO_SUBTYPE[code] ?? 'unsupported';\n}\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;;;;;;;AAUA,MAAa,2BAA2B;CACtC,SAAS;CACT,MAAM;CACN,MAAM;CACN,UAAU;CACV,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,UAAU;CACV,WAAW;CACX,WAAW;CACX,UAAU;CACV,WAAW;CACX,OAAO;CACP,OAAO;CACP,KAAK;CACL,OAAO;CACP,gBAAgB;CAChB,OAAO;CACP,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,aAAa;CACb,SAAS;CACT,WAAW;CACX,QAAQ;CACR,WAAW;CACX,WAAW;CACX,QAAQ;AACV;;;;;AASA,MAAa,sBAAmE,OAAO,OAAO;EAC3F,yBAAyB,OAAO;EAChC,yBAAyB,OAAO;EAChC,yBAAyB,WAAW;EACpC,yBAAyB,OAAO;EAChC,yBAAyB,SAAS;EAClC,yBAAyB,SAAS;EAClC,yBAAyB,UAAU;EACnC,yBAAyB,WAAW;EACpC,yBAAyB,YAAY;EACrC,yBAAyB,YAAY;EACrC,yBAAyB,WAAW;EACpC,yBAAyB,YAAY;EACrC,yBAAyB,QAAQ;EACjC,yBAAyB,QAAQ;EACjC,yBAAyB,MAAM;EAC/B,yBAAyB,QAAQ;EACjC,yBAAyB,iBAAiB;EAC1C,yBAAyB,SAAS;EAClC,yBAAyB,SAAS;AACrC,CAAC;;;;;AAMD,MAAa,sBACX,OAAO,OAAO;CACZ,MAAM,yBAAyB;CAC/B,MAAM,yBAAyB;CAC/B,aAAa,yBAAyB;CACtC,MAAM,yBAAyB;CAC/B,QAAQ,yBAAyB;CACjC,QAAQ,yBAAyB;CACjC,SAAS,yBAAyB;CAClC,UAAU,yBAAyB;CACnC,WAAW,yBAAyB;CACpC,WAAW,yBAAyB;CACpC,UAAU,yBAAyB;CACnC,WAAW,yBAAyB;CACpC,OAAO,yBAAyB;CAChC,OAAO,yBAAyB;CAChC,KAAK,yBAAyB;CAC9B,OAAO,yBAAyB;CAChC,mBAAmB,yBAAyB;CAC5C,QAAQ,yBAAyB;CACjC,QAAQ,yBAAyB;CACjC,aAAa,yBAAyB;AACxC,CAAC;AAEH,SAAgB,gBAAgB,MAAiC;CAC/D,OAAO,oBAAoB,SAAS;AACtC"}
@@ -0,0 +1,158 @@
1
+ //#region src/annotation/subtype.ts
2
+ /**
3
+ * Closed-world string catalog of annotation subtypes the wire format knows
4
+ * about. The TypeScript discriminated union `Annotation` is keyed on this
5
+ * literal type. PDFium's integer subtype code is mapped onto these strings
6
+ * by the reader registry.
7
+ *
8
+ * `unsupported` is the forward-compat fallback for any PDF subtype the
9
+ * engine has no reader for. Unknown subtypes never
10
+ * silently disappear from the wire — they round-trip as
11
+ * `{ subtype: 'unsupported', rawSubtypeCode }`.
12
+ */
13
+ const ANNOTATION_SUBTYPES = [
14
+ "text",
15
+ "link",
16
+ "free-text",
17
+ "line",
18
+ "square",
19
+ "circle",
20
+ "polygon",
21
+ "polyline",
22
+ "highlight",
23
+ "underline",
24
+ "squiggly",
25
+ "strikeout",
26
+ "stamp",
27
+ "caret",
28
+ "ink",
29
+ "popup",
30
+ "file-attachment",
31
+ "redact",
32
+ "widget",
33
+ "unsupported"
34
+ ];
35
+ /**
36
+ * PDFium subtype codes from `FPDFAnnot_GetSubtype`. Mirrors
37
+ * `FPDF_ANNOTATION_SUBTYPE` in `public/fpdf_annot.h`. We keep this here
38
+ * (rather than importing from @embedpdf/engine-runtime) so the engine-core
39
+ * package has zero PDFium dependency.
40
+ */
41
+ const PdfAnnotationSubtypeCode = {
42
+ UNKNOWN: 0,
43
+ TEXT: 1,
44
+ LINK: 2,
45
+ FREETEXT: 3,
46
+ LINE: 4,
47
+ SQUARE: 5,
48
+ CIRCLE: 6,
49
+ POLYGON: 7,
50
+ POLYLINE: 8,
51
+ HIGHLIGHT: 9,
52
+ UNDERLINE: 10,
53
+ SQUIGGLY: 11,
54
+ STRIKEOUT: 12,
55
+ STAMP: 13,
56
+ CARET: 14,
57
+ INK: 15,
58
+ POPUP: 16,
59
+ FILEATTACHMENT: 17,
60
+ SOUND: 18,
61
+ MOVIE: 19,
62
+ WIDGET: 20,
63
+ SCREEN: 21,
64
+ PRINTERMARK: 22,
65
+ TRAPNET: 23,
66
+ WATERMARK: 24,
67
+ THREED: 25,
68
+ RICHMEDIA: 26,
69
+ XFAWIDGET: 27,
70
+ REDACT: 28
71
+ };
72
+ /**
73
+ * Map from PDFium codes to wire-stable string subtypes. A code missing here
74
+ * reads as 'unsupported'.
75
+ */
76
+ const PDF_CODE_TO_SUBTYPE = Object.freeze({
77
+ [PdfAnnotationSubtypeCode.TEXT]: "text",
78
+ [PdfAnnotationSubtypeCode.LINK]: "link",
79
+ [PdfAnnotationSubtypeCode.FREETEXT]: "free-text",
80
+ [PdfAnnotationSubtypeCode.LINE]: "line",
81
+ [PdfAnnotationSubtypeCode.SQUARE]: "square",
82
+ [PdfAnnotationSubtypeCode.CIRCLE]: "circle",
83
+ [PdfAnnotationSubtypeCode.POLYGON]: "polygon",
84
+ [PdfAnnotationSubtypeCode.POLYLINE]: "polyline",
85
+ [PdfAnnotationSubtypeCode.HIGHLIGHT]: "highlight",
86
+ [PdfAnnotationSubtypeCode.UNDERLINE]: "underline",
87
+ [PdfAnnotationSubtypeCode.SQUIGGLY]: "squiggly",
88
+ [PdfAnnotationSubtypeCode.STRIKEOUT]: "strikeout",
89
+ [PdfAnnotationSubtypeCode.STAMP]: "stamp",
90
+ [PdfAnnotationSubtypeCode.CARET]: "caret",
91
+ [PdfAnnotationSubtypeCode.INK]: "ink",
92
+ [PdfAnnotationSubtypeCode.POPUP]: "popup",
93
+ [PdfAnnotationSubtypeCode.FILEATTACHMENT]: "file-attachment",
94
+ [PdfAnnotationSubtypeCode.WIDGET]: "widget",
95
+ [PdfAnnotationSubtypeCode.REDACT]: "redact"
96
+ });
97
+ /**
98
+ * Reverse map for write paths that need to turn a wire subtype back into the
99
+ * PDFium integer code without importing the zod-backed annotation registry.
100
+ */
101
+ const PDF_SUBTYPE_TO_CODE = Object.freeze({
102
+ text: PdfAnnotationSubtypeCode.TEXT,
103
+ link: PdfAnnotationSubtypeCode.LINK,
104
+ "free-text": PdfAnnotationSubtypeCode.FREETEXT,
105
+ line: PdfAnnotationSubtypeCode.LINE,
106
+ square: PdfAnnotationSubtypeCode.SQUARE,
107
+ circle: PdfAnnotationSubtypeCode.CIRCLE,
108
+ polygon: PdfAnnotationSubtypeCode.POLYGON,
109
+ polyline: PdfAnnotationSubtypeCode.POLYLINE,
110
+ highlight: PdfAnnotationSubtypeCode.HIGHLIGHT,
111
+ underline: PdfAnnotationSubtypeCode.UNDERLINE,
112
+ squiggly: PdfAnnotationSubtypeCode.SQUIGGLY,
113
+ strikeout: PdfAnnotationSubtypeCode.STRIKEOUT,
114
+ stamp: PdfAnnotationSubtypeCode.STAMP,
115
+ caret: PdfAnnotationSubtypeCode.CARET,
116
+ ink: PdfAnnotationSubtypeCode.INK,
117
+ popup: PdfAnnotationSubtypeCode.POPUP,
118
+ "file-attachment": PdfAnnotationSubtypeCode.FILEATTACHMENT,
119
+ redact: PdfAnnotationSubtypeCode.REDACT,
120
+ widget: PdfAnnotationSubtypeCode.WIDGET,
121
+ unsupported: PdfAnnotationSubtypeCode.UNKNOWN
122
+ });
123
+ function subtypeFromCode(code) {
124
+ return PDF_CODE_TO_SUBTYPE[code] ?? "unsupported";
125
+ }
126
+ //#endregion
127
+ Object.defineProperty(exports, "ANNOTATION_SUBTYPES", {
128
+ enumerable: true,
129
+ get: function() {
130
+ return ANNOTATION_SUBTYPES;
131
+ }
132
+ });
133
+ Object.defineProperty(exports, "PDF_CODE_TO_SUBTYPE", {
134
+ enumerable: true,
135
+ get: function() {
136
+ return PDF_CODE_TO_SUBTYPE;
137
+ }
138
+ });
139
+ Object.defineProperty(exports, "PDF_SUBTYPE_TO_CODE", {
140
+ enumerable: true,
141
+ get: function() {
142
+ return PDF_SUBTYPE_TO_CODE;
143
+ }
144
+ });
145
+ Object.defineProperty(exports, "PdfAnnotationSubtypeCode", {
146
+ enumerable: true,
147
+ get: function() {
148
+ return PdfAnnotationSubtypeCode;
149
+ }
150
+ });
151
+ Object.defineProperty(exports, "subtypeFromCode", {
152
+ enumerable: true,
153
+ get: function() {
154
+ return subtypeFromCode;
155
+ }
156
+ });
157
+
158
+ //# sourceMappingURL=subtype-aDt5TFmK.cjs.map