@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.
Files changed (180) hide show
  1. package/README.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/conformance-adapter.d.ts.map +1 -1
  4. package/dist/cli/conformance-adapter.js +0 -27
  5. package/dist/cli/conformance-adapter.js.map +1 -1
  6. package/dist/core-types.d.ts +1 -139
  7. package/dist/core-types.d.ts.map +1 -1
  8. package/dist/core-types.js +1 -3
  9. package/dist/core-types.js.map +1 -1
  10. package/dist/generation/compile.d.ts.map +1 -1
  11. package/dist/generation/compile.js +1 -3
  12. package/dist/generation/compile.js.map +1 -1
  13. package/dist/index.d.ts +5 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +13 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/integration/generation-probes.d.ts +36 -2
  18. package/dist/integration/generation-probes.d.ts.map +1 -1
  19. package/dist/integration/generation-probes.js +137 -15
  20. package/dist/integration/generation-probes.js.map +1 -1
  21. package/dist/integration/libreoffice-oracle.d.ts +3 -1
  22. package/dist/integration/libreoffice-oracle.d.ts.map +1 -1
  23. package/dist/integration/libreoffice-oracle.js +10 -4
  24. package/dist/integration/libreoffice-oracle.js.map +1 -1
  25. package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
  26. package/dist/integration/synthetic-docx-fixture.js +8 -0
  27. package/dist/integration/synthetic-docx-fixture.js.map +1 -1
  28. package/dist/primitives/accept_ai_edits.js +14 -2
  29. package/dist/primitives/accept_ai_edits.js.map +1 -1
  30. package/dist/primitives/accept_changes.d.ts +6 -0
  31. package/dist/primitives/accept_changes.d.ts.map +1 -1
  32. package/dist/primitives/accept_changes.js +236 -62
  33. package/dist/primitives/accept_changes.js.map +1 -1
  34. package/dist/primitives/bookmarks.d.ts +8 -2
  35. package/dist/primitives/bookmarks.d.ts.map +1 -1
  36. package/dist/primitives/bookmarks.js +31 -7
  37. package/dist/primitives/bookmarks.js.map +1 -1
  38. package/dist/primitives/comments.d.ts +101 -5
  39. package/dist/primitives/comments.d.ts.map +1 -1
  40. package/dist/primitives/comments.js +356 -156
  41. package/dist/primitives/comments.js.map +1 -1
  42. package/dist/primitives/conformance.d.ts +42 -0
  43. package/dist/primitives/conformance.d.ts.map +1 -0
  44. package/dist/primitives/conformance.js +61 -0
  45. package/dist/primitives/conformance.js.map +1 -0
  46. package/dist/primitives/document.d.ts +145 -2
  47. package/dist/primitives/document.d.ts.map +1 -1
  48. package/dist/primitives/document.js +505 -27
  49. package/dist/primitives/document.js.map +1 -1
  50. package/dist/primitives/document_view-headings.d.ts +3 -1
  51. package/dist/primitives/document_view-headings.d.ts.map +1 -1
  52. package/dist/primitives/document_view-headings.js +5 -5
  53. package/dist/primitives/document_view-headings.js.map +1 -1
  54. package/dist/primitives/document_view.d.ts +2 -0
  55. package/dist/primitives/document_view.d.ts.map +1 -1
  56. package/dist/primitives/document_view.js +18 -4
  57. package/dist/primitives/document_view.js.map +1 -1
  58. package/dist/primitives/errors.d.ts +3 -2
  59. package/dist/primitives/errors.d.ts.map +1 -1
  60. package/dist/primitives/errors.js +3 -1
  61. package/dist/primitives/errors.js.map +1 -1
  62. package/dist/primitives/extract_revisions.d.ts +23 -6
  63. package/dist/primitives/extract_revisions.d.ts.map +1 -1
  64. package/dist/primitives/extract_revisions.js +208 -38
  65. package/dist/primitives/extract_revisions.js.map +1 -1
  66. package/dist/primitives/field_evaluation.d.ts +70 -0
  67. package/dist/primitives/field_evaluation.d.ts.map +1 -0
  68. package/dist/primitives/field_evaluation.js +462 -0
  69. package/dist/primitives/field_evaluation.js.map +1 -0
  70. package/dist/primitives/footnotes.d.ts +53 -3
  71. package/dist/primitives/footnotes.d.ts.map +1 -1
  72. package/dist/primitives/footnotes.js +228 -83
  73. package/dist/primitives/footnotes.js.map +1 -1
  74. package/dist/primitives/index.d.ts +12 -1
  75. package/dist/primitives/index.d.ts.map +1 -1
  76. package/dist/primitives/index.js +12 -1
  77. package/dist/primitives/index.js.map +1 -1
  78. package/dist/primitives/merge_runs.d.ts +3 -1
  79. package/dist/primitives/merge_runs.d.ts.map +1 -1
  80. package/dist/primitives/merge_runs.js +12 -2
  81. package/dist/primitives/merge_runs.js.map +1 -1
  82. package/dist/primitives/namespaces.d.ts +10 -2
  83. package/dist/primitives/namespaces.d.ts.map +1 -1
  84. package/dist/primitives/namespaces.js +11 -2
  85. package/dist/primitives/namespaces.js.map +1 -1
  86. package/dist/primitives/note_conversion.d.ts +11 -0
  87. package/dist/primitives/note_conversion.d.ts.map +1 -0
  88. package/dist/primitives/note_conversion.js +12 -0
  89. package/dist/primitives/note_conversion.js.map +1 -0
  90. package/dist/primitives/paragraph-index.d.ts +31 -0
  91. package/dist/primitives/paragraph-index.d.ts.map +1 -0
  92. package/dist/primitives/paragraph-index.js +140 -0
  93. package/dist/primitives/paragraph-index.js.map +1 -0
  94. package/dist/primitives/paragraph_merge_formatting.d.ts +24 -0
  95. package/dist/primitives/paragraph_merge_formatting.d.ts.map +1 -0
  96. package/dist/primitives/paragraph_merge_formatting.js +86 -0
  97. package/dist/primitives/paragraph_merge_formatting.js.map +1 -0
  98. package/dist/primitives/paragraph_numbering.d.ts +40 -0
  99. package/dist/primitives/paragraph_numbering.d.ts.map +1 -0
  100. package/dist/primitives/paragraph_numbering.js +198 -0
  101. package/dist/primitives/paragraph_numbering.js.map +1 -0
  102. package/dist/primitives/paragraph_structure.d.ts +19 -0
  103. package/dist/primitives/paragraph_structure.d.ts.map +1 -0
  104. package/dist/primitives/paragraph_structure.js +66 -0
  105. package/dist/primitives/paragraph_structure.js.map +1 -0
  106. package/dist/primitives/reject_changes.d.ts +6 -0
  107. package/dist/primitives/reject_changes.d.ts.map +1 -1
  108. package/dist/primitives/reject_changes.js +278 -68
  109. package/dist/primitives/reject_changes.js.map +1 -1
  110. package/dist/primitives/relationships.d.ts +22 -0
  111. package/dist/primitives/relationships.d.ts.map +1 -1
  112. package/dist/primitives/relationships.js +87 -0
  113. package/dist/primitives/relationships.js.map +1 -1
  114. package/dist/primitives/revision-parts.d.ts +15 -0
  115. package/dist/primitives/revision-parts.d.ts.map +1 -1
  116. package/dist/primitives/revision-parts.js +33 -1
  117. package/dist/primitives/revision-parts.js.map +1 -1
  118. package/dist/primitives/sectPrAudit.d.ts.map +1 -1
  119. package/dist/primitives/sectPrAudit.js +10 -1
  120. package/dist/primitives/sectPrAudit.js.map +1 -1
  121. package/dist/primitives/sections.d.ts +135 -0
  122. package/dist/primitives/sections.d.ts.map +1 -0
  123. package/dist/primitives/sections.js +644 -0
  124. package/dist/primitives/sections.js.map +1 -0
  125. package/dist/primitives/styles.d.ts +61 -0
  126. package/dist/primitives/styles.d.ts.map +1 -1
  127. package/dist/primitives/styles.js +207 -25
  128. package/dist/primitives/styles.js.map +1 -1
  129. package/dist/primitives/symbol_run_content.d.ts +42 -0
  130. package/dist/primitives/symbol_run_content.d.ts.map +1 -0
  131. package/dist/primitives/symbol_run_content.js +79 -0
  132. package/dist/primitives/symbol_run_content.js.map +1 -0
  133. package/dist/primitives/table_cells.d.ts +49 -0
  134. package/dist/primitives/table_cells.d.ts.map +1 -0
  135. package/dist/primitives/table_cells.js +149 -0
  136. package/dist/primitives/table_cells.js.map +1 -0
  137. package/dist/primitives/table_columns.d.ts +50 -0
  138. package/dist/primitives/table_columns.d.ts.map +1 -0
  139. package/dist/primitives/table_columns.js +138 -0
  140. package/dist/primitives/table_columns.js.map +1 -0
  141. package/dist/primitives/table_edit_common.d.ts +39 -0
  142. package/dist/primitives/table_edit_common.d.ts.map +1 -0
  143. package/dist/primitives/table_edit_common.js +163 -0
  144. package/dist/primitives/table_edit_common.js.map +1 -0
  145. package/dist/primitives/table_occupancy.d.ts +39 -0
  146. package/dist/primitives/table_occupancy.d.ts.map +1 -0
  147. package/dist/primitives/table_occupancy.js +145 -0
  148. package/dist/primitives/table_occupancy.js.map +1 -0
  149. package/dist/primitives/table_rows.d.ts +56 -0
  150. package/dist/primitives/table_rows.d.ts.map +1 -0
  151. package/dist/primitives/table_rows.js +390 -0
  152. package/dist/primitives/table_rows.js.map +1 -0
  153. package/dist/primitives/text.d.ts +69 -1
  154. package/dist/primitives/text.d.ts.map +1 -1
  155. package/dist/primitives/text.js +592 -102
  156. package/dist/primitives/text.js.map +1 -1
  157. package/dist/primitives/track-changes-emitter.d.ts +23 -0
  158. package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
  159. package/dist/primitives/track-changes-emitter.js +64 -1
  160. package/dist/primitives/track-changes-emitter.js.map +1 -1
  161. package/dist/primitives/validate_document.d.ts.map +1 -1
  162. package/dist/primitives/validate_document.js +22 -1
  163. package/dist/primitives/validate_document.js.map +1 -1
  164. package/dist/primitives/zip.d.ts +22 -1
  165. package/dist/primitives/zip.d.ts.map +1 -1
  166. package/dist/primitives/zip.js +47 -8
  167. package/dist/primitives/zip.js.map +1 -1
  168. package/dist/shared/docx/DocxArchive.d.ts +6 -2
  169. package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
  170. package/dist/shared/docx/DocxArchive.js +17 -4
  171. package/dist/shared/docx/DocxArchive.js.map +1 -1
  172. package/dist/shared/field-semantics.d.ts +26 -0
  173. package/dist/shared/field-semantics.d.ts.map +1 -0
  174. package/dist/shared/field-semantics.js +232 -0
  175. package/dist/shared/field-semantics.js.map +1 -0
  176. package/dist/shared/field-structure.d.ts +10 -1
  177. package/dist/shared/field-structure.d.ts.map +1 -1
  178. package/dist/shared/field-structure.js +31 -12
  179. package/dist/shared/field-structure.js.map +1 -1
  180. 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
- * Lean-pinned `validateFieldStructure` predicate.
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;;;;;GAKG;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"}
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 Lean model (`Tier2.FieldStructure.validateFieldStructure`) by the Lean
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
- * Lean-pinned `validateFieldStructure` predicate.
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-sources (w:moveFrom) carry deletion-flavored content (w:delText)
180
- // per the OOXML revision model; the text-placement rules treat them as
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
- if (insideDelDepth > 0) {
205
- push('FIELD_CHAR_INSIDE_DELETION', 'w:fldChar must not appear inside w:del', 'w:fldChar');
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 (depth === 0 || pastSeparatorAtDepth[depth]) {
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 (depth === 0 || pastSeparatorAtDepth[depth]) {
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') && (insideDelDepth > 0 || insideMoveFromDepth > 0)) {
235
- push('TEXT_INSIDE_DELETION', 'w:t must not appear inside w:del or w:moveFrom; use w:delText', 'w:t');
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":"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"}
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.19.1",
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:baseline": "node ../../node_modules/vitest/vitest.mjs run -c vitest.baseline.config.ts",
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.10",
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.19.1",
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",