@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/integration/generation-probes.d.ts.map +1 -1
- package/dist/integration/generation-probes.js +26 -21
- package/dist/integration/generation-probes.js.map +1 -1
- package/dist/integration/libreoffice-oracle.d.ts +6 -1
- package/dist/integration/libreoffice-oracle.d.ts.map +1 -1
- package/dist/integration/libreoffice-oracle.js +113 -44
- package/dist/integration/libreoffice-oracle.js.map +1 -1
- package/dist/integration/soffice-lock.d.ts +30 -0
- package/dist/integration/soffice-lock.d.ts.map +1 -0
- package/dist/integration/soffice-lock.js +308 -0
- package/dist/integration/soffice-lock.js.map +1 -0
- package/dist/primitives/accept_ai_edits.d.ts +8 -0
- package/dist/primitives/accept_ai_edits.d.ts.map +1 -1
- package/dist/primitives/accept_ai_edits.js +24 -4
- package/dist/primitives/accept_ai_edits.js.map +1 -1
- package/dist/primitives/accept_changes.d.ts +27 -1
- package/dist/primitives/accept_changes.d.ts.map +1 -1
- package/dist/primitives/accept_changes.js +57 -2
- package/dist/primitives/accept_changes.js.map +1 -1
- package/dist/primitives/comments.d.ts.map +1 -1
- package/dist/primitives/comments.js +2 -2
- package/dist/primitives/comments.js.map +1 -1
- package/dist/primitives/document.d.ts +1 -0
- package/dist/primitives/document.d.ts.map +1 -1
- package/dist/primitives/document.js +27 -14
- package/dist/primitives/document.js.map +1 -1
- package/dist/primitives/document_view-headings.d.ts.map +1 -1
- package/dist/primitives/document_view-headings.js +16 -6
- package/dist/primitives/document_view-headings.js.map +1 -1
- package/dist/primitives/footnotes.js +2 -2
- package/dist/primitives/footnotes.js.map +1 -1
- package/dist/primitives/formatting_tags.d.ts +6 -3
- package/dist/primitives/formatting_tags.d.ts.map +1 -1
- package/dist/primitives/formatting_tags.js +50 -44
- package/dist/primitives/formatting_tags.js.map +1 -1
- package/dist/primitives/paragraph-index.d.ts +28 -2
- package/dist/primitives/paragraph-index.d.ts.map +1 -1
- package/dist/primitives/paragraph-index.js +25 -6
- package/dist/primitives/paragraph-index.js.map +1 -1
- package/dist/primitives/styles.d.ts +88 -20
- package/dist/primitives/styles.d.ts.map +1 -1
- package/dist/primitives/styles.js +207 -40
- package/dist/primitives/styles.js.map +1 -1
- package/dist/primitives/xml.d.ts +43 -1
- package/dist/primitives/xml.d.ts.map +1 -1
- package/dist/primitives/xml.js +100 -10
- package/dist/primitives/xml.js.map +1 -1
- package/dist/primitives/zip.d.ts +6 -0
- package/dist/primitives/zip.d.ts.map +1 -1
- package/dist/primitives/zip.js +19 -4
- package/dist/primitives/zip.js.map +1 -1
- package/dist/shared/docx/DocxArchive.d.ts.map +1 -1
- package/dist/shared/docx/DocxArchive.js +6 -2
- package/dist/shared/docx/DocxArchive.js.map +1 -1
- package/package.json +3 -3
package/dist/primitives/xml.js
CHANGED
|
@@ -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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../../src/primitives/xml.ts"],"names":[],"mappings":"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"}
|
package/dist/primitives/zip.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/primitives/zip.js
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
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.
|
|
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.
|
|
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.
|
|
35
|
+
"vitest": "^4.1.11"
|
|
36
36
|
},
|
|
37
37
|
"engines": {
|
|
38
38
|
"node": ">=18.0.0"
|