pdf-oxide-wasm 0.3.49 → 0.3.51

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.
@@ -85,6 +85,213 @@ export class ArtifactStyle {
85
85
  }
86
86
  if (Symbol.dispose) ArtifactStyle.prototype[Symbol.dispose] = ArtifactStyle.prototype.free;
87
87
 
88
+ /**
89
+ * A parsed Document Security Store (`/DSS`, ISO 32000-2 §12.8.4.3).
90
+ * Count + index accessors mirror `WasmCertificate`'s flat shape
91
+ * (wasm-bindgen cannot return `Uint8Array[]` directly).
92
+ */
93
+ export class Dss {
94
+ static __wrap(ptr) {
95
+ const obj = Object.create(Dss.prototype);
96
+ obj.__wbg_ptr = ptr;
97
+ DssFinalization.register(obj, obj.__wbg_ptr, obj);
98
+ return obj;
99
+ }
100
+ __destroy_into_raw() {
101
+ const ptr = this.__wbg_ptr;
102
+ this.__wbg_ptr = 0;
103
+ DssFinalization.unregister(this);
104
+ return ptr;
105
+ }
106
+ free() {
107
+ const ptr = this.__destroy_into_raw();
108
+ wasm.__wbg_dss_free(ptr, 0);
109
+ }
110
+ /**
111
+ * Number of DER X.509 certificates in the DSS.
112
+ * @returns {number}
113
+ */
114
+ get certCount() {
115
+ const ret = wasm.wasmdss_certCount(this.__wbg_ptr);
116
+ return ret >>> 0;
117
+ }
118
+ /**
119
+ * Number of DER CRLs in the DSS.
120
+ * @returns {number}
121
+ */
122
+ get crlCount() {
123
+ const ret = wasm.wasmdss_crlCount(this.__wbg_ptr);
124
+ return ret >>> 0;
125
+ }
126
+ /**
127
+ * The `i`-th DER certificate, or `undefined` if out of range.
128
+ * @param {number} i
129
+ * @returns {Uint8Array | undefined}
130
+ */
131
+ getCert(i) {
132
+ try {
133
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
134
+ wasm.wasmdss_getCert(retptr, this.__wbg_ptr, i);
135
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
136
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
137
+ let v1;
138
+ if (r0 !== 0) {
139
+ v1 = getArrayU8FromWasm0(r0, r1).slice();
140
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
141
+ }
142
+ return v1;
143
+ } finally {
144
+ wasm.__wbindgen_add_to_stack_pointer(16);
145
+ }
146
+ }
147
+ /**
148
+ * The `i`-th DER CRL, or `undefined` if out of range.
149
+ * @param {number} i
150
+ * @returns {Uint8Array | undefined}
151
+ */
152
+ getCrl(i) {
153
+ try {
154
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
155
+ wasm.wasmdss_getCrl(retptr, this.__wbg_ptr, i);
156
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
157
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
158
+ let v1;
159
+ if (r0 !== 0) {
160
+ v1 = getArrayU8FromWasm0(r0, r1).slice();
161
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
162
+ }
163
+ return v1;
164
+ } finally {
165
+ wasm.__wbindgen_add_to_stack_pointer(16);
166
+ }
167
+ }
168
+ /**
169
+ * The `i`-th DER OCSP response, or `undefined` if out of range.
170
+ * @param {number} i
171
+ * @returns {Uint8Array | undefined}
172
+ */
173
+ getOcsp(i) {
174
+ try {
175
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
176
+ wasm.wasmdss_getOcsp(retptr, this.__wbg_ptr, i);
177
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
178
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
179
+ let v1;
180
+ if (r0 !== 0) {
181
+ v1 = getArrayU8FromWasm0(r0, r1).slice();
182
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
183
+ }
184
+ return v1;
185
+ } finally {
186
+ wasm.__wbindgen_add_to_stack_pointer(16);
187
+ }
188
+ }
189
+ /**
190
+ * Number of DER OCSP responses in the DSS.
191
+ * @returns {number}
192
+ */
193
+ get ocspCount() {
194
+ const ret = wasm.wasmdss_ocspCount(this.__wbg_ptr);
195
+ return ret >>> 0;
196
+ }
197
+ /**
198
+ * Per-signature VRI keys (uppercase-hex SHA-1 of `/Contents`).
199
+ * @returns {string[]}
200
+ */
201
+ get vri() {
202
+ try {
203
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
204
+ wasm.wasmdss_vri(retptr, this.__wbg_ptr);
205
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
206
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
207
+ var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
208
+ wasm.__wbindgen_export4(r0, r1 * 4, 4);
209
+ return v1;
210
+ } finally {
211
+ wasm.__wbindgen_add_to_stack_pointer(16);
212
+ }
213
+ }
214
+ }
215
+ if (Symbol.dispose) Dss.prototype[Symbol.dispose] = Dss.prototype.free;
216
+
217
+ /**
218
+ * PAdES baseline level. Frozen integer mapping (BB=0, BT=1, BLt=2,
219
+ * BLta=3) shared with the C ABI and every binding — never renumber.
220
+ * @enum {0 | 1 | 2 | 3}
221
+ */
222
+ export const PadesLevel = Object.freeze({
223
+ /**
224
+ * B-B: signed attrs incl. the ESS signing-certificate-v2.
225
+ */
226
+ BB: 0, "0": "BB",
227
+ /**
228
+ * B-T: B-B + an RFC 3161 signature-time-stamp unsigned attr.
229
+ */
230
+ BT: 1, "1": "BT",
231
+ /**
232
+ * B-LT: B-T + a Document Security Store (DSS/VRI).
233
+ */
234
+ BLt: 2, "2": "BLt",
235
+ /**
236
+ * B-LTA: B-LT + a document-scoped `/DocTimeStamp`.
237
+ */
238
+ BLta: 3, "3": "BLta",
239
+ });
240
+
241
+ /**
242
+ * Offline B-LT validation material (DER certs / CRLs / OCSP
243
+ * responses). Build with `new()` then `addCert`/`addCrl`/`addOcsp`.
244
+ */
245
+ export class RevocationMaterial {
246
+ __destroy_into_raw() {
247
+ const ptr = this.__wbg_ptr;
248
+ this.__wbg_ptr = 0;
249
+ RevocationMaterialFinalization.unregister(this);
250
+ return ptr;
251
+ }
252
+ free() {
253
+ const ptr = this.__destroy_into_raw();
254
+ wasm.__wbg_revocationmaterial_free(ptr, 0);
255
+ }
256
+ /**
257
+ * Add a DER X.509 certificate.
258
+ * @param {Uint8Array} der
259
+ */
260
+ addCert(der) {
261
+ const ptr0 = passArray8ToWasm0(der, wasm.__wbindgen_export);
262
+ const len0 = WASM_VECTOR_LEN;
263
+ wasm.wasmrevocationmaterial_addCert(this.__wbg_ptr, ptr0, len0);
264
+ }
265
+ /**
266
+ * Add a DER CRL.
267
+ * @param {Uint8Array} der
268
+ */
269
+ addCrl(der) {
270
+ const ptr0 = passArray8ToWasm0(der, wasm.__wbindgen_export);
271
+ const len0 = WASM_VECTOR_LEN;
272
+ wasm.wasmrevocationmaterial_addCrl(this.__wbg_ptr, ptr0, len0);
273
+ }
274
+ /**
275
+ * Add a DER OCSP response.
276
+ * @param {Uint8Array} der
277
+ */
278
+ addOcsp(der) {
279
+ const ptr0 = passArray8ToWasm0(der, wasm.__wbindgen_export);
280
+ const len0 = WASM_VECTOR_LEN;
281
+ wasm.wasmrevocationmaterial_addOcsp(this.__wbg_ptr, ptr0, len0);
282
+ }
283
+ /**
284
+ * Create an empty revocation-material set.
285
+ */
286
+ constructor() {
287
+ const ret = wasm.wasmrevocationmaterial_new();
288
+ this.__wbg_ptr = ret;
289
+ RevocationMaterialFinalization.register(this, this.__wbg_ptr, this);
290
+ return this;
291
+ }
292
+ }
293
+ if (Symbol.dispose) RevocationMaterial.prototype[Symbol.dispose] = RevocationMaterial.prototype.free;
294
+
88
295
  /**
89
296
  * WASM handle to a streaming-table building session. Created by
90
297
  * `FluentPageBuilder.streamingTable()`; rows are pushed via `pushRow`,
@@ -2814,6 +3021,31 @@ export class WasmPdfDocument {
2814
3021
  const ptr = this.__destroy_into_raw();
2815
3022
  wasm.__wbg_wasmpdfdocument_free(ptr, 0);
2816
3023
  }
3024
+ /**
3025
+ * Queue an explicit destructive redaction rectangle on a page
3026
+ * (page user space; `fill` is an optional DeviceRGB `[r,g,b]`).
3027
+ * @param {number} page
3028
+ * @param {number} x0
3029
+ * @param {number} y0
3030
+ * @param {number} x1
3031
+ * @param {number} y1
3032
+ * @param {Float32Array | null} [fill]
3033
+ */
3034
+ addRedaction(page, x0, y0, x1, y1, fill) {
3035
+ try {
3036
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3037
+ var ptr0 = isLikeNone(fill) ? 0 : passArrayF32ToWasm0(fill, wasm.__wbindgen_export);
3038
+ var len0 = WASM_VECTOR_LEN;
3039
+ wasm.wasmpdfdocument_addRedaction(retptr, this.__wbg_ptr, page, x0, y0, x1, y1, ptr0, len0);
3040
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3041
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3042
+ if (r1) {
3043
+ throw takeObject(r0);
3044
+ }
3045
+ } finally {
3046
+ wasm.__wbindgen_add_to_stack_pointer(16);
3047
+ }
3048
+ }
2817
3049
  /**
2818
3050
  * Apply all redactions in the document.
2819
3051
  */
@@ -2847,6 +3079,27 @@ export class WasmPdfDocument {
2847
3079
  wasm.__wbindgen_add_to_stack_pointer(16);
2848
3080
  }
2849
3081
  }
3082
+ /**
3083
+ * Destructively apply all queued redactions (true content removal,
3084
+ * ISO 32000-1:2008 §12.5.6.23). Returns a `RedactionReport` object.
3085
+ * @param {boolean | null} [scrub_metadata]
3086
+ * @returns {any}
3087
+ */
3088
+ applyRedactionsDestructive(scrub_metadata) {
3089
+ try {
3090
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3091
+ wasm.wasmpdfdocument_applyRedactionsDestructive(retptr, this.__wbg_ptr, isLikeNone(scrub_metadata) ? 0xFFFFFF : scrub_metadata ? 1 : 0);
3092
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3093
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3094
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3095
+ if (r2) {
3096
+ throw takeObject(r1);
3097
+ }
3098
+ return takeObject(r0);
3099
+ } finally {
3100
+ wasm.__wbindgen_add_to_stack_pointer(16);
3101
+ }
3102
+ }
2850
3103
  /**
2851
3104
  * Authenticate with a password to decrypt an encrypted PDF.
2852
3105
  *
@@ -2872,6 +3125,64 @@ export class WasmPdfDocument {
2872
3125
  wasm.__wbindgen_add_to_stack_pointer(16);
2873
3126
  }
2874
3127
  }
3128
+ /**
3129
+ * Cheap per-page text-vs-OCR classification → JSON
3130
+ * `DocumentClassification`.
3131
+ * @returns {string}
3132
+ */
3133
+ classifyDocument() {
3134
+ let deferred2_0;
3135
+ let deferred2_1;
3136
+ try {
3137
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3138
+ wasm.wasmpdfdocument_classifyDocument(retptr, this.__wbg_ptr);
3139
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3140
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3141
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3142
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
3143
+ var ptr1 = r0;
3144
+ var len1 = r1;
3145
+ if (r3) {
3146
+ ptr1 = 0; len1 = 0;
3147
+ throw takeObject(r2);
3148
+ }
3149
+ deferred2_0 = ptr1;
3150
+ deferred2_1 = len1;
3151
+ return getStringFromWasm0(ptr1, len1);
3152
+ } finally {
3153
+ wasm.__wbindgen_add_to_stack_pointer(16);
3154
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
3155
+ }
3156
+ }
3157
+ /**
3158
+ * Cheap per-page classification → JSON `PageClassification`.
3159
+ * @param {number} page_index
3160
+ * @returns {string}
3161
+ */
3162
+ classifyPage(page_index) {
3163
+ let deferred2_0;
3164
+ let deferred2_1;
3165
+ try {
3166
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3167
+ wasm.wasmpdfdocument_classifyPage(retptr, this.__wbg_ptr, page_index);
3168
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3169
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3170
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3171
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
3172
+ var ptr1 = r0;
3173
+ var len1 = r1;
3174
+ if (r3) {
3175
+ ptr1 = 0; len1 = 0;
3176
+ throw takeObject(r2);
3177
+ }
3178
+ deferred2_0 = ptr1;
3179
+ deferred2_1 = len1;
3180
+ return getStringFromWasm0(ptr1, len1);
3181
+ } finally {
3182
+ wasm.__wbindgen_add_to_stack_pointer(16);
3183
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
3184
+ }
3185
+ }
2875
3186
  /**
2876
3187
  * Clear all pending erase operations for a page.
2877
3188
  * @param {number} page_index
@@ -2951,6 +3262,26 @@ export class WasmPdfDocument {
2951
3262
  wasm.__wbindgen_add_to_stack_pointer(16);
2952
3263
  }
2953
3264
  }
3265
+ /**
3266
+ * The document's Document Security Store (`/DSS`) as a `Dss`, or
3267
+ * `undefined` if absent. Mirrors Rust `signatures::read_dss`.
3268
+ * @returns {Dss | undefined}
3269
+ */
3270
+ dss() {
3271
+ try {
3272
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3273
+ wasm.wasmpdfdocument_dss(retptr, this.__wbg_ptr);
3274
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3275
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3276
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3277
+ if (r2) {
3278
+ throw takeObject(r1);
3279
+ }
3280
+ return r0 === 0 ? undefined : Dss.__wrap(r0);
3281
+ } finally {
3282
+ wasm.__wbindgen_add_to_stack_pointer(16);
3283
+ }
3284
+ }
2954
3285
  /**
2955
3286
  * Deprecated: Use eraseFooter instead.
2956
3287
  * @param {number} page_index
@@ -3280,6 +3611,40 @@ export class WasmPdfDocument {
3280
3611
  wasm.__wbindgen_add_to_stack_pointer(16);
3281
3612
  }
3282
3613
  }
3614
+ /**
3615
+ * Rich per-page extraction → JSON `PageExtraction` (per-region
3616
+ * bbox + typed reason). `optionsJson` is `{}`-tolerant
3617
+ * `AutoExtractOptions`; undefined/empty → defaults.
3618
+ * @param {number} page_index
3619
+ * @param {string | null} [options_json]
3620
+ * @returns {string}
3621
+ */
3622
+ extractPageAuto(page_index, options_json) {
3623
+ let deferred3_0;
3624
+ let deferred3_1;
3625
+ try {
3626
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3627
+ var ptr0 = isLikeNone(options_json) ? 0 : passStringToWasm0(options_json, wasm.__wbindgen_export, wasm.__wbindgen_export2);
3628
+ var len0 = WASM_VECTOR_LEN;
3629
+ wasm.wasmpdfdocument_extractPageAuto(retptr, this.__wbg_ptr, page_index, ptr0, len0);
3630
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3631
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3632
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3633
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
3634
+ var ptr2 = r0;
3635
+ var len2 = r1;
3636
+ if (r3) {
3637
+ ptr2 = 0; len2 = 0;
3638
+ throw takeObject(r2);
3639
+ }
3640
+ deferred3_0 = ptr2;
3641
+ deferred3_1 = len2;
3642
+ return getStringFromWasm0(ptr2, len2);
3643
+ } finally {
3644
+ wasm.__wbindgen_add_to_stack_pointer(16);
3645
+ wasm.__wbindgen_export4(deferred3_0, deferred3_1, 1);
3646
+ }
3647
+ }
3283
3648
  /**
3284
3649
  * Extract complete page text data in a single call.
3285
3650
  *
@@ -3481,6 +3846,36 @@ export class WasmPdfDocument {
3481
3846
  wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
3482
3847
  }
3483
3848
  }
3849
+ /**
3850
+ * One-shot auto text extraction — graceful native fallback (never
3851
+ * the opaque OCR error #513).
3852
+ * @param {number} page_index
3853
+ * @returns {string}
3854
+ */
3855
+ extractTextAuto(page_index) {
3856
+ let deferred2_0;
3857
+ let deferred2_1;
3858
+ try {
3859
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3860
+ wasm.wasmpdfdocument_extractTextAuto(retptr, this.__wbg_ptr, page_index);
3861
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3862
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3863
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3864
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
3865
+ var ptr1 = r0;
3866
+ var len1 = r1;
3867
+ if (r3) {
3868
+ ptr1 = 0; len1 = 0;
3869
+ throw takeObject(r2);
3870
+ }
3871
+ deferred2_0 = ptr1;
3872
+ deferred2_1 = len1;
3873
+ return getStringFromWasm0(ptr1, len1);
3874
+ } finally {
3875
+ wasm.__wbindgen_add_to_stack_pointer(16);
3876
+ wasm.__wbindgen_export4(deferred2_0, deferred2_1, 1);
3877
+ }
3878
+ }
3484
3879
  /**
3485
3880
  * Extract text lines from a page.
3486
3881
  *
@@ -4094,6 +4489,26 @@ export class WasmPdfDocument {
4094
4489
  wasm.__wbindgen_add_to_stack_pointer(16);
4095
4490
  }
4096
4491
  }
4492
+ /**
4493
+ * Number of redaction regions queued for `page`.
4494
+ * @param {number} page
4495
+ * @returns {number}
4496
+ */
4497
+ redactionCount(page) {
4498
+ try {
4499
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4500
+ wasm.wasmpdfdocument_redactionCount(retptr, this.__wbg_ptr, page);
4501
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4502
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4503
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
4504
+ if (r2) {
4505
+ throw takeObject(r1);
4506
+ }
4507
+ return r0 >>> 0;
4508
+ } finally {
4509
+ wasm.__wbindgen_add_to_stack_pointer(16);
4510
+ }
4511
+ }
4097
4512
  /**
4098
4513
  * Identify and remove both headers and footers.
4099
4514
  *
@@ -4278,6 +4693,30 @@ export class WasmPdfDocument {
4278
4693
  wasm.__wbindgen_add_to_stack_pointer(16);
4279
4694
  }
4280
4695
  }
4696
+ /**
4697
+ * Standalone document sanitization (#231 T10): strip `/Info`,
4698
+ * catalog XMP `/Metadata`, document JavaScript and embedded files
4699
+ * without geometric redaction. Returns a `RedactionReport` object.
4700
+ * @param {boolean | null} [scrub_metadata]
4701
+ * @param {boolean | null} [remove_javascript]
4702
+ * @param {boolean | null} [remove_embedded_files]
4703
+ * @returns {any}
4704
+ */
4705
+ sanitizeDocument(scrub_metadata, remove_javascript, remove_embedded_files) {
4706
+ try {
4707
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4708
+ wasm.wasmpdfdocument_sanitizeDocument(retptr, this.__wbg_ptr, isLikeNone(scrub_metadata) ? 0xFFFFFF : scrub_metadata ? 1 : 0, isLikeNone(remove_javascript) ? 0xFFFFFF : remove_javascript ? 1 : 0, isLikeNone(remove_embedded_files) ? 0xFFFFFF : remove_embedded_files ? 1 : 0);
4709
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4710
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4711
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
4712
+ if (r2) {
4713
+ throw takeObject(r1);
4714
+ }
4715
+ return takeObject(r0);
4716
+ } finally {
4717
+ wasm.__wbindgen_add_to_stack_pointer(16);
4718
+ }
4719
+ }
4281
4720
  /**
4282
4721
  * Save all edits and return the resulting PDF as bytes.
4283
4722
  *
@@ -5382,6 +5821,16 @@ export class WasmSignature {
5382
5821
  wasm.__wbindgen_add_to_stack_pointer(16);
5383
5822
  }
5384
5823
  }
5824
+ /**
5825
+ * PAdES baseline level from this signature's CMS attributes alone
5826
+ * (`BB` vs `BT`). `BLt` additionally needs the document `/DSS` —
5827
+ * read it via `WasmPdfDocument.dss()` and re-classify there.
5828
+ * @returns {PadesLevel}
5829
+ */
5830
+ get padesLevel() {
5831
+ const ret = wasm.wasmsignature_padesLevel(this.__wbg_ptr);
5832
+ return ret;
5833
+ }
5385
5834
  /**
5386
5835
  * `/Reason` entry from the signature dictionary, if present.
5387
5836
  * @returns {string | undefined}
@@ -5668,6 +6117,70 @@ export class WasmTimestamp {
5668
6117
  }
5669
6118
  if (Symbol.dispose) WasmTimestamp.prototype[Symbol.dispose] = WasmTimestamp.prototype.free;
5670
6119
 
6120
+ /**
6121
+ * A CycloneDX 1.6 Cryptographic Bill of Materials (JSON string) of the
6122
+ * algorithms exercised so far this process (#230 Phase F).
6123
+ * @returns {string}
6124
+ */
6125
+ export function cryptoCbom() {
6126
+ let deferred1_0;
6127
+ let deferred1_1;
6128
+ try {
6129
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6130
+ wasm.cryptoCbom(retptr);
6131
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6132
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6133
+ deferred1_0 = r0;
6134
+ deferred1_1 = r1;
6135
+ return getStringFromWasm0(r0, r1);
6136
+ } finally {
6137
+ wasm.__wbindgen_add_to_stack_pointer(16);
6138
+ wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1);
6139
+ }
6140
+ }
6141
+
6142
+ /**
6143
+ * The cryptographic algorithm tokens exercised so far this process
6144
+ * (governance report), as a JSON string array.
6145
+ * @returns {any}
6146
+ */
6147
+ export function cryptoInventory() {
6148
+ try {
6149
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6150
+ wasm.cryptoInventory(retptr);
6151
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6152
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6153
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
6154
+ if (r2) {
6155
+ throw takeObject(r1);
6156
+ }
6157
+ return takeObject(r0);
6158
+ } finally {
6159
+ wasm.__wbindgen_add_to_stack_pointer(16);
6160
+ }
6161
+ }
6162
+
6163
+ /**
6164
+ * The active crypto policy as its canonical grammar string.
6165
+ * @returns {string}
6166
+ */
6167
+ export function cryptoPolicy() {
6168
+ let deferred1_0;
6169
+ let deferred1_1;
6170
+ try {
6171
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6172
+ wasm.cryptoPolicy(retptr);
6173
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6174
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6175
+ deferred1_0 = r0;
6176
+ deferred1_1 = r1;
6177
+ return getStringFromWasm0(r0, r1);
6178
+ } finally {
6179
+ wasm.__wbindgen_add_to_stack_pointer(16);
6180
+ wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1);
6181
+ }
6182
+ }
6183
+
5671
6184
  /**
5672
6185
  * Disable all pdf_oxide log output — convenience wrapper for
5673
6186
  * `setLogLevel("off")`.
@@ -5747,6 +6260,116 @@ export function generateQrSvg(data, error_correction, size) {
5747
6260
  }
5748
6261
  }
5749
6262
 
6263
+ /**
6264
+ * Whether `pdf_data` carries a document-scoped RFC 3161
6265
+ * `/DocTimeStamp` archival timestamp (PAdES-B-LTA). This is the
6266
+ * document-level reader signal; a `WasmSignature`'s `padesLevel`
6267
+ * getter is signature-scoped and tops out at B-LT by design.
6268
+ * @param {Uint8Array} pdf_data
6269
+ * @returns {boolean}
6270
+ */
6271
+ export function hasDocumentTimestamp(pdf_data) {
6272
+ const ptr0 = passArray8ToWasm0(pdf_data, wasm.__wbindgen_export);
6273
+ const len0 = WASM_VECTOR_LEN;
6274
+ const ret = wasm.hasDocumentTimestamp(ptr0, len0);
6275
+ return ret !== 0;
6276
+ }
6277
+
6278
+ /**
6279
+ * #519: Air-gapped OCR model manifest — JSON (detector + every
6280
+ * supported language's cache filenames and source URLs).
6281
+ *
6282
+ * WASM provisioning is **host-side**: browser/WASM has no filesystem
6283
+ * or network-to-disk, so a download-to-cache prefetch cannot run
6284
+ * here. This manifest is informational — it lets the JS host learn
6285
+ * which model files/URLs to fetch and bundle (or ship out of band)
6286
+ * before driving OCR. There is intentionally no `prefetchModels` in
6287
+ * the WASM surface (see `prefetchAvailable`, which always returns
6288
+ * `false`).
6289
+ * @returns {string}
6290
+ */
6291
+ export function modelManifest() {
6292
+ let deferred1_0;
6293
+ let deferred1_1;
6294
+ try {
6295
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6296
+ wasm.modelManifest(retptr);
6297
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6298
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6299
+ deferred1_0 = r0;
6300
+ deferred1_1 = r1;
6301
+ return getStringFromWasm0(r0, r1);
6302
+ } finally {
6303
+ wasm.__wbindgen_add_to_stack_pointer(16);
6304
+ wasm.__wbindgen_export4(deferred1_0, deferred1_1, 1);
6305
+ }
6306
+ }
6307
+
6308
+ /**
6309
+ * Plan a bookmark split without producing PDFs. Returns a JSON array
6310
+ * of segment objects (`index, startPage…` shape from
6311
+ * `BookmarkSegment`). `level`: 0 = all depths, 1 = top-level.
6312
+ * @param {Uint8Array} src_bytes
6313
+ * @param {string | null | undefined} title_prefix
6314
+ * @param {boolean} ignore_case
6315
+ * @param {number} level
6316
+ * @param {boolean} include_front_matter
6317
+ * @returns {any}
6318
+ */
6319
+ export function planSplitByBookmarks(src_bytes, title_prefix, ignore_case, level, include_front_matter) {
6320
+ try {
6321
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6322
+ const ptr0 = passArray8ToWasm0(src_bytes, wasm.__wbindgen_export);
6323
+ const len0 = WASM_VECTOR_LEN;
6324
+ var ptr1 = isLikeNone(title_prefix) ? 0 : passStringToWasm0(title_prefix, wasm.__wbindgen_export, wasm.__wbindgen_export2);
6325
+ var len1 = WASM_VECTOR_LEN;
6326
+ wasm.planSplitByBookmarks(retptr, ptr0, len0, ptr1, len1, ignore_case, level, include_front_matter);
6327
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6328
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6329
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
6330
+ if (r2) {
6331
+ throw takeObject(r1);
6332
+ }
6333
+ return takeObject(r0);
6334
+ } finally {
6335
+ wasm.__wbindgen_add_to_stack_pointer(16);
6336
+ }
6337
+ }
6338
+
6339
+ /**
6340
+ * #519: Whether this build can download OCR models to a local cache.
6341
+ * Always `false` in WASM — provisioning is host-side (see
6342
+ * `modelManifest`).
6343
+ * @returns {boolean}
6344
+ */
6345
+ export function prefetchAvailable() {
6346
+ const ret = wasm.prefetchAvailable();
6347
+ return ret !== 0;
6348
+ }
6349
+
6350
+ /**
6351
+ * Install the process-wide runtime crypto policy from its grammar
6352
+ * string (`"compat"|"strict"|"fips-strict"[;…]`). Fail-closed:
6353
+ * throws on an unparseable spec (policy NOT installed) or if a
6354
+ * policy is already set. Default (never set) is `compat`.
6355
+ * @param {string} spec
6356
+ */
6357
+ export function setCryptoPolicy(spec) {
6358
+ try {
6359
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6360
+ const ptr0 = passStringToWasm0(spec, wasm.__wbindgen_export, wasm.__wbindgen_export2);
6361
+ const len0 = WASM_VECTOR_LEN;
6362
+ wasm.setCryptoPolicy(retptr, ptr0, len0);
6363
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6364
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6365
+ if (r1) {
6366
+ throw takeObject(r0);
6367
+ }
6368
+ } finally {
6369
+ wasm.__wbindgen_add_to_stack_pointer(16);
6370
+ }
6371
+ }
6372
+
5750
6373
  /**
5751
6374
  * Set the maximum log level for pdf_oxide messages.
5752
6375
  *
@@ -5817,6 +6440,88 @@ export function signPdfBytes(pdf_data, cert, reason, location) {
5817
6440
  wasm.__wbindgen_add_to_stack_pointer(16);
5818
6441
  }
5819
6442
  }
6443
+
6444
+ /**
6445
+ * Sign raw PDF bytes at a PAdES baseline level and return the signed
6446
+ * PDF as a `Uint8Array`.
6447
+ *
6448
+ * `level` `BLTA` is reserved (→ error). For `BT`/`BLt` pass a
6449
+ * pre-fetched RFC 3161 `timestampToken` (DER): WASM intentionally
6450
+ * omits the online TSA client (same `ureq`-incompat carve-out as
6451
+ * v0.3.38) — without a token the core fail-closes with `Unsupported`.
6452
+ * `revocation` supplies the B-LT DSS material.
6453
+ * @param {Uint8Array} pdf_data
6454
+ * @param {WasmCertificate} cert
6455
+ * @param {PadesLevel} level
6456
+ * @param {Uint8Array | null} [timestamp_token]
6457
+ * @param {RevocationMaterial | null} [revocation]
6458
+ * @param {string | null} [reason]
6459
+ * @param {string | null} [location]
6460
+ * @returns {Uint8Array}
6461
+ */
6462
+ export function signPdfBytesPades(pdf_data, cert, level, timestamp_token, revocation, reason, location) {
6463
+ try {
6464
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6465
+ const ptr0 = passArray8ToWasm0(pdf_data, wasm.__wbindgen_export);
6466
+ const len0 = WASM_VECTOR_LEN;
6467
+ _assertClass(cert, WasmCertificate);
6468
+ var ptr1 = isLikeNone(timestamp_token) ? 0 : passArray8ToWasm0(timestamp_token, wasm.__wbindgen_export);
6469
+ var len1 = WASM_VECTOR_LEN;
6470
+ let ptr2 = 0;
6471
+ if (!isLikeNone(revocation)) {
6472
+ _assertClass(revocation, RevocationMaterial);
6473
+ ptr2 = revocation.__destroy_into_raw();
6474
+ }
6475
+ var ptr3 = isLikeNone(reason) ? 0 : passStringToWasm0(reason, wasm.__wbindgen_export, wasm.__wbindgen_export2);
6476
+ var len3 = WASM_VECTOR_LEN;
6477
+ var ptr4 = isLikeNone(location) ? 0 : passStringToWasm0(location, wasm.__wbindgen_export, wasm.__wbindgen_export2);
6478
+ var len4 = WASM_VECTOR_LEN;
6479
+ wasm.signPdfBytesPades(retptr, ptr0, len0, cert.__wbg_ptr, level, ptr1, len1, ptr2, ptr3, len3, ptr4, len4);
6480
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6481
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6482
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
6483
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
6484
+ if (r3) {
6485
+ throw takeObject(r2);
6486
+ }
6487
+ var v6 = getArrayU8FromWasm0(r0, r1).slice();
6488
+ wasm.__wbindgen_export4(r0, r1 * 1, 1);
6489
+ return v6;
6490
+ } finally {
6491
+ wasm.__wbindgen_add_to_stack_pointer(16);
6492
+ }
6493
+ }
6494
+
6495
+ /**
6496
+ * Split at bookmark boundaries. Returns a JSON array of
6497
+ * `[segment, bytes]` pairs (bytes as a number array; source
6498
+ * unmodified).
6499
+ * @param {Uint8Array} src_bytes
6500
+ * @param {string | null | undefined} title_prefix
6501
+ * @param {boolean} ignore_case
6502
+ * @param {number} level
6503
+ * @param {boolean} include_front_matter
6504
+ * @returns {any}
6505
+ */
6506
+ export function splitByBookmarks(src_bytes, title_prefix, ignore_case, level, include_front_matter) {
6507
+ try {
6508
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
6509
+ const ptr0 = passArray8ToWasm0(src_bytes, wasm.__wbindgen_export);
6510
+ const len0 = WASM_VECTOR_LEN;
6511
+ var ptr1 = isLikeNone(title_prefix) ? 0 : passStringToWasm0(title_prefix, wasm.__wbindgen_export, wasm.__wbindgen_export2);
6512
+ var len1 = WASM_VECTOR_LEN;
6513
+ wasm.splitByBookmarks(retptr, ptr0, len0, ptr1, len1, ignore_case, level, include_front_matter);
6514
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
6515
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
6516
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
6517
+ if (r2) {
6518
+ throw takeObject(r1);
6519
+ }
6520
+ return takeObject(r0);
6521
+ } finally {
6522
+ wasm.__wbindgen_add_to_stack_pointer(16);
6523
+ }
6524
+ }
5820
6525
  export function __wbg_Error_bce6d499ff0a4aff(arg0, arg1) {
5821
6526
  const ret = Error(getStringFromWasm0(arg0, arg1));
5822
6527
  return addHeapObject(ret);
@@ -6131,6 +6836,9 @@ const WasmCertificateFinalization = (typeof FinalizationRegistry === 'undefined'
6131
6836
  const WasmDocumentBuilderFinalization = (typeof FinalizationRegistry === 'undefined')
6132
6837
  ? { register: () => {}, unregister: () => {} }
6133
6838
  : new FinalizationRegistry(ptr => wasm.__wbg_wasmdocumentbuilder_free(ptr, 1));
6839
+ const DssFinalization = (typeof FinalizationRegistry === 'undefined')
6840
+ ? { register: () => {}, unregister: () => {} }
6841
+ : new FinalizationRegistry(ptr => wasm.__wbg_dss_free(ptr, 1));
6134
6842
  const WasmEmbeddedFontFinalization = (typeof FinalizationRegistry === 'undefined')
6135
6843
  ? { register: () => {}, unregister: () => {} }
6136
6844
  : new FinalizationRegistry(ptr => wasm.__wbg_wasmembeddedfont_free(ptr, 1));
@@ -6161,6 +6869,9 @@ const WasmPdfDocumentFinalization = (typeof FinalizationRegistry === 'undefined'
6161
6869
  const WasmPdfPageRegionFinalization = (typeof FinalizationRegistry === 'undefined')
6162
6870
  ? { register: () => {}, unregister: () => {} }
6163
6871
  : new FinalizationRegistry(ptr => wasm.__wbg_wasmpdfpageregion_free(ptr, 1));
6872
+ const RevocationMaterialFinalization = (typeof FinalizationRegistry === 'undefined')
6873
+ ? { register: () => {}, unregister: () => {} }
6874
+ : new FinalizationRegistry(ptr => wasm.__wbg_revocationmaterial_free(ptr, 1));
6164
6875
  const WasmSignatureFinalization = (typeof FinalizationRegistry === 'undefined')
6165
6876
  ? { register: () => {}, unregister: () => {} }
6166
6877
  : new FinalizationRegistry(ptr => wasm.__wbg_wasmsignature_free(ptr, 1));