docxmlater 8.1.0 → 8.3.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.
Files changed (63) hide show
  1. package/dist/elements/Paragraph.d.ts.map +1 -1
  2. package/dist/elements/Paragraph.js +91 -0
  3. package/dist/elements/Paragraph.js.map +1 -1
  4. package/dist/elements/Table.d.ts.map +1 -1
  5. package/dist/elements/Table.js +9 -10
  6. package/dist/elements/Table.js.map +1 -1
  7. package/dist/ms-doc/cfb/CFBReader.d.ts +35 -0
  8. package/dist/ms-doc/cfb/CFBReader.d.ts.map +1 -0
  9. package/dist/ms-doc/cfb/CFBReader.js +360 -0
  10. package/dist/ms-doc/cfb/CFBReader.js.map +1 -0
  11. package/dist/ms-doc/converter/DocToDocxConverter.d.ts +55 -0
  12. package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +1 -0
  13. package/dist/ms-doc/converter/DocToDocxConverter.js +316 -0
  14. package/dist/ms-doc/converter/DocToDocxConverter.js.map +1 -0
  15. package/dist/ms-doc/fib/FIB.d.ts +18 -0
  16. package/dist/ms-doc/fib/FIB.d.ts.map +1 -0
  17. package/dist/ms-doc/fib/FIB.js +342 -0
  18. package/dist/ms-doc/fib/FIB.js.map +1 -0
  19. package/dist/ms-doc/fields/FieldParser.d.ts +31 -0
  20. package/dist/ms-doc/fields/FieldParser.d.ts.map +1 -0
  21. package/dist/ms-doc/fields/FieldParser.js +266 -0
  22. package/dist/ms-doc/fields/FieldParser.js.map +1 -0
  23. package/dist/ms-doc/images/PictureExtractor.d.ts +22 -0
  24. package/dist/ms-doc/images/PictureExtractor.d.ts.map +1 -0
  25. package/dist/ms-doc/images/PictureExtractor.js +231 -0
  26. package/dist/ms-doc/images/PictureExtractor.js.map +1 -0
  27. package/dist/ms-doc/index.d.ts +20 -0
  28. package/dist/ms-doc/index.d.ts.map +1 -0
  29. package/dist/ms-doc/index.js +59 -0
  30. package/dist/ms-doc/index.js.map +1 -0
  31. package/dist/ms-doc/properties/SPRM.d.ts +210 -0
  32. package/dist/ms-doc/properties/SPRM.d.ts.map +1 -0
  33. package/dist/ms-doc/properties/SPRM.js +632 -0
  34. package/dist/ms-doc/properties/SPRM.js.map +1 -0
  35. package/dist/ms-doc/sections/SectionParser.d.ts +25 -0
  36. package/dist/ms-doc/sections/SectionParser.d.ts.map +1 -0
  37. package/dist/ms-doc/sections/SectionParser.js +214 -0
  38. package/dist/ms-doc/sections/SectionParser.js.map +1 -0
  39. package/dist/ms-doc/styles/StyleSheet.d.ts +23 -0
  40. package/dist/ms-doc/styles/StyleSheet.d.ts.map +1 -0
  41. package/dist/ms-doc/styles/StyleSheet.js +265 -0
  42. package/dist/ms-doc/styles/StyleSheet.js.map +1 -0
  43. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +61 -0
  44. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +1 -0
  45. package/dist/ms-doc/subdocuments/SubdocumentParser.js +208 -0
  46. package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +1 -0
  47. package/dist/ms-doc/tables/TableParser.d.ts +29 -0
  48. package/dist/ms-doc/tables/TableParser.d.ts.map +1 -0
  49. package/dist/ms-doc/tables/TableParser.js +176 -0
  50. package/dist/ms-doc/tables/TableParser.js.map +1 -0
  51. package/dist/ms-doc/text/PieceTable.d.ts +21 -0
  52. package/dist/ms-doc/text/PieceTable.d.ts.map +1 -0
  53. package/dist/ms-doc/text/PieceTable.js +171 -0
  54. package/dist/ms-doc/text/PieceTable.js.map +1 -0
  55. package/dist/ms-doc/types/Constants.d.ts +99 -0
  56. package/dist/ms-doc/types/Constants.d.ts.map +1 -0
  57. package/dist/ms-doc/types/Constants.js +102 -0
  58. package/dist/ms-doc/types/Constants.js.map +1 -0
  59. package/dist/ms-doc/types/DocTypes.d.ts +368 -0
  60. package/dist/ms-doc/types/DocTypes.d.ts.map +1 -0
  61. package/dist/ms-doc/types/DocTypes.js +3 -0
  62. package/dist/ms-doc/types/DocTypes.js.map +1 -0
  63. package/package.json +1 -1
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIBParser = exports.FIBParseError = void 0;
4
+ const Constants_1 = require("../types/Constants");
5
+ class FIBParseError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'FIBParseError';
9
+ }
10
+ }
11
+ exports.FIBParseError = FIBParseError;
12
+ const FIB_FCRLCB_FIELDS = [
13
+ ['fcStshfOrig', 0],
14
+ ['lcbStshfOrig', 4],
15
+ ['fcStshf', 8],
16
+ ['lcbStshf', 12],
17
+ ['fcPlcffndRef', 16],
18
+ ['lcbPlcffndRef', 20],
19
+ ['fcPlcffndTxt', 24],
20
+ ['lcbPlcffndTxt', 28],
21
+ ['fcPlcfandRef', 32],
22
+ ['lcbPlcfandRef', 36],
23
+ ['fcPlcfandTxt', 40],
24
+ ['lcbPlcfandTxt', 44],
25
+ ['fcPlcfSed', 48],
26
+ ['lcbPlcfSed', 52],
27
+ ['fcPlcPad', 56],
28
+ ['lcbPlcPad', 60],
29
+ ['fcPlcfPhe', 64],
30
+ ['lcbPlcfPhe', 68],
31
+ ['fcSttbfGlsy', 72],
32
+ ['lcbSttbfGlsy', 76],
33
+ ['fcPlcfGlsy', 80],
34
+ ['lcbPlcfGlsy', 84],
35
+ ['fcPlcfHdd', 88],
36
+ ['lcbPlcfHdd', 92],
37
+ ['fcPlcfBteChpx', 96],
38
+ ['lcbPlcfBteChpx', 100],
39
+ ['fcPlcfBtePapx', 104],
40
+ ['lcbPlcfBtePapx', 108],
41
+ ['fcPlcfSea', 112],
42
+ ['lcbPlcfSea', 116],
43
+ ['fcSttbfFfn', 120],
44
+ ['lcbSttbfFfn', 124],
45
+ ['fcPlcfFldMom', 128],
46
+ ['lcbPlcfFldMom', 132],
47
+ ['fcPlcfFldHdr', 136],
48
+ ['lcbPlcfFldHdr', 140],
49
+ ['fcPlcfFldFtn', 144],
50
+ ['lcbPlcfFldFtn', 148],
51
+ ['fcPlcfFldAtn', 152],
52
+ ['lcbPlcfFldAtn', 156],
53
+ ['fcPlcfFldMcr', 160],
54
+ ['lcbPlcfFldMcr', 164],
55
+ ['fcSttbfBkmk', 168],
56
+ ['lcbSttbfBkmk', 172],
57
+ ['fcPlcfBkf', 176],
58
+ ['lcbPlcfBkf', 180],
59
+ ['fcPlcfBkl', 184],
60
+ ['lcbPlcfBkl', 188],
61
+ ['fcCmds', 192],
62
+ ['lcbCmds', 196],
63
+ ['fcUnused1', 200],
64
+ ['lcbUnused1', 204],
65
+ ['fcSttbfMcr', 208],
66
+ ['lcbSttbfMcr', 212],
67
+ ['fcPrDrvr', 216],
68
+ ['lcbPrDrvr', 220],
69
+ ['fcPrEnvPort', 224],
70
+ ['lcbPrEnvPort', 228],
71
+ ['fcPrEnvLand', 232],
72
+ ['lcbPrEnvLand', 236],
73
+ ['fcWss', 240],
74
+ ['lcbWss', 244],
75
+ ['fcDop', 248],
76
+ ['lcbDop', 252],
77
+ ['fcSttbfAssoc', 256],
78
+ ['lcbSttbfAssoc', 260],
79
+ ['fcClx', 264],
80
+ ['lcbClx', 268],
81
+ ['fcPlcfPgdFtn', 272],
82
+ ['lcbPlcfPgdFtn', 276],
83
+ ['fcAutosaveSource', 280],
84
+ ['lcbAutosaveSource', 284],
85
+ ['fcGrpXstAtnOwners', 288],
86
+ ['lcbGrpXstAtnOwners', 292],
87
+ ['fcSttbfAtnBkmk', 296],
88
+ ['lcbSttbfAtnBkmk', 300],
89
+ ['fcUnused2', 304],
90
+ ['lcbUnused2', 308],
91
+ ['fcUnused3', 312],
92
+ ['lcbUnused3', 316],
93
+ ['fcPlcSpaMom', 320],
94
+ ['lcbPlcSpaMom', 324],
95
+ ['fcPlcSpaHdr', 328],
96
+ ['lcbPlcSpaHdr', 332],
97
+ ['fcPlcfAtnBkf', 336],
98
+ ['lcbPlcfAtnBkf', 340],
99
+ ['fcPlcfAtnBkl', 344],
100
+ ['lcbPlcfAtnBkl', 348],
101
+ ['fcPms', 352],
102
+ ['lcbPms', 356],
103
+ ['fcFormFldSttbs', 360],
104
+ ['lcbFormFldSttbs', 364],
105
+ ['fcPlcfendRef', 368],
106
+ ['lcbPlcfendRef', 372],
107
+ ['fcPlcfendTxt', 376],
108
+ ['lcbPlcfendTxt', 380],
109
+ ['fcPlcfFldEdn', 384],
110
+ ['lcbPlcfFldEdn', 388],
111
+ ['fcUnused4', 392],
112
+ ['lcbUnused4', 396],
113
+ ['fcDggInfo', 400],
114
+ ['lcbDggInfo', 404],
115
+ ['fcSttbfRMark', 408],
116
+ ['lcbSttbfRMark', 412],
117
+ ['fcSttbfCaption', 416],
118
+ ['lcbSttbfCaption', 420],
119
+ ['fcSttbfAutoCaption', 424],
120
+ ['lcbSttbfAutoCaption', 428],
121
+ ['fcPlcfWkb', 432],
122
+ ['lcbPlcfWkb', 436],
123
+ ['fcPlcfSpl', 440],
124
+ ['lcbPlcfSpl', 444],
125
+ ['fcPlcftxbxTxt', 448],
126
+ ['lcbPlcftxbxTxt', 452],
127
+ ['fcPlcfFldTxbx', 456],
128
+ ['lcbPlcfFldTxbx', 460],
129
+ ['fcPlcfHdrtxbxTxt', 464],
130
+ ['lcbPlcfHdrtxbxTxt', 468],
131
+ ['fcPlcffldHdrTxbx', 472],
132
+ ['lcbPlcffldHdrTxbx', 476],
133
+ ['fcStwUser', 480],
134
+ ['lcbStwUser', 484],
135
+ ['fcSttbTtmbd', 488],
136
+ ['lcbSttbTtmbd', 492],
137
+ ['fcCookieData', 496],
138
+ ['lcbCookieData', 500],
139
+ ['fcPgdMotherDocPre10', 504],
140
+ ['lcbPgdMotherDocPre10', 508],
141
+ ['fcBkdMotherDocPre10', 512],
142
+ ['lcbBkdMotherDocPre10', 516],
143
+ ['fcPgdFtnDocPre10', 520],
144
+ ['lcbPgdFtnDocPre10', 524],
145
+ ['fcBkdFtnDocPre10', 528],
146
+ ['lcbBkdFtnDocPre10', 532],
147
+ ['fcPgdEdnDocPre10', 536],
148
+ ['lcbPgdEdnDocPre10', 540],
149
+ ['fcBkdEdnDocPre10', 544],
150
+ ['lcbBkdEdnDocPre10', 548],
151
+ ['fcSttbfIntlFld', 552],
152
+ ['lcbSttbfIntlFld', 556],
153
+ ['fcRouteSlip', 560],
154
+ ['lcbRouteSlip', 564],
155
+ ['fcSttbSavedBy', 568],
156
+ ['lcbSttbSavedBy', 572],
157
+ ['fcSttbFnm', 576],
158
+ ['lcbSttbFnm', 580],
159
+ ['fcPlfLst', 584],
160
+ ['lcbPlfLst', 588],
161
+ ['fcPlfLfo', 592],
162
+ ['lcbPlfLfo', 596],
163
+ ['fcPlcfTxbxBkd', 600],
164
+ ['lcbPlcfTxbxBkd', 604],
165
+ ['fcPlcfTxbxHdrBkd', 608],
166
+ ['lcbPlcfTxbxHdrBkd', 612],
167
+ ['fcDocUndoWord9', 616],
168
+ ['lcbDocUndoWord9', 620],
169
+ ['fcRgbUse', 624],
170
+ ['lcbRgbUse', 628],
171
+ ['fcUsp', 632],
172
+ ['lcbUsp', 636],
173
+ ['fcUskf', 640],
174
+ ['lcbUskf', 644],
175
+ ['fcPlcupcRgbUse', 648],
176
+ ['lcbPlcupcRgbUse', 652],
177
+ ['fcPlcupcUsp', 656],
178
+ ['lcbPlcupcUsp', 660],
179
+ ['fcSttbGlsyStyle', 664],
180
+ ['lcbSttbGlsyStyle', 668],
181
+ ['fcPlgosl', 672],
182
+ ['lcbPlgosl', 676],
183
+ ['fcPlcocx', 680],
184
+ ['lcbPlcocx', 684],
185
+ ['fcPlcfBteLvc', 688],
186
+ ['lcbPlcfBteLvc', 692],
187
+ ['dwLowDateTime', 696],
188
+ ['dwHighDateTime', 700],
189
+ ['fcPlcfLvcPre10', 704],
190
+ ['lcbPlcfLvcPre10', 708],
191
+ ['fcPlcfAsumy', 712],
192
+ ['lcbPlcfAsumy', 716],
193
+ ['fcPlcfGram', 720],
194
+ ['lcbPlcfGram', 724],
195
+ ['fcSttbListNames', 728],
196
+ ['lcbSttbListNames', 732],
197
+ ['fcSttbfUssr', 736],
198
+ ['lcbSttbfUssr', 740],
199
+ ];
200
+ class FIBParser {
201
+ data;
202
+ view;
203
+ constructor(wordDocumentStream) {
204
+ this.data = wordDocumentStream;
205
+ this.view = new DataView(this.data.buffer, this.data.byteOffset, this.data.byteLength);
206
+ }
207
+ parse() {
208
+ this.validateFIB();
209
+ const base = this.parseFibBase();
210
+ const rgW97 = this.parseFibRgW97();
211
+ const rgLw97 = this.parseFibRgLw97();
212
+ const rgFcLcb = this.parseFibRgFcLcb(base.nFib);
213
+ return {
214
+ base,
215
+ rgW97,
216
+ rgLw97,
217
+ rgFcLcb,
218
+ tableStreamName: base.fWhichTblStm ? '1Table' : '0Table',
219
+ };
220
+ }
221
+ validateFIB() {
222
+ if (this.data.length < Constants_1.FIB_CONSTANTS.MIN_SIZE) {
223
+ throw new FIBParseError(`WordDocument stream too small: ${this.data.length} bytes`);
224
+ }
225
+ const wIdent = this.view.getUint16(0, true);
226
+ if (wIdent !== Constants_1.FIB_CONSTANTS.SIGNATURE) {
227
+ throw new FIBParseError(`Invalid FIB signature: 0x${wIdent.toString(16).toUpperCase()} (expected 0x${Constants_1.FIB_CONSTANTS.SIGNATURE.toString(16).toUpperCase()})`);
228
+ }
229
+ }
230
+ parseFibBase() {
231
+ const wIdent = this.view.getUint16(0, true);
232
+ const nFib = this.view.getUint16(2, true);
233
+ const lid = this.view.getUint16(6, true);
234
+ const pnNext = this.view.getUint16(8, true);
235
+ const flags = this.view.getUint16(10, true);
236
+ const nFibBack = this.view.getUint16(12, true);
237
+ const fWhichTblStm = (flags & Constants_1.FIB_CONSTANTS.TABLE_STREAM_BIT) !== 0;
238
+ return {
239
+ wIdent,
240
+ nFib,
241
+ lid,
242
+ pnNext,
243
+ flags,
244
+ nFibBack,
245
+ fWhichTblStm,
246
+ };
247
+ }
248
+ parseFibRgW97() {
249
+ const offset = 32;
250
+ return {
251
+ reserved1: this.view.getUint16(offset, true),
252
+ reserved2: this.view.getUint16(offset + 2, true),
253
+ reserved3: this.view.getUint16(offset + 4, true),
254
+ reserved4: this.view.getUint16(offset + 6, true),
255
+ reserved5: this.view.getUint16(offset + 8, true),
256
+ reserved6: this.view.getUint16(offset + 10, true),
257
+ reserved7: this.view.getUint16(offset + 12, true),
258
+ reserved8: this.view.getUint16(offset + 14, true),
259
+ reserved9: this.view.getUint16(offset + 16, true),
260
+ reserved10: this.view.getUint16(offset + 18, true),
261
+ reserved11: this.view.getUint16(offset + 20, true),
262
+ reserved12: this.view.getUint16(offset + 22, true),
263
+ reserved13: this.view.getUint16(offset + 24, true),
264
+ lidFE: this.view.getUint16(offset + 26, true),
265
+ };
266
+ }
267
+ parseFibRgLw97() {
268
+ const offset = 60;
269
+ return {
270
+ cbMac: this.view.getUint32(offset, true),
271
+ reserved1: this.view.getUint32(offset + 4, true),
272
+ reserved2: this.view.getUint32(offset + 8, true),
273
+ ccpText: this.view.getUint32(offset + 12, true),
274
+ ccpFtn: this.view.getUint32(offset + 16, true),
275
+ ccpHdd: this.view.getUint32(offset + 20, true),
276
+ reserved3: this.view.getUint32(offset + 24, true),
277
+ ccpAtn: this.view.getUint32(offset + 28, true),
278
+ ccpEdn: this.view.getUint32(offset + 32, true),
279
+ ccpTxbx: this.view.getUint32(offset + 36, true),
280
+ ccpHdrTxbx: this.view.getUint32(offset + 40, true),
281
+ reserved4: this.view.getUint32(offset + 44, true),
282
+ reserved5: this.view.getUint32(offset + 48, true),
283
+ reserved6: this.view.getUint32(offset + 52, true),
284
+ reserved7: this.view.getUint32(offset + 56, true),
285
+ reserved8: this.view.getUint32(offset + 60, true),
286
+ reserved9: this.view.getUint32(offset + 64, true),
287
+ reserved10: this.view.getUint32(offset + 68, true),
288
+ reserved11: this.view.getUint32(offset + 72, true),
289
+ reserved12: this.view.getUint32(offset + 76, true),
290
+ reserved13: this.view.getUint32(offset + 80, true),
291
+ reserved14: this.view.getUint32(offset + 84, true),
292
+ };
293
+ }
294
+ parseFibRgFcLcb(nFib) {
295
+ const baseOffset = 154;
296
+ let numPairs;
297
+ if (nFib >= Constants_1.FIB_VERSIONS.WORD_2007) {
298
+ numPairs = 274;
299
+ }
300
+ else if (nFib >= Constants_1.FIB_VERSIONS.WORD_2003) {
301
+ numPairs = 164;
302
+ }
303
+ else if (nFib >= Constants_1.FIB_VERSIONS.WORD_2002) {
304
+ numPairs = 136;
305
+ }
306
+ else if (nFib >= Constants_1.FIB_VERSIONS.WORD_2000) {
307
+ numPairs = 108;
308
+ }
309
+ else {
310
+ numPairs = 93;
311
+ }
312
+ const result = {};
313
+ for (const [name, fieldOffset] of FIB_FCRLCB_FIELDS) {
314
+ if (fieldOffset + 4 <= numPairs * 8) {
315
+ const absoluteOffset = baseOffset + fieldOffset;
316
+ if (absoluteOffset + 4 <= this.data.length) {
317
+ result[name] = this.view.getUint32(absoluteOffset, true);
318
+ }
319
+ }
320
+ }
321
+ return result;
322
+ }
323
+ static getWordVersion(nFib) {
324
+ if (nFib >= Constants_1.FIB_VERSIONS.WORD_2007)
325
+ return 'Word 2007+';
326
+ if (nFib >= Constants_1.FIB_VERSIONS.WORD_2003)
327
+ return 'Word 2003';
328
+ if (nFib >= Constants_1.FIB_VERSIONS.WORD_2002)
329
+ return 'Word 2002';
330
+ if (nFib >= Constants_1.FIB_VERSIONS.WORD_2000)
331
+ return 'Word 2000';
332
+ if (nFib >= Constants_1.FIB_VERSIONS.WORD_97)
333
+ return 'Word 97';
334
+ return 'Unknown';
335
+ }
336
+ static parse(wordDocumentStream) {
337
+ const parser = new FIBParser(wordDocumentStream);
338
+ return parser.parse();
339
+ }
340
+ }
341
+ exports.FIBParser = FIBParser;
342
+ //# sourceMappingURL=FIB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FIB.js","sourceRoot":"","sources":["../../../src/ms-doc/fib/FIB.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { FieldDefinition } from '../types/DocTypes';
2
+ export declare class FieldParseError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export interface ParsedField {
6
+ type: string;
7
+ normalizedType: string;
8
+ instruction: string;
9
+ result: string;
10
+ cpStart: number;
11
+ cpSeparator?: number;
12
+ cpEnd: number;
13
+ switches: string[];
14
+ isNested: boolean;
15
+ parentIndex?: number;
16
+ }
17
+ export declare class FieldParser {
18
+ private text;
19
+ private fields;
20
+ constructor(documentText: string);
21
+ parse(): ParsedField[];
22
+ private parseFieldInstruction;
23
+ private parseCompleteField;
24
+ private tokenizeInstruction;
25
+ getFieldsByType(type: string): ParsedField[];
26
+ static hasFields(text: string): boolean;
27
+ static extractFieldResults(text: string): string;
28
+ static toFieldDefinition(field: ParsedField): FieldDefinition;
29
+ static parse(text: string): ParsedField[];
30
+ }
31
+ //# sourceMappingURL=FieldParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldParser.d.ts","sourceRoot":"","sources":["../../../src/ms-doc/fields/FieldParser.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AA0ED,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;IAEvB,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,QAAQ,EAAE,OAAO,CAAC;IAElB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,YAAY,EAAE,MAAM;IAOhC,KAAK,IAAI,WAAW,EAAE;IAmDtB,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,kBAAkB;IAwD1B,OAAO,CAAC,mBAAmB;IAoC3B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAQ5C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQvC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2ChD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe;IAa7D,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;CAI1C"}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldParser = exports.FieldParseError = void 0;
4
+ class FieldParseError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'FieldParseError';
8
+ }
9
+ }
10
+ exports.FieldParseError = FieldParseError;
11
+ const FIELD_CHARS = {
12
+ BEGIN: 0x13,
13
+ SEPARATOR: 0x14,
14
+ END: 0x15,
15
+ };
16
+ const FIELD_TYPES = {
17
+ PAGE: 'page',
18
+ NUMPAGES: 'numPages',
19
+ DATE: 'date',
20
+ TIME: 'time',
21
+ AUTHOR: 'author',
22
+ TITLE: 'title',
23
+ SUBJECT: 'subject',
24
+ KEYWORDS: 'keywords',
25
+ FILENAME: 'filename',
26
+ CREATEDATE: 'createDate',
27
+ SAVEDATE: 'saveDate',
28
+ PRINTDATE: 'printDate',
29
+ TOC: 'toc',
30
+ PAGEREF: 'pageRef',
31
+ REF: 'ref',
32
+ HYPERLINK: 'hyperlink',
33
+ MERGEFIELD: 'mergeField',
34
+ IF: 'if',
35
+ SEQ: 'seq',
36
+ SET: 'set',
37
+ ASK: 'ask',
38
+ FILLIN: 'fillIn',
39
+ INCLUDETEXT: 'includeText',
40
+ INCLUDEPICTURE: 'includePicture',
41
+ SYMBOL: 'symbol',
42
+ EMBED: 'embed',
43
+ LINK: 'link',
44
+ DOCPROPERTY: 'docProperty',
45
+ DOCVARIABLE: 'docVariable',
46
+ STYLEREF: 'styleRef',
47
+ LISTNUM: 'listNum',
48
+ AUTONUM: 'autoNum',
49
+ AUTONUMLGL: 'autoNumLgl',
50
+ AUTONUMOUT: 'autoNumOut',
51
+ QUOTE: 'quote',
52
+ EQ: 'equation',
53
+ ADVANCE: 'advance',
54
+ TC: 'tocEntry',
55
+ XE: 'indexEntry',
56
+ INDEX: 'index',
57
+ RD: 'referencedDocument',
58
+ TA: 'tableOfAuthoritiesEntry',
59
+ TOA: 'tableOfAuthorities',
60
+ COMMENTS: 'comments',
61
+ LASTSAVEDBY: 'lastSavedBy',
62
+ EDITTIME: 'editTime',
63
+ NUMWORDS: 'numWords',
64
+ NUMCHARS: 'numChars',
65
+ REVNUM: 'revNum',
66
+ SECTION: 'section',
67
+ SECTIONPAGES: 'sectionPages',
68
+ };
69
+ class FieldParser {
70
+ text;
71
+ fields = [];
72
+ constructor(documentText) {
73
+ this.text = documentText;
74
+ }
75
+ parse() {
76
+ this.fields = [];
77
+ const fieldStack = [];
78
+ for (let i = 0; i < this.text.length; i++) {
79
+ const charCode = this.text.charCodeAt(i);
80
+ switch (charCode) {
81
+ case FIELD_CHARS.BEGIN:
82
+ fieldStack.push({ cpStart: i, level: fieldStack.length });
83
+ break;
84
+ case FIELD_CHARS.SEPARATOR:
85
+ if (fieldStack.length > 0) {
86
+ const current = fieldStack[fieldStack.length - 1];
87
+ if (current) {
88
+ const partialField = this.parseFieldInstruction(current.cpStart, i);
89
+ if (partialField) {
90
+ partialField.cpSeparator = i;
91
+ }
92
+ }
93
+ }
94
+ break;
95
+ case FIELD_CHARS.END:
96
+ if (fieldStack.length > 0) {
97
+ const current = fieldStack.pop();
98
+ if (current) {
99
+ const field = this.parseCompleteField(current.cpStart, i, current.level > 0);
100
+ if (field) {
101
+ if (current.level > 0 && this.fields.length > 0) {
102
+ field.parentIndex = this.fields.length - 1;
103
+ }
104
+ this.fields.push(field);
105
+ }
106
+ }
107
+ }
108
+ break;
109
+ }
110
+ }
111
+ return this.fields;
112
+ }
113
+ parseFieldInstruction(cpStart, cpEnd) {
114
+ const instructionRaw = this.text.substring(cpStart + 1, cpEnd).trim();
115
+ if (!instructionRaw) {
116
+ return null;
117
+ }
118
+ const parts = this.tokenizeInstruction(instructionRaw);
119
+ if (parts.length === 0) {
120
+ return null;
121
+ }
122
+ const fieldType = parts[0]?.toUpperCase() ?? '';
123
+ const normalizedType = FIELD_TYPES[fieldType] ?? fieldType.toLowerCase();
124
+ const switches = [];
125
+ for (let i = 1; i < parts.length; i++) {
126
+ const part = parts[i];
127
+ if (part?.startsWith('\\')) {
128
+ switches.push(part);
129
+ }
130
+ }
131
+ return {
132
+ type: fieldType,
133
+ normalizedType,
134
+ instruction: instructionRaw,
135
+ switches,
136
+ cpStart,
137
+ };
138
+ }
139
+ parseCompleteField(cpStart, cpEnd, isNested) {
140
+ let cpSeparator;
141
+ for (let i = cpStart + 1; i < cpEnd; i++) {
142
+ if (this.text.charCodeAt(i) === FIELD_CHARS.SEPARATOR) {
143
+ cpSeparator = i;
144
+ break;
145
+ }
146
+ }
147
+ const instructionEnd = cpSeparator ?? cpEnd;
148
+ const instructionRaw = this.text.substring(cpStart + 1, instructionEnd).trim();
149
+ let result = '';
150
+ if (cpSeparator !== undefined) {
151
+ result = this.text.substring(cpSeparator + 1, cpEnd).trim();
152
+ result = result.replace(/[\x13\x14\x15]/g, '');
153
+ }
154
+ const parts = this.tokenizeInstruction(instructionRaw);
155
+ if (parts.length === 0) {
156
+ return null;
157
+ }
158
+ const fieldType = parts[0]?.toUpperCase() ?? '';
159
+ const normalizedType = FIELD_TYPES[fieldType] ?? fieldType.toLowerCase();
160
+ const switches = [];
161
+ for (let i = 1; i < parts.length; i++) {
162
+ const part = parts[i];
163
+ if (part?.startsWith('\\')) {
164
+ switches.push(part);
165
+ }
166
+ }
167
+ return {
168
+ type: fieldType,
169
+ normalizedType,
170
+ instruction: instructionRaw,
171
+ result,
172
+ cpStart,
173
+ cpSeparator,
174
+ cpEnd,
175
+ switches,
176
+ isNested,
177
+ };
178
+ }
179
+ tokenizeInstruction(instruction) {
180
+ const tokens = [];
181
+ let current = '';
182
+ let inQuotes = false;
183
+ let quoteChar = '';
184
+ for (let i = 0; i < instruction.length; i++) {
185
+ const char = instruction[i];
186
+ if ((char === '"' || char === "'") && !inQuotes) {
187
+ inQuotes = true;
188
+ quoteChar = char;
189
+ current += char;
190
+ }
191
+ else if (char === quoteChar && inQuotes) {
192
+ inQuotes = false;
193
+ current += char;
194
+ }
195
+ else if (char === ' ' && !inQuotes) {
196
+ if (current) {
197
+ tokens.push(current);
198
+ current = '';
199
+ }
200
+ }
201
+ else {
202
+ current += char;
203
+ }
204
+ }
205
+ if (current) {
206
+ tokens.push(current);
207
+ }
208
+ return tokens;
209
+ }
210
+ getFieldsByType(type) {
211
+ const upperType = type.toUpperCase();
212
+ return this.fields.filter((f) => f.type === upperType);
213
+ }
214
+ static hasFields(text) {
215
+ const beginChar = String.fromCharCode(FIELD_CHARS.BEGIN);
216
+ return text.includes(beginChar);
217
+ }
218
+ static extractFieldResults(text) {
219
+ let result = '';
220
+ let inInstruction = false;
221
+ let depth = 0;
222
+ for (let i = 0; i < text.length; i++) {
223
+ const charCode = text.charCodeAt(i);
224
+ switch (charCode) {
225
+ case FIELD_CHARS.BEGIN:
226
+ depth++;
227
+ inInstruction = true;
228
+ break;
229
+ case FIELD_CHARS.SEPARATOR:
230
+ if (depth > 0) {
231
+ inInstruction = false;
232
+ }
233
+ break;
234
+ case FIELD_CHARS.END:
235
+ depth--;
236
+ if (depth === 0) {
237
+ inInstruction = false;
238
+ }
239
+ break;
240
+ default:
241
+ if (!inInstruction && depth === 0) {
242
+ result += text[i];
243
+ }
244
+ else if (!inInstruction && depth > 0) {
245
+ result += text[i];
246
+ }
247
+ }
248
+ }
249
+ return result;
250
+ }
251
+ static toFieldDefinition(field) {
252
+ return {
253
+ type: field.normalizedType,
254
+ instruction: field.instruction,
255
+ result: field.result,
256
+ cpStart: field.cpStart,
257
+ cpEnd: field.cpEnd,
258
+ };
259
+ }
260
+ static parse(text) {
261
+ const parser = new FieldParser(text);
262
+ return parser.parse();
263
+ }
264
+ }
265
+ exports.FieldParser = FieldParser;
266
+ //# sourceMappingURL=FieldParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldParser.js","sourceRoot":"","sources":["../../../src/ms-doc/fields/FieldParser.ts"],"names":[],"mappings":"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"}