@usejunior/docx-core 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/integration/generation-probes.d.ts.map +1 -1
  3. package/dist/integration/generation-probes.js +26 -21
  4. package/dist/integration/generation-probes.js.map +1 -1
  5. package/dist/integration/libreoffice-oracle.d.ts +6 -1
  6. package/dist/integration/libreoffice-oracle.d.ts.map +1 -1
  7. package/dist/integration/libreoffice-oracle.js +113 -44
  8. package/dist/integration/libreoffice-oracle.js.map +1 -1
  9. package/dist/integration/soffice-lock.d.ts +30 -0
  10. package/dist/integration/soffice-lock.d.ts.map +1 -0
  11. package/dist/integration/soffice-lock.js +308 -0
  12. package/dist/integration/soffice-lock.js.map +1 -0
  13. package/dist/primitives/accept_ai_edits.d.ts +8 -0
  14. package/dist/primitives/accept_ai_edits.d.ts.map +1 -1
  15. package/dist/primitives/accept_ai_edits.js +24 -4
  16. package/dist/primitives/accept_ai_edits.js.map +1 -1
  17. package/dist/primitives/accept_changes.d.ts +27 -1
  18. package/dist/primitives/accept_changes.d.ts.map +1 -1
  19. package/dist/primitives/accept_changes.js +57 -2
  20. package/dist/primitives/accept_changes.js.map +1 -1
  21. package/dist/primitives/comments.d.ts.map +1 -1
  22. package/dist/primitives/comments.js +2 -2
  23. package/dist/primitives/comments.js.map +1 -1
  24. package/dist/primitives/document.d.ts +1 -0
  25. package/dist/primitives/document.d.ts.map +1 -1
  26. package/dist/primitives/document.js +27 -14
  27. package/dist/primitives/document.js.map +1 -1
  28. package/dist/primitives/document_view-headings.d.ts.map +1 -1
  29. package/dist/primitives/document_view-headings.js +16 -6
  30. package/dist/primitives/document_view-headings.js.map +1 -1
  31. package/dist/primitives/footnotes.js +2 -2
  32. package/dist/primitives/footnotes.js.map +1 -1
  33. package/dist/primitives/formatting_tags.d.ts +6 -3
  34. package/dist/primitives/formatting_tags.d.ts.map +1 -1
  35. package/dist/primitives/formatting_tags.js +50 -44
  36. package/dist/primitives/formatting_tags.js.map +1 -1
  37. package/dist/primitives/paragraph-index.d.ts +28 -2
  38. package/dist/primitives/paragraph-index.d.ts.map +1 -1
  39. package/dist/primitives/paragraph-index.js +25 -6
  40. package/dist/primitives/paragraph-index.js.map +1 -1
  41. package/dist/primitives/styles.d.ts +88 -20
  42. package/dist/primitives/styles.d.ts.map +1 -1
  43. package/dist/primitives/styles.js +207 -40
  44. package/dist/primitives/styles.js.map +1 -1
  45. package/dist/primitives/xml.d.ts +43 -1
  46. package/dist/primitives/xml.d.ts.map +1 -1
  47. package/dist/primitives/xml.js +100 -10
  48. package/dist/primitives/xml.js.map +1 -1
  49. package/dist/primitives/zip.d.ts +6 -0
  50. package/dist/primitives/zip.d.ts.map +1 -1
  51. package/dist/primitives/zip.js +19 -4
  52. package/dist/primitives/zip.js.map +1 -1
  53. package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
  54. package/dist/shared/docx/DocxArchive.js +6 -2
  55. package/dist/shared/docx/DocxArchive.js.map +1 -1
  56. package/package.json +3 -3
@@ -1,22 +1,112 @@
1
1
  import { DOMParser, XMLSerializer } from '@xmldom/xmldom';
2
+ import JSZip from 'jszip';
2
3
  /**
3
4
  * Standard XML declaration for serialized OOXML parts. xmldom's serializer
4
5
  * omits the declaration, so every emitted part prepends this manually.
5
6
  */
6
7
  export const XML_DECL = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
7
- export function parseXml(xml) {
8
- // application/xml ensures XML parsing rules (vs HTML-ish parsing).
9
- // xmldom 0.9.x returns its own module-scoped Document type; cast to global
10
- // Document to avoid type conflicts with the DOM lib.
11
- const doc = new DOMParser().parseFromString(xml, 'application/xml');
12
- // xmldom uses a <parsererror> element for some failures; keep a minimal check.
13
- const parseErrors = doc.getElementsByTagName('parsererror');
14
- if (parseErrors && parseErrors.length > 0) {
15
- const msg = parseErrors[0]?.textContent?.trim() || 'XML parse error';
16
- throw new Error(msg);
8
+ const XML_WHITESPACE_BEFORE_MARKUP = /^[\t\n\r ]+(?=<)/;
9
+ /**
10
+ * Remove what may legally (BOM) or harmlessly (whitespace) precede an XML
11
+ * part's first `<`: one leading U+FEFF byte-order mark, then any XML
12
+ * whitespace before the first markup character (#1024). JSZip's
13
+ * `async('string')` keeps a BOM as U+FEFF, and xmldom rejects both a BOM
14
+ * character and whitespace in front of the `<?xml` declaration. Text that
15
+ * already starts with `<` is returned unchanged.
16
+ */
17
+ export function stripXmlLeadingNoise(xml) {
18
+ if (xml.charCodeAt(0) === 0x3c /* < */)
19
+ return xml;
20
+ const withoutBom = xml.charCodeAt(0) === 0xfeff ? xml.slice(1) : xml;
21
+ return withoutBom.replace(XML_WHITESPACE_BEFORE_MARKUP, '');
22
+ }
23
+ /** Archive entries whose text is XML: `.xml` parts and `.rels` relationship parts. */
24
+ export function isXmlPartPath(path) {
25
+ return /\.(xml|rels)$/i.test(path);
26
+ }
27
+ /**
28
+ * A package part failed to parse as XML. Names the part so the failure is
29
+ * actionable instead of a bare xmldom `ParseError` (#1024).
30
+ */
31
+ export class XmlPartParseError extends Error {
32
+ partName;
33
+ /** Which input package held the part, e.g. `original` or `revised`. */
34
+ source;
35
+ constructor(partName, cause, source) {
36
+ const detail = cause instanceof Error ? cause.message : String(cause);
37
+ const where = source ? ` in the ${source} document` : '';
38
+ super(`Failed to parse XML part ${partName}${where}: ${detail}`, { cause });
39
+ this.name = 'XmlPartParseError';
40
+ this.partName = partName;
41
+ this.source = source;
42
+ }
43
+ }
44
+ /** A raw xmldom `ParseError` that does not yet say which part failed. */
45
+ export function isUnattributedXmlParseError(error) {
46
+ return (error instanceof Error &&
47
+ !(error instanceof XmlPartParseError) &&
48
+ error.name === 'ParseError');
49
+ }
50
+ /**
51
+ * Rethrow helper for package-level entry points: when `error` is a raw xmldom
52
+ * `ParseError`, find the part that fails to parse in `buffer` and return a
53
+ * {@link XmlPartParseError} naming it; otherwise return `error` unchanged.
54
+ */
55
+ export async function attributeXmlParseError(error, buffer, source) {
56
+ if (!isUnattributedXmlParseError(error))
57
+ return error;
58
+ return (await findUnparseableXmlPart(buffer, source)) ?? error;
59
+ }
60
+ export function parseXml(xml, options) {
61
+ const text = stripXmlLeadingNoise(xml);
62
+ let doc;
63
+ try {
64
+ // application/xml ensures XML parsing rules (vs HTML-ish parsing).
65
+ // xmldom 0.9.x returns its own module-scoped Document type; cast to global
66
+ // Document to avoid type conflicts with the DOM lib.
67
+ doc = new DOMParser().parseFromString(text, 'application/xml');
68
+ // xmldom uses a <parsererror> element for some failures; keep a minimal check.
69
+ const parseErrors = doc.getElementsByTagName('parsererror');
70
+ if (parseErrors && parseErrors.length > 0) {
71
+ const msg = parseErrors[0]?.textContent?.trim() || 'XML parse error';
72
+ throw new Error(msg);
73
+ }
74
+ }
75
+ catch (error) {
76
+ if (options?.partName !== undefined)
77
+ throw new XmlPartParseError(options.partName, error);
78
+ throw error;
17
79
  }
18
80
  return doc;
19
81
  }
82
+ /**
83
+ * Parse every XML part of a package and return the first one that fails,
84
+ * or null when all parse. Used to name the offending part when a parse error
85
+ * surfaces from code that only held the part's text.
86
+ */
87
+ export async function findUnparseableXmlPart(buffer, source) {
88
+ let zip;
89
+ try {
90
+ zip = await JSZip.loadAsync(buffer);
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ const paths = Object.values(zip.files)
96
+ .filter((file) => !file.dir && isXmlPartPath(file.name))
97
+ .map((file) => file.name)
98
+ .sort();
99
+ for (const path of paths) {
100
+ const text = await zip.file(path).async('string');
101
+ try {
102
+ parseXml(text);
103
+ }
104
+ catch (error) {
105
+ return new XmlPartParseError(path, error, source);
106
+ }
107
+ }
108
+ return null;
109
+ }
20
110
  export function serializeXml(doc) {
21
111
  return new XMLSerializer().serializeToString(doc);
22
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/primitives/xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI1D;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,yDAAyD,CAAC;AAElF,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,mEAAmE;IACnE,2EAA2E;IAC3E,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAwB,CAAC;IAE3F,+EAA+E;IAC/E,MAAM,WAAW,GAAG,GAAG,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC5D,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAA6B;IACvD,OAAO,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/primitives/xml.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,12 @@ export declare function createZipBuffer(files: Record<string, string | Buffer |
42
42
  compressionLevel?: number;
43
43
  fileDate?: Date;
44
44
  }): Promise<Buffer>;
45
+ /**
46
+ * Read one entry of a zip buffer as text, or null when the entry is missing.
47
+ * An XML part is normalized like `DocxZip.readText`: a leading byte-order
48
+ * mark (and whitespace before the first `<`) is dropped, so the result can be
49
+ * handed straight to `parseXml`.
50
+ */
45
51
  export declare function readZipText(buffer: Buffer, path: string): Promise<string | null>;
46
52
  export declare function inspectZipEntries(buffer: Buffer): Promise<ZipEntryInfo[]>;
47
53
  //# sourceMappingURL=zip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../src/primitives/zip.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,MAAiC,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAaF,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAQ;IACnB,8DAA8D;IAC9D,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO;WAIM,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM1D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,SAAS,IAAI,MAAM,EAAE;IAQrB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAMvC,SAAS;CA8BxB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,EACnD,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GAClF,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKtF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAW/E"}
1
+ {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../src/primitives/zip.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,MAAiC,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAsBF,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAQ;IACnB,8DAA8D;IAC9D,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO;WAIM,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM1D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAM3C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,SAAS,IAAI,MAAM,EAAE;IAQrB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAMvC,SAAS;CA8BxB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,EACnD,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GAClF,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKtF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAW/E"}
@@ -1,4 +1,5 @@
1
1
  import JSZip from 'jszip';
2
+ import { isXmlPartPath, stripXmlLeadingNoise } from './xml.js';
2
3
  /**
3
4
  * Fixed ZIP entry date for archives whose bytes must depend only on their
4
5
  * content. JSZip stamps each entry it writes with the current time, and the
@@ -13,6 +14,14 @@ function safeNonNegativeInt(value) {
13
14
  return 0;
14
15
  return Math.floor(parsed);
15
16
  }
17
+ /**
18
+ * XML parts may legally begin with a BOM (and some producers emit whitespace
19
+ * before `<?xml`); strip it at read time so every consumer sees markup first.
20
+ * Re-emitted parts are written without it (#1024).
21
+ */
22
+ function normalizePartText(path, text) {
23
+ return isXmlPartPath(path) ? stripXmlLeadingNoise(text) : text;
24
+ }
16
25
  export class DocxZip {
17
26
  zip;
18
27
  /** Tail of the in-flight `toBuffer` chain; see `toBuffer`. */
@@ -24,17 +33,17 @@ export class DocxZip {
24
33
  const zip = await JSZip.loadAsync(buffer);
25
34
  return new DocxZip(zip);
26
35
  }
27
- readText(path) {
36
+ async readText(path) {
28
37
  const file = this.zip.file(path);
29
38
  if (!file)
30
39
  throw new Error(`Missing file in .docx: ${path}`);
31
- return file.async('text');
40
+ return normalizePartText(path, await file.async('text'));
32
41
  }
33
42
  async readTextOrNull(path) {
34
43
  const file = this.zip.file(path);
35
44
  if (!file)
36
45
  return null;
37
- return file.async('text');
46
+ return normalizePartText(path, await file.async('text'));
38
47
  }
39
48
  writeText(path, text) {
40
49
  // createFolders defaults to true and would add a directory entry (e.g.
@@ -117,12 +126,18 @@ export async function createZipBuffer(files, opts) {
117
126
  });
118
127
  return out;
119
128
  }
129
+ /**
130
+ * Read one entry of a zip buffer as text, or null when the entry is missing.
131
+ * An XML part is normalized like `DocxZip.readText`: a leading byte-order
132
+ * mark (and whitespace before the first `<`) is dropped, so the result can be
133
+ * handed straight to `parseXml`.
134
+ */
120
135
  export async function readZipText(buffer, path) {
121
136
  const zip = await JSZip.loadAsync(buffer);
122
137
  const file = zip.file(path);
123
138
  if (!file)
124
139
  return null;
125
- return file.async('text');
140
+ return normalizePartText(path, await file.async('text'));
126
141
  }
127
142
  export async function inspectZipEntries(buffer) {
128
143
  const zip = await JSZip.loadAsync(buffer);
@@ -1 +1 @@
1
- {"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/primitives/zip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/primitives/zip.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocxArchive.d.ts","sourceRoot":"","sources":["../../../src/shared/docx/DocxArchive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,2CAA2C;AAC3C,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC;AAEX;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO;IAIP;;;;;OAKG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcvD;;;;OAIG;WACU,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAmC3C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI;IAQ5D;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQnD,+EAA+E;IACzE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMzD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI;IAQhF;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAQrB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI/C;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAe7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAKnC;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG7B"}
1
+ {"version":3,"file":"DocxArchive.d.ts","sourceRoot":"","sources":["../../../src/shared/docx/DocxArchive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,2CAA2C;AAC3C,eAAO,MAAM,UAAU;;;;;;;;;;CAUb,CAAC;AAEX;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO;IAIP;;;;;OAKG;WACU,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAcvD;;;;OAIG;WACU,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAmC3C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAUvC;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI;IAQ5D;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASnD,+EAA+E;IACzE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMzD;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI;IAQhF;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAQrB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI/C;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAe7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAKnC;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;CAG7B"}
@@ -5,6 +5,7 @@
5
5
  * providing access to document.xml and other parts.
6
6
  */
7
7
  import JSZip from 'jszip';
8
+ import { isXmlPartPath, stripXmlLeadingNoise } from '../../primitives/xml.js';
8
9
  /** Standard paths within a DOCX archive */
9
10
  export const DOCX_PATHS = {
10
11
  DOCUMENT: 'word/document.xml',
@@ -79,7 +80,9 @@ export class DocxArchive {
79
80
  if (!file) {
80
81
  throw new Error('Document XML not found');
81
82
  }
82
- return file.async('string');
83
+ // A leading BOM or whitespace before `<?xml` is legal on disk but breaks
84
+ // xmldom and string scans; parts are re-emitted without it (#1024).
85
+ return stripXmlLeadingNoise(await file.async('string'));
83
86
  }
84
87
  /**
85
88
  * Set the main document.xml content.
@@ -102,7 +105,8 @@ export class DocxArchive {
102
105
  if (!file) {
103
106
  return null;
104
107
  }
105
- return file.async('string');
108
+ const text = await file.async('string');
109
+ return isXmlPartPath(path) ? stripXmlLeadingNoise(text) : text;
106
110
  }
107
111
  /** Get an arbitrary archive entry without decoding binary payloads as text. */
108
112
  async getFileBuffer(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"DocxArchive.js","sourceRoot":"","sources":["../../../src/shared/docx/DocxArchive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocxArchive.js","sourceRoot":"","sources":["../../../src/shared/docx/DocxArchive.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.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "OOXML (.docx) core library: primitives, document generation, and track changes",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,14 +25,14 @@
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^22.10.0",
28
- "@usejunior/docx-compare": "^0.22.0",
28
+ "@usejunior/docx-compare": "^0.23.0",
29
29
  "@vitest/coverage-v8": "^4.1.8",
30
30
  "@vitest/runner": "^4.1.8",
31
31
  "allure-vitest": "^3.9.0",
32
32
  "fast-check": "^3.23.2",
33
33
  "tsx": "^4.19.2",
34
34
  "typescript": "^5.7.2",
35
- "vitest": "^4.1.8"
35
+ "vitest": "^4.1.11"
36
36
  },
37
37
  "engines": {
38
38
  "node": ">=18.0.0"