@usejunior/docx-core 0.18.0 → 0.20.1

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 (142) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/core-types.d.ts +1 -139
  3. package/dist/core-types.d.ts.map +1 -1
  4. package/dist/core-types.js +1 -3
  5. package/dist/core-types.js.map +1 -1
  6. package/dist/generation/emit/borders.d.ts +14 -0
  7. package/dist/generation/emit/borders.d.ts.map +1 -0
  8. package/dist/generation/emit/borders.js +45 -0
  9. package/dist/generation/emit/borders.js.map +1 -0
  10. package/dist/generation/emit/properties.d.ts +1 -1
  11. package/dist/generation/emit/properties.d.ts.map +1 -1
  12. package/dist/generation/emit/properties.js +4 -0
  13. package/dist/generation/emit/properties.js.map +1 -1
  14. package/dist/generation/emit/table.d.ts.map +1 -1
  15. package/dist/generation/emit/table.js +3 -31
  16. package/dist/generation/emit/table.js.map +1 -1
  17. package/dist/generation/index.d.ts +1 -1
  18. package/dist/generation/index.d.ts.map +1 -1
  19. package/dist/generation/types.d.ts +9 -0
  20. package/dist/generation/types.d.ts.map +1 -1
  21. package/dist/generation/types.js.map +1 -1
  22. package/dist/generation/validate-spec.d.ts.map +1 -1
  23. package/dist/generation/validate-spec.js +2 -0
  24. package/dist/generation/validate-spec.js.map +1 -1
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +11 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/integration/generation-probes.d.ts +36 -2
  30. package/dist/integration/generation-probes.d.ts.map +1 -1
  31. package/dist/integration/generation-probes.js +137 -15
  32. package/dist/integration/generation-probes.js.map +1 -1
  33. package/dist/integration/libreoffice-oracle.js +1 -1
  34. package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
  35. package/dist/integration/synthetic-docx-fixture.js +37 -20
  36. package/dist/integration/synthetic-docx-fixture.js.map +1 -1
  37. package/dist/primitives/accept_ai_edits.js +14 -2
  38. package/dist/primitives/accept_ai_edits.js.map +1 -1
  39. package/dist/primitives/accept_changes.d.ts +7 -0
  40. package/dist/primitives/accept_changes.d.ts.map +1 -1
  41. package/dist/primitives/accept_changes.js +92 -4
  42. package/dist/primitives/accept_changes.js.map +1 -1
  43. package/dist/primitives/bookmarks.d.ts +1 -0
  44. package/dist/primitives/bookmarks.d.ts.map +1 -1
  45. package/dist/primitives/bookmarks.js +1 -1
  46. package/dist/primitives/bookmarks.js.map +1 -1
  47. package/dist/primitives/comments.d.ts +31 -4
  48. package/dist/primitives/comments.d.ts.map +1 -1
  49. package/dist/primitives/comments.js +111 -12
  50. package/dist/primitives/comments.js.map +1 -1
  51. package/dist/primitives/document.d.ts +47 -1
  52. package/dist/primitives/document.d.ts.map +1 -1
  53. package/dist/primitives/document.js +198 -13
  54. package/dist/primitives/document.js.map +1 -1
  55. package/dist/primitives/document_view-headings.d.ts +3 -1
  56. package/dist/primitives/document_view-headings.d.ts.map +1 -1
  57. package/dist/primitives/document_view-headings.js +5 -5
  58. package/dist/primitives/document_view-headings.js.map +1 -1
  59. package/dist/primitives/document_view.d.ts +2 -0
  60. package/dist/primitives/document_view.d.ts.map +1 -1
  61. package/dist/primitives/document_view.js +18 -4
  62. package/dist/primitives/document_view.js.map +1 -1
  63. package/dist/primitives/field_evaluation.d.ts +70 -0
  64. package/dist/primitives/field_evaluation.d.ts.map +1 -0
  65. package/dist/primitives/field_evaluation.js +462 -0
  66. package/dist/primitives/field_evaluation.js.map +1 -0
  67. package/dist/primitives/footnotes.d.ts +17 -3
  68. package/dist/primitives/footnotes.d.ts.map +1 -1
  69. package/dist/primitives/footnotes.js +64 -17
  70. package/dist/primitives/footnotes.js.map +1 -1
  71. package/dist/primitives/formatting_tags.js +2 -2
  72. package/dist/primitives/formatting_tags.js.map +1 -1
  73. package/dist/primitives/index.d.ts +8 -1
  74. package/dist/primitives/index.d.ts.map +1 -1
  75. package/dist/primitives/index.js +8 -1
  76. package/dist/primitives/index.js.map +1 -1
  77. package/dist/primitives/merge_runs.d.ts +3 -1
  78. package/dist/primitives/merge_runs.d.ts.map +1 -1
  79. package/dist/primitives/merge_runs.js +12 -2
  80. package/dist/primitives/merge_runs.js.map +1 -1
  81. package/dist/primitives/namespaces.d.ts +12 -2
  82. package/dist/primitives/namespaces.d.ts.map +1 -1
  83. package/dist/primitives/namespaces.js +13 -2
  84. package/dist/primitives/namespaces.js.map +1 -1
  85. package/dist/primitives/note_conversion.d.ts +11 -0
  86. package/dist/primitives/note_conversion.d.ts.map +1 -0
  87. package/dist/primitives/note_conversion.js +12 -0
  88. package/dist/primitives/note_conversion.js.map +1 -0
  89. package/dist/primitives/opc-target.d.ts +24 -0
  90. package/dist/primitives/opc-target.d.ts.map +1 -0
  91. package/dist/primitives/opc-target.js +99 -0
  92. package/dist/primitives/opc-target.js.map +1 -0
  93. package/dist/primitives/paragraph_numbering.d.ts +40 -0
  94. package/dist/primitives/paragraph_numbering.d.ts.map +1 -0
  95. package/dist/primitives/paragraph_numbering.js +198 -0
  96. package/dist/primitives/paragraph_numbering.js.map +1 -0
  97. package/dist/primitives/reject_changes.d.ts +7 -0
  98. package/dist/primitives/reject_changes.d.ts.map +1 -1
  99. package/dist/primitives/reject_changes.js +133 -10
  100. package/dist/primitives/reject_changes.js.map +1 -1
  101. package/dist/primitives/sectPrAudit.d.ts +18 -1
  102. package/dist/primitives/sectPrAudit.d.ts.map +1 -1
  103. package/dist/primitives/sectPrAudit.js +120 -34
  104. package/dist/primitives/sectPrAudit.js.map +1 -1
  105. package/dist/primitives/sections.d.ts +134 -0
  106. package/dist/primitives/sections.d.ts.map +1 -0
  107. package/dist/primitives/sections.js +644 -0
  108. package/dist/primitives/sections.js.map +1 -0
  109. package/dist/primitives/serialize_html.d.ts.map +1 -1
  110. package/dist/primitives/serialize_html.js +18 -7
  111. package/dist/primitives/serialize_html.js.map +1 -1
  112. package/dist/primitives/styles.d.ts +60 -0
  113. package/dist/primitives/styles.d.ts.map +1 -1
  114. package/dist/primitives/styles.js +206 -25
  115. package/dist/primitives/styles.js.map +1 -1
  116. package/dist/primitives/symbol_run_content.d.ts +42 -0
  117. package/dist/primitives/symbol_run_content.d.ts.map +1 -0
  118. package/dist/primitives/symbol_run_content.js +79 -0
  119. package/dist/primitives/symbol_run_content.js.map +1 -0
  120. package/dist/primitives/text.d.ts +29 -0
  121. package/dist/primitives/text.d.ts.map +1 -1
  122. package/dist/primitives/text.js +354 -44
  123. package/dist/primitives/text.js.map +1 -1
  124. package/dist/primitives/track-changes-emitter.d.ts +9 -0
  125. package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
  126. package/dist/primitives/track-changes-emitter.js +40 -2
  127. package/dist/primitives/track-changes-emitter.js.map +1 -1
  128. package/dist/primitives/validate_document.d.ts.map +1 -1
  129. package/dist/primitives/validate_document.js +22 -1
  130. package/dist/primitives/validate_document.js.map +1 -1
  131. package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
  132. package/dist/shared/docx/DocxArchive.js +7 -0
  133. package/dist/shared/docx/DocxArchive.js.map +1 -1
  134. package/dist/shared/field-semantics.d.ts +26 -0
  135. package/dist/shared/field-semantics.d.ts.map +1 -0
  136. package/dist/shared/field-semantics.js +232 -0
  137. package/dist/shared/field-semantics.js.map +1 -0
  138. package/dist/shared/field-structure.d.ts +14 -0
  139. package/dist/shared/field-structure.d.ts.map +1 -1
  140. package/dist/shared/field-structure.js +98 -7
  141. package/dist/shared/field-structure.js.map +1 -1
  142. package/package.json +3 -5
@@ -0,0 +1,70 @@
1
+ import { type WordFieldKind } from '../shared/field-semantics.js';
2
+ export type FieldRefreshStatus = 'evaluated' | 'dirtied' | 'unchanged' | 'preserved' | 'unsupported';
3
+ /**
4
+ * Where a field sits in the story it was read from.
5
+ *
6
+ * Both ordinals are document-order positions within a single refresh result.
7
+ * They are not durable identities: inserting an earlier paragraph shifts every
8
+ * later `paragraphOrdinal`. Use them to correlate an outcome with the XML that
9
+ * produced it, not to remember a field across edits. `paragraphOrdinal` is
10
+ * absent for a field that has no `w:p` ancestor.
11
+ */
12
+ export interface FieldLocator {
13
+ paragraphOrdinal?: number;
14
+ fieldOrdinal: number;
15
+ }
16
+ export interface FieldRefreshOutcome {
17
+ index: number;
18
+ locator: FieldLocator;
19
+ kind: WordFieldKind;
20
+ instruction: string;
21
+ status: FieldRefreshStatus;
22
+ target?: string;
23
+ reason?: string;
24
+ }
25
+ export interface FieldRefreshOptions {
26
+ markLayoutDependentDirty?: boolean;
27
+ }
28
+ export interface FieldRefreshReport {
29
+ changed: boolean;
30
+ outcomes: FieldRefreshOutcome[];
31
+ }
32
+ export interface FieldXmlRefreshResult extends FieldRefreshReport {
33
+ documentXml: string;
34
+ }
35
+ export interface FieldDocxRefreshResult extends FieldRefreshReport {
36
+ document: Buffer;
37
+ /**
38
+ * Field-bearing parts present in the package that this operation did not
39
+ * read, such as `word/header1.xml` or `word/footnotes.xml`.
40
+ */
41
+ skippedStories: string[];
42
+ }
43
+ export type FieldRefreshErrorCode = 'MALFORMED_FIELD_TOPOLOGY';
44
+ export declare class FieldRefreshError extends Error {
45
+ readonly code: FieldRefreshErrorCode;
46
+ constructor(code: FieldRefreshErrorCode, message: string);
47
+ }
48
+ /**
49
+ * Refresh the deterministic subset of complex fields in a main document story.
50
+ *
51
+ * Layout-dependent results are never synthesized. Callers may instead request
52
+ * `w:dirty="true"` on their begin markers so a layout-capable host recalculates
53
+ * them when the document is opened.
54
+ *
55
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.18
56
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.51
57
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.45
58
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.44
59
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.42
60
+ * @see https://github.com/UseJunior/safe-docx/issues/762
61
+ */
62
+ export declare function refreshDocumentFieldsXml(documentXml: string, options?: FieldRefreshOptions): FieldXmlRefreshResult;
63
+ /**
64
+ * Refresh supported fields in `word/document.xml` of a DOCX package.
65
+ *
66
+ * Only the main story is read. Any other field-bearing part present in the
67
+ * package is named in `skippedStories`.
68
+ */
69
+ export declare function refreshDocxFields(document: Buffer, options?: FieldRefreshOptions): Promise<FieldDocxRefreshResult>;
70
+ //# sourceMappingURL=field_evaluation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_evaluation.d.ts","sourceRoot":"","sources":["../../src/primitives/field_evaluation.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AAItC,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,SAAS,GACT,WAAW,GACX,WAAW,GACX,aAAa,CAAC;AAElB;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAE/D,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;gBAEzB,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM;CAKzD;AAyYD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,qBAAqB,CA2FvB;AAkBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAcjC"}
@@ -0,0 +1,462 @@
1
+ import { DocxArchive } from '../shared/docx/DocxArchive.js';
2
+ import { classifyFieldInstruction, } from '../shared/field-semantics.js';
3
+ import { W_NS } from '../shared/ooxml/namespaces.js';
4
+ import { parseXml, serializeXml } from './xml.js';
5
+ export class FieldRefreshError extends Error {
6
+ code;
7
+ constructor(code, message) {
8
+ super(message);
9
+ this.name = 'FieldRefreshError';
10
+ this.code = code;
11
+ }
12
+ }
13
+ /**
14
+ * The instruction a reader would act on: the surviving text, or the deleted
15
+ * text when the whole instruction was struck. Concatenating both views yields a
16
+ * chimera like `REF Old REF New`, which describes neither revision state.
17
+ */
18
+ function fieldInstructionView(field) {
19
+ const current = field.currentInstruction.join('');
20
+ return current.trim().length > 0 ? current : field.deletedInstruction.join('');
21
+ }
22
+ const REVISION_CONTAINERS = new Set(['ins', 'del', 'moveFrom', 'moveTo']);
23
+ const DELETION_CONTAINERS = new Set(['del', 'moveFrom']);
24
+ function wAttribute(element, localName) {
25
+ return (element.getAttributeNS(W_NS, localName) ??
26
+ element.getAttribute(`w:${localName}`));
27
+ }
28
+ function isWordElement(element, localName) {
29
+ return element.namespaceURI === W_NS && element.localName === localName;
30
+ }
31
+ function elementChildren(node) {
32
+ const children = [];
33
+ for (let child = node.firstChild; child; child = child.nextSibling) {
34
+ if (child.nodeType === 1)
35
+ children.push(child);
36
+ }
37
+ return children;
38
+ }
39
+ function nearestWordAncestor(node, localName) {
40
+ for (let current = node.parentNode; current; current = current.parentNode) {
41
+ if (current.nodeType === 1 &&
42
+ isWordElement(current, localName)) {
43
+ return current;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ function hasRevisionAncestor(node) {
49
+ for (let current = node; current; current = current.parentNode) {
50
+ if (current.nodeType === 1 &&
51
+ current.namespaceURI === W_NS &&
52
+ REVISION_CONTAINERS.has(current.localName)) {
53
+ return true;
54
+ }
55
+ }
56
+ return false;
57
+ }
58
+ /**
59
+ * Flatten the story in document order, treating `w:fldSimple` as opaque.
60
+ *
61
+ * The simple-field element itself is emitted so callers can recognize and
62
+ * refuse it, but its subtree is not: a simple field owns its own instruction
63
+ * and cached result, and letting those descendants surface in the flat
64
+ * sequence lets an enclosing complex field adopt — and overwrite — them.
65
+ */
66
+ function enumerateElements(root) {
67
+ const elements = [];
68
+ const visit = (node) => {
69
+ for (const child of elementChildren(node)) {
70
+ elements.push(child);
71
+ if (isWordElement(child, 'fldSimple'))
72
+ continue;
73
+ visit(child);
74
+ }
75
+ };
76
+ visit(root);
77
+ return elements;
78
+ }
79
+ function hasDeletionAncestor(node) {
80
+ for (let current = node; current; current = current.parentNode) {
81
+ if (current.nodeType === 1 &&
82
+ current.namespaceURI === W_NS &&
83
+ DELETION_CONTAINERS.has(current.localName)) {
84
+ return true;
85
+ }
86
+ }
87
+ return false;
88
+ }
89
+ /**
90
+ * Validate and enumerate complex fields before any mutation occurs.
91
+ *
92
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.18
93
+ * @see https://github.com/UseJunior/safe-docx/issues/762
94
+ */
95
+ function collectComplexFields(document) {
96
+ const roots = [];
97
+ const stack = [];
98
+ for (const element of enumerateElements(document)) {
99
+ if (isWordElement(element, 'fldSimple')) {
100
+ continue;
101
+ }
102
+ if (isWordElement(element, 'fldChar')) {
103
+ const type = wAttribute(element, 'fldCharType');
104
+ if (type === 'begin') {
105
+ const parent = stack[stack.length - 1];
106
+ const field = {
107
+ begin: element,
108
+ currentInstruction: [],
109
+ deletedInstruction: [],
110
+ resultTexts: [],
111
+ nested: parent !== undefined,
112
+ hasNested: false,
113
+ parent,
114
+ };
115
+ if (parent)
116
+ parent.hasNested = true;
117
+ if (!parent)
118
+ roots.push(field);
119
+ stack.push(field);
120
+ }
121
+ else if (type === 'separate') {
122
+ const field = stack[stack.length - 1];
123
+ if (!field || field.separate) {
124
+ throw new FieldRefreshError('MALFORMED_FIELD_TOPOLOGY', field ? 'Complex field contains more than one separator' : 'Stray field separator');
125
+ }
126
+ field.separate = element;
127
+ }
128
+ else if (type === 'end') {
129
+ const field = stack.pop();
130
+ if (!field) {
131
+ throw new FieldRefreshError('MALFORMED_FIELD_TOPOLOGY', 'Stray field end');
132
+ }
133
+ field.end = element;
134
+ }
135
+ else {
136
+ throw new FieldRefreshError('MALFORMED_FIELD_TOPOLOGY', `Unknown field character type: ${type ?? '(missing)'}`);
137
+ }
138
+ continue;
139
+ }
140
+ const field = stack[stack.length - 1];
141
+ if (!field)
142
+ continue;
143
+ if (!field.separate &&
144
+ (isWordElement(element, 'instrText') || isWordElement(element, 'delInstrText'))) {
145
+ // `w:delInstrText` is the canonical deleted-instruction element, but Word
146
+ // and our own atomizer both also emit plain `w:instrText` inside a
147
+ // `w:del`. Ancestry is the only reliable signal.
148
+ const target = isWordElement(element, 'delInstrText') || hasDeletionAncestor(element)
149
+ ? field.deletedInstruction
150
+ : field.currentInstruction;
151
+ target.push(element.textContent ?? '');
152
+ }
153
+ else if (field.separate && isWordElement(element, 't')) {
154
+ field.resultTexts.push(element);
155
+ }
156
+ }
157
+ if (stack.length > 0) {
158
+ throw new FieldRefreshError('MALFORMED_FIELD_TOPOLOGY', 'Unclosed complex field');
159
+ }
160
+ return roots;
161
+ }
162
+ function resolveBookmarkRanges(elements) {
163
+ const startsByName = new Map();
164
+ const startsById = new Map();
165
+ const endsById = new Map();
166
+ const indexes = new Map();
167
+ elements.forEach((element, index) => indexes.set(element, index));
168
+ for (const element of elements) {
169
+ if (isWordElement(element, 'bookmarkStart')) {
170
+ const name = wAttribute(element, 'name');
171
+ const id = wAttribute(element, 'id');
172
+ if (name)
173
+ startsByName.set(name, [...(startsByName.get(name) ?? []), element]);
174
+ if (id)
175
+ startsById.set(id, [...(startsById.get(id) ?? []), element]);
176
+ }
177
+ else if (isWordElement(element, 'bookmarkEnd')) {
178
+ const id = wAttribute(element, 'id');
179
+ if (id)
180
+ endsById.set(id, [...(endsById.get(id) ?? []), element]);
181
+ }
182
+ }
183
+ const ranges = new Map();
184
+ for (const [name, starts] of startsByName) {
185
+ if (starts.length !== 1) {
186
+ ranges.set(name, 'duplicate-bookmark-name');
187
+ continue;
188
+ }
189
+ const start = starts[0];
190
+ const id = wAttribute(start, 'id');
191
+ if (!id || (startsById.get(id)?.length ?? 0) !== 1) {
192
+ ranges.set(name, 'duplicate-or-missing-bookmark-id');
193
+ continue;
194
+ }
195
+ const ends = endsById.get(id) ?? [];
196
+ if (ends.length !== 1) {
197
+ ranges.set(name, 'missing-or-duplicate-bookmark-end');
198
+ continue;
199
+ }
200
+ const startIndex = indexes.get(start);
201
+ const endIndex = indexes.get(ends[0]);
202
+ if (endIndex <= startIndex) {
203
+ ranges.set(name, 'reversed-bookmark-range');
204
+ continue;
205
+ }
206
+ ranges.set(name, { start, end: ends[0], startIndex, endIndex });
207
+ }
208
+ return ranges;
209
+ }
210
+ /**
211
+ * Project a bookmark range to the plain text a REF result should cache.
212
+ *
213
+ * Word writes a REF result structurally: a tab becomes `w:tab`, a break or a
214
+ * paragraph transition becomes new run and paragraph content. This primitive
215
+ * replaces a single `w:t` payload, so it can only faithfully represent a
216
+ * projection that is itself a single run of characters. A range carrying tabs,
217
+ * breaks, or a paragraph transition is therefore refused rather than flattened
218
+ * into literal U+0009/U+000A, which Word collapses on display.
219
+ *
220
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.51
221
+ * @see https://github.com/UseJunior/safe-docx/issues/762
222
+ */
223
+ function bookmarkText(indexes, elements, range, field) {
224
+ const fieldStart = indexes.get(field.begin) ?? -1;
225
+ const fieldEnd = indexes.get(field.end) ?? -1;
226
+ if (range.startIndex <= fieldStart &&
227
+ range.endIndex >= fieldEnd) {
228
+ return { reason: 'self-referential-bookmark' };
229
+ }
230
+ let value = '';
231
+ let renderedParagraph;
232
+ for (let index = range.startIndex + 1; index < range.endIndex; index += 1) {
233
+ const element = elements[index];
234
+ if (hasRevisionAncestor(element))
235
+ return { reason: 'bookmark-contains-revisions' };
236
+ if (isWordElement(element, 'fldChar') ||
237
+ isWordElement(element, 'fldSimple') ||
238
+ isWordElement(element, 'drawing') ||
239
+ isWordElement(element, 'object')) {
240
+ return { reason: 'unsupported-bookmark-content' };
241
+ }
242
+ if (isWordElement(element, 'tab') ||
243
+ isWordElement(element, 'br') ||
244
+ isWordElement(element, 'cr')) {
245
+ return { reason: 'unsupported-bookmark-layout' };
246
+ }
247
+ if (!isWordElement(element, 't'))
248
+ continue;
249
+ const paragraph = nearestWordAncestor(element, 'p');
250
+ if (renderedParagraph && paragraph && paragraph !== renderedParagraph) {
251
+ return { reason: 'unsupported-bookmark-layout' };
252
+ }
253
+ if (paragraph)
254
+ renderedParagraph = paragraph;
255
+ value += element.textContent ?? '';
256
+ }
257
+ return { value };
258
+ }
259
+ /**
260
+ * Structural reasons a field cannot be refreshed, independent of its
261
+ * instruction semantics.
262
+ *
263
+ * Revision detection is part of this pass and runs *before* the caller trusts
264
+ * anything the classifier derived: a field whose instruction was edited under
265
+ * tracked changes has two instruction states, and neither its kind nor its
266
+ * bookmark target may be asserted from the mixture.
267
+ */
268
+ function structuralRefreshBlocker(field, indexes, elements) {
269
+ if (field.nested || field.hasNested)
270
+ return 'nested-field';
271
+ if (!field.separate || !field.end)
272
+ return 'incomplete-field';
273
+ if (hasRevisionAncestor(field.begin) || hasRevisionAncestor(field.end)) {
274
+ return 'field-contains-revisions';
275
+ }
276
+ const startIndex = indexes.get(field.begin) ?? 0;
277
+ const endIndex = indexes.get(field.end) ?? elements.length - 1;
278
+ for (let index = startIndex; index <= endIndex; index += 1) {
279
+ if (hasRevisionAncestor(elements[index]))
280
+ return 'field-contains-revisions';
281
+ }
282
+ const locked = wAttribute(field.begin, 'fldLock');
283
+ if (locked === 'true' || locked === '1')
284
+ return 'locked-field';
285
+ if (!nearestWordAncestor(field.begin, 'p'))
286
+ return 'field-outside-paragraph';
287
+ return undefined;
288
+ }
289
+ function semanticRefreshBlocker(field, classification) {
290
+ if (classification.evaluationClass === 'deterministic-ref' &&
291
+ nearestWordAncestor(field.begin, 'p') !== nearestWordAncestor(field.end, 'p')) {
292
+ return 'cross-paragraph-field';
293
+ }
294
+ return classification.reason;
295
+ }
296
+ function replaceCachedResult(field, value) {
297
+ const first = field.resultTexts[0];
298
+ if (!first)
299
+ return 'missing';
300
+ if (field.resultTexts.map((text) => text.textContent ?? '').join('') === value) {
301
+ return 'unchanged';
302
+ }
303
+ first.textContent = value;
304
+ if (/^\s|\s$/u.test(value)) {
305
+ first.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');
306
+ }
307
+ else {
308
+ first.removeAttributeNS('http://www.w3.org/XML/1998/namespace', 'space');
309
+ }
310
+ for (const text of field.resultTexts.slice(1))
311
+ text.textContent = '';
312
+ return 'changed';
313
+ }
314
+ function fieldLocators(document, fields) {
315
+ const paragraphs = Array.from(document.getElementsByTagNameNS(W_NS, 'p'));
316
+ const paragraphOrdinals = new Map(paragraphs.map((paragraph, index) => [paragraph, index]));
317
+ const nextFieldOrdinal = new Map();
318
+ const locators = new Map();
319
+ for (const field of fields) {
320
+ const paragraph = nearestWordAncestor(field.begin, 'p');
321
+ const fieldOrdinal = nextFieldOrdinal.get(paragraph) ?? 0;
322
+ nextFieldOrdinal.set(paragraph, fieldOrdinal + 1);
323
+ const paragraphOrdinal = paragraph
324
+ ? paragraphOrdinals.get(paragraph)
325
+ : undefined;
326
+ locators.set(field, {
327
+ ...(paragraphOrdinal === undefined ? {} : { paragraphOrdinal }),
328
+ fieldOrdinal,
329
+ });
330
+ }
331
+ return locators;
332
+ }
333
+ /**
334
+ * Refresh the deterministic subset of complex fields in a main document story.
335
+ *
336
+ * Layout-dependent results are never synthesized. Callers may instead request
337
+ * `w:dirty="true"` on their begin markers so a layout-capable host recalculates
338
+ * them when the document is opened.
339
+ *
340
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.18
341
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.51
342
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.45
343
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.44
344
+ * @conformance ECMA-376 edition 5, Part 1 § 17.16.5.42
345
+ * @see https://github.com/UseJunior/safe-docx/issues/762
346
+ */
347
+ export function refreshDocumentFieldsXml(documentXml, options = {}) {
348
+ const document = parseXml(documentXml);
349
+ const fields = collectComplexFields(document);
350
+ const elements = enumerateElements(document);
351
+ const indexes = new Map(elements.map((element, index) => [element, index]));
352
+ const bookmarkRanges = resolveBookmarkRanges(elements);
353
+ const locators = fieldLocators(document, fields);
354
+ const outcomes = [];
355
+ let changed = false;
356
+ fields.forEach((field, index) => {
357
+ const classification = classifyFieldInstruction(fieldInstructionView(field));
358
+ const base = {
359
+ index,
360
+ locator: locators.get(field),
361
+ kind: classification.kind,
362
+ instruction: classification.normalizedInstruction,
363
+ target: classification.target,
364
+ };
365
+ const structuralReason = structuralRefreshBlocker(field, indexes, elements) ??
366
+ semanticRefreshBlocker(field, classification);
367
+ if (structuralReason) {
368
+ outcomes.push({ ...base, status: 'unsupported', reason: structuralReason });
369
+ return;
370
+ }
371
+ if (classification.evaluationClass === 'deterministic-ref') {
372
+ const bookmark = bookmarkRanges.get(classification.target);
373
+ if (!bookmark) {
374
+ outcomes.push({ ...base, status: 'unsupported', reason: 'bookmark-not-found' });
375
+ return;
376
+ }
377
+ if (typeof bookmark === 'string') {
378
+ outcomes.push({ ...base, status: 'unsupported', reason: bookmark });
379
+ return;
380
+ }
381
+ const projection = bookmarkText(indexes, elements, bookmark, field);
382
+ if (projection.reason) {
383
+ outcomes.push({ ...base, status: 'unsupported', reason: projection.reason });
384
+ return;
385
+ }
386
+ const replacement = replaceCachedResult(field, projection.value);
387
+ if (replacement === 'missing') {
388
+ outcomes.push({ ...base, status: 'unsupported', reason: 'missing-cached-result-text' });
389
+ return;
390
+ }
391
+ if (replacement === 'unchanged') {
392
+ outcomes.push({ ...base, status: 'unchanged', reason: 'cached-result-current' });
393
+ return;
394
+ }
395
+ changed = true;
396
+ outcomes.push({ ...base, status: 'evaluated' });
397
+ return;
398
+ }
399
+ if (classification.evaluationClass === 'layout-dependent' &&
400
+ options.markLayoutDependentDirty) {
401
+ const dirty = wAttribute(field.begin, 'dirty');
402
+ if (dirty !== 'true' && dirty !== '1') {
403
+ field.begin.setAttributeNS(W_NS, 'w:dirty', 'true');
404
+ changed = true;
405
+ outcomes.push({ ...base, status: 'dirtied' });
406
+ }
407
+ else {
408
+ outcomes.push({ ...base, status: 'unchanged', reason: 'already-dirty' });
409
+ }
410
+ return;
411
+ }
412
+ outcomes.push({
413
+ ...base,
414
+ status: classification.evaluationClass === 'layout-dependent'
415
+ ? 'preserved'
416
+ : 'unsupported',
417
+ reason: classification.evaluationClass === 'layout-dependent'
418
+ ? 'layout-refresh-not-requested'
419
+ : classification.reason,
420
+ });
421
+ });
422
+ return {
423
+ documentXml: changed ? serializeXml(document) : documentXml,
424
+ changed,
425
+ outcomes,
426
+ };
427
+ }
428
+ const ANCILLARY_STORY_PATTERN = /^word\/(header\d*|footer\d*|footnotes|endnotes|comments)\.xml$/u;
429
+ /**
430
+ * Field-bearing parts this operation does not read.
431
+ *
432
+ * Reported rather than ignored: a caller whose cross-references live in a
433
+ * header cannot tell an empty outcome list from a document without fields.
434
+ */
435
+ function skippedFieldStories(archive) {
436
+ return archive
437
+ .listFiles()
438
+ .filter((path) => ANCILLARY_STORY_PATTERN.test(path))
439
+ .sort();
440
+ }
441
+ /**
442
+ * Refresh supported fields in `word/document.xml` of a DOCX package.
443
+ *
444
+ * Only the main story is read. Any other field-bearing part present in the
445
+ * package is named in `skippedStories`.
446
+ */
447
+ export async function refreshDocxFields(document, options = {}) {
448
+ const archive = await DocxArchive.load(document);
449
+ const skippedStories = skippedFieldStories(archive);
450
+ const result = refreshDocumentFieldsXml(await archive.getDocumentXml(), options);
451
+ if (!result.changed) {
452
+ return { document, changed: false, outcomes: result.outcomes, skippedStories };
453
+ }
454
+ archive.setDocumentXml(result.documentXml);
455
+ return {
456
+ document: await archive.save(),
457
+ changed: true,
458
+ outcomes: result.outcomes,
459
+ skippedStories,
460
+ };
461
+ }
462
+ //# sourceMappingURL=field_evaluation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_evaluation.js","sourceRoot":"","sources":["../../src/primitives/field_evaluation.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * and supports reading, updating, and deleting footnotes.
6
6
  */
7
7
  import { DocxZip } from './zip.js';
8
- import { type StylesModel } from './styles.js';
8
+ import { type StylesModel, type ThemeModel } from './styles.js';
9
9
  import { type RevisionContext } from './track-changes-emitter.js';
10
10
  /**
11
11
  * One paragraph of a footnote body, retained at the same node-level fidelity as
@@ -53,6 +53,20 @@ export type AddFootnoteParams = {
53
53
  paragraphEl: Element;
54
54
  afterText?: string;
55
55
  text: string;
56
+ presentation?: FootnoteNotePresentation;
57
+ };
58
+ export type FootnoteRunStyle = {
59
+ bold?: boolean;
60
+ italic?: boolean;
61
+ underline?: boolean;
62
+ color?: string;
63
+ highlight?: 'black' | 'blue' | 'cyan' | 'green' | 'magenta' | 'red' | 'yellow' | 'white' | 'darkBlue' | 'darkCyan' | 'darkGreen' | 'darkMagenta' | 'darkRed' | 'darkYellow' | 'darkGray' | 'lightGray' | 'none';
64
+ };
65
+ export type FootnoteNotePresentation = {
66
+ prefix?: string;
67
+ prefixSeparator?: string;
68
+ prefixStyle?: FootnoteRunStyle;
69
+ bodyStyle?: FootnoteRunStyle;
56
70
  };
57
71
  export type AddFootnoteResult = {
58
72
  noteId: number;
@@ -73,8 +87,8 @@ export declare function bootstrapFootnoteParts(zip: DocxZip): Promise<BootstrapF
73
87
  * `text` and the plural anchor map are unaffected either way, so existing
74
88
  * callers that pass `(zip, documentXml)` keep their exact behavior.
75
89
  */
76
- export declare function getFootnotes(zip: DocxZip, documentXml: Document, styles?: StylesModel): Promise<Footnote[]>;
77
- export declare function getFootnote(zip: DocxZip, documentXml: Document, noteId: number, styles?: StylesModel): Promise<Footnote | null>;
90
+ export declare function getFootnotes(zip: DocxZip, documentXml: Document, styles?: StylesModel, theme?: ThemeModel): Promise<Footnote[]>;
91
+ export declare function getFootnote(zip: DocxZip, documentXml: Document, noteId: number, styles?: StylesModel, theme?: ThemeModel): Promise<Footnote | null>;
78
92
  export declare function addFootnote(documentXml: Document, zip: DocxZip, params: AddFootnoteParams, ctx?: RevisionContext): Promise<AddFootnoteResult>;
79
93
  export declare function updateFootnoteText(zip: DocxZip, params: {
80
94
  noteId: number;
@@ -1 +1 @@
1
- {"version":3,"file":"footnotes.d.ts","sourceRoot":"","sources":["../../src/primitives/footnotes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMnC,OAAO,EAAiD,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9F,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAuBpC;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAQF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAG/D;AAID,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiB3F;AAmID;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,QAAQ,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiErB;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAG1B;AAgFD,wBAAsB,WAAW,CAC/B,WAAW,EAAE,QAAQ,EACrB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,iBAAiB,EACzB,GAAG,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAqB5B;AA6OD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3C,GAAG,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAID,wBAAsB,cAAc,CAClC,WAAW,EAAE,QAAQ,EACrB,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC1B,GAAG,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
1
+ {"version":3,"file":"footnotes.d.ts","sourceRoot":"","sources":["../../src/primitives/footnotes.ts"],"names":[],"mappings":"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"}