reamkit 1.5.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/esm/core/converter/facade.js +6 -1
- package/dist/esm/core/converter/ream.js +2 -1
- package/dist/esm/core/document-model/types.d.ts +9 -1
- package/dist/esm/core/drawingml/chart-serializer.d.ts +2 -0
- package/dist/esm/core/drawingml/chart-serializer.js +53 -0
- package/dist/esm/core/spreadsheet-model/index.d.ts +1 -1
- package/dist/esm/core/spreadsheet-model/types.d.ts +5 -0
- package/dist/esm/excel/column-bands.d.ts +7 -0
- package/dist/esm/excel/column-bands.js +87 -0
- package/dist/esm/excel/conditional-format.js +22 -0
- package/dist/esm/excel/print-model.js +33 -11
- package/dist/esm/excel/worksheet-parser.js +26 -0
- package/dist/esm/excel/xlsx-writer.js +88 -17
- package/dist/esm/html/html-writer.js +100 -5
- package/dist/esm/layout/styled-layout.js +88 -19
- package/dist/esm/pdf-reader/cmap.d.ts +5 -0
- package/dist/esm/pdf-reader/cmap.js +72 -0
- package/dist/esm/pdf-reader/content.d.ts +52 -0
- package/dist/esm/pdf-reader/content.js +420 -0
- package/dist/esm/pdf-reader/crypto.d.ts +7 -0
- package/dist/esm/pdf-reader/crypto.js +609 -0
- package/dist/esm/pdf-reader/decrypt.d.ts +5 -0
- package/dist/esm/pdf-reader/decrypt.js +199 -0
- package/dist/esm/pdf-reader/document.d.ts +30 -0
- package/dist/esm/pdf-reader/document.js +413 -0
- package/dist/esm/pdf-reader/flow-build.d.ts +19 -0
- package/dist/esm/pdf-reader/flow-build.js +126 -0
- package/dist/esm/pdf-reader/font.d.ts +4 -0
- package/dist/esm/pdf-reader/font.js +69 -0
- package/dist/esm/pdf-reader/image-decode.d.ts +15 -0
- package/dist/esm/pdf-reader/image-decode.js +442 -0
- package/dist/esm/pdf-reader/images.d.ts +16 -0
- package/dist/esm/pdf-reader/images.js +90 -0
- package/dist/esm/pdf-reader/layout.d.ts +3 -0
- package/dist/esm/pdf-reader/layout.js +103 -0
- package/dist/esm/pdf-reader/lexer.d.ts +43 -0
- package/dist/esm/pdf-reader/lexer.js +250 -0
- package/dist/esm/pdf-reader/parser.d.ts +10 -0
- package/dist/esm/pdf-reader/parser.js +86 -0
- package/dist/esm/pdf-reader/png-encode.d.ts +2 -0
- package/dist/esm/pdf-reader/png-encode.js +98 -0
- package/dist/esm/pdf-reader/predictor.d.ts +7 -0
- package/dist/esm/pdf-reader/predictor.js +61 -0
- package/dist/esm/pdf-reader/reader.d.ts +4 -0
- package/dist/esm/pdf-reader/reader.js +50 -0
- package/dist/esm/pdf-reader/struct-tree.d.ts +14 -0
- package/dist/esm/pdf-reader/struct-tree.js +92 -0
- package/dist/esm/pdf-reader/tagged.d.ts +3 -0
- package/dist/esm/pdf-reader/tagged.js +141 -0
- package/dist/esm/pdf-reader/text.d.ts +3 -0
- package/dist/esm/pdf-reader/text.js +65 -0
- package/dist/esm/pdf-reader/vector.d.ts +12 -0
- package/dist/esm/pdf-reader/vector.js +54 -0
- package/dist/esm/word/docx-writer.js +96 -7
- package/dist/esm/word/omml-serializer.d.ts +2 -0
- package/dist/esm/word/omml-serializer.js +48 -0
- package/package.json +2 -2
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { PDF_NULL, PdfHexString, PdfName } from "../pdf/objects.js";
|
|
2
|
+
import { Lexer } from "./lexer.js";
|
|
3
|
+
//#region src/pdf-reader/content.ts
|
|
4
|
+
var IDENTITY = [
|
|
5
|
+
1,
|
|
6
|
+
0,
|
|
7
|
+
0,
|
|
8
|
+
1,
|
|
9
|
+
0,
|
|
10
|
+
0
|
|
11
|
+
];
|
|
12
|
+
function multiply(a, b) {
|
|
13
|
+
return [
|
|
14
|
+
a[0] * b[0] + a[1] * b[2],
|
|
15
|
+
a[0] * b[1] + a[1] * b[3],
|
|
16
|
+
a[2] * b[0] + a[3] * b[2],
|
|
17
|
+
a[2] * b[1] + a[3] * b[3],
|
|
18
|
+
a[4] * b[0] + a[5] * b[2] + b[4],
|
|
19
|
+
a[4] * b[1] + a[5] * b[3] + b[5]
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
function translation(tx, ty) {
|
|
23
|
+
return [
|
|
24
|
+
1,
|
|
25
|
+
0,
|
|
26
|
+
0,
|
|
27
|
+
1,
|
|
28
|
+
tx,
|
|
29
|
+
ty
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
var FALLBACK_FONT = {
|
|
33
|
+
bytesPerCode: 1,
|
|
34
|
+
decode: (codes) => codes.map((c) => String.fromCharCode(c)).join(""),
|
|
35
|
+
width: () => 500
|
|
36
|
+
};
|
|
37
|
+
function initialState() {
|
|
38
|
+
return {
|
|
39
|
+
ctm: IDENTITY,
|
|
40
|
+
fontKey: "",
|
|
41
|
+
font: FALLBACK_FONT,
|
|
42
|
+
fontSize: 0,
|
|
43
|
+
charSpacing: 0,
|
|
44
|
+
wordSpacing: 0,
|
|
45
|
+
hScale: 1,
|
|
46
|
+
leading: 0,
|
|
47
|
+
rise: 0,
|
|
48
|
+
fillColor: "000000"
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function interpretContent(bytes, fonts, initialCtm = IDENTITY) {
|
|
52
|
+
const runs = [];
|
|
53
|
+
const images = [];
|
|
54
|
+
const vectors = [];
|
|
55
|
+
const lexer = new Lexer(bytes);
|
|
56
|
+
const stack = [];
|
|
57
|
+
let state = initialState();
|
|
58
|
+
state.ctm = initialCtm;
|
|
59
|
+
let tm = IDENTITY;
|
|
60
|
+
let tlm = IDENTITY;
|
|
61
|
+
let path = [];
|
|
62
|
+
let operands = [];
|
|
63
|
+
const mcStack = [];
|
|
64
|
+
const toPage = (x, y) => [x * state.ctm[0] + y * state.ctm[2] + state.ctm[4], x * state.ctm[1] + y * state.ctm[3] + state.ctm[5]];
|
|
65
|
+
const moveTo = (x, y) => {
|
|
66
|
+
const [px, py] = toPage(x, y);
|
|
67
|
+
path.push({
|
|
68
|
+
op: "move",
|
|
69
|
+
x: px,
|
|
70
|
+
y: py
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
const lineTo = (x, y) => {
|
|
74
|
+
const [px, py] = toPage(x, y);
|
|
75
|
+
path.push({
|
|
76
|
+
op: "line",
|
|
77
|
+
x: px,
|
|
78
|
+
y: py
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
const curveTo = (a, b, c, d, e, f) => {
|
|
82
|
+
const [x1, y1] = toPage(a, b);
|
|
83
|
+
const [x2, y2] = toPage(c, d);
|
|
84
|
+
const [x, y] = toPage(e, f);
|
|
85
|
+
path.push({
|
|
86
|
+
op: "cubic",
|
|
87
|
+
x1,
|
|
88
|
+
y1,
|
|
89
|
+
x2,
|
|
90
|
+
y2,
|
|
91
|
+
x,
|
|
92
|
+
y
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const rectTo = (x, y, w, h) => {
|
|
96
|
+
moveTo(x, y);
|
|
97
|
+
lineTo(x + w, y);
|
|
98
|
+
lineTo(x + w, y + h);
|
|
99
|
+
lineTo(x, y + h);
|
|
100
|
+
path.push({ op: "close" });
|
|
101
|
+
};
|
|
102
|
+
const fillPath = () => {
|
|
103
|
+
if (path.length >= 2) {
|
|
104
|
+
const mcid = mcStack.length > 0 ? mcStack[mcStack.length - 1] : void 0;
|
|
105
|
+
vectors.push({
|
|
106
|
+
segs: path,
|
|
107
|
+
fillHex: state.fillColor,
|
|
108
|
+
...mcid !== void 0 ? { mcid } : {}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
path = [];
|
|
112
|
+
};
|
|
113
|
+
const num = (i) => {
|
|
114
|
+
const v = operands[i];
|
|
115
|
+
return typeof v === "number" ? v : 0;
|
|
116
|
+
};
|
|
117
|
+
const advanceGlyph = (code) => {
|
|
118
|
+
const w0 = state.font.width(code) / 1e3;
|
|
119
|
+
const isSpace = state.font.bytesPerCode === 1 && code === 32;
|
|
120
|
+
tm = multiply(translation((w0 * state.fontSize + state.charSpacing + (isSpace ? state.wordSpacing : 0)) * state.hScale, 0), tm);
|
|
121
|
+
};
|
|
122
|
+
const consume = (operand) => {
|
|
123
|
+
const codes = splitCodes(toBytes(operand), state.font.bytesPerCode);
|
|
124
|
+
for (const code of codes) advanceGlyph(code);
|
|
125
|
+
return state.font.decode(codes);
|
|
126
|
+
};
|
|
127
|
+
const emitAt = (origin, text) => {
|
|
128
|
+
if (text.length === 0) return;
|
|
129
|
+
const scaleY = Math.hypot(origin[2], origin[3]) || 1;
|
|
130
|
+
const mcid = mcStack.length > 0 ? mcStack[mcStack.length - 1] : void 0;
|
|
131
|
+
runs.push({
|
|
132
|
+
text,
|
|
133
|
+
x: origin[4],
|
|
134
|
+
y: origin[5],
|
|
135
|
+
fontSizePt: state.fontSize * scaleY,
|
|
136
|
+
fontKey: state.fontKey,
|
|
137
|
+
...mcid !== void 0 ? { mcid } : {}
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
const showString = (operand) => {
|
|
141
|
+
emitAt(multiply(tm, state.ctm), consume(operand));
|
|
142
|
+
};
|
|
143
|
+
const showArray = (arr) => {
|
|
144
|
+
const origin = multiply(tm, state.ctm);
|
|
145
|
+
let text = "";
|
|
146
|
+
for (const el of arr) if (typeof el === "number") tm = multiply(translation(-el / 1e3 * state.fontSize * state.hScale, 0), tm);
|
|
147
|
+
else if (typeof el === "string" || el instanceof PdfHexString) text += consume(el);
|
|
148
|
+
emitAt(origin, text);
|
|
149
|
+
};
|
|
150
|
+
const exec = (op) => {
|
|
151
|
+
switch (op) {
|
|
152
|
+
case "q":
|
|
153
|
+
stack.push({ ...state });
|
|
154
|
+
break;
|
|
155
|
+
case "Q":
|
|
156
|
+
state = stack.pop() ?? state;
|
|
157
|
+
break;
|
|
158
|
+
case "cm":
|
|
159
|
+
state.ctm = multiply(matrixFromOperands(operands), state.ctm);
|
|
160
|
+
break;
|
|
161
|
+
case "BT":
|
|
162
|
+
tm = IDENTITY;
|
|
163
|
+
tlm = IDENTITY;
|
|
164
|
+
break;
|
|
165
|
+
case "ET": break;
|
|
166
|
+
case "Tf": {
|
|
167
|
+
const key = operands[0] instanceof PdfName ? operands[0].value : "";
|
|
168
|
+
state.fontKey = key;
|
|
169
|
+
state.font = fonts.get(key) ?? FALLBACK_FONT;
|
|
170
|
+
state.fontSize = num(1);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case "Td":
|
|
174
|
+
tlm = multiply(translation(num(0), num(1)), tlm);
|
|
175
|
+
tm = tlm;
|
|
176
|
+
break;
|
|
177
|
+
case "TD":
|
|
178
|
+
state.leading = -num(1);
|
|
179
|
+
tlm = multiply(translation(num(0), num(1)), tlm);
|
|
180
|
+
tm = tlm;
|
|
181
|
+
break;
|
|
182
|
+
case "Tm":
|
|
183
|
+
tlm = matrixFromOperands(operands);
|
|
184
|
+
tm = tlm;
|
|
185
|
+
break;
|
|
186
|
+
case "T*":
|
|
187
|
+
tlm = multiply(translation(0, -state.leading), tlm);
|
|
188
|
+
tm = tlm;
|
|
189
|
+
break;
|
|
190
|
+
case "TL":
|
|
191
|
+
state.leading = num(0);
|
|
192
|
+
break;
|
|
193
|
+
case "Tc":
|
|
194
|
+
state.charSpacing = num(0);
|
|
195
|
+
break;
|
|
196
|
+
case "Tw":
|
|
197
|
+
state.wordSpacing = num(0);
|
|
198
|
+
break;
|
|
199
|
+
case "Tz":
|
|
200
|
+
state.hScale = num(0) / 100;
|
|
201
|
+
break;
|
|
202
|
+
case "Ts":
|
|
203
|
+
state.rise = num(0);
|
|
204
|
+
break;
|
|
205
|
+
case "Tj":
|
|
206
|
+
if (operands.length > 0) showString(operands[operands.length - 1]);
|
|
207
|
+
break;
|
|
208
|
+
case "TJ":
|
|
209
|
+
if (Array.isArray(operands[0])) showArray(operands[0]);
|
|
210
|
+
break;
|
|
211
|
+
case "'":
|
|
212
|
+
tlm = multiply(translation(0, -state.leading), tlm);
|
|
213
|
+
tm = tlm;
|
|
214
|
+
if (operands.length > 0) showString(operands[operands.length - 1]);
|
|
215
|
+
break;
|
|
216
|
+
case "\"":
|
|
217
|
+
state.wordSpacing = num(0);
|
|
218
|
+
state.charSpacing = num(1);
|
|
219
|
+
tlm = multiply(translation(0, -state.leading), tlm);
|
|
220
|
+
tm = tlm;
|
|
221
|
+
if (operands.length > 2) showString(operands[2]);
|
|
222
|
+
break;
|
|
223
|
+
case "BDC": {
|
|
224
|
+
const tag = operands[operands.length - 2];
|
|
225
|
+
const props = operands[operands.length - 1];
|
|
226
|
+
const mcidVal = !(tag instanceof PdfName && tag.value === "Artifact") && props instanceof Map ? props.get("MCID") : void 0;
|
|
227
|
+
mcStack.push(typeof mcidVal === "number" ? mcidVal : void 0);
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case "BMC":
|
|
231
|
+
mcStack.push(void 0);
|
|
232
|
+
break;
|
|
233
|
+
case "EMC":
|
|
234
|
+
mcStack.pop();
|
|
235
|
+
break;
|
|
236
|
+
case "Do": {
|
|
237
|
+
const nm = operands[0];
|
|
238
|
+
if (nm instanceof PdfName) {
|
|
239
|
+
const mcid = mcStack.length > 0 ? mcStack[mcStack.length - 1] : void 0;
|
|
240
|
+
images.push({
|
|
241
|
+
name: nm.value,
|
|
242
|
+
ctm: state.ctm,
|
|
243
|
+
...mcid !== void 0 ? { mcid } : {}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
case "rg":
|
|
249
|
+
state.fillColor = rgbHex(num(0), num(1), num(2));
|
|
250
|
+
break;
|
|
251
|
+
case "g":
|
|
252
|
+
state.fillColor = grayHex(num(0));
|
|
253
|
+
break;
|
|
254
|
+
case "k":
|
|
255
|
+
state.fillColor = cmykHex(num(0), num(1), num(2), num(3));
|
|
256
|
+
break;
|
|
257
|
+
case "m":
|
|
258
|
+
moveTo(num(0), num(1));
|
|
259
|
+
break;
|
|
260
|
+
case "l":
|
|
261
|
+
lineTo(num(0), num(1));
|
|
262
|
+
break;
|
|
263
|
+
case "c":
|
|
264
|
+
curveTo(num(0), num(1), num(2), num(3), num(4), num(5));
|
|
265
|
+
break;
|
|
266
|
+
case "re":
|
|
267
|
+
rectTo(num(0), num(1), num(2), num(3));
|
|
268
|
+
break;
|
|
269
|
+
case "h":
|
|
270
|
+
path.push({ op: "close" });
|
|
271
|
+
break;
|
|
272
|
+
case "f":
|
|
273
|
+
case "F":
|
|
274
|
+
case "f*":
|
|
275
|
+
case "B":
|
|
276
|
+
case "B*":
|
|
277
|
+
fillPath();
|
|
278
|
+
break;
|
|
279
|
+
case "b":
|
|
280
|
+
case "b*":
|
|
281
|
+
path.push({ op: "close" });
|
|
282
|
+
fillPath();
|
|
283
|
+
break;
|
|
284
|
+
case "n":
|
|
285
|
+
case "S":
|
|
286
|
+
case "s":
|
|
287
|
+
case "W":
|
|
288
|
+
case "W*":
|
|
289
|
+
path = [];
|
|
290
|
+
break;
|
|
291
|
+
default: break;
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
for (;;) {
|
|
295
|
+
lexer.skipWhitespace();
|
|
296
|
+
const tok = lexer.nextToken();
|
|
297
|
+
if (tok.kind === "eof") break;
|
|
298
|
+
switch (tok.kind) {
|
|
299
|
+
case "num":
|
|
300
|
+
operands.push(tok.value);
|
|
301
|
+
break;
|
|
302
|
+
case "name":
|
|
303
|
+
operands.push(new PdfName(tok.value));
|
|
304
|
+
break;
|
|
305
|
+
case "str":
|
|
306
|
+
operands.push(tok.value);
|
|
307
|
+
break;
|
|
308
|
+
case "hexstr":
|
|
309
|
+
operands.push(new PdfHexString(tok.bytes));
|
|
310
|
+
break;
|
|
311
|
+
case "arrayOpen":
|
|
312
|
+
operands.push(readArray(lexer));
|
|
313
|
+
break;
|
|
314
|
+
case "dictOpen":
|
|
315
|
+
operands.push(readDict(lexer));
|
|
316
|
+
break;
|
|
317
|
+
case "keyword":
|
|
318
|
+
if (tok.value === "BI") skipInlineImage(lexer);
|
|
319
|
+
else exec(tok.value);
|
|
320
|
+
operands = [];
|
|
321
|
+
break;
|
|
322
|
+
default:
|
|
323
|
+
operands = [];
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return {
|
|
328
|
+
texts: runs,
|
|
329
|
+
images,
|
|
330
|
+
vectors
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
function clamp255(v) {
|
|
334
|
+
return Math.max(0, Math.min(255, Math.round(v * 255)));
|
|
335
|
+
}
|
|
336
|
+
function hex2(v) {
|
|
337
|
+
return clamp255(v).toString(16).padStart(2, "0");
|
|
338
|
+
}
|
|
339
|
+
function rgbHex(r, g, b) {
|
|
340
|
+
return (hex2(r) + hex2(g) + hex2(b)).toUpperCase();
|
|
341
|
+
}
|
|
342
|
+
function grayHex(v) {
|
|
343
|
+
return rgbHex(v, v, v);
|
|
344
|
+
}
|
|
345
|
+
function cmykHex(c, m, y, k) {
|
|
346
|
+
return rgbHex((1 - c) * (1 - k), (1 - m) * (1 - k), (1 - y) * (1 - k));
|
|
347
|
+
}
|
|
348
|
+
function matrixFromOperands(operands) {
|
|
349
|
+
const n = (i) => typeof operands[i] === "number" ? operands[i] : 0;
|
|
350
|
+
return [
|
|
351
|
+
n(0),
|
|
352
|
+
n(1),
|
|
353
|
+
n(2),
|
|
354
|
+
n(3),
|
|
355
|
+
n(4),
|
|
356
|
+
n(5)
|
|
357
|
+
];
|
|
358
|
+
}
|
|
359
|
+
function toBytes(operand) {
|
|
360
|
+
if (operand instanceof PdfHexString) return operand.bytes;
|
|
361
|
+
if (typeof operand === "string") {
|
|
362
|
+
const out = new Uint8Array(operand.length);
|
|
363
|
+
for (let i = 0; i < operand.length; i++) out[i] = operand.charCodeAt(i) & 255;
|
|
364
|
+
return out;
|
|
365
|
+
}
|
|
366
|
+
return new Uint8Array(0);
|
|
367
|
+
}
|
|
368
|
+
function splitCodes(bytes, bytesPerCode) {
|
|
369
|
+
const out = [];
|
|
370
|
+
if (bytesPerCode === 2) {
|
|
371
|
+
for (let i = 0; i + 1 < bytes.length; i += 2) out.push(bytes[i] << 8 | bytes[i + 1]);
|
|
372
|
+
if (bytes.length % 2 === 1) out.push(bytes[bytes.length - 1]);
|
|
373
|
+
} else for (const b of bytes) out.push(b);
|
|
374
|
+
return out;
|
|
375
|
+
}
|
|
376
|
+
function readArray(lexer) {
|
|
377
|
+
const out = [];
|
|
378
|
+
for (;;) {
|
|
379
|
+
const tok = lexer.nextToken();
|
|
380
|
+
if (tok.kind === "arrayClose" || tok.kind === "eof") break;
|
|
381
|
+
if (tok.kind === "num") out.push(tok.value);
|
|
382
|
+
else if (tok.kind === "str") out.push(tok.value);
|
|
383
|
+
else if (tok.kind === "hexstr") out.push(new PdfHexString(tok.bytes));
|
|
384
|
+
}
|
|
385
|
+
return out;
|
|
386
|
+
}
|
|
387
|
+
function readDict(lexer) {
|
|
388
|
+
const map = /* @__PURE__ */ new Map();
|
|
389
|
+
for (;;) {
|
|
390
|
+
const key = lexer.nextToken();
|
|
391
|
+
if (key.kind === "dictClose" || key.kind === "eof") break;
|
|
392
|
+
if (key.kind !== "name") continue;
|
|
393
|
+
map.set(key.value, readValue(lexer));
|
|
394
|
+
}
|
|
395
|
+
return map;
|
|
396
|
+
}
|
|
397
|
+
function readValue(lexer) {
|
|
398
|
+
const tok = lexer.nextToken();
|
|
399
|
+
switch (tok.kind) {
|
|
400
|
+
case "num": return tok.value;
|
|
401
|
+
case "name": return new PdfName(tok.value);
|
|
402
|
+
case "str": return tok.value;
|
|
403
|
+
case "hexstr": return new PdfHexString(tok.bytes);
|
|
404
|
+
case "arrayOpen": return readArray(lexer);
|
|
405
|
+
case "dictOpen": return readDict(lexer);
|
|
406
|
+
case "keyword": return tok.value === "true" ? true : tok.value === "false" ? false : PDF_NULL;
|
|
407
|
+
default: return PDF_NULL;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
function skipInlineImage(lexer) {
|
|
411
|
+
for (;;) {
|
|
412
|
+
const tok = lexer.nextToken();
|
|
413
|
+
if (tok.kind === "eof") return;
|
|
414
|
+
if (tok.kind === "keyword" && tok.value === "ID") break;
|
|
415
|
+
}
|
|
416
|
+
const ei = lexer.indexOfAscii("EI", lexer.pos);
|
|
417
|
+
lexer.pos = ei < 0 ? lexer.length : ei + 2;
|
|
418
|
+
}
|
|
419
|
+
//#endregion
|
|
420
|
+
export { interpretContent, multiply };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function rc4(key: Uint8Array, data: Uint8Array): Uint8Array;
|
|
2
|
+
export declare function md5(input: Uint8Array): Uint8Array;
|
|
3
|
+
export declare function sha256(input: Uint8Array): Uint8Array;
|
|
4
|
+
export declare function sha512(input: Uint8Array): Uint8Array;
|
|
5
|
+
export declare function sha384(input: Uint8Array): Uint8Array;
|
|
6
|
+
export declare function aesCbcDecrypt(key: Uint8Array, iv: Uint8Array, data: Uint8Array, stripPad: boolean): Uint8Array;
|
|
7
|
+
export declare function aesCbcEncrypt(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Uint8Array;
|