@usejunior/docx-core 0.18.0 → 0.19.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/generation/emit/borders.d.ts +14 -0
- package/dist/generation/emit/borders.d.ts.map +1 -0
- package/dist/generation/emit/borders.js +45 -0
- package/dist/generation/emit/borders.js.map +1 -0
- package/dist/generation/emit/properties.d.ts +1 -1
- package/dist/generation/emit/properties.d.ts.map +1 -1
- package/dist/generation/emit/properties.js +4 -0
- package/dist/generation/emit/properties.js.map +1 -1
- package/dist/generation/emit/table.d.ts.map +1 -1
- package/dist/generation/emit/table.js +3 -31
- package/dist/generation/emit/table.js.map +1 -1
- package/dist/generation/index.d.ts +1 -1
- package/dist/generation/index.d.ts.map +1 -1
- package/dist/generation/types.d.ts +9 -0
- package/dist/generation/types.d.ts.map +1 -1
- package/dist/generation/types.js.map +1 -1
- package/dist/generation/validate-spec.d.ts.map +1 -1
- package/dist/generation/validate-spec.js +2 -0
- package/dist/generation/validate-spec.js.map +1 -1
- package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
- package/dist/integration/synthetic-docx-fixture.js +29 -20
- package/dist/integration/synthetic-docx-fixture.js.map +1 -1
- package/dist/primitives/formatting_tags.js +2 -2
- package/dist/primitives/formatting_tags.js.map +1 -1
- package/dist/primitives/index.d.ts +2 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +2 -0
- package/dist/primitives/index.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/opc-target.d.ts +24 -0
- package/dist/primitives/opc-target.d.ts.map +1 -0
- package/dist/primitives/opc-target.js +99 -0
- package/dist/primitives/opc-target.js.map +1 -0
- package/dist/primitives/sectPrAudit.d.ts +18 -1
- package/dist/primitives/sectPrAudit.d.ts.map +1 -1
- package/dist/primitives/sectPrAudit.js +110 -33
- package/dist/primitives/sectPrAudit.js.map +1 -1
- package/dist/primitives/serialize_html.d.ts.map +1 -1
- package/dist/primitives/serialize_html.js +18 -7
- package/dist/primitives/serialize_html.js.map +1 -1
- package/dist/primitives/track-changes-emitter.js +1 -1
- package/dist/primitives/track-changes-emitter.js.map +1 -1
- package/dist/shared/field-structure.d.ts +8 -0
- package/dist/shared/field-structure.d.ts.map +1 -1
- package/dist/shared/field-structure.js +74 -0
- package/dist/shared/field-structure.js.map +1 -1
- package/package.json +2 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/primitives/namespaces.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/primitives/namespaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type OpcRelationshipTargetMode = 'Internal' | 'External';
|
|
2
|
+
export type OpcRelationshipTargetIssue = 'empty_target' | 'invalid_target_mode' | 'external_target_not_allowed' | 'invalid_encoding' | 'unsafe_target' | 'package_escape' | 'empty_resolved_target' | 'invalid_external_target';
|
|
3
|
+
export declare class OpcRelationshipTargetError extends Error {
|
|
4
|
+
readonly issue: OpcRelationshipTargetIssue;
|
|
5
|
+
constructor(issue: OpcRelationshipTargetIssue, message: string);
|
|
6
|
+
}
|
|
7
|
+
export interface NormalizeOpcRelationshipTargetOptions {
|
|
8
|
+
ownerPart: string;
|
|
9
|
+
target: string;
|
|
10
|
+
targetMode?: string | null;
|
|
11
|
+
allowExternal?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface NormalizedOpcRelationshipTarget {
|
|
14
|
+
mode: OpcRelationshipTargetMode;
|
|
15
|
+
target: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Normalize one OPC relationship target under SafeDocX package-containment
|
|
19
|
+
* policy. Internal targets are decoded once, checked for ambiguous or unsafe
|
|
20
|
+
* URI/path forms, and resolved relative to the owning part. External targets
|
|
21
|
+
* are accepted only when the caller opts in.
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeOpcRelationshipTarget(options: NormalizeOpcRelationshipTargetOptions): NormalizedOpcRelationshipTarget;
|
|
24
|
+
//# sourceMappingURL=opc-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opc-target.d.ts","sourceRoot":"","sources":["../../src/primitives/opc-target.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,UAAU,CAAC;AAEhE,MAAM,MAAM,0BAA0B,GAClC,cAAc,GACd,qBAAqB,GACrB,6BAA6B,GAC7B,kBAAkB,GAClB,eAAe,GACf,gBAAgB,GAChB,uBAAuB,GACvB,yBAAyB,CAAC;AAE9B,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,KAAK,EAAE,0BAA0B;gBAAjC,KAAK,EAAE,0BAA0B,EAC1C,OAAO,EAAE,MAAM;CAKlB;AAED,MAAM,WAAW,qCAAqC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,yBAAyB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AA6FD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qCAAqC,GAC7C,+BAA+B,CAsBjC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { posix } from 'node:path';
|
|
2
|
+
export class OpcRelationshipTargetError extends Error {
|
|
3
|
+
issue;
|
|
4
|
+
constructor(issue, message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.issue = issue;
|
|
7
|
+
this.name = 'OpcRelationshipTargetError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function targetMode(value) {
|
|
11
|
+
if (value === null || value === undefined || value === 'Internal') {
|
|
12
|
+
return 'Internal';
|
|
13
|
+
}
|
|
14
|
+
if (value === 'External')
|
|
15
|
+
return 'External';
|
|
16
|
+
throw new OpcRelationshipTargetError('invalid_target_mode', `invalid relationship TargetMode '${value}'`);
|
|
17
|
+
}
|
|
18
|
+
function normalizeInternalTarget(ownerPart, target) {
|
|
19
|
+
if (!target) {
|
|
20
|
+
throw new OpcRelationshipTargetError('empty_target', 'empty internal relationship target');
|
|
21
|
+
}
|
|
22
|
+
if (target.includes('\\') || /[\u0000-\u001f\u007f?#]/u.test(target)) {
|
|
23
|
+
throw new OpcRelationshipTargetError('unsafe_target', `unsafe internal relationship target '${target}'`);
|
|
24
|
+
}
|
|
25
|
+
let decoded = target;
|
|
26
|
+
for (let pass = 0; pass <= target.length; pass++) {
|
|
27
|
+
if (/%(?:2f|5c)/iu.test(decoded)) {
|
|
28
|
+
throw new OpcRelationshipTargetError('unsafe_target', `encoded path separator in internal relationship target '${target}'`);
|
|
29
|
+
}
|
|
30
|
+
let next;
|
|
31
|
+
try {
|
|
32
|
+
next = decodeURIComponent(decoded);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new OpcRelationshipTargetError('invalid_encoding', `invalid encoded relationship target '${target}'`);
|
|
36
|
+
}
|
|
37
|
+
const rawSegments = decoded.split('/');
|
|
38
|
+
const nextSegments = next.split('/');
|
|
39
|
+
if (next.includes('\\') ||
|
|
40
|
+
/[\u0000-\u001f\u007f?#]/u.test(next) ||
|
|
41
|
+
next.startsWith('//') ||
|
|
42
|
+
next.includes(':') ||
|
|
43
|
+
nextSegments.some((segment, index) => (segment === '.' || segment === '..') && rawSegments[index] !== segment)) {
|
|
44
|
+
throw new OpcRelationshipTargetError('unsafe_target', `unsafe internal relationship target '${target}'`);
|
|
45
|
+
}
|
|
46
|
+
decoded = next;
|
|
47
|
+
if (!/%[0-9a-f]{2}/iu.test(decoded))
|
|
48
|
+
break;
|
|
49
|
+
if (pass === target.length) {
|
|
50
|
+
throw new OpcRelationshipTargetError('invalid_encoding', `excessively nested encoded relationship target '${target}'`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const decodedSegments = decoded.split('/');
|
|
54
|
+
const segments = decoded.startsWith('/')
|
|
55
|
+
? []
|
|
56
|
+
: posix.dirname(ownerPart).split('/').filter(Boolean);
|
|
57
|
+
for (const segment of decodedSegments) {
|
|
58
|
+
if (!segment || segment === '.')
|
|
59
|
+
continue;
|
|
60
|
+
if (segment === '..') {
|
|
61
|
+
if (segments.length === 0) {
|
|
62
|
+
throw new OpcRelationshipTargetError('package_escape', `relationship target escapes the package root: '${target}'`);
|
|
63
|
+
}
|
|
64
|
+
segments.pop();
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
segments.push(segment);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (segments.length === 0) {
|
|
71
|
+
throw new OpcRelationshipTargetError('empty_resolved_target', `empty resolved relationship target '${target}'`);
|
|
72
|
+
}
|
|
73
|
+
return segments.join('/');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Normalize one OPC relationship target under SafeDocX package-containment
|
|
77
|
+
* policy. Internal targets are decoded once, checked for ambiguous or unsafe
|
|
78
|
+
* URI/path forms, and resolved relative to the owning part. External targets
|
|
79
|
+
* are accepted only when the caller opts in.
|
|
80
|
+
*/
|
|
81
|
+
export function normalizeOpcRelationshipTarget(options) {
|
|
82
|
+
const mode = targetMode(options.targetMode);
|
|
83
|
+
if (mode === 'External') {
|
|
84
|
+
if (!options.allowExternal) {
|
|
85
|
+
throw new OpcRelationshipTargetError('external_target_not_allowed', `external relationship target is not allowed: '${options.target}'`);
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
return { mode, target: new URL(options.target).href };
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
throw new OpcRelationshipTargetError('invalid_external_target', `unsafe external relationship target '${options.target}'`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
mode,
|
|
96
|
+
target: normalizeInternalTarget(options.ownerPart, options.target),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=opc-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opc-target.js","sourceRoot":"","sources":["../../src/primitives/opc-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,28 @@
|
|
|
1
|
-
export type SectPrIssueType = 'missing_body' | 'multiple_body_level_sectpr' | 'body_level_sectpr_not_last' | 'sectpr_invalid_parent' | 'sectpr_in_ppr_without_paragraph_parent' | 'sectpr_reference_missing_rid' | 'sectpr_reference_invalid_type' | 'sectpr_duplicate_reference_type' | 'sectpr_reference_dangling_rid' | 'sectpr_duplicate_relationship_id' | 'sectpr_reference_wrong_relationship_type' | 'sectpr_reference_invalid_target' | 'sectpr_reference_missing_target_part' | 'sectpr_reference_wrong_target_root';
|
|
1
|
+
export type SectPrIssueType = 'missing_body' | 'multiple_body_level_sectpr' | 'body_level_sectpr_not_last' | 'sectpr_invalid_parent' | 'sectpr_in_ppr_without_paragraph_parent' | 'sectpr_reference_missing_rid' | 'sectpr_reference_invalid_type' | 'sectpr_reference_invalid_placement' | 'sectpr_duplicate_reference_type' | 'sectpr_reference_dangling_rid' | 'sectpr_duplicate_relationship_id' | 'sectpr_reference_wrong_relationship_type' | 'sectpr_reference_invalid_target_mode' | 'sectpr_reference_external_target' | 'sectpr_reference_invalid_target' | 'sectpr_reference_missing_target_part' | 'sectpr_reference_wrong_target_root';
|
|
2
2
|
export interface SectPrAuditIssue {
|
|
3
3
|
type: SectPrIssueType;
|
|
4
4
|
path: string;
|
|
5
5
|
message: string;
|
|
6
6
|
rid?: string;
|
|
7
|
+
sectionOrdinal?: number;
|
|
8
|
+
kind?: SectPrBindingKind;
|
|
9
|
+
role?: SectPrBindingRole;
|
|
10
|
+
targetPath?: string;
|
|
11
|
+
}
|
|
12
|
+
export type SectPrBindingKind = 'header' | 'footer';
|
|
13
|
+
export type SectPrBindingRole = 'default' | 'first' | 'even';
|
|
14
|
+
export interface SectPrBinding {
|
|
15
|
+
sectionOrdinal: number;
|
|
16
|
+
kind: SectPrBindingKind;
|
|
17
|
+
role: SectPrBindingRole;
|
|
18
|
+
rid: string;
|
|
19
|
+
targetPath: string;
|
|
20
|
+
path: string;
|
|
7
21
|
}
|
|
8
22
|
export interface SectPrAuditSummary {
|
|
9
23
|
ok: boolean;
|
|
10
24
|
issues: SectPrAuditIssue[];
|
|
25
|
+
bindings: SectPrBinding[];
|
|
11
26
|
stats: {
|
|
12
27
|
bodyLevelSectPrCount: number;
|
|
13
28
|
paragraphLevelSectPrCount: number;
|
|
@@ -22,6 +37,8 @@ export interface SectPrAuditSummary {
|
|
|
22
37
|
*
|
|
23
38
|
* @conformance ECMA-376 edition 5, Part 1 § 17.10.5
|
|
24
39
|
* @conformance ECMA-376 edition 5, Part 1 § 17.10.2
|
|
40
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.10.4
|
|
41
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.10.3
|
|
25
42
|
* @see https://github.com/UseJunior/safe-docx/issues/560
|
|
26
43
|
*/
|
|
27
44
|
export declare function auditSectPr(documentXml: string, documentRelsXml?: string | null, packageParts?: ReadonlyMap<string, string>): SectPrAuditSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectPrAudit.d.ts","sourceRoot":"","sources":["../../src/primitives/sectPrAudit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sectPrAudit.d.ts","sourceRoot":"","sources":["../../src/primitives/sectPrAudit.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,4BAA4B,GAC5B,4BAA4B,GAC5B,uBAAuB,GACvB,wCAAwC,GACxC,8BAA8B,GAC9B,+BAA+B,GAC/B,oCAAoC,GACpC,iCAAiC,GACjC,+BAA+B,GAC/B,kCAAkC,GAClC,0CAA0C,GAC1C,sCAAsC,GACtC,kCAAkC,GAClC,iCAAiC,GACjC,sCAAsC,GACtC,oCAAoC,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE;QACL,oBAAoB,EAAE,MAAM,CAAC;QAC7B,yBAAyB,EAAE,MAAM,CAAC;QAClC,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAsFD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,EAC/B,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,kBAAkB,CAsSpB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { parseXml } from './xml.js';
|
|
2
2
|
import { childElements } from './dom-helpers.js';
|
|
3
3
|
import { OOXML } from './namespaces.js';
|
|
4
|
+
import { OpcRelationshipTargetError, normalizeOpcRelationshipTarget, } from './opc-target.js';
|
|
4
5
|
function elementSiblingIndex(node) {
|
|
5
6
|
const parent = node.parentNode;
|
|
6
7
|
if (!parent)
|
|
@@ -54,7 +55,9 @@ function collectRelationships(documentRelsXml) {
|
|
|
54
55
|
relationshipsById.set(id, {
|
|
55
56
|
type: rel?.getAttribute('Type') ?? '',
|
|
56
57
|
target: rel?.getAttribute('Target') ?? '',
|
|
57
|
-
|
|
58
|
+
targetMode: rel?.hasAttribute('TargetMode')
|
|
59
|
+
? rel.getAttribute('TargetMode') ?? undefined
|
|
60
|
+
: undefined,
|
|
58
61
|
});
|
|
59
62
|
}
|
|
60
63
|
}
|
|
@@ -64,24 +67,6 @@ function collectRelationships(documentRelsXml) {
|
|
|
64
67
|
return { relationships: new Map(), duplicateIds: [] };
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
|
-
function resolveDocumentTarget(target) {
|
|
68
|
-
// Part-name fragments are outside this audit's explicit OPC target model.
|
|
69
|
-
if (target.includes('#'))
|
|
70
|
-
return undefined;
|
|
71
|
-
const parts = target.startsWith('/') ? [] : ['word'];
|
|
72
|
-
for (const segment of target.split('/')) {
|
|
73
|
-
if (!segment || segment === '.')
|
|
74
|
-
continue;
|
|
75
|
-
if (segment === '..') {
|
|
76
|
-
if (parts.length === 0)
|
|
77
|
-
return undefined;
|
|
78
|
-
parts.pop();
|
|
79
|
-
}
|
|
80
|
-
else
|
|
81
|
-
parts.push(segment);
|
|
82
|
-
}
|
|
83
|
-
return parts.length > 0 ? parts.join('/') : undefined;
|
|
84
|
-
}
|
|
85
70
|
function getRid(ref) {
|
|
86
71
|
return ref.getAttributeNS(OOXML.R_NS, 'id') || undefined;
|
|
87
72
|
}
|
|
@@ -92,12 +77,16 @@ function getRid(ref) {
|
|
|
92
77
|
*
|
|
93
78
|
* @conformance ECMA-376 edition 5, Part 1 § 17.10.5
|
|
94
79
|
* @conformance ECMA-376 edition 5, Part 1 § 17.10.2
|
|
80
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.10.4
|
|
81
|
+
* @conformance ECMA-376 edition 5, Part 1 § 17.10.3
|
|
95
82
|
* @see https://github.com/UseJunior/safe-docx/issues/560
|
|
96
83
|
*/
|
|
97
84
|
export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
98
85
|
const issues = [];
|
|
86
|
+
const bindings = [];
|
|
99
87
|
const relationshipCollection = collectRelationships(documentRelsXml);
|
|
100
88
|
const relationships = relationshipCollection.relationships;
|
|
89
|
+
const ambiguousRelationshipIds = new Set(relationshipCollection.duplicateIds);
|
|
101
90
|
for (const id of relationshipCollection.duplicateIds) {
|
|
102
91
|
issues.push({
|
|
103
92
|
type: 'sectpr_duplicate_relationship_id',
|
|
@@ -118,6 +107,7 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
118
107
|
message: 'Missing w:body element',
|
|
119
108
|
},
|
|
120
109
|
],
|
|
110
|
+
bindings,
|
|
121
111
|
stats: {
|
|
122
112
|
bodyLevelSectPrCount: 0,
|
|
123
113
|
paragraphLevelSectPrCount: 0,
|
|
@@ -152,7 +142,7 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
152
142
|
const sectPrNodes = Array.from(doc.getElementsByTagNameNS(OOXML.W_NS, 'sectPr'));
|
|
153
143
|
let paragraphLevelSectPrCount = 0;
|
|
154
144
|
let referenceCount = 0;
|
|
155
|
-
for (const sectPr of sectPrNodes) {
|
|
145
|
+
for (const [sectionOrdinal, sectPr] of sectPrNodes.entries()) {
|
|
156
146
|
const seenReferenceTypes = new Set();
|
|
157
147
|
const parent = sectPr.parentNode;
|
|
158
148
|
const parentTag = parent && parent.nodeType === 1 ? parent.tagName : '';
|
|
@@ -174,20 +164,54 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
174
164
|
message: `w:sectPr has invalid parent '${parentTag || '(none)'}'`,
|
|
175
165
|
});
|
|
176
166
|
}
|
|
167
|
+
const descendantReferences = Array.from(sectPr.getElementsByTagNameNS(OOXML.W_NS, '*')).filter((element) => {
|
|
168
|
+
if (element.localName !== 'headerReference' && element.localName !== 'footerReference') {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
let ancestor = element.parentNode;
|
|
172
|
+
while (ancestor && ancestor !== sectPr) {
|
|
173
|
+
if (ancestor.nodeType === 1 && isWmlElement(ancestor, 'sectPr'))
|
|
174
|
+
return false;
|
|
175
|
+
ancestor = ancestor.parentNode;
|
|
176
|
+
}
|
|
177
|
+
return ancestor === sectPr;
|
|
178
|
+
});
|
|
179
|
+
referenceCount += descendantReferences.length;
|
|
180
|
+
for (const reference of descendantReferences) {
|
|
181
|
+
if (reference.parentNode === sectPr)
|
|
182
|
+
continue;
|
|
183
|
+
const referenceType = reference.getAttributeNS(OOXML.W_NS, 'type') ?? '';
|
|
184
|
+
issues.push({
|
|
185
|
+
type: 'sectpr_reference_invalid_placement',
|
|
186
|
+
path: nodePath(reference),
|
|
187
|
+
message: `${reference.tagName} must be a direct child of w:sectPr`,
|
|
188
|
+
sectionOrdinal,
|
|
189
|
+
kind: reference.localName === 'headerReference' ? 'header' : 'footer',
|
|
190
|
+
role: REFERENCE_TYPES.has(referenceType)
|
|
191
|
+
? referenceType
|
|
192
|
+
: undefined,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
177
195
|
for (const child of childElements(sectPr)) {
|
|
178
196
|
const isHeaderReference = isWmlElement(child, 'headerReference');
|
|
179
197
|
const isFooterReference = isWmlElement(child, 'footerReference');
|
|
180
198
|
if (!isHeaderReference && !isFooterReference) {
|
|
181
199
|
continue;
|
|
182
200
|
}
|
|
183
|
-
|
|
201
|
+
const kind = isHeaderReference ? 'header' : 'footer';
|
|
184
202
|
const referenceType = child.getAttributeNS(OOXML.W_NS, 'type') ?? '';
|
|
203
|
+
const role = REFERENCE_TYPES.has(referenceType)
|
|
204
|
+
? referenceType
|
|
205
|
+
: undefined;
|
|
185
206
|
if (!REFERENCE_TYPES.has(referenceType)) {
|
|
186
207
|
issues.push({
|
|
187
208
|
type: 'sectpr_reference_invalid_type',
|
|
188
209
|
path: nodePath(child),
|
|
189
210
|
message: `${child.tagName} has missing or invalid w:type '${referenceType || '(missing)'}'; expected first, default, or even`,
|
|
211
|
+
sectionOrdinal,
|
|
212
|
+
kind,
|
|
190
213
|
});
|
|
214
|
+
continue;
|
|
191
215
|
}
|
|
192
216
|
else {
|
|
193
217
|
const referenceKey = `${isHeaderReference ? 'header' : 'footer'}:${referenceType}`;
|
|
@@ -196,7 +220,11 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
196
220
|
type: 'sectpr_duplicate_reference_type',
|
|
197
221
|
path: nodePath(child),
|
|
198
222
|
message: `${child.tagName} duplicates the '${referenceType}' role within this w:sectPr`,
|
|
223
|
+
sectionOrdinal,
|
|
224
|
+
kind,
|
|
225
|
+
role,
|
|
199
226
|
});
|
|
227
|
+
continue;
|
|
200
228
|
}
|
|
201
229
|
else {
|
|
202
230
|
seenReferenceTypes.add(referenceKey);
|
|
@@ -208,9 +236,14 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
208
236
|
type: 'sectpr_reference_missing_rid',
|
|
209
237
|
path: nodePath(child),
|
|
210
238
|
message: `${child.tagName} is missing r:id`,
|
|
239
|
+
sectionOrdinal,
|
|
240
|
+
kind,
|
|
241
|
+
role,
|
|
211
242
|
});
|
|
212
243
|
continue;
|
|
213
244
|
}
|
|
245
|
+
if (ambiguousRelationshipIds.has(rid))
|
|
246
|
+
continue;
|
|
214
247
|
const relationship = relationships.get(rid);
|
|
215
248
|
if (!relationship) {
|
|
216
249
|
issues.push({
|
|
@@ -218,31 +251,52 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
218
251
|
path: nodePath(child),
|
|
219
252
|
message: `${child.tagName} references missing relationship id '${rid}'`,
|
|
220
253
|
rid,
|
|
254
|
+
sectionOrdinal,
|
|
255
|
+
kind,
|
|
256
|
+
role,
|
|
221
257
|
});
|
|
222
258
|
continue;
|
|
223
259
|
}
|
|
224
|
-
const kind = isHeaderReference ? 'header' : 'footer';
|
|
225
260
|
const expectedType = `http://schemas.openxmlformats.org/officeDocument/2006/relationships/${kind}`;
|
|
226
|
-
if (relationship.type !== expectedType
|
|
261
|
+
if (relationship.type !== expectedType) {
|
|
227
262
|
issues.push({
|
|
228
263
|
type: 'sectpr_reference_wrong_relationship_type',
|
|
229
264
|
path: nodePath(child),
|
|
230
265
|
message: `${child.tagName} relationship '${rid}' has type '${relationship.type || '(missing)'}'`,
|
|
231
266
|
rid,
|
|
267
|
+
sectionOrdinal,
|
|
268
|
+
kind,
|
|
269
|
+
role,
|
|
270
|
+
});
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
let targetName;
|
|
274
|
+
try {
|
|
275
|
+
targetName = normalizeOpcRelationshipTarget({
|
|
276
|
+
ownerPart: 'word/document.xml',
|
|
277
|
+
target: relationship.target,
|
|
278
|
+
targetMode: relationship.targetMode,
|
|
279
|
+
}).target;
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
const targetError = error instanceof OpcRelationshipTargetError ? error : undefined;
|
|
283
|
+
const type = targetError?.issue === 'invalid_target_mode'
|
|
284
|
+
? 'sectpr_reference_invalid_target_mode'
|
|
285
|
+
: targetError?.issue === 'external_target_not_allowed'
|
|
286
|
+
? 'sectpr_reference_external_target'
|
|
287
|
+
: 'sectpr_reference_invalid_target';
|
|
288
|
+
issues.push({
|
|
289
|
+
type,
|
|
290
|
+
path: nodePath(child),
|
|
291
|
+
message: `${child.tagName} relationship '${rid}' has unsupported or malformed target '${relationship.target}': ${error instanceof Error ? error.message : String(error)}`,
|
|
292
|
+
rid,
|
|
293
|
+
sectionOrdinal,
|
|
294
|
+
kind,
|
|
295
|
+
role,
|
|
232
296
|
});
|
|
233
297
|
continue;
|
|
234
298
|
}
|
|
235
299
|
if (packageParts) {
|
|
236
|
-
const targetName = resolveDocumentTarget(relationship.target);
|
|
237
|
-
if (!targetName) {
|
|
238
|
-
issues.push({
|
|
239
|
-
type: 'sectpr_reference_invalid_target',
|
|
240
|
-
path: nodePath(child),
|
|
241
|
-
message: `${child.tagName} relationship '${rid}' has unsupported or malformed target '${relationship.target}'`,
|
|
242
|
-
rid,
|
|
243
|
-
});
|
|
244
|
-
continue;
|
|
245
|
-
}
|
|
246
300
|
const targetXml = packageParts.get(targetName);
|
|
247
301
|
if (!targetXml) {
|
|
248
302
|
issues.push({
|
|
@@ -250,6 +304,10 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
250
304
|
path: nodePath(child),
|
|
251
305
|
message: `${child.tagName} relationship '${rid}' resolves to missing part '${targetName}'`,
|
|
252
306
|
rid,
|
|
307
|
+
sectionOrdinal,
|
|
308
|
+
kind,
|
|
309
|
+
role,
|
|
310
|
+
targetPath: targetName,
|
|
253
311
|
});
|
|
254
312
|
continue;
|
|
255
313
|
}
|
|
@@ -262,7 +320,12 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
262
320
|
path: nodePath(child),
|
|
263
321
|
message: `${child.tagName} relationship '${rid}' targets <${actualRoot?.tagName ?? 'nothing'}>, expected WordprocessingML <${expectedRoot}>`,
|
|
264
322
|
rid,
|
|
323
|
+
sectionOrdinal,
|
|
324
|
+
kind,
|
|
325
|
+
role,
|
|
326
|
+
targetPath: targetName,
|
|
265
327
|
});
|
|
328
|
+
continue;
|
|
266
329
|
}
|
|
267
330
|
}
|
|
268
331
|
catch {
|
|
@@ -271,14 +334,28 @@ export function auditSectPr(documentXml, documentRelsXml, packageParts) {
|
|
|
271
334
|
path: nodePath(child),
|
|
272
335
|
message: `${child.tagName} relationship '${rid}' targets malformed XML`,
|
|
273
336
|
rid,
|
|
337
|
+
sectionOrdinal,
|
|
338
|
+
kind,
|
|
339
|
+
role,
|
|
340
|
+
targetPath: targetName,
|
|
274
341
|
});
|
|
342
|
+
continue;
|
|
275
343
|
}
|
|
276
344
|
}
|
|
345
|
+
bindings.push({
|
|
346
|
+
sectionOrdinal,
|
|
347
|
+
kind,
|
|
348
|
+
role: referenceType,
|
|
349
|
+
rid,
|
|
350
|
+
targetPath: targetName,
|
|
351
|
+
path: nodePath(child),
|
|
352
|
+
});
|
|
277
353
|
}
|
|
278
354
|
}
|
|
279
355
|
return {
|
|
280
356
|
ok: issues.length === 0,
|
|
281
357
|
issues,
|
|
358
|
+
bindings,
|
|
282
359
|
stats: {
|
|
283
360
|
bodyLevelSectPrCount: bodyLevelSectPrNodes.length,
|
|
284
361
|
paragraphLevelSectPrCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectPrAudit.js","sourceRoot":"","sources":["../../src/primitives/sectPrAudit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sectPrAudit.js","sourceRoot":"","sources":["../../src/primitives/sectPrAudit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize_html.d.ts","sourceRoot":"","sources":["../../src/primitives/serialize_html.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C;;;;GAIG;AACH,KAAK,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA0CxC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKhD;
|
|
1
|
+
{"version":3,"file":"serialize_html.d.ts","sourceRoot":"","sources":["../../src/primitives/serialize_html.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C;;;;GAIG;AACH,KAAK,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA0CxC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKhD;AAgDD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM,CA2B1E;AAiLD,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,gBAAgB,EAAE,EACzB,SAAS,GAAE,QAAQ,EAAO,EAC1B,IAAI,GAAE,oBAAyB,GAC9B,MAAM,CA4ER"}
|
|
@@ -84,10 +84,18 @@ function sanitizeFontFamily(raw) {
|
|
|
84
84
|
const clean = raw.replace(/[<>"';{}()]/g, '').trim();
|
|
85
85
|
return clean ? `'${clean}'` : null;
|
|
86
86
|
}
|
|
87
|
+
/** Decode the named entities emitted by `escapeHtmlAttribute` before semantic validation. */
|
|
88
|
+
function decodeHtmlAttribute(raw) {
|
|
89
|
+
return raw
|
|
90
|
+
?.replaceAll('<', '<')
|
|
91
|
+
.replaceAll('>', '>')
|
|
92
|
+
.replaceAll('"', '"')
|
|
93
|
+
.replaceAll('&', '&');
|
|
94
|
+
}
|
|
87
95
|
function fontTagToSpan(tag) {
|
|
88
|
-
const color = sanitizeColor(/color="([^"]*)"/.exec(tag)?.[1]);
|
|
89
|
-
const size = sanitizeFontSize(/size="([^"]*)"/.exec(tag)?.[1]);
|
|
90
|
-
const face = sanitizeFontFamily(/face="([^"]*)"/.exec(tag)?.[1]);
|
|
96
|
+
const color = sanitizeColor(decodeHtmlAttribute(/color="([^"]*)"/.exec(tag)?.[1]));
|
|
97
|
+
const size = sanitizeFontSize(decodeHtmlAttribute(/size="([^"]*)"/.exec(tag)?.[1]));
|
|
98
|
+
const face = sanitizeFontFamily(decodeHtmlAttribute(/face="([^"]*)"/.exec(tag)?.[1]));
|
|
91
99
|
const decls = [];
|
|
92
100
|
if (color)
|
|
93
101
|
decls.push(`color:${color}`);
|
|
@@ -130,10 +138,13 @@ export function inlineTagsToHtml(text, refs) {
|
|
|
130
138
|
else if (tag === '</font>')
|
|
131
139
|
out += '</span>';
|
|
132
140
|
else if (tag.startsWith('<a ')) {
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
const
|
|
136
|
-
|
|
141
|
+
// Rebuild the tag from the sole supported attribute. Literal document text can look like
|
|
142
|
+
// a TOON tag, so passing the input tag through would retain injected event attributes.
|
|
143
|
+
const rawHref = /href="([^"]*)"/.exec(tag)?.[1];
|
|
144
|
+
const href = decodeHtmlAttribute(rawHref);
|
|
145
|
+
out += href !== undefined && isSafeHref(href)
|
|
146
|
+
? `<a href="${escapeHtmlAttribute(href)}">`
|
|
147
|
+
: '<a>';
|
|
137
148
|
}
|
|
138
149
|
// <b>/<i>/<u> and `</a>` and the closers are already valid HTML — pass through.
|
|
139
150
|
else
|