@usejunior/docx-core 0.15.0 → 0.17.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/README.md +18 -83
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/conformance-adapter.d.ts +14 -0
- package/dist/cli/conformance-adapter.d.ts.map +1 -1
- package/dist/cli/conformance-adapter.js +104 -12
- package/dist/cli/conformance-adapter.js.map +1 -1
- package/dist/footnotes.d.ts +7 -5
- package/dist/footnotes.d.ts.map +1 -1
- package/dist/footnotes.js +7 -5
- package/dist/footnotes.js.map +1 -1
- package/dist/generated/ecma-376-vocabulary.d.ts +93 -0
- package/dist/generated/ecma-376-vocabulary.d.ts.map +1 -0
- package/dist/generated/ecma-376-vocabulary.js +87 -0
- package/dist/generated/ecma-376-vocabulary.js.map +1 -0
- package/dist/generation/compile.js +2 -2
- package/dist/generation/compile.js.map +1 -1
- package/dist/generation/emit/comments-part.d.ts +2 -0
- package/dist/generation/emit/comments-part.d.ts.map +1 -1
- package/dist/generation/emit/comments-part.js +2 -0
- package/dist/generation/emit/comments-part.js.map +1 -1
- package/dist/generation/emit/paragraph.d.ts +3 -0
- package/dist/generation/emit/paragraph.d.ts.map +1 -1
- package/dist/generation/emit/paragraph.js +3 -0
- package/dist/generation/emit/paragraph.js.map +1 -1
- package/dist/generation/emit/run.d.ts.map +1 -1
- package/dist/generation/emit/run.js +6 -1
- package/dist/generation/emit/run.js.map +1 -1
- package/dist/generation/emit/settings-part.d.ts +12 -3
- package/dist/generation/emit/settings-part.d.ts.map +1 -1
- package/dist/generation/emit/settings-part.js +23 -5
- package/dist/generation/emit/settings-part.js.map +1 -1
- package/dist/generation/ordering.d.ts +3 -1
- package/dist/generation/ordering.d.ts.map +1 -1
- package/dist/generation/ordering.js +3 -1
- package/dist/generation/ordering.js.map +1 -1
- package/dist/generation/schema-enum-domains.d.ts +27 -0
- package/dist/generation/schema-enum-domains.d.ts.map +1 -0
- package/dist/generation/schema-enum-domains.js +69 -0
- package/dist/generation/schema-enum-domains.js.map +1 -0
- package/dist/generation/structural-checks.js +7 -1
- package/dist/generation/structural-checks.js.map +1 -1
- package/dist/generation/validate-spec.d.ts.map +1 -1
- package/dist/generation/validate-spec.js +149 -31
- package/dist/generation/validate-spec.js.map +1 -1
- package/dist/index.d.ts +7 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -46
- package/dist/index.js.map +1 -1
- package/dist/primitives/accept_ai_edits.d.ts +87 -0
- package/dist/primitives/accept_ai_edits.d.ts.map +1 -0
- package/dist/primitives/accept_ai_edits.js +253 -0
- package/dist/primitives/accept_ai_edits.js.map +1 -0
- package/dist/primitives/accept_changes.d.ts +36 -3
- package/dist/primitives/accept_changes.d.ts.map +1 -1
- package/dist/primitives/accept_changes.js +67 -31
- package/dist/primitives/accept_changes.js.map +1 -1
- package/dist/primitives/bookmarks.d.ts +44 -0
- package/dist/primitives/bookmarks.d.ts.map +1 -1
- package/dist/primitives/bookmarks.js +149 -11
- package/dist/primitives/bookmarks.js.map +1 -1
- package/dist/primitives/document.d.ts +53 -1
- package/dist/primitives/document.d.ts.map +1 -1
- package/dist/primitives/document.js +146 -2
- package/dist/primitives/document.js.map +1 -1
- package/dist/primitives/dom-helpers.d.ts.map +1 -1
- package/dist/primitives/dom-helpers.js +7 -2
- package/dist/primitives/dom-helpers.js.map +1 -1
- package/dist/primitives/index.d.ts +2 -1
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +2 -1
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/layout.d.ts.map +1 -1
- package/dist/primitives/layout.js +41 -1
- package/dist/primitives/layout.js.map +1 -1
- package/dist/primitives/namespaces.d.ts +2 -0
- package/dist/primitives/namespaces.d.ts.map +1 -1
- package/dist/primitives/namespaces.js +2 -0
- package/dist/primitives/namespaces.js.map +1 -1
- package/dist/primitives/reject_changes.d.ts +21 -2
- package/dist/primitives/reject_changes.d.ts.map +1 -1
- package/dist/primitives/reject_changes.js +71 -31
- package/dist/primitives/reject_changes.js.map +1 -1
- package/dist/primitives/relationships.d.ts +33 -0
- package/dist/primitives/relationships.d.ts.map +1 -1
- package/dist/primitives/relationships.js +84 -1
- package/dist/primitives/relationships.js.map +1 -1
- package/dist/primitives/sectPrAudit.d.ts +11 -2
- package/dist/primitives/sectPrAudit.d.ts.map +1 -1
- package/dist/primitives/sectPrAudit.js +148 -23
- package/dist/primitives/sectPrAudit.js.map +1 -1
- package/dist/primitives/track-changes-emitter.d.ts +4 -0
- package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
- package/dist/primitives/track-changes-emitter.js +5 -2
- package/dist/primitives/track-changes-emitter.js.map +1 -1
- package/dist/primitives/validate_ai_revisions.d.ts.map +1 -1
- package/dist/primitives/validate_ai_revisions.js +13 -5
- package/dist/primitives/validate_ai_revisions.js.map +1 -1
- package/dist/primitives/zip.d.ts.map +1 -1
- package/dist/primitives/zip.js +6 -2
- package/dist/primitives/zip.js.map +1 -1
- package/dist/shared/field-structure.d.ts +6 -0
- package/dist/shared/field-structure.d.ts.map +1 -1
- package/dist/shared/field-structure.js +6 -0
- package/dist/shared/field-structure.js.map +1 -1
- package/package.json +4 -8
- package/dist/atomizer.d.ts +0 -273
- package/dist/atomizer.d.ts.map +0 -1
- package/dist/atomizer.js +0 -1002
- package/dist/atomizer.js.map +0 -1
- package/dist/baselines/atomizer/atomLcs.d.ts +0 -82
- package/dist/baselines/atomizer/atomLcs.d.ts.map +0 -1
- package/dist/baselines/atomizer/atomLcs.js +0 -376
- package/dist/baselines/atomizer/atomLcs.js.map +0 -1
- package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts +0 -99
- package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts.map +0 -1
- package/dist/baselines/atomizer/auxiliaryIdCollision.js +0 -415
- package/dist/baselines/atomizer/auxiliaryIdCollision.js.map +0 -1
- package/dist/baselines/atomizer/consumerCompatibility.d.ts +0 -2
- package/dist/baselines/atomizer/consumerCompatibility.d.ts.map +0 -1
- package/dist/baselines/atomizer/consumerCompatibility.js +0 -188
- package/dist/baselines/atomizer/consumerCompatibility.js.map +0 -1
- package/dist/baselines/atomizer/debug.d.ts +0 -41
- package/dist/baselines/atomizer/debug.d.ts.map +0 -1
- package/dist/baselines/atomizer/debug.js +0 -85
- package/dist/baselines/atomizer/debug.js.map +0 -1
- package/dist/baselines/atomizer/documentReconstructor.d.ts +0 -75
- package/dist/baselines/atomizer/documentReconstructor.d.ts.map +0 -1
- package/dist/baselines/atomizer/documentReconstructor.js +0 -1449
- package/dist/baselines/atomizer/documentReconstructor.js.map +0 -1
- package/dist/baselines/atomizer/formattingFidelity.d.ts +0 -99
- package/dist/baselines/atomizer/formattingFidelity.d.ts.map +0 -1
- package/dist/baselines/atomizer/formattingFidelity.js +0 -449
- package/dist/baselines/atomizer/formattingFidelity.js.map +0 -1
- package/dist/baselines/atomizer/hierarchicalLcs.d.ts +0 -121
- package/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +0 -1
- package/dist/baselines/atomizer/hierarchicalLcs.js +0 -753
- package/dist/baselines/atomizer/hierarchicalLcs.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +0 -37
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +0 -189
- package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +0 -74
- package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-containers.js +0 -171
- package/dist/baselines/atomizer/inPlaceModifier-containers.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +0 -88
- package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-deletion.js +0 -326
- package/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +0 -85
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.js +0 -402
- package/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +0 -39
- package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-presplit.js +0 -265
- package/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +0 -62
- package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-shared.js +0 -139
- package/dist/baselines/atomizer/inPlaceModifier-shared.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +0 -198
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.js +0 -475
- package/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier.d.ts +0 -27
- package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +0 -1
- package/dist/baselines/atomizer/inPlaceModifier.js +0 -648
- package/dist/baselines/atomizer/inPlaceModifier.js.map +0 -1
- package/dist/baselines/atomizer/numberingIntegration.d.ts +0 -59
- package/dist/baselines/atomizer/numberingIntegration.d.ts.map +0 -1
- package/dist/baselines/atomizer/numberingIntegration.js +0 -209
- package/dist/baselines/atomizer/numberingIntegration.js.map +0 -1
- package/dist/baselines/atomizer/pipeline.d.ts +0 -103
- package/dist/baselines/atomizer/pipeline.d.ts.map +0 -1
- package/dist/baselines/atomizer/pipeline.js +0 -1160
- package/dist/baselines/atomizer/pipeline.js.map +0 -1
- package/dist/baselines/atomizer/premergeRuns.d.ts +0 -26
- package/dist/baselines/atomizer/premergeRuns.d.ts.map +0 -1
- package/dist/baselines/atomizer/premergeRuns.js +0 -153
- package/dist/baselines/atomizer/premergeRuns.js.map +0 -1
- package/dist/baselines/atomizer/trackChangesAcceptor.d.ts +0 -63
- package/dist/baselines/atomizer/trackChangesAcceptor.d.ts.map +0 -1
- package/dist/baselines/atomizer/trackChangesAcceptor.js +0 -254
- package/dist/baselines/atomizer/trackChangesAcceptor.js.map +0 -1
- package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts +0 -64
- package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +0 -1
- package/dist/baselines/atomizer/trackChangesAcceptorAst.js +0 -642
- package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +0 -1
- package/dist/baselines/atomizer/xmlToWmlElement.d.ts +0 -65
- package/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +0 -1
- package/dist/baselines/atomizer/xmlToWmlElement.js +0 -96
- package/dist/baselines/atomizer/xmlToWmlElement.js.map +0 -1
- package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts +0 -51
- package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts.map +0 -1
- package/dist/baselines/wmlcomparer/DocxodusWasm.js +0 -83
- package/dist/baselines/wmlcomparer/DocxodusWasm.js.map +0 -1
- package/dist/baselines/wmlcomparer/DotnetCli.d.ts +0 -40
- package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +0 -1
- package/dist/baselines/wmlcomparer/DotnetCli.js +0 -142
- package/dist/baselines/wmlcomparer/DotnetCli.js.map +0 -1
- package/dist/cli/compare-two.d.ts +0 -28
- package/dist/cli/compare-two.d.ts.map +0 -1
- package/dist/cli/compare-two.js +0 -112
- package/dist/cli/compare-two.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -25
- package/dist/cli/index.js.map +0 -1
- package/dist/compare-types.d.ts +0 -197
- package/dist/compare-types.d.ts.map +0 -1
- package/dist/compare-types.js +0 -2
- package/dist/compare-types.js.map +0 -1
- package/dist/format-detection.d.ts +0 -120
- package/dist/format-detection.d.ts.map +0 -1
- package/dist/format-detection.js +0 -339
- package/dist/format-detection.js.map +0 -1
- package/dist/move-detection.d.ts +0 -211
- package/dist/move-detection.d.ts.map +0 -1
- package/dist/move-detection.js +0 -390
- package/dist/move-detection.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usejunior/docx-core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "OOXML (.docx) core library: primitives,
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"description": "OOXML (.docx) core library: primitives, document generation, and track changes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
"check:spec-coverage:primitives": "node scripts/validate_primitives_openspec_coverage.mjs",
|
|
19
19
|
"check:spec-coverage:tag-density": "node scripts/validate_openspec_tag_density.mjs",
|
|
20
20
|
"check:spec-coverage-generation": "node scripts/validate_generation_openspec_coverage.mjs",
|
|
21
|
-
"lint": "tsc --noEmit"
|
|
22
|
-
"benchmark": "tsx src/benchmark/runner.ts",
|
|
23
|
-
"cli": "node dist/cli/index.js"
|
|
21
|
+
"lint": "tsc --noEmit"
|
|
24
22
|
},
|
|
25
23
|
"dependencies": {
|
|
26
24
|
"@xmldom/xmldom": "^0.9.10",
|
|
@@ -29,6 +27,7 @@
|
|
|
29
27
|
"devDependencies": {
|
|
30
28
|
"@types/diff-match-patch": "^1.0.36",
|
|
31
29
|
"@types/node": "^22.10.0",
|
|
30
|
+
"@usejunior/docx-compare": "^0.17.0",
|
|
32
31
|
"@vitest/coverage-v8": "^4.1.8",
|
|
33
32
|
"@vitest/runner": "^4.1.8",
|
|
34
33
|
"allure-vitest": "^3.9.0",
|
|
@@ -57,7 +56,6 @@
|
|
|
57
56
|
"docx",
|
|
58
57
|
"ooxml",
|
|
59
58
|
"word",
|
|
60
|
-
"comparison",
|
|
61
59
|
"track-changes",
|
|
62
60
|
"document-editing",
|
|
63
61
|
"serverless",
|
|
@@ -67,8 +65,6 @@
|
|
|
67
65
|
],
|
|
68
66
|
"license": "Apache-2.0",
|
|
69
67
|
"bin": {
|
|
70
|
-
"docx-comparison": "dist/cli/index.js",
|
|
71
|
-
"safe-docx-compare": "dist/cli/index.js",
|
|
72
68
|
"safe-docx-conformance-adapter": "dist/cli/conformance-adapter.js"
|
|
73
69
|
}
|
|
74
70
|
}
|
package/dist/atomizer.d.ts
DELETED
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Atomizer Module
|
|
3
|
-
*
|
|
4
|
-
* Provides factory functions for creating ComparisonUnitAtom instances.
|
|
5
|
-
* Implements the core atomization logic from WmlComparer.
|
|
6
|
-
*
|
|
7
|
-
* @see WmlComparer.cs ComparisonUnitAtom constructor (lines 2314-2343)
|
|
8
|
-
*/
|
|
9
|
-
import { ComparisonUnitAtom, CorrelationStatus, OpcPart, WmlElement } from './core-types.js';
|
|
10
|
-
/**
|
|
11
|
-
* Calculate SHA1 hash of a string.
|
|
12
|
-
*
|
|
13
|
-
* Used for quick equality checking of comparison units.
|
|
14
|
-
*
|
|
15
|
-
* @param content - The string content to hash
|
|
16
|
-
* @returns Hexadecimal SHA1 hash string
|
|
17
|
-
*/
|
|
18
|
-
export declare function sha1(content: string): string;
|
|
19
|
-
/**
|
|
20
|
-
* Calculate SHA1 hash for a WmlElement.
|
|
21
|
-
*
|
|
22
|
-
* Includes tag name, attributes, and text content for uniqueness.
|
|
23
|
-
* Excludes presentation-only attributes like xml:space that don't affect content.
|
|
24
|
-
*
|
|
25
|
-
* @param element - The element to hash
|
|
26
|
-
* @returns Hexadecimal SHA1 hash string
|
|
27
|
-
*/
|
|
28
|
-
export declare function hashElement(element: WmlElement): string;
|
|
29
|
-
/**
|
|
30
|
-
* Find a revision tracking element in the ancestor chain.
|
|
31
|
-
*
|
|
32
|
-
* Searches ancestors from nearest to root for w:ins, w:del, w:moveFrom, or w:moveTo.
|
|
33
|
-
*
|
|
34
|
-
* @param ancestors - Ancestor elements from root to parent
|
|
35
|
-
* @returns The revision tracking element if found, undefined otherwise
|
|
36
|
-
*/
|
|
37
|
-
export declare function findRevisionTrackingElement(ancestors: WmlElement[]): WmlElement | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* Determine initial correlation status from revision tracking element.
|
|
40
|
-
*
|
|
41
|
-
* @param revTrackElement - The revision tracking element (if any)
|
|
42
|
-
* @returns Initial correlation status
|
|
43
|
-
*/
|
|
44
|
-
export declare function getStatusFromRevisionTracking(revTrackElement: WmlElement | undefined): CorrelationStatus;
|
|
45
|
-
/**
|
|
46
|
-
* Extract Unid attributes from ancestor elements.
|
|
47
|
-
*
|
|
48
|
-
* WmlComparer uses w:Unid attributes to correlate elements between documents.
|
|
49
|
-
*
|
|
50
|
-
* @param ancestors - Ancestor elements from root to parent
|
|
51
|
-
* @returns Array of Unid values found in ancestors
|
|
52
|
-
*/
|
|
53
|
-
export declare function extractAncestorUnids(ancestors: WmlElement[]): string[];
|
|
54
|
-
/**
|
|
55
|
-
* Tag names that are paragraph-level OOXML markers.
|
|
56
|
-
*
|
|
57
|
-
* These elements are valid as direct children of <w:p> (and revision wrappers
|
|
58
|
-
* like <w:ins>/<w:del>/<w:moveFrom>/<w:moveTo>) but never inside <w:r>. The
|
|
59
|
-
* rebuild reconstructor emits them as siblings of <w:r>, not leaves wrapped in
|
|
60
|
-
* a synthetic run.
|
|
61
|
-
*
|
|
62
|
-
* Scope: commentRange, bookmark, moveFromRange / moveToRange, and
|
|
63
|
-
* range-permission (permStart / permEnd) markers. Explicit move-range markers
|
|
64
|
-
* coexist with the synthetic emission in wrapWithMoveFrom and wrapWithMoveTo:
|
|
65
|
-
* the reconstructor suppresses synthesis for paragraphs whose atom stream
|
|
66
|
-
* already carries explicit markers of the same kind, so the two paths never
|
|
67
|
-
* double-emit.
|
|
68
|
-
*
|
|
69
|
-
* @conformance ECMA-376 edition 5, Part 1 § 17.13.5
|
|
70
|
-
* @see https://github.com/UseJunior/safe-docx/issues/110
|
|
71
|
-
* @see https://github.com/UseJunior/safe-docx/issues/111
|
|
72
|
-
*/
|
|
73
|
-
export declare const PARAGRAPH_LEVEL_TAGS: Set<string>;
|
|
74
|
-
/**
|
|
75
|
-
* Special tag name for empty paragraph boundary atoms.
|
|
76
|
-
* These atoms are created for paragraphs that have no content (only w:pPr).
|
|
77
|
-
*/
|
|
78
|
-
export declare const EMPTY_PARAGRAPH_TAG = "__emptyParagraph__";
|
|
79
|
-
export interface AtomizeTreeOptions {
|
|
80
|
-
/**
|
|
81
|
-
* Clone leaf nodes into atom.contentElement instead of reusing the parsed AST nodes.
|
|
82
|
-
*
|
|
83
|
-
* This prevents boundary normalization (merge/split) from mutating the document AST,
|
|
84
|
-
* which is required for safe `reconstructionMode: 'inplace'`.
|
|
85
|
-
*
|
|
86
|
-
* Default: false (preserve historical behavior/perf).
|
|
87
|
-
*/
|
|
88
|
-
cloneLeafNodes?: boolean;
|
|
89
|
-
/**
|
|
90
|
-
* Allow normalization to merge atoms across run boundaries if formatting matches.
|
|
91
|
-
*
|
|
92
|
-
* For `reconstructionMode: 'inplace'`, this should usually be false so that atom
|
|
93
|
-
* ancestry continues to point at the correct run for wrapping.
|
|
94
|
-
*
|
|
95
|
-
* Default: true.
|
|
96
|
-
*/
|
|
97
|
-
mergeAcrossRuns?: boolean;
|
|
98
|
-
/**
|
|
99
|
-
* Allow punctuation normalization to merge across run boundaries.
|
|
100
|
-
*
|
|
101
|
-
* Default: true.
|
|
102
|
-
*/
|
|
103
|
-
mergePunctuationAcrossRuns?: boolean;
|
|
104
|
-
/**
|
|
105
|
-
* Split text atoms on word boundaries for fine-grained diffs.
|
|
106
|
-
*
|
|
107
|
-
* Default: true.
|
|
108
|
-
*/
|
|
109
|
-
splitTextIntoWords?: boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Atomize paragraph-level markers (commentRange*, bookmark*, moveFromRange*,
|
|
112
|
-
* moveToRange*, perm* — see PARAGRAPH_LEVEL_TAGS) so the rebuild
|
|
113
|
-
* reconstructor can re-emit them as siblings of <w:r>.
|
|
114
|
-
*
|
|
115
|
-
* MUST be false for inplace mode. Inplace handlers are run-anchored and
|
|
116
|
-
* silently no-op on atoms with no sourceRunElement, but inplace's bookmark
|
|
117
|
-
* reconciliation breaks if bookmarkStart/End atoms enter the stream
|
|
118
|
-
* (orphaned bookmark warnings, round-trip safety check fails).
|
|
119
|
-
*
|
|
120
|
-
* Default: false.
|
|
121
|
-
*/
|
|
122
|
-
atomizeParagraphLevelMarkers?: boolean;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Check if an element is a leaf node for atomization.
|
|
126
|
-
*
|
|
127
|
-
* Leaf nodes are the smallest units that can be compared.
|
|
128
|
-
*
|
|
129
|
-
* @param element - The element to check
|
|
130
|
-
* @returns True if this is a leaf node
|
|
131
|
-
*/
|
|
132
|
-
export declare function isLeafNode(element: WmlElement): boolean;
|
|
133
|
-
/**
|
|
134
|
-
* Check if an element is a paragraph-level OOXML marker.
|
|
135
|
-
*
|
|
136
|
-
* Paragraph-level markers (PARAGRAPH_LEVEL_TAGS: commentRange*, bookmark*,
|
|
137
|
-
* moveFromRange*, moveToRange*, perm*) are
|
|
138
|
-
* atomized only when they sit inside a <w:p> ancestor — body/table-sibling
|
|
139
|
-
* placements stay out of the atom stream and are handled by the scaffold-strip
|
|
140
|
-
* block in the reconstructor.
|
|
141
|
-
*/
|
|
142
|
-
export declare function isParagraphLevelLeaf(element: WmlElement): boolean;
|
|
143
|
-
/**
|
|
144
|
-
* Options for creating a ComparisonUnitAtom.
|
|
145
|
-
*/
|
|
146
|
-
export interface CreateAtomOptions {
|
|
147
|
-
/** The leaf element (w:t, w:br, etc.) */
|
|
148
|
-
contentElement: WmlElement;
|
|
149
|
-
/** Ancestor elements from root to parent of contentElement */
|
|
150
|
-
ancestors: WmlElement[];
|
|
151
|
-
/** The OPC part this atom belongs to */
|
|
152
|
-
part: OpcPart;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Create a ComparisonUnitAtom from a leaf element.
|
|
156
|
-
*
|
|
157
|
-
* Replicates the C# ComparisonUnitAtom constructor logic:
|
|
158
|
-
* 1. Finds revision tracking elements in ancestors
|
|
159
|
-
* 2. Sets initial correlation status based on revision type
|
|
160
|
-
* 3. Extracts ancestor Unids for correlation
|
|
161
|
-
* 4. Calculates SHA1 hash for equality checking
|
|
162
|
-
*
|
|
163
|
-
* @param options - Options containing element, ancestors, and part
|
|
164
|
-
* @returns A new ComparisonUnitAtom
|
|
165
|
-
*
|
|
166
|
-
* @see WmlComparer.cs lines 2314-2343
|
|
167
|
-
*/
|
|
168
|
-
export declare function createComparisonUnitAtom(options: CreateAtomOptions): ComparisonUnitAtom;
|
|
169
|
-
/**
|
|
170
|
-
* Atomize a document tree into a flat list of ComparisonUnitAtoms.
|
|
171
|
-
*
|
|
172
|
-
* Recursively traverses the tree, creating atoms for each leaf node.
|
|
173
|
-
* Also creates special atoms for empty paragraphs to preserve document structure.
|
|
174
|
-
*
|
|
175
|
-
* @param node - The current node in the tree
|
|
176
|
-
* @param ancestors - Ancestor elements from root to parent of node
|
|
177
|
-
* @param part - The OPC part this tree belongs to
|
|
178
|
-
* @returns Array of ComparisonUnitAtoms from leaf nodes
|
|
179
|
-
*/
|
|
180
|
-
export declare function atomizeTree(node: WmlElement, ancestors: WmlElement[], part: OpcPart, options?: AtomizeTreeOptions): {
|
|
181
|
-
atoms: ComparisonUnitAtom[];
|
|
182
|
-
emptyParagraphCount: number;
|
|
183
|
-
};
|
|
184
|
-
/**
|
|
185
|
-
* Get all ancestors of a node by following parent references.
|
|
186
|
-
*
|
|
187
|
-
* @param node - The node to get ancestors for
|
|
188
|
-
* @returns Array of ancestors from root to immediate parent
|
|
189
|
-
*/
|
|
190
|
-
export declare function getAncestors(node: WmlElement): WmlElement[];
|
|
191
|
-
/**
|
|
192
|
-
* Assign paragraph indices to atoms based on their w:p ancestors.
|
|
193
|
-
*
|
|
194
|
-
* This enables paragraph grouping in the document reconstructor when
|
|
195
|
-
* merging atoms from different source trees (original vs revised).
|
|
196
|
-
*
|
|
197
|
-
* @param atoms - Array of atoms to assign indices to
|
|
198
|
-
*/
|
|
199
|
-
export declare function assignParagraphIndices(atoms: ComparisonUnitAtom[]): void;
|
|
200
|
-
/**
|
|
201
|
-
* Special tag name for collapsed field atoms.
|
|
202
|
-
* These represent Word field codes (REF, PAGEREF, etc.) collapsed to their visible result.
|
|
203
|
-
*/
|
|
204
|
-
export declare const COLLAPSED_FIELD_TAG = "__collapsedField__";
|
|
205
|
-
/**
|
|
206
|
-
* Collapse field sequences into single atoms based on visible text.
|
|
207
|
-
*
|
|
208
|
-
* Word fields consist of:
|
|
209
|
-
* - w:fldChar[begin] - field start
|
|
210
|
-
* - w:instrText - field instruction (e.g., "REF _Ref123 \h")
|
|
211
|
-
* - w:fldChar[separate] - separates instruction from result
|
|
212
|
-
* - w:t (one or more) - visible result text
|
|
213
|
-
* - w:fldChar[end] - field end
|
|
214
|
-
*
|
|
215
|
-
* This function collapses each field sequence into a single atom whose hash
|
|
216
|
-
* is based only on the visible text. This allows matching between:
|
|
217
|
-
* - Hardcoded text: "2.6"
|
|
218
|
-
* - Field reference: [REF field]2.6[/field]
|
|
219
|
-
*
|
|
220
|
-
* Both will produce atoms with the same hash if the visible text matches.
|
|
221
|
-
*
|
|
222
|
-
* NOTE: Multi-paragraph fields (like TOC, INDEX) are NOT collapsed because
|
|
223
|
-
* they would lose paragraph structure information.
|
|
224
|
-
*
|
|
225
|
-
* @param atoms - Array of atoms from atomization
|
|
226
|
-
* @returns Array with field sequences collapsed to single atoms
|
|
227
|
-
*/
|
|
228
|
-
export declare function collapseFieldSequences(atoms: ComparisonUnitAtom[]): ComparisonUnitAtom[];
|
|
229
|
-
/**
|
|
230
|
-
* Split all w:t atoms into word-level atoms.
|
|
231
|
-
*
|
|
232
|
-
* @param atoms - Array of atoms
|
|
233
|
-
* @returns Array with w:t atoms split into words
|
|
234
|
-
*/
|
|
235
|
-
export declare function splitAtomsIntoWords(atoms: ComparisonUnitAtom[]): ComparisonUnitAtom[];
|
|
236
|
-
/**
|
|
237
|
-
* Find the nearest `w:hyperlink` ancestor of an atom, or null.
|
|
238
|
-
*
|
|
239
|
-
* Boundary normalization must never merge text atoms across a hyperlink
|
|
240
|
-
* boundary: the surviving atom keeps a single ancestor chain, so a
|
|
241
|
-
* cross-boundary merge either absorbs adjacent plain text into the link
|
|
242
|
-
* (formatting bleed) or detaches link text from its wrapper.
|
|
243
|
-
*
|
|
244
|
-
* @conformance ECMA-376 edition 5, Part 1 § 17.16.22
|
|
245
|
-
* @see https://github.com/UseJunior/safe-docx/issues/368
|
|
246
|
-
*/
|
|
247
|
-
export declare function nearestHyperlinkAncestor(atom: ComparisonUnitAtom): WmlElement | null;
|
|
248
|
-
/**
|
|
249
|
-
* Merge punctuation-only atoms with preceding text.
|
|
250
|
-
*
|
|
251
|
-
* This handles cases where documents have different w:t boundaries around
|
|
252
|
-
* punctuation (e.g., "Conduct" + "," vs "Conduct,"). Punctuation is merged
|
|
253
|
-
* with the preceding word regardless of run formatting differences.
|
|
254
|
-
*
|
|
255
|
-
* @param atoms - Array of atoms
|
|
256
|
-
* @returns Atoms with punctuation merged into preceding text
|
|
257
|
-
*/
|
|
258
|
-
export declare function mergePunctuationAtoms(atoms: ComparisonUnitAtom[], options?: Required<Pick<AtomizeTreeOptions, 'mergePunctuationAcrossRuns'>>): ComparisonUnitAtom[];
|
|
259
|
-
/**
|
|
260
|
-
* Merge contiguous w:t atoms within the same run into single atoms.
|
|
261
|
-
*
|
|
262
|
-
* This normalization ensures that identical text split differently across
|
|
263
|
-
* w:t elements in original vs revised documents will produce matching hashes.
|
|
264
|
-
*
|
|
265
|
-
* Example:
|
|
266
|
-
* Before: ["Def", "initions"] (2 atoms)
|
|
267
|
-
* After: ["Definitions"] (1 atom)
|
|
268
|
-
*
|
|
269
|
-
* @param atoms - Array of atoms from atomization
|
|
270
|
-
* @returns Normalized array with contiguous text atoms merged
|
|
271
|
-
*/
|
|
272
|
-
export declare function mergeContiguousTextAtoms(atoms: ComparisonUnitAtom[], options?: Required<Pick<AtomizeTreeOptions, 'mergeAcrossRuns'>>): ComparisonUnitAtom[];
|
|
273
|
-
//# sourceMappingURL=atomizer.d.ts.map
|
package/dist/atomizer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"atomizer.d.ts","sourceRoot":"","sources":["../src/atomizer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,UAAU,EACX,MAAM,iBAAiB,CAAC;AAuBzB;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5C;AAWD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAsBvD;AAWD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,UAAU,EAAE,GACtB,UAAU,GAAG,SAAS,CASxB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,UAAU,GAAG,SAAS,GACtC,iBAAiB,CAiBnB;AAMD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAStE;AAgDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,aAW/B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;;;OAWG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAEjE;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,cAAc,EAAE,UAAU,CAAC;IAC3B,8DAA8D;IAC9D,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,GACzB,kBAAkB,CA6BpB;AA6KD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,EAAE,EACvB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,kBAAuB,GAC/B;IAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAuC9D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,CAQ3D;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAkBxE;AAMD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AA+DxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kBAAkB,EAAE,GAC1B,kBAAkB,EAAE,CA8FtB;AAkFD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,kBAAkB,EAAE,GAC1B,kBAAkB,EAAE,CAQtB;AA8DD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,CASpF;AA2ID;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,EAAE,EAC3B,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAwC,GAC/G,kBAAkB,EAAE,CAiBtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EAAE,EAC3B,OAAO,GAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAA6B,GACzF,kBAAkB,EAAE,CAkBtB"}
|