@usejunior/docx-core 0.19.1 → 0.21.2
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 +12 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/conformance-adapter.d.ts.map +1 -1
- package/dist/cli/conformance-adapter.js +0 -27
- package/dist/cli/conformance-adapter.js.map +1 -1
- package/dist/core-types.d.ts +1 -139
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +1 -3
- package/dist/core-types.js.map +1 -1
- package/dist/generation/compile.d.ts.map +1 -1
- package/dist/generation/compile.js +1 -3
- package/dist/generation/compile.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/integration/generation-probes.d.ts +36 -2
- package/dist/integration/generation-probes.d.ts.map +1 -1
- package/dist/integration/generation-probes.js +137 -15
- package/dist/integration/generation-probes.js.map +1 -1
- package/dist/integration/libreoffice-oracle.d.ts +3 -1
- package/dist/integration/libreoffice-oracle.d.ts.map +1 -1
- package/dist/integration/libreoffice-oracle.js +10 -4
- package/dist/integration/libreoffice-oracle.js.map +1 -1
- package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
- package/dist/integration/synthetic-docx-fixture.js +8 -0
- package/dist/integration/synthetic-docx-fixture.js.map +1 -1
- package/dist/primitives/accept_ai_edits.js +14 -2
- package/dist/primitives/accept_ai_edits.js.map +1 -1
- package/dist/primitives/accept_changes.d.ts +6 -0
- package/dist/primitives/accept_changes.d.ts.map +1 -1
- package/dist/primitives/accept_changes.js +236 -62
- package/dist/primitives/accept_changes.js.map +1 -1
- package/dist/primitives/bookmarks.d.ts +8 -2
- package/dist/primitives/bookmarks.d.ts.map +1 -1
- package/dist/primitives/bookmarks.js +31 -7
- package/dist/primitives/bookmarks.js.map +1 -1
- package/dist/primitives/comments.d.ts +101 -5
- package/dist/primitives/comments.d.ts.map +1 -1
- package/dist/primitives/comments.js +356 -156
- package/dist/primitives/comments.js.map +1 -1
- package/dist/primitives/conformance.d.ts +42 -0
- package/dist/primitives/conformance.d.ts.map +1 -0
- package/dist/primitives/conformance.js +61 -0
- package/dist/primitives/conformance.js.map +1 -0
- package/dist/primitives/document.d.ts +145 -2
- package/dist/primitives/document.d.ts.map +1 -1
- package/dist/primitives/document.js +505 -27
- package/dist/primitives/document.js.map +1 -1
- package/dist/primitives/document_view-headings.d.ts +3 -1
- package/dist/primitives/document_view-headings.d.ts.map +1 -1
- package/dist/primitives/document_view-headings.js +5 -5
- package/dist/primitives/document_view-headings.js.map +1 -1
- package/dist/primitives/document_view.d.ts +2 -0
- package/dist/primitives/document_view.d.ts.map +1 -1
- package/dist/primitives/document_view.js +18 -4
- package/dist/primitives/document_view.js.map +1 -1
- package/dist/primitives/errors.d.ts +3 -2
- package/dist/primitives/errors.d.ts.map +1 -1
- package/dist/primitives/errors.js +3 -1
- package/dist/primitives/errors.js.map +1 -1
- package/dist/primitives/extract_revisions.d.ts +23 -6
- package/dist/primitives/extract_revisions.d.ts.map +1 -1
- package/dist/primitives/extract_revisions.js +208 -38
- package/dist/primitives/extract_revisions.js.map +1 -1
- package/dist/primitives/field_evaluation.d.ts +70 -0
- package/dist/primitives/field_evaluation.d.ts.map +1 -0
- package/dist/primitives/field_evaluation.js +462 -0
- package/dist/primitives/field_evaluation.js.map +1 -0
- package/dist/primitives/footnotes.d.ts +53 -3
- package/dist/primitives/footnotes.d.ts.map +1 -1
- package/dist/primitives/footnotes.js +228 -83
- package/dist/primitives/footnotes.js.map +1 -1
- package/dist/primitives/index.d.ts +12 -1
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +12 -1
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/merge_runs.d.ts +3 -1
- package/dist/primitives/merge_runs.d.ts.map +1 -1
- package/dist/primitives/merge_runs.js +12 -2
- package/dist/primitives/merge_runs.js.map +1 -1
- package/dist/primitives/namespaces.d.ts +10 -2
- package/dist/primitives/namespaces.d.ts.map +1 -1
- package/dist/primitives/namespaces.js +11 -2
- package/dist/primitives/namespaces.js.map +1 -1
- package/dist/primitives/note_conversion.d.ts +11 -0
- package/dist/primitives/note_conversion.d.ts.map +1 -0
- package/dist/primitives/note_conversion.js +12 -0
- package/dist/primitives/note_conversion.js.map +1 -0
- package/dist/primitives/paragraph-index.d.ts +31 -0
- package/dist/primitives/paragraph-index.d.ts.map +1 -0
- package/dist/primitives/paragraph-index.js +140 -0
- package/dist/primitives/paragraph-index.js.map +1 -0
- package/dist/primitives/paragraph_merge_formatting.d.ts +24 -0
- package/dist/primitives/paragraph_merge_formatting.d.ts.map +1 -0
- package/dist/primitives/paragraph_merge_formatting.js +86 -0
- package/dist/primitives/paragraph_merge_formatting.js.map +1 -0
- package/dist/primitives/paragraph_numbering.d.ts +40 -0
- package/dist/primitives/paragraph_numbering.d.ts.map +1 -0
- package/dist/primitives/paragraph_numbering.js +198 -0
- package/dist/primitives/paragraph_numbering.js.map +1 -0
- package/dist/primitives/paragraph_structure.d.ts +19 -0
- package/dist/primitives/paragraph_structure.d.ts.map +1 -0
- package/dist/primitives/paragraph_structure.js +66 -0
- package/dist/primitives/paragraph_structure.js.map +1 -0
- package/dist/primitives/reject_changes.d.ts +6 -0
- package/dist/primitives/reject_changes.d.ts.map +1 -1
- package/dist/primitives/reject_changes.js +278 -68
- package/dist/primitives/reject_changes.js.map +1 -1
- package/dist/primitives/relationships.d.ts +22 -0
- package/dist/primitives/relationships.d.ts.map +1 -1
- package/dist/primitives/relationships.js +87 -0
- package/dist/primitives/relationships.js.map +1 -1
- package/dist/primitives/revision-parts.d.ts +15 -0
- package/dist/primitives/revision-parts.d.ts.map +1 -1
- package/dist/primitives/revision-parts.js +33 -1
- package/dist/primitives/revision-parts.js.map +1 -1
- package/dist/primitives/sectPrAudit.d.ts.map +1 -1
- package/dist/primitives/sectPrAudit.js +10 -1
- package/dist/primitives/sectPrAudit.js.map +1 -1
- package/dist/primitives/sections.d.ts +135 -0
- package/dist/primitives/sections.d.ts.map +1 -0
- package/dist/primitives/sections.js +644 -0
- package/dist/primitives/sections.js.map +1 -0
- package/dist/primitives/styles.d.ts +61 -0
- package/dist/primitives/styles.d.ts.map +1 -1
- package/dist/primitives/styles.js +207 -25
- package/dist/primitives/styles.js.map +1 -1
- package/dist/primitives/symbol_run_content.d.ts +42 -0
- package/dist/primitives/symbol_run_content.d.ts.map +1 -0
- package/dist/primitives/symbol_run_content.js +79 -0
- package/dist/primitives/symbol_run_content.js.map +1 -0
- package/dist/primitives/table_cells.d.ts +49 -0
- package/dist/primitives/table_cells.d.ts.map +1 -0
- package/dist/primitives/table_cells.js +149 -0
- package/dist/primitives/table_cells.js.map +1 -0
- package/dist/primitives/table_columns.d.ts +50 -0
- package/dist/primitives/table_columns.d.ts.map +1 -0
- package/dist/primitives/table_columns.js +138 -0
- package/dist/primitives/table_columns.js.map +1 -0
- package/dist/primitives/table_edit_common.d.ts +39 -0
- package/dist/primitives/table_edit_common.d.ts.map +1 -0
- package/dist/primitives/table_edit_common.js +163 -0
- package/dist/primitives/table_edit_common.js.map +1 -0
- package/dist/primitives/table_occupancy.d.ts +39 -0
- package/dist/primitives/table_occupancy.d.ts.map +1 -0
- package/dist/primitives/table_occupancy.js +145 -0
- package/dist/primitives/table_occupancy.js.map +1 -0
- package/dist/primitives/table_rows.d.ts +56 -0
- package/dist/primitives/table_rows.d.ts.map +1 -0
- package/dist/primitives/table_rows.js +390 -0
- package/dist/primitives/table_rows.js.map +1 -0
- package/dist/primitives/text.d.ts +69 -1
- package/dist/primitives/text.d.ts.map +1 -1
- package/dist/primitives/text.js +592 -102
- package/dist/primitives/text.js.map +1 -1
- package/dist/primitives/track-changes-emitter.d.ts +23 -0
- package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
- package/dist/primitives/track-changes-emitter.js +64 -1
- package/dist/primitives/track-changes-emitter.js.map +1 -1
- package/dist/primitives/validate_document.d.ts.map +1 -1
- package/dist/primitives/validate_document.js +22 -1
- package/dist/primitives/validate_document.js.map +1 -1
- package/dist/primitives/zip.d.ts +22 -1
- package/dist/primitives/zip.d.ts.map +1 -1
- package/dist/primitives/zip.js +47 -8
- package/dist/primitives/zip.js.map +1 -1
- package/dist/shared/docx/DocxArchive.d.ts +6 -2
- package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
- package/dist/shared/docx/DocxArchive.js +17 -4
- package/dist/shared/docx/DocxArchive.js.map +1 -1
- package/dist/shared/field-semantics.d.ts +26 -0
- package/dist/shared/field-semantics.d.ts.map +1 -0
- package/dist/shared/field-semantics.js +232 -0
- package/dist/shared/field-semantics.js.map +1 -0
- package/dist/shared/field-structure.d.ts +10 -1
- package/dist/shared/field-structure.d.ts.map +1 -1
- package/dist/shared/field-structure.js +31 -12
- package/dist/shared/field-structure.js.map +1 -1
- package/package.json +4 -5
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type WordFieldKind = 'PAGE' | 'NUMPAGES' | 'REF' | 'PAGEREF' | 'TOC' | 'SEQ' | 'UNKNOWN';
|
|
2
|
+
export type FieldEvaluationClass = 'deterministic-ref' | 'layout-dependent' | 'recognized-unsupported' | 'unknown';
|
|
3
|
+
export interface FieldInstructionClassification {
|
|
4
|
+
kind: WordFieldKind;
|
|
5
|
+
evaluationClass: FieldEvaluationClass;
|
|
6
|
+
normalizedInstruction: string;
|
|
7
|
+
target?: string;
|
|
8
|
+
switches: string[];
|
|
9
|
+
unsupportedSwitches: string[];
|
|
10
|
+
preservationSupported: boolean;
|
|
11
|
+
reason?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Classify the Word field instruction subset understood by Safe Docx.
|
|
15
|
+
*
|
|
16
|
+
* This parser is intentionally switch-aware: recognizing the leading keyword
|
|
17
|
+
* alone is not enough to claim that a field can be evaluated safely.
|
|
18
|
+
*
|
|
19
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.51
|
|
20
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.45
|
|
21
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.44
|
|
22
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.42
|
|
23
|
+
* @see https://github.com/UseJunior/safe-docx/issues/762
|
|
24
|
+
*/
|
|
25
|
+
export declare function classifyFieldInstruction(instructionText: string): FieldInstructionClassification;
|
|
26
|
+
//# sourceMappingURL=field-semantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-semantics.d.ts","sourceRoot":"","sources":["../../src/shared/field-semantics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,KAAK,GACL,SAAS,GACT,KAAK,GACL,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,kBAAkB,GAClB,wBAAwB,GACxB,SAAS,CAAC;AAEd,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,aAAa,CAAC;IACpB,eAAe,EAAE,oBAAoB,CAAC;IACtC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6DD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,GACtB,8BAA8B,CAiLhC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
function tokenizeFieldInstruction(instructionText) {
|
|
2
|
+
const tokens = [];
|
|
3
|
+
let value = '';
|
|
4
|
+
let quoted = false;
|
|
5
|
+
let tokenQuoted = false;
|
|
6
|
+
let quoteClosed = false;
|
|
7
|
+
const push = () => {
|
|
8
|
+
if (value.length > 0 || tokenQuoted) {
|
|
9
|
+
tokens.push({ value, quoted: tokenQuoted });
|
|
10
|
+
value = '';
|
|
11
|
+
tokenQuoted = false;
|
|
12
|
+
quoteClosed = false;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
for (let index = 0; index < instructionText.length; index += 1) {
|
|
16
|
+
const character = instructionText[index];
|
|
17
|
+
if (character === '"') {
|
|
18
|
+
if (!quoted && value.length > 0)
|
|
19
|
+
return null;
|
|
20
|
+
quoted = !quoted;
|
|
21
|
+
tokenQuoted = true;
|
|
22
|
+
quoteClosed = !quoted;
|
|
23
|
+
}
|
|
24
|
+
else if (/\s/u.test(character) && !quoted) {
|
|
25
|
+
push();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
if (quoteClosed)
|
|
29
|
+
return null;
|
|
30
|
+
value += character;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (quoted)
|
|
34
|
+
return null;
|
|
35
|
+
push();
|
|
36
|
+
return tokens;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Render tokens back to a canonical instruction string.
|
|
40
|
+
*
|
|
41
|
+
* The escape must cover the escape character itself, not just the quote.
|
|
42
|
+
* Escaping only `"` lets `a\` and `a` normalize to strings that differ by a
|
|
43
|
+
* trailing backslash the reader cannot attribute, and comparison uses this
|
|
44
|
+
* rendering as a cache identity — an ambiguous identity silently merges two
|
|
45
|
+
* instructions that are not the same.
|
|
46
|
+
*/
|
|
47
|
+
function normalizeTokens(tokens) {
|
|
48
|
+
return tokens
|
|
49
|
+
.map(({ value, quoted }) => quoted || /\s/u.test(value)
|
|
50
|
+
? `"${value.replace(/[\\"]/gu, (character) => `\\${character}`)}"`
|
|
51
|
+
: value)
|
|
52
|
+
.join(' ');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Classify the Word field instruction subset understood by Safe Docx.
|
|
56
|
+
*
|
|
57
|
+
* This parser is intentionally switch-aware: recognizing the leading keyword
|
|
58
|
+
* alone is not enough to claim that a field can be evaluated safely.
|
|
59
|
+
*
|
|
60
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.51
|
|
61
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.45
|
|
62
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.44
|
|
63
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.16.5.42
|
|
64
|
+
* @see https://github.com/UseJunior/safe-docx/issues/762
|
|
65
|
+
*/
|
|
66
|
+
export function classifyFieldInstruction(instructionText) {
|
|
67
|
+
const tokens = tokenizeFieldInstruction(instructionText);
|
|
68
|
+
if (!tokens) {
|
|
69
|
+
return {
|
|
70
|
+
kind: 'UNKNOWN',
|
|
71
|
+
evaluationClass: 'unknown',
|
|
72
|
+
normalizedInstruction: instructionText.trim().replace(/\s+/gu, ' '),
|
|
73
|
+
switches: [],
|
|
74
|
+
unsupportedSwitches: [],
|
|
75
|
+
preservationSupported: false,
|
|
76
|
+
reason: 'malformed-field-instruction',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const keyword = tokens[0]?.value.toUpperCase() ?? '';
|
|
80
|
+
const canonicalTokens = tokens.map((token, index) => ({
|
|
81
|
+
...token,
|
|
82
|
+
value: index === 0
|
|
83
|
+
? keyword
|
|
84
|
+
: token.value.startsWith('\\')
|
|
85
|
+
? token.value.toLowerCase()
|
|
86
|
+
: tokens[index - 1]?.value.toLowerCase() === '\\*'
|
|
87
|
+
? token.value.toUpperCase()
|
|
88
|
+
: token.value,
|
|
89
|
+
}));
|
|
90
|
+
const normalizedInstruction = normalizeTokens(canonicalTokens);
|
|
91
|
+
const knownKinds = new Set([
|
|
92
|
+
'PAGE',
|
|
93
|
+
'NUMPAGES',
|
|
94
|
+
'REF',
|
|
95
|
+
'PAGEREF',
|
|
96
|
+
'TOC',
|
|
97
|
+
'SEQ',
|
|
98
|
+
]);
|
|
99
|
+
const kind = knownKinds.has(keyword)
|
|
100
|
+
? keyword
|
|
101
|
+
: 'UNKNOWN';
|
|
102
|
+
const switches = [];
|
|
103
|
+
const switchArguments = [];
|
|
104
|
+
const unsupportedSwitches = [];
|
|
105
|
+
const parseSwitchTail = (start, allowed, argumentSwitches) => {
|
|
106
|
+
for (let index = start; index < tokens.length; index += 1) {
|
|
107
|
+
const token = tokens[index].value.toLowerCase();
|
|
108
|
+
if (!/^\\.$/u.test(token))
|
|
109
|
+
return false;
|
|
110
|
+
const name = token.slice(1);
|
|
111
|
+
switches.push(token);
|
|
112
|
+
switchArguments.push(undefined);
|
|
113
|
+
if (!allowed.has(name)) {
|
|
114
|
+
unsupportedSwitches.push(token);
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (argumentSwitches.has(name)) {
|
|
118
|
+
const argument = tokens[index + 1]?.value;
|
|
119
|
+
if (!argument || argument.startsWith('\\'))
|
|
120
|
+
return false;
|
|
121
|
+
switchArguments[switchArguments.length - 1] = argument;
|
|
122
|
+
index += 1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
};
|
|
127
|
+
if (kind === 'PAGE' || kind === 'NUMPAGES') {
|
|
128
|
+
const valid = parseSwitchTail(1, new Set(['*', '#']), new Set(['*', '#']));
|
|
129
|
+
return {
|
|
130
|
+
kind,
|
|
131
|
+
evaluationClass: valid ? 'layout-dependent' : 'recognized-unsupported',
|
|
132
|
+
normalizedInstruction,
|
|
133
|
+
switches,
|
|
134
|
+
unsupportedSwitches,
|
|
135
|
+
preservationSupported: valid,
|
|
136
|
+
reason: valid ? undefined : 'unsupported-field-instruction',
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (kind === 'PAGEREF') {
|
|
140
|
+
const target = tokens[1]?.value;
|
|
141
|
+
const valid = Boolean(target && !target.startsWith('\\')) &&
|
|
142
|
+
parseSwitchTail(2, new Set(['h', 'p', '*']), new Set(['*']));
|
|
143
|
+
return {
|
|
144
|
+
kind,
|
|
145
|
+
evaluationClass: valid ? 'layout-dependent' : 'recognized-unsupported',
|
|
146
|
+
normalizedInstruction,
|
|
147
|
+
target,
|
|
148
|
+
switches,
|
|
149
|
+
unsupportedSwitches,
|
|
150
|
+
preservationSupported: valid,
|
|
151
|
+
reason: valid ? undefined : 'unsupported-field-instruction',
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (kind === 'TOC') {
|
|
155
|
+
return {
|
|
156
|
+
kind,
|
|
157
|
+
evaluationClass: 'layout-dependent',
|
|
158
|
+
normalizedInstruction,
|
|
159
|
+
switches: tokens
|
|
160
|
+
.slice(1)
|
|
161
|
+
.filter((token) => token.value.startsWith('\\'))
|
|
162
|
+
.map((token) => token.value.toLowerCase()),
|
|
163
|
+
unsupportedSwitches: [],
|
|
164
|
+
preservationSupported: true,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if (kind === 'REF') {
|
|
168
|
+
const target = tokens[1]?.value;
|
|
169
|
+
if (!target || target.startsWith('\\')) {
|
|
170
|
+
return {
|
|
171
|
+
kind,
|
|
172
|
+
evaluationClass: 'recognized-unsupported',
|
|
173
|
+
normalizedInstruction,
|
|
174
|
+
switches,
|
|
175
|
+
unsupportedSwitches,
|
|
176
|
+
preservationSupported: false,
|
|
177
|
+
reason: 'missing-ref-target',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
const valid = parseSwitchTail(2, new Set(['d', 'f', 'h', 'n', 'p', 'r', 't', 'w', '*']), new Set(['d', '*']));
|
|
181
|
+
if (!valid) {
|
|
182
|
+
return {
|
|
183
|
+
kind,
|
|
184
|
+
evaluationClass: 'recognized-unsupported',
|
|
185
|
+
normalizedInstruction,
|
|
186
|
+
target,
|
|
187
|
+
switches,
|
|
188
|
+
unsupportedSwitches,
|
|
189
|
+
preservationSupported: false,
|
|
190
|
+
reason: 'unsupported-ref-switch',
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const deterministic = switches.every((fieldSwitch, index) => {
|
|
194
|
+
if (fieldSwitch === '\\h')
|
|
195
|
+
return true;
|
|
196
|
+
if (fieldSwitch !== '\\*')
|
|
197
|
+
return false;
|
|
198
|
+
return switchArguments[index]?.toUpperCase() === 'MERGEFORMAT';
|
|
199
|
+
});
|
|
200
|
+
if (!deterministic) {
|
|
201
|
+
return {
|
|
202
|
+
kind,
|
|
203
|
+
evaluationClass: 'recognized-unsupported',
|
|
204
|
+
normalizedInstruction,
|
|
205
|
+
target,
|
|
206
|
+
switches,
|
|
207
|
+
unsupportedSwitches: switches.filter((fieldSwitch) => fieldSwitch !== '\\h'),
|
|
208
|
+
preservationSupported: true,
|
|
209
|
+
reason: 'unsupported-ref-switch',
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
kind,
|
|
214
|
+
evaluationClass: 'deterministic-ref',
|
|
215
|
+
normalizedInstruction,
|
|
216
|
+
target,
|
|
217
|
+
switches,
|
|
218
|
+
unsupportedSwitches,
|
|
219
|
+
preservationSupported: true,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
kind,
|
|
224
|
+
evaluationClass: kind === 'UNKNOWN' ? 'unknown' : 'recognized-unsupported',
|
|
225
|
+
normalizedInstruction,
|
|
226
|
+
switches,
|
|
227
|
+
unsupportedSwitches,
|
|
228
|
+
preservationSupported: false,
|
|
229
|
+
reason: kind === 'UNKNOWN' ? 'unknown-field-kind' : 'field-kind-not-evaluated',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=field-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-semantics.js","sourceRoot":"","sources":["../../src/shared/field-semantics.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,18 +8,27 @@ export type FieldStructureIssue = {
|
|
|
8
8
|
story?: string;
|
|
9
9
|
element?: string;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated `w:fldChar` inside `<w:del>` is valid, so a `true` result is not a
|
|
13
|
+
* defect. Word and Aspose both emit it. Retained only so existing callers keep
|
|
14
|
+
* compiling; do not gate on it. See {@link collectFieldStructureIssues}.
|
|
15
|
+
*/
|
|
11
16
|
export declare function hasFldCharInsideDel(documentXml: string): boolean;
|
|
12
17
|
/**
|
|
13
18
|
* Reports structural complex-field violations without evaluating field codes.
|
|
14
19
|
*
|
|
15
20
|
* @conformance ECMA-376 edition 5, Part 1 § 17.16.18
|
|
21
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.22
|
|
22
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.14
|
|
16
23
|
* @ooxmlSpec ooxml.ecma376.5ed.part1.fields.complex-field-characters
|
|
24
|
+
* @see https://github.com/UseJunior/safe-docx/issues/645
|
|
25
|
+
* @see https://github.com/UseJunior/safe-docx/issues/941
|
|
17
26
|
*/
|
|
18
27
|
export declare function collectFieldStructureIssues(input: string | FieldStory[]): FieldStructureIssue[];
|
|
19
28
|
export declare function validateFieldStructure(input: string | FieldStory[]): boolean;
|
|
20
29
|
/**
|
|
21
30
|
* Reports strict runtime field-story violations without changing the
|
|
22
|
-
*
|
|
31
|
+
* pinned `validateFieldStructure` predicate.
|
|
23
32
|
*
|
|
24
33
|
* @conformance ECMA-376 edition 5, Part 1 § 17.16.18
|
|
25
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-structure.d.ts","sourceRoot":"","sources":["../../src/shared/field-structure.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAcF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CA2BhE;AAED
|
|
1
|
+
{"version":3,"file":"field-structure.d.ts","sourceRoot":"","sources":["../../src/shared/field-structure.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAcF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CA2BhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAU/F;AAaD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,OAAO,CAI5E;AA4DD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAC3B,mBAAmB,EAAE,CAUvB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,OAAO,CAIlF"}
|
|
@@ -9,6 +9,11 @@ function getWAttr(el, localName) {
|
|
|
9
9
|
function allW(root, localName) {
|
|
10
10
|
return Array.from(root.getElementsByTagNameNS(OOXML.W_NS, localName));
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated `w:fldChar` inside `<w:del>` is valid, so a `true` result is not a
|
|
14
|
+
* defect. Word and Aspose both emit it. Retained only so existing callers keep
|
|
15
|
+
* compiling; do not gate on it. See {@link collectFieldStructureIssues}.
|
|
16
|
+
*/
|
|
12
17
|
export function hasFldCharInsideDel(documentXml) {
|
|
13
18
|
const root = parseXml(documentXml).documentElement;
|
|
14
19
|
let insideDelDepth = 0;
|
|
@@ -42,7 +47,11 @@ export function hasFldCharInsideDel(documentXml) {
|
|
|
42
47
|
* Reports structural complex-field violations without evaluating field codes.
|
|
43
48
|
*
|
|
44
49
|
* @conformance ECMA-376 edition 5, Part 1 § 17.16.18
|
|
50
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.22
|
|
51
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5.14
|
|
45
52
|
* @ooxmlSpec ooxml.ecma376.5ed.part1.fields.complex-field-characters
|
|
53
|
+
* @see https://github.com/UseJunior/safe-docx/issues/645
|
|
54
|
+
* @see https://github.com/UseJunior/safe-docx/issues/941
|
|
46
55
|
*/
|
|
47
56
|
export function collectFieldStructureIssues(input) {
|
|
48
57
|
if (typeof input === 'string') {
|
|
@@ -57,7 +66,7 @@ export function collectFieldStructureIssues(input) {
|
|
|
57
66
|
/**
|
|
58
67
|
* Text-placement rules added for the AI revision validator. They are NOT part
|
|
59
68
|
* of `validateFieldStructure`: that boolean is pinned extensionally against
|
|
60
|
-
* the
|
|
69
|
+
* the comparison engine's validation model by the differential
|
|
61
70
|
* differential harness, so its rule set must not grow.
|
|
62
71
|
*/
|
|
63
72
|
const TEXT_PLACEMENT_ISSUE_CODES = new Set([
|
|
@@ -123,7 +132,7 @@ function collectStrictStackIssuesForStory(xml, story) {
|
|
|
123
132
|
}
|
|
124
133
|
/**
|
|
125
134
|
* Reports strict runtime field-story violations without changing the
|
|
126
|
-
*
|
|
135
|
+
* pinned `validateFieldStructure` predicate.
|
|
127
136
|
*
|
|
128
137
|
* @conformance ECMA-376 edition 5, Part 1 § 17.16.18
|
|
129
138
|
*/
|
|
@@ -176,13 +185,19 @@ function collectFieldStructureIssuesForStory(documentXml, story) {
|
|
|
176
185
|
let depth = 0;
|
|
177
186
|
const pastSeparatorAtDepth = [];
|
|
178
187
|
let insideDelDepth = 0;
|
|
179
|
-
// Move
|
|
180
|
-
//
|
|
181
|
-
// deletion contexts. The Lean-pinned field rules above use only w:del.
|
|
188
|
+
// Move sources may retain ordinary w:t. Continue accepting legacy delText
|
|
189
|
+
// there, but only a true deletion requires deletion text vocabulary.
|
|
182
190
|
let insideMoveFromDepth = 0;
|
|
183
191
|
function push(code, message, element) {
|
|
184
192
|
issues.push({ code, message, story, element });
|
|
185
193
|
}
|
|
194
|
+
function isInsideOpenFieldCodeRegion() {
|
|
195
|
+
for (let fieldDepth = 1; fieldDepth <= depth; fieldDepth++) {
|
|
196
|
+
if (!pastSeparatorAtDepth[fieldDepth])
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
186
201
|
function scan(node) {
|
|
187
202
|
for (let child = node.firstChild; child; child = child.nextSibling) {
|
|
188
203
|
if (child.nodeType !== 1)
|
|
@@ -201,9 +216,13 @@ function collectFieldStructureIssuesForStory(documentXml, story) {
|
|
|
201
216
|
continue;
|
|
202
217
|
}
|
|
203
218
|
if (isW(el, 'fldChar')) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
219
|
+
// `w:fldChar` inside `<w:del>` is NOT a violation. The Transitional WML
|
|
220
|
+
// schema reaches it (w:del -> CT_RunTrackChange -> EG_ContentRunContent
|
|
221
|
+
// -> w:r -> EG_RunInnerContent), and Word 16.112 and Aspose.Words 25.10
|
|
222
|
+
// both emit whole deleted fields that way on real input, producing
|
|
223
|
+
// schema-valid output. The rule this once enforced (issue #217) came
|
|
224
|
+
// from a research summary rather than the standard; enforcing it left
|
|
225
|
+
// deleted fields as unrenderable husks. See insertWholeDeletedField.
|
|
207
226
|
const type = getWAttr(el, 'fldCharType');
|
|
208
227
|
if (type === 'begin') {
|
|
209
228
|
depth++;
|
|
@@ -219,7 +238,7 @@ function collectFieldStructureIssuesForStory(documentXml, story) {
|
|
|
219
238
|
}
|
|
220
239
|
}
|
|
221
240
|
else if (isW(el, 'instrText')) {
|
|
222
|
-
if (
|
|
241
|
+
if (!isInsideOpenFieldCodeRegion()) {
|
|
223
242
|
push('INSTRUCTION_TEXT_OUTSIDE_FIELD_CODE', 'w:instrText must appear inside an open field code region', 'w:instrText');
|
|
224
243
|
}
|
|
225
244
|
}
|
|
@@ -227,12 +246,12 @@ function collectFieldStructureIssuesForStory(documentXml, story) {
|
|
|
227
246
|
if (insideDelDepth === 0) {
|
|
228
247
|
push('DELETED_INSTRUCTION_TEXT_OUTSIDE_DELETION', 'w:delInstrText must appear inside w:del', 'w:delInstrText');
|
|
229
248
|
}
|
|
230
|
-
if (
|
|
249
|
+
if (!isInsideOpenFieldCodeRegion()) {
|
|
231
250
|
push('DELETED_INSTRUCTION_TEXT_OUTSIDE_FIELD_CODE', 'w:delInstrText must appear inside an open field code region', 'w:delInstrText');
|
|
232
251
|
}
|
|
233
252
|
}
|
|
234
|
-
else if (isW(el, 't') &&
|
|
235
|
-
push('TEXT_INSIDE_DELETION', 'w:t must not appear inside w:del
|
|
253
|
+
else if (isW(el, 't') && insideDelDepth > 0) {
|
|
254
|
+
push('TEXT_INSIDE_DELETION', 'w:t must not appear inside w:del; use w:delText', 'w:t');
|
|
236
255
|
}
|
|
237
256
|
else if (isW(el, 'delText') && insideDelDepth === 0 && insideMoveFromDepth === 0) {
|
|
238
257
|
push('DELETED_TEXT_OUTSIDE_DELETION', 'w:delText must appear inside w:del or w:moveFrom', 'w:delText');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-structure.js","sourceRoot":"","sources":["../../src/shared/field-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAcpD,SAAS,GAAG,CAAC,EAAW,EAAE,SAAiB;IACzC,OAAO,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,EAAW,EAAE,SAAiB;IAC9C,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,IAAI,CAAC,IAAwB,EAAE,SAAiB;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAc,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC;IACnD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,SAAS,IAAI,CAAC,IAAa;QACzB,IAAI,SAAS;YAAE,OAAO;QACtB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACnE,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,EAAE,GAAG,KAAgB,CAAC;YAC5B,IAAI,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnB,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,EAAE,CAAC,CAAC;gBACT,cAAc,EAAE,CAAC;gBACjB,IAAI,SAAS;oBAAE,OAAO;gBACtB,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;gBAC7C,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,SAAS,CAAC;AACnB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"field-structure.js","sourceRoot":"","sources":["../../src/shared/field-structure.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usejunior/docx-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.2",
|
|
4
4
|
"description": "OOXML (.docx) core library: primitives, document generation, and track changes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
"dev": "tsc -p tsconfig.build.json --watch",
|
|
12
12
|
"test": "node ../../node_modules/vitest/vitest.mjs",
|
|
13
13
|
"test:run": "node ../../node_modules/vitest/vitest.mjs run",
|
|
14
|
-
"test:
|
|
15
|
-
"test:coverage": "node ../../node_modules/vitest/vitest.mjs run --coverage --coverage.reporter=text-summary --coverage.reporter=json-summary --coverage.reporter=lcov",
|
|
14
|
+
"test:coverage": "node ../../node_modules/vitest/vitest.mjs run --coverage --maxWorkers=1 --coverage.reporter=text-summary --coverage.reporter=json-summary --coverage.reporter=lcov",
|
|
16
15
|
"check:spec-coverage": "npm run check:spec-coverage:openspec && npm run check:spec-coverage:primitives -- --strict && npm run check:spec-coverage:tag-density",
|
|
17
16
|
"check:spec-coverage:openspec": "node scripts/validate_openspec_coverage.mjs",
|
|
18
17
|
"check:spec-coverage:primitives": "node scripts/validate_primitives_openspec_coverage.mjs",
|
|
@@ -21,12 +20,12 @@
|
|
|
21
20
|
"lint": "tsc --noEmit"
|
|
22
21
|
},
|
|
23
22
|
"dependencies": {
|
|
24
|
-
"@xmldom/xmldom": "^0.9.
|
|
23
|
+
"@xmldom/xmldom": "^0.9.12",
|
|
25
24
|
"jszip": "^3.10.1"
|
|
26
25
|
},
|
|
27
26
|
"devDependencies": {
|
|
28
27
|
"@types/node": "^22.10.0",
|
|
29
|
-
"@usejunior/docx-compare": "^0.
|
|
28
|
+
"@usejunior/docx-compare": "^0.21.2",
|
|
30
29
|
"@vitest/coverage-v8": "^4.1.8",
|
|
31
30
|
"@vitest/runner": "^4.1.8",
|
|
32
31
|
"allure-vitest": "^3.9.0",
|