pretext-pdf 0.9.2 → 0.9.3
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/CHANGELOG.md +27 -110
- package/README.md +795 -753
- package/dist/allowed-props.d.ts +40 -0
- package/dist/allowed-props.d.ts.map +1 -0
- package/dist/allowed-props.js +130 -0
- package/dist/allowed-props.js.map +1 -0
- package/dist/cli.js +19 -19
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/validate.d.ts +3 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +115 -3
- package/dist/validate.js.map +1 -1
- package/package.json +184 -184
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict validation: allowed properties for each element and sub-structure type.
|
|
3
|
+
* Enforced at runtime by strict: true validation.
|
|
4
|
+
* Compile-time drift guards via Exact<T, Keys> ensure types stay synchronized.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ALLOWED_PROPS: {
|
|
7
|
+
readonly paragraph: Set<"text" | "type" | "dir" | "fontSize" | "lineHeight" | "fontFamily" | "fontWeight" | "color" | "align" | "bgColor" | "spaceAfter" | "spaceBefore" | "keepTogether" | "underline" | "strikethrough" | "url" | "columns" | "columnGap" | "hyphenate" | "letterSpacing" | "smallCaps" | "tabularNumbers" | "annotation">;
|
|
8
|
+
readonly heading: Set<"text" | "type" | "dir" | "fontSize" | "lineHeight" | "fontFamily" | "fontWeight" | "color" | "align" | "bgColor" | "spaceAfter" | "spaceBefore" | "keepTogether" | "underline" | "strikethrough" | "url" | "hyphenate" | "letterSpacing" | "smallCaps" | "tabularNumbers" | "annotation" | "level" | "bookmark" | "anchor">;
|
|
9
|
+
readonly spacer: Set<"type" | "height">;
|
|
10
|
+
readonly table: Set<"type" | "dir" | "fontSize" | "spaceAfter" | "spaceBefore" | "columns" | "rows" | "headerRows" | "borderColor" | "borderWidth" | "headerBgColor" | "cellPaddingH" | "cellPaddingV">;
|
|
11
|
+
readonly image: Set<"type" | "align" | "spaceAfter" | "spaceBefore" | "height" | "width" | "src" | "format" | "float" | "floatWidth" | "floatGap" | "floatText" | "floatSpans" | "floatFontSize" | "floatFontFamily" | "floatColor">;
|
|
12
|
+
readonly svg: Set<"svg" | "type" | "align" | "spaceAfter" | "spaceBefore" | "height" | "width" | "src">;
|
|
13
|
+
readonly 'qr-code': Set<"type" | "align" | "spaceAfter" | "spaceBefore" | "data" | "size" | "errorCorrectionLevel" | "foreground" | "background" | "margin">;
|
|
14
|
+
readonly barcode: Set<"type" | "align" | "spaceAfter" | "spaceBefore" | "height" | "width" | "data" | "symbology" | "includeText">;
|
|
15
|
+
readonly chart: Set<"type" | "align" | "spaceAfter" | "spaceBefore" | "height" | "width" | "spec" | "caption">;
|
|
16
|
+
readonly list: Set<"type" | "fontSize" | "lineHeight" | "color" | "spaceAfter" | "spaceBefore" | "style" | "items" | "marker" | "indent" | "markerWidth" | "itemSpaceAfter" | "nestedNumberingStyle">;
|
|
17
|
+
readonly hr: Set<"type" | "color" | "spaceAfter" | "spaceBefore" | "thickness" | "spaceAbove" | "spaceBelow">;
|
|
18
|
+
readonly 'page-break': Set<"type">;
|
|
19
|
+
readonly code: Set<"text" | "language" | "type" | "dir" | "fontSize" | "lineHeight" | "fontFamily" | "color" | "bgColor" | "spaceAfter" | "spaceBefore" | "keepTogether" | "padding" | "highlightTheme">;
|
|
20
|
+
readonly 'rich-paragraph': Set<"type" | "dir" | "fontSize" | "lineHeight" | "align" | "bgColor" | "spaceAfter" | "spaceBefore" | "keepTogether" | "columns" | "columnGap" | "letterSpacing" | "smallCaps" | "tabularNumbers" | "spans">;
|
|
21
|
+
readonly blockquote: Set<"text" | "type" | "dir" | "fontSize" | "lineHeight" | "fontFamily" | "fontWeight" | "color" | "align" | "bgColor" | "spaceAfter" | "spaceBefore" | "keepTogether" | "underline" | "strikethrough" | "borderColor" | "borderWidth" | "padding" | "fontStyle" | "paddingH" | "paddingV">;
|
|
22
|
+
readonly toc: Set<"title" | "type" | "fontSize" | "fontFamily" | "spaceAfter" | "spaceBefore" | "showTitle" | "minLevel" | "maxLevel" | "titleFontSize" | "levelIndent" | "leader" | "entrySpacing">;
|
|
23
|
+
readonly 'toc-entry': Set<"text" | "type" | "fontFamily" | "fontWeight" | "level" | "levelIndent" | "leader" | "pageNumber">;
|
|
24
|
+
readonly comment: Set<"author" | "type" | "color" | "spaceAfter" | "contents" | "open">;
|
|
25
|
+
readonly 'form-field': Set<"type" | "fontSize" | "spaceAfter" | "spaceBefore" | "keepTogether" | "height" | "borderColor" | "width" | "backgroundColor" | "fieldType" | "name" | "label" | "placeholder" | "defaultValue" | "multiline" | "maxLength" | "checked" | "options" | "defaultSelected">;
|
|
26
|
+
readonly callout: Set<"content" | "title" | "type" | "dir" | "fontSize" | "lineHeight" | "fontFamily" | "fontWeight" | "color" | "spaceAfter" | "spaceBefore" | "keepTogether" | "borderColor" | "style" | "padding" | "paddingH" | "paddingV" | "backgroundColor" | "titleColor">;
|
|
27
|
+
readonly 'footnote-def': Set<"text" | "type" | "fontSize" | "fontFamily" | "spaceAfter" | "id">;
|
|
28
|
+
readonly 'float-group': Set<"image" | "content" | "type" | "spaceAfter" | "spaceBefore" | "float" | "floatWidth" | "floatGap">;
|
|
29
|
+
};
|
|
30
|
+
export declare const ALLOWED_PROPS_SUB: {
|
|
31
|
+
readonly document: Set<"header" | "footer" | "pageSize" | "margins" | "defaultFont" | "defaultFontSize" | "defaultLineHeight" | "fonts" | "watermark" | "encryption" | "signature" | "bookmarks" | "hyphenation" | "metadata" | "defaultParagraphStyle" | "sections" | "content" | "flattenForms" | "onImageLoadError" | "onFormFieldError" | "renderDate" | "allowedFileDirs">;
|
|
32
|
+
readonly metadata: Set<"title" | "author" | "subject" | "keywords" | "creator" | "language" | "producer">;
|
|
33
|
+
readonly 'column-def': Set<"align" | "width">;
|
|
34
|
+
readonly 'table-row': Set<"cells" | "isHeader">;
|
|
35
|
+
readonly 'table-cell': Set<"text" | "dir" | "fontSize" | "fontFamily" | "fontWeight" | "color" | "align" | "bgColor" | "tabularNumbers" | "colspan" | "rowspan">;
|
|
36
|
+
readonly 'list-item': Set<"text" | "dir" | "fontWeight" | "items">;
|
|
37
|
+
readonly 'inline-span': Set<"text" | "dir" | "fontSize" | "fontFamily" | "fontWeight" | "color" | "underline" | "strikethrough" | "url" | "letterSpacing" | "smallCaps" | "fontStyle" | "href" | "verticalAlign" | "footnoteRef">;
|
|
38
|
+
readonly annotation: Set<"author" | "color" | "contents" | "open">;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=allowed-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowed-props.d.ts","sourceRoot":"","sources":["../src/allowed-props.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8LH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;CAuBhB,CAAA;AAEV,eAAO,MAAM,iBAAiB;;;;;;;;;CASpB,CAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict validation: allowed properties for each element and sub-structure type.
|
|
3
|
+
* Enforced at runtime by strict: true validation.
|
|
4
|
+
* Compile-time drift guards via Exact<T, Keys> ensure types stay synchronized.
|
|
5
|
+
*/
|
|
6
|
+
// ─── Key arrays with compile-time assertions ──────────────────────────────────
|
|
7
|
+
const DOC_KEYS = [
|
|
8
|
+
'pageSize', 'margins', 'defaultFont', 'defaultFontSize', 'defaultLineHeight',
|
|
9
|
+
'fonts', 'header', 'footer', 'watermark', 'encryption', 'signature', 'bookmarks',
|
|
10
|
+
'hyphenation', 'metadata', 'defaultParagraphStyle', 'sections', 'content',
|
|
11
|
+
'flattenForms', 'onImageLoadError', 'onFormFieldError', 'renderDate', 'allowedFileDirs',
|
|
12
|
+
];
|
|
13
|
+
const METADATA_KEYS = ['title', 'author', 'subject', 'keywords', 'creator', 'language', 'producer'];
|
|
14
|
+
const PARAGRAPH_KEYS = [
|
|
15
|
+
'type', 'text', 'dir', 'fontSize', 'lineHeight', 'fontFamily', 'fontWeight', 'color',
|
|
16
|
+
'align', 'bgColor', 'spaceAfter', 'spaceBefore', 'keepTogether', 'underline',
|
|
17
|
+
'strikethrough', 'url', 'columns', 'columnGap', 'hyphenate', 'letterSpacing',
|
|
18
|
+
'smallCaps', 'tabularNumbers', 'annotation',
|
|
19
|
+
];
|
|
20
|
+
const HEADING_KEYS = [
|
|
21
|
+
'type', 'level', 'text', 'dir', 'fontFamily', 'fontWeight', 'fontSize', 'lineHeight',
|
|
22
|
+
'align', 'color', 'bgColor', 'spaceBefore', 'spaceAfter', 'keepTogether', 'underline',
|
|
23
|
+
'strikethrough', 'bookmark', 'hyphenate', 'url', 'anchor', 'letterSpacing', 'smallCaps',
|
|
24
|
+
'tabularNumbers', 'annotation',
|
|
25
|
+
];
|
|
26
|
+
const SPACER_KEYS = ['type', 'height'];
|
|
27
|
+
const TABLE_KEYS = [
|
|
28
|
+
'type', 'columns', 'rows', 'dir', 'headerRows', 'borderColor', 'borderWidth',
|
|
29
|
+
'headerBgColor', 'fontSize', 'cellPaddingH', 'cellPaddingV', 'spaceAfter', 'spaceBefore',
|
|
30
|
+
];
|
|
31
|
+
const COLUMN_DEF_KEYS = ['width', 'align'];
|
|
32
|
+
const TABLE_ROW_KEYS = ['cells', 'isHeader'];
|
|
33
|
+
const TABLE_CELL_KEYS = [
|
|
34
|
+
'text', 'dir', 'align', 'fontWeight', 'fontFamily', 'fontSize', 'color', 'bgColor',
|
|
35
|
+
'colspan', 'rowspan', 'tabularNumbers',
|
|
36
|
+
];
|
|
37
|
+
const IMAGE_KEYS = [
|
|
38
|
+
'type', 'src', 'format', 'width', 'height', 'align', 'spaceAfter', 'spaceBefore',
|
|
39
|
+
'float', 'floatWidth', 'floatGap', 'floatText', 'floatSpans', 'floatFontSize',
|
|
40
|
+
'floatFontFamily', 'floatColor',
|
|
41
|
+
];
|
|
42
|
+
const SVG_KEYS = ['type', 'svg', 'src', 'width', 'height', 'align', 'spaceBefore', 'spaceAfter'];
|
|
43
|
+
const QR_CODE_KEYS = [
|
|
44
|
+
'type', 'data', 'size', 'errorCorrectionLevel', 'foreground', 'background', 'margin',
|
|
45
|
+
'align', 'spaceBefore', 'spaceAfter',
|
|
46
|
+
];
|
|
47
|
+
const BARCODE_KEYS = [
|
|
48
|
+
'type', 'symbology', 'data', 'width', 'height', 'includeText', 'align', 'spaceBefore', 'spaceAfter',
|
|
49
|
+
];
|
|
50
|
+
const CHART_KEYS = ['type', 'spec', 'width', 'height', 'caption', 'align', 'spaceBefore', 'spaceAfter'];
|
|
51
|
+
const LIST_KEYS = [
|
|
52
|
+
'type', 'style', 'items', 'marker', 'indent', 'markerWidth', 'fontSize', 'lineHeight',
|
|
53
|
+
'itemSpaceAfter', 'spaceAfter', 'spaceBefore', 'color', 'nestedNumberingStyle',
|
|
54
|
+
];
|
|
55
|
+
const LIST_ITEM_KEYS = ['text', 'dir', 'fontWeight', 'items'];
|
|
56
|
+
const HR_KEYS = ['type', 'thickness', 'color', 'spaceAbove', 'spaceBelow', 'spaceBefore', 'spaceAfter'];
|
|
57
|
+
const PAGE_BREAK_KEYS = ['type'];
|
|
58
|
+
const CODE_KEYS = [
|
|
59
|
+
'type', 'text', 'dir', 'fontFamily', 'fontSize', 'lineHeight', 'bgColor', 'color',
|
|
60
|
+
'padding', 'spaceAfter', 'spaceBefore', 'keepTogether', 'language', 'highlightTheme',
|
|
61
|
+
];
|
|
62
|
+
const RICH_PARAGRAPH_KEYS = [
|
|
63
|
+
'type', 'spans', 'dir', 'fontSize', 'lineHeight', 'align', 'bgColor', 'spaceBefore',
|
|
64
|
+
'spaceAfter', 'keepTogether', 'columns', 'columnGap', 'letterSpacing', 'smallCaps',
|
|
65
|
+
'tabularNumbers',
|
|
66
|
+
];
|
|
67
|
+
const INLINE_SPAN_KEYS = [
|
|
68
|
+
'text', 'dir', 'fontFamily', 'fontWeight', 'fontStyle', 'color', 'fontSize', 'underline',
|
|
69
|
+
'strikethrough', 'url', 'href', 'verticalAlign', 'smallCaps', 'letterSpacing', 'footnoteRef',
|
|
70
|
+
];
|
|
71
|
+
const BLOCKQUOTE_KEYS = [
|
|
72
|
+
'type', 'text', 'dir', 'borderColor', 'borderWidth', 'bgColor', 'color', 'fontFamily',
|
|
73
|
+
'fontWeight', 'fontStyle', 'fontSize', 'lineHeight', 'padding', 'paddingH', 'paddingV',
|
|
74
|
+
'align', 'spaceBefore', 'spaceAfter', 'keepTogether', 'underline', 'strikethrough',
|
|
75
|
+
];
|
|
76
|
+
const CALLOUT_KEYS = [
|
|
77
|
+
'type', 'content', 'style', 'title', 'backgroundColor', 'borderColor', 'color', 'titleColor',
|
|
78
|
+
'fontFamily', 'fontWeight', 'fontSize', 'lineHeight', 'padding', 'paddingH', 'paddingV',
|
|
79
|
+
'spaceAfter', 'spaceBefore', 'keepTogether', 'dir',
|
|
80
|
+
];
|
|
81
|
+
const COMMENT_KEYS = ['type', 'contents', 'author', 'color', 'open', 'spaceAfter'];
|
|
82
|
+
const FORM_FIELD_KEYS = [
|
|
83
|
+
'type', 'fieldType', 'name', 'label', 'placeholder', 'defaultValue', 'multiline',
|
|
84
|
+
'maxLength', 'checked', 'options', 'defaultSelected', 'width', 'height', 'fontSize',
|
|
85
|
+
'borderColor', 'backgroundColor', 'spaceAfter', 'spaceBefore', 'keepTogether',
|
|
86
|
+
];
|
|
87
|
+
const FOOTNOTE_DEF_KEYS = ['type', 'id', 'text', 'fontSize', 'fontFamily', 'spaceAfter'];
|
|
88
|
+
const TOC_KEYS = [
|
|
89
|
+
'type', 'title', 'showTitle', 'minLevel', 'maxLevel', 'fontSize', 'titleFontSize',
|
|
90
|
+
'levelIndent', 'leader', 'entrySpacing', 'fontFamily', 'spaceBefore', 'spaceAfter',
|
|
91
|
+
];
|
|
92
|
+
const TOC_ENTRY_KEYS = ['type', 'text', 'pageNumber', 'level', 'levelIndent', 'leader', 'fontFamily', 'fontWeight'];
|
|
93
|
+
const FLOAT_GROUP_KEYS = ['type', 'image', 'float', 'floatWidth', 'floatGap', 'content', 'spaceBefore', 'spaceAfter'];
|
|
94
|
+
const ANNOTATION_KEYS = ['contents', 'author', 'color', 'open'];
|
|
95
|
+
// ─── Runtime Sets created from key arrays ─────────────────────────────────────
|
|
96
|
+
export const ALLOWED_PROPS = {
|
|
97
|
+
'paragraph': new Set(PARAGRAPH_KEYS),
|
|
98
|
+
'heading': new Set(HEADING_KEYS),
|
|
99
|
+
'spacer': new Set(SPACER_KEYS),
|
|
100
|
+
'table': new Set(TABLE_KEYS),
|
|
101
|
+
'image': new Set(IMAGE_KEYS),
|
|
102
|
+
'svg': new Set(SVG_KEYS),
|
|
103
|
+
'qr-code': new Set(QR_CODE_KEYS),
|
|
104
|
+
'barcode': new Set(BARCODE_KEYS),
|
|
105
|
+
'chart': new Set(CHART_KEYS),
|
|
106
|
+
'list': new Set(LIST_KEYS),
|
|
107
|
+
'hr': new Set(HR_KEYS),
|
|
108
|
+
'page-break': new Set(PAGE_BREAK_KEYS),
|
|
109
|
+
'code': new Set(CODE_KEYS),
|
|
110
|
+
'rich-paragraph': new Set(RICH_PARAGRAPH_KEYS),
|
|
111
|
+
'blockquote': new Set(BLOCKQUOTE_KEYS),
|
|
112
|
+
'toc': new Set(TOC_KEYS),
|
|
113
|
+
'toc-entry': new Set(TOC_ENTRY_KEYS),
|
|
114
|
+
'comment': new Set(COMMENT_KEYS),
|
|
115
|
+
'form-field': new Set(FORM_FIELD_KEYS),
|
|
116
|
+
'callout': new Set(CALLOUT_KEYS),
|
|
117
|
+
'footnote-def': new Set(FOOTNOTE_DEF_KEYS),
|
|
118
|
+
'float-group': new Set(FLOAT_GROUP_KEYS),
|
|
119
|
+
};
|
|
120
|
+
export const ALLOWED_PROPS_SUB = {
|
|
121
|
+
'document': new Set(DOC_KEYS),
|
|
122
|
+
'metadata': new Set(METADATA_KEYS),
|
|
123
|
+
'column-def': new Set(COLUMN_DEF_KEYS),
|
|
124
|
+
'table-row': new Set(TABLE_ROW_KEYS),
|
|
125
|
+
'table-cell': new Set(TABLE_CELL_KEYS),
|
|
126
|
+
'list-item': new Set(LIST_ITEM_KEYS),
|
|
127
|
+
'inline-span': new Set(INLINE_SPAN_KEYS),
|
|
128
|
+
'annotation': new Set(ANNOTATION_KEYS),
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=allowed-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowed-props.js","sourceRoot":"","sources":["../src/allowed-props.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -25,25 +25,25 @@ import path from 'node:path';
|
|
|
25
25
|
import { createRequire } from 'node:module';
|
|
26
26
|
const require = createRequire(import.meta.url);
|
|
27
27
|
const pkg = require('../package.json');
|
|
28
|
-
const HELP = `pretext-pdf v${pkg.version} — JSON → PDF
|
|
29
|
-
|
|
30
|
-
Usage:
|
|
31
|
-
pretext-pdf [<input.json>] [<output.pdf>]
|
|
32
|
-
pretext-pdf -i <input> -o <output>
|
|
33
|
-
cat doc.json | pretext-pdf > out.pdf
|
|
34
|
-
|
|
35
|
-
Options:
|
|
36
|
-
-i, --input <path> Read JSON (or Markdown with --markdown) from path
|
|
37
|
-
-o, --output <path> Write PDF to path (default: stdout)
|
|
38
|
-
--markdown Treat input as Markdown — converts via pretext-pdf/markdown
|
|
39
|
-
--code-font <name> With --markdown, font family for fenced code blocks
|
|
40
|
-
-v, --version Print pretext-pdf version
|
|
41
|
-
-h, --help Print this help
|
|
42
|
-
|
|
43
|
-
Examples:
|
|
44
|
-
pretext-pdf doc.json invoice.pdf
|
|
45
|
-
echo '{"content":[{"type":"heading","level":1,"text":"Hi"}]}' | pretext-pdf > out.pdf
|
|
46
|
-
pretext-pdf --markdown --code-font 'Courier New' README.md docs.pdf
|
|
28
|
+
const HELP = `pretext-pdf v${pkg.version} — JSON → PDF
|
|
29
|
+
|
|
30
|
+
Usage:
|
|
31
|
+
pretext-pdf [<input.json>] [<output.pdf>]
|
|
32
|
+
pretext-pdf -i <input> -o <output>
|
|
33
|
+
cat doc.json | pretext-pdf > out.pdf
|
|
34
|
+
|
|
35
|
+
Options:
|
|
36
|
+
-i, --input <path> Read JSON (or Markdown with --markdown) from path
|
|
37
|
+
-o, --output <path> Write PDF to path (default: stdout)
|
|
38
|
+
--markdown Treat input as Markdown — converts via pretext-pdf/markdown
|
|
39
|
+
--code-font <name> With --markdown, font family for fenced code blocks
|
|
40
|
+
-v, --version Print pretext-pdf version
|
|
41
|
+
-h, --help Print this help
|
|
42
|
+
|
|
43
|
+
Examples:
|
|
44
|
+
pretext-pdf doc.json invoice.pdf
|
|
45
|
+
echo '{"content":[{"type":"heading","level":1,"text":"Hi"}]}' | pretext-pdf > out.pdf
|
|
46
|
+
pretext-pdf --markdown --code-font 'Courier New' README.md docs.pdf
|
|
47
47
|
`;
|
|
48
48
|
function parseArgs(argv) {
|
|
49
49
|
const args = { markdown: false };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ export type { ErrorCode } from './errors.js';
|
|
|
5
5
|
export type { NamedPageSize } from './page-sizes.js';
|
|
6
6
|
export { createPdf } from './builder.js';
|
|
7
7
|
export type { PdfBuilderOptions } from './builder.js';
|
|
8
|
+
export { validate } from './validate.js';
|
|
9
|
+
export type RenderOptions = {
|
|
10
|
+
/** Enable strict validation: reject unknown properties on elements and sub-structures */
|
|
11
|
+
strict?: boolean;
|
|
12
|
+
};
|
|
8
13
|
/**
|
|
9
14
|
* Create a set of paired footnote definitions and their IDs for use in rich-paragraph spans.
|
|
10
15
|
*
|
|
@@ -52,7 +57,7 @@ export declare function createFootnoteSet(items: Array<{
|
|
|
52
57
|
* fs.writeFileSync('output.pdf', pdf)
|
|
53
58
|
* ```
|
|
54
59
|
*/
|
|
55
|
-
export declare function render(doc: PdfDocument): Promise<Uint8Array>;
|
|
60
|
+
export declare function render(doc: PdfDocument, options?: RenderOptions): Promise<Uint8Array>;
|
|
56
61
|
/**
|
|
57
62
|
* Merge multiple pre-rendered PDFs into a single PDF.
|
|
58
63
|
* @param pdfs Array of Uint8Array PDF bytes to combine
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAmD,kBAAkB,EAAiC,MAAM,YAAY,CAAA;AAajJ,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAmD,kBAAkB,EAAiC,MAAM,YAAY,CAAA;AAajJ,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,MAAM,aAAa,GAAG;IAC1B,yFAAyF;IACzF,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1F,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAMhD;AAuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAwO3F;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBnE;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,OAAO,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB9F"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { paginate } from './paginate.js';
|
|
|
11
11
|
import { renderDocument } from './render.js';
|
|
12
12
|
export { PretextPdfError } from './errors.js';
|
|
13
13
|
export { createPdf } from './builder.js';
|
|
14
|
+
export { validate } from './validate.js';
|
|
14
15
|
let _fnSetCounter = 0;
|
|
15
16
|
/**
|
|
16
17
|
* Create a set of paired footnote definitions and their IDs for use in rich-paragraph spans.
|
|
@@ -74,7 +75,7 @@ function resolveHeaderFooter(doc, pageNumber) {
|
|
|
74
75
|
* fs.writeFileSync('output.pdf', pdf)
|
|
75
76
|
* ```
|
|
76
77
|
*/
|
|
77
|
-
export async function render(doc) {
|
|
78
|
+
export async function render(doc, options) {
|
|
78
79
|
// ── Install Node.js canvas polyfill FIRST, before any Pretext import ─────────
|
|
79
80
|
// This MUST happen before measure.ts lazily imports @chenglou/pretext.
|
|
80
81
|
if (typeof OffscreenCanvas === 'undefined' && typeof window === 'undefined') {
|
|
@@ -82,7 +83,7 @@ export async function render(doc) {
|
|
|
82
83
|
await installNodePolyfill();
|
|
83
84
|
}
|
|
84
85
|
// ── Stage 1: Validate ─────────────────────────────────────────────────────────
|
|
85
|
-
validate(doc);
|
|
86
|
+
validate(doc, options);
|
|
86
87
|
// ── Resolve page geometry ──────────────────────────────────────────────────────
|
|
87
88
|
const [pageWidth, pageHeight] = resolvePageDimensions(doc.pageSize);
|
|
88
89
|
const margins = {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/validate.d.ts
CHANGED
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA4C,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA4C,MAAM,YAAY,CAAA;AA0IvF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA2W/E"}
|
package/dist/validate.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PretextPdfError } from './errors.js';
|
|
2
2
|
import { resolvePageDimensions } from './page-sizes.js';
|
|
3
|
+
import { ALLOWED_PROPS, ALLOWED_PROPS_SUB } from './allowed-props.js';
|
|
3
4
|
/**
|
|
4
5
|
* RTL strong bidi characters — Bidi_Class=R or AL per UAX #9.
|
|
5
6
|
* Block-level coverage following Unicode DerivedBidiClass defaults.
|
|
@@ -39,6 +40,64 @@ const HEX_COLOR_REGEX = /^#[0-9A-Fa-f]{6}$/;
|
|
|
39
40
|
const SAFE_URL_SCHEME = /^(https?|mailto|ftp|#)/i;
|
|
40
41
|
/** BCP47 language tag pattern for hyphenation.language — prevents dynamic-import path injection */
|
|
41
42
|
const LANGUAGE_TAG_REGEX = /^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{2,8})*$/;
|
|
43
|
+
/** Levenshtein distance with early exit at distance > 2 */
|
|
44
|
+
function levenshteinDist(a, b) {
|
|
45
|
+
if (a === b)
|
|
46
|
+
return 0;
|
|
47
|
+
if (Math.abs(a.length - b.length) > 2)
|
|
48
|
+
return 999;
|
|
49
|
+
const m = a.length;
|
|
50
|
+
const n = b.length;
|
|
51
|
+
const prev = Array(n + 1)
|
|
52
|
+
.fill(0)
|
|
53
|
+
.map((_, j) => j);
|
|
54
|
+
const curr = Array(n + 1).fill(0);
|
|
55
|
+
for (let i = 1; i <= m; i++) {
|
|
56
|
+
curr[0] = i;
|
|
57
|
+
for (let j = 1; j <= n; j++) {
|
|
58
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
59
|
+
curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
|
|
60
|
+
if (curr[j] > 2)
|
|
61
|
+
return 999;
|
|
62
|
+
}
|
|
63
|
+
for (let j = 0; j <= n; j++)
|
|
64
|
+
prev[j] = curr[j];
|
|
65
|
+
}
|
|
66
|
+
return prev[n];
|
|
67
|
+
}
|
|
68
|
+
/** Find closest match with edit distance <= 2 */
|
|
69
|
+
function closestMatch(prop, allowed) {
|
|
70
|
+
let best = null;
|
|
71
|
+
let bestDist = 999;
|
|
72
|
+
for (const candidate of allowed) {
|
|
73
|
+
const d = levenshteinDist(prop, candidate);
|
|
74
|
+
if (d > 0 && d <= 2 && d < bestDist) {
|
|
75
|
+
best = candidate;
|
|
76
|
+
bestDist = d;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return best;
|
|
80
|
+
}
|
|
81
|
+
/** Accumulate unknown property errors for an object */
|
|
82
|
+
function assertUnknownProps(obj, allowed, path, errors) {
|
|
83
|
+
if (!obj || typeof obj !== 'object' || Array.isArray(obj))
|
|
84
|
+
return;
|
|
85
|
+
for (const key of Object.keys(obj)) {
|
|
86
|
+
if (!allowed.has(key)) {
|
|
87
|
+
const suggestion = closestMatch(key, allowed);
|
|
88
|
+
const hint = suggestion ? ` Did you mean '${suggestion}'?` : '';
|
|
89
|
+
errors.push(`${path}.${key}: unknown property.${hint}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Format accumulated errors into a single message (cap at 20 errors) */
|
|
94
|
+
function formatErrors(errors) {
|
|
95
|
+
if (errors.length === 0)
|
|
96
|
+
return '';
|
|
97
|
+
const msgs = errors.slice(0, 20);
|
|
98
|
+
const suffix = errors.length > 20 ? `\n... and ${errors.length - 20} more error(s)` : '';
|
|
99
|
+
return msgs.join('\n') + suffix;
|
|
100
|
+
}
|
|
42
101
|
/** Validate a hyperlink URL — throws VALIDATION_ERROR for unsafe schemes */
|
|
43
102
|
function validateUrl(url, prefix) {
|
|
44
103
|
if (!SAFE_URL_SCHEME.test(url)) {
|
|
@@ -60,7 +119,13 @@ const STAR_WIDTH_REGEX = /^(\d*\.?\d+)?\*$/;
|
|
|
60
119
|
const BUNDLED_FAMILIES = new Set(['Inter']);
|
|
61
120
|
/** Font variants (family-weight-style) always available without explicit doc.fonts entry */
|
|
62
121
|
const BUNDLED_VARIANTS = new Set(['Inter-400-normal', 'Inter-700-normal']);
|
|
63
|
-
export function validate(doc) {
|
|
122
|
+
export function validate(doc, options) {
|
|
123
|
+
const strict = options?.strict ?? false;
|
|
124
|
+
const errors = [];
|
|
125
|
+
// Strict: check doc-level properties
|
|
126
|
+
if (strict) {
|
|
127
|
+
assertUnknownProps(doc, ALLOWED_PROPS_SUB['document'], 'document', errors);
|
|
128
|
+
}
|
|
64
129
|
// content must be a non-empty array
|
|
65
130
|
if (!Array.isArray(doc.content) || doc.content.length === 0) {
|
|
66
131
|
throw new PretextPdfError('VALIDATION_ERROR', 'document.content must be a non-empty array');
|
|
@@ -342,7 +407,7 @@ export function validate(doc) {
|
|
|
342
407
|
}
|
|
343
408
|
}
|
|
344
409
|
for (let i = 0; i < doc.content.length; i++) {
|
|
345
|
-
validateElement(doc.content[i], i, loadedFamilies);
|
|
410
|
+
validateElement(doc.content[i], i, loadedFamilies, strict, errors);
|
|
346
411
|
}
|
|
347
412
|
// ── Footnote ref/def cross-validation ─────────────────────────────────────
|
|
348
413
|
const footnoteDefIds = new Map(); // id → content index
|
|
@@ -381,6 +446,11 @@ export function validate(doc) {
|
|
|
381
446
|
}
|
|
382
447
|
// validate all font references are loadable
|
|
383
448
|
validateFontReferences(doc, loadedFamilies);
|
|
449
|
+
// Throw collected strict validation errors
|
|
450
|
+
if (errors.length > 0) {
|
|
451
|
+
const msg = formatErrors(errors);
|
|
452
|
+
throw new PretextPdfError('VALIDATION_ERROR', msg);
|
|
453
|
+
}
|
|
384
454
|
}
|
|
385
455
|
/**
|
|
386
456
|
* Validate that every font family referenced anywhere in the document
|
|
@@ -502,11 +572,18 @@ function validateFontReferences(doc, loadedFamilies) {
|
|
|
502
572
|
// code.fontFamily already validated against loadedFamilies in validateElement
|
|
503
573
|
}
|
|
504
574
|
}
|
|
505
|
-
function validateElement(el, index, loadedFamilies) {
|
|
575
|
+
function validateElement(el, index, loadedFamilies, strict, errors) {
|
|
506
576
|
const prefix = `content[${index}]`;
|
|
507
577
|
if (!el || typeof el !== 'object' || !('type' in el)) {
|
|
508
578
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix}: each element must have a 'type' field`);
|
|
509
579
|
}
|
|
580
|
+
// Strict: check element properties match allowed set for type
|
|
581
|
+
if (strict) {
|
|
582
|
+
const allowed = ALLOWED_PROPS[el.type];
|
|
583
|
+
if (allowed) {
|
|
584
|
+
assertUnknownProps(el, allowed, prefix, errors);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
510
587
|
switch (el.type) {
|
|
511
588
|
case 'paragraph': {
|
|
512
589
|
if (typeof el.text !== 'string') {
|
|
@@ -559,6 +636,10 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
559
636
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (paragraph): 'letterSpacing' must be a non-negative finite number and <= 200`);
|
|
560
637
|
}
|
|
561
638
|
if (el.annotation) {
|
|
639
|
+
// Strict: validate annotation properties
|
|
640
|
+
if (strict) {
|
|
641
|
+
assertUnknownProps(el.annotation, ALLOWED_PROPS_SUB['annotation'], `${prefix} (paragraph).annotation`, errors);
|
|
642
|
+
}
|
|
562
643
|
if (!el.annotation.contents || el.annotation.contents.trim() === '') {
|
|
563
644
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (paragraph): annotation.contents is required and must be non-empty`);
|
|
564
645
|
}
|
|
@@ -657,6 +738,10 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
657
738
|
const colCount = el.columns.length;
|
|
658
739
|
for (let ci = 0; ci < el.columns.length; ci++) {
|
|
659
740
|
const col = el.columns[ci];
|
|
741
|
+
// Strict: validate column def properties
|
|
742
|
+
if (strict) {
|
|
743
|
+
assertUnknownProps(col, ALLOWED_PROPS_SUB['column-def'], `${prefix} (table).columns[${ci}]`, errors);
|
|
744
|
+
}
|
|
660
745
|
if (typeof col.width === 'number') {
|
|
661
746
|
if (col.width <= 0 || !isFinite(col.width)) {
|
|
662
747
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (table): columns[${ci}].width must be a positive number. Got: ${col.width}`);
|
|
@@ -733,8 +818,16 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
733
818
|
if (colspanSum !== colCount - occupiedCols) {
|
|
734
819
|
throw new PretextPdfError('COLSPAN_OVERFLOW', `${prefix} (table): rows[${ri}] colspan sum is ${colspanSum} but expected ${colCount - occupiedCols} (${colCount} columns minus ${occupiedCols} occupied by rowspan). Sum of explicit cell colspans must cover only unoccupied columns.`);
|
|
735
820
|
}
|
|
821
|
+
// Strict: validate row and column defs
|
|
822
|
+
if (strict) {
|
|
823
|
+
assertUnknownProps(row, ALLOWED_PROPS_SUB['table-row'], `${prefix} (table).rows[${ri}]`, errors);
|
|
824
|
+
}
|
|
736
825
|
for (let cellI = 0; cellI < row.cells.length; cellI++) {
|
|
737
826
|
const cell = row.cells[cellI];
|
|
827
|
+
// Strict: validate cell properties
|
|
828
|
+
if (strict) {
|
|
829
|
+
assertUnknownProps(cell, ALLOWED_PROPS_SUB['table-cell'], `${prefix} (table).rows[${ri}].cells[${cellI}]`, errors);
|
|
830
|
+
}
|
|
738
831
|
if (typeof cell.text !== 'string') {
|
|
739
832
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (table): rows[${ri}].cells[${cellI}].text must be a string`);
|
|
740
833
|
}
|
|
@@ -969,6 +1062,10 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
969
1062
|
}
|
|
970
1063
|
for (let ii = 0; ii < el.items.length; ii++) {
|
|
971
1064
|
const item = el.items[ii];
|
|
1065
|
+
// Strict: validate list item properties
|
|
1066
|
+
if (strict) {
|
|
1067
|
+
assertUnknownProps(item, ALLOWED_PROPS_SUB['list-item'], `${prefix} (list).items[${ii}]`, errors);
|
|
1068
|
+
}
|
|
972
1069
|
if (typeof item.text !== 'string' || item.text.trim() === '') {
|
|
973
1070
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].text must be a non-empty string`);
|
|
974
1071
|
}
|
|
@@ -986,6 +1083,10 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
986
1083
|
}
|
|
987
1084
|
for (let ni = 0; ni < item.items.length; ni++) {
|
|
988
1085
|
const nested = item.items[ni];
|
|
1086
|
+
// Strict: validate nested list item properties
|
|
1087
|
+
if (strict) {
|
|
1088
|
+
assertUnknownProps(nested, ALLOWED_PROPS_SUB['list-item'], `${prefix} (list).items[${ii}].items[${ni}]`, errors);
|
|
1089
|
+
}
|
|
989
1090
|
if (typeof nested.text !== 'string' || nested.text.trim() === '') {
|
|
990
1091
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].items[${ni}].text must be a non-empty string`);
|
|
991
1092
|
}
|
|
@@ -1037,6 +1138,10 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
1037
1138
|
}
|
|
1038
1139
|
for (let si = 0; si < el.spans.length; si++) {
|
|
1039
1140
|
const span = el.spans[si];
|
|
1141
|
+
// Strict: validate span properties
|
|
1142
|
+
if (strict) {
|
|
1143
|
+
assertUnknownProps(span, ALLOWED_PROPS_SUB['inline-span'], `${prefix} (rich-paragraph).spans[${si}]`, errors);
|
|
1144
|
+
}
|
|
1040
1145
|
if (typeof span.text !== 'string') {
|
|
1041
1146
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (rich-paragraph): spans[${si}].text must be a string`);
|
|
1042
1147
|
}
|
|
@@ -1348,6 +1453,13 @@ function validateElement(el, index, loadedFamilies) {
|
|
|
1348
1453
|
if (!['paragraph', 'heading', 'rich-paragraph'].includes(item.type)) {
|
|
1349
1454
|
throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (float-group).content[${i}]: only 'paragraph', 'heading', and 'rich-paragraph' elements are allowed in float groups`);
|
|
1350
1455
|
}
|
|
1456
|
+
// Strict: validate nested content element properties
|
|
1457
|
+
if (strict) {
|
|
1458
|
+
const allowed = ALLOWED_PROPS[item.type];
|
|
1459
|
+
if (allowed) {
|
|
1460
|
+
assertUnknownProps(item, allowed, `${prefix} (float-group).content[${i}]`, errors);
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1351
1463
|
}
|
|
1352
1464
|
// Validate spacing
|
|
1353
1465
|
if (fg.spaceBefore !== undefined && (typeof fg.spaceBefore !== 'number' || fg.spaceBefore < 0)) {
|