@knapsack/rendering-utils 4.92.24 → 4.92.25--canary.7665.aeb414e.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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +39 -52
- package/dist/blocks-to-html.d.ts.map +1 -1
- package/dist/blocks-to-html.js +27 -1
- package/dist/blocks-to-html.js.map +1 -1
- package/package.json +11 -12
- package/src/blocks-to-html.ts +32 -1
- package/vitest.config.ts +7 -0
- package/ava.config.cjs +0 -3
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,60 +1,47 @@
|
|
|
1
1
|
|
|
2
|
-
> @knapsack/rendering-utils@4.92.
|
|
3
|
-
>
|
|
2
|
+
> @knapsack/rendering-utils@4.92.24 test /home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils
|
|
3
|
+
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
[
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
at Array.map (<anonymous>)
|
|
11
|
-
at Fragment.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/.pnpm/prosemirror-model@1.25.4/node_modules/prosemirror-model/dist/index.js:314:35)
|
|
12
|
-
at Node.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/.pnpm/prosemirror-model@1.25.4/node_modules/prosemirror-model/dist/index.js:1539:32)
|
|
13
|
-
at generateHTML (/home/runner/work/app-monorepo/app-monorepo/node_modules/.pnpm/@tiptap+html@3.20.0_@tiptap+core@3.20.0_@tiptap+pm@3.20.0__@tiptap+pm@3.20.0_happy-dom@_fb9f5841e8c1bd3ab1a0faf6f7899695/node_modules/@tiptap/html/src/server/generateHTML.ts:30:28)
|
|
14
|
-
at convertTipTapJsonToHtml (/home/runner/work/app-monorepo/app-monorepo/libs/tiptap-utils/src/tiptap-utils.ts:27:10)
|
|
15
|
-
at tiptapToHtmlSafe (/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils/src/blocks-to-html.ts:43:12)
|
|
16
|
-
at blockToHtml (/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils/src/blocks-to-html.ts:59:14)
|
|
17
|
-
✔ blocksToHtml - empty array (141ms)
|
|
18
|
-
✔ blocksToHtml - single divider-block (140ms)
|
|
19
|
-
✔ blocksToHtml - single text-editor block (140ms)
|
|
20
|
-
✔ blocksToHtml - single code-snippet block (106ms)
|
|
21
|
-
✔ blocksToHtml - single callout block
|
|
22
|
-
✔ blocksToHtml - single callout block with error type
|
|
23
|
-
✔ blocksToHtml - single image-block with single image
|
|
24
|
-
✔ blocksToHtml - single image-block with multiple images
|
|
25
|
-
✔ blocksToHtml - single image-block with no images
|
|
26
|
-
✔ blocksToHtml - single image-block with empty images array
|
|
27
|
-
✔ blocksToHtml - single video block
|
|
28
|
-
✔ blocksToHtml - video block with no selected video
|
|
29
|
-
✔ blocksToHtml - text-editor with unknown TipTap node type does not throw
|
|
30
|
-
✔ blocksToHtml - single files-list block with image files
|
|
31
|
-
✔ blocksToHtml - single files-list block with non-image files
|
|
32
|
-
✔ blocksToHtml - single files-list block with mixed files
|
|
33
|
-
✔ blocksToHtml - single files-list block with empty array
|
|
34
|
-
✔ blocksToHtml - single shortcut-tiles block
|
|
35
|
-
✔ blocksToHtml - single shortcut-tiles block with empty shortcuts
|
|
36
|
-
✔ blocksToHtml - single shortcut-tiles block with no image
|
|
37
|
-
✔ blocksToHtml - single shortcut-tiles block with link but no name
|
|
38
|
-
✔ blocksToHtml - block with no data
|
|
39
|
-
✔ blocksToHtml - file extensions detection for images
|
|
40
|
-
✔ blocksToHtml - case insensitive file extension detection
|
|
41
|
-
✔ blocksToHtml - files with no extension
|
|
42
|
-
marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
6
|
+
[1m[30m[46m RUN [49m[39m[22m [36mv4.1.4 [39m[90m/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils[39m
|
|
7
|
+
|
|
8
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with string
|
|
9
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
43
10
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
44
|
-
|
|
11
|
+
|
|
12
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with array
|
|
13
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
45
14
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
46
|
-
|
|
15
|
+
|
|
16
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with empty string
|
|
17
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
47
18
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
48
|
-
|
|
19
|
+
|
|
20
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - single markdown-block with undefined md
|
|
21
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
49
22
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
50
|
-
|
|
23
|
+
|
|
24
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - text-editor with unknown TipTap node type does not throw
|
|
25
|
+
[22m[39m[blocks-to-html] TipTap render failed for block "test-1" (text-editor): RangeError: Unknown node type: this-node-type-does-not-exist
|
|
26
|
+
at Schema.nodeType (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.4/node_modules/[4mprosemirror-model[24m/dist/index.js:2500:19)
|
|
27
|
+
at Function.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.4/node_modules/[4mprosemirror-model[24m/dist/index.js:1540:27)
|
|
28
|
+
at Schema.nodeFromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.4/node_modules/[4mprosemirror-model[24m/dist/index.js:2458:42)
|
|
29
|
+
at Array.map (<anonymous>)
|
|
30
|
+
at Function.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.4/node_modules/[4mprosemirror-model[24m/dist/index.js:314:35)
|
|
31
|
+
at Function.fromJSON (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/prosemirror-model@1.25.4/node_modules/[4mprosemirror-model[24m/dist/index.js:1539:32)
|
|
32
|
+
at generateHTML (file:///home/runner/work/app-monorepo/app-monorepo/node_modules/[4m.pnpm[24m/@tiptap+html@3.20.0_@tiptap+core@3.20.0_@tiptap+pm@3.20.0__@tiptap+pm@3.20.0_happy-dom@_fb9f5841e8c1bd3ab1a0faf6f7899695/node_modules/[4m@tiptap/html[24m/dist/server/index.js:46:28)
|
|
33
|
+
at convertTipTapJsonToHtml (/home/runner/work/app-monorepo/app-monorepo/libs/tiptap-utils/src/tiptap-utils.ts:27:22)
|
|
34
|
+
at tiptapToHtmlSafe [90m(/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils/[39msrc/blocks-to-html.ts:43:12[90m)[39m
|
|
35
|
+
at blockToHtml [90m(/home/runner/work/app-monorepo/app-monorepo/libs/rendering-utils/[39msrc/blocks-to-html.ts:65:14[90m)[39m
|
|
36
|
+
|
|
37
|
+
[90mstderr[2m | src/blocks-to-html.test.ts[2m > [22m[2mblocksToHtml - multiple different block types
|
|
38
|
+
[22m[39mmarked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.
|
|
51
39
|
marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
31 tests passed
|
|
40
|
+
|
|
41
|
+
[32m✓[39m src/blocks-to-html.test.ts [2m([22m[2m34 tests[22m[2m)[22m[32m 109[2mms[22m[39m
|
|
42
|
+
|
|
43
|
+
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
44
|
+
[2m Tests [22m [1m[32m34 passed[39m[22m[90m (34)[39m
|
|
45
|
+
[2m Start at [22m 20:28:27
|
|
46
|
+
[2m Duration [22m 1.09s[2m (transform 117ms, setup 0ms, import 825ms, tests 109ms, environment 0ms)[22m
|
|
47
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks-to-html.d.ts","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks-to-html.d.ts","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAuKnD,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzE"}
|
package/dist/blocks-to-html.js
CHANGED
|
@@ -34,6 +34,11 @@ function tiptapToHtmlSafe(content, blockId, blockType) {
|
|
|
34
34
|
return '';
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
const GUIDELINE_LABELS = {
|
|
38
|
+
do: 'Do',
|
|
39
|
+
dont: "Don't",
|
|
40
|
+
caution: 'Caution',
|
|
41
|
+
};
|
|
37
42
|
async function blockToHtml(b) {
|
|
38
43
|
if (!b.data)
|
|
39
44
|
return '';
|
|
@@ -42,6 +47,28 @@ async function blockToHtml(b) {
|
|
|
42
47
|
case 'table':
|
|
43
48
|
case 'text-editor':
|
|
44
49
|
return tiptapToHtmlSafe(b.data.content, b.id, b.blockType);
|
|
50
|
+
case 'guidelines': {
|
|
51
|
+
const guidelines = b.data.guidelines ?? [];
|
|
52
|
+
if (guidelines.length === 0)
|
|
53
|
+
return '';
|
|
54
|
+
const sections = guidelines
|
|
55
|
+
.map((g) => {
|
|
56
|
+
const label = GUIDELINE_LABELS[g.type] ?? g.type;
|
|
57
|
+
const parts = [`<h4>${escapeAttr(label)}</h4>`];
|
|
58
|
+
if (g.image?.src) {
|
|
59
|
+
const alt = g.image.alt ?? g.image.title ?? label;
|
|
60
|
+
parts.push(`<img src="${escapeAttr(g.image.src)}" alt="${escapeAttr(alt)}" />`);
|
|
61
|
+
}
|
|
62
|
+
if (g.content) {
|
|
63
|
+
const inner = tiptapToHtmlSafe(g.content, `${b.id}--${g.id}`, b.blockType);
|
|
64
|
+
if (inner)
|
|
65
|
+
parts.push(inner);
|
|
66
|
+
}
|
|
67
|
+
return `<section data-guideline-type="${escapeAttr(g.type)}">${parts.join('')}</section>`;
|
|
68
|
+
})
|
|
69
|
+
.join(EOL);
|
|
70
|
+
return sections;
|
|
71
|
+
}
|
|
45
72
|
case 'markdown-block':
|
|
46
73
|
return mdToHtml(Array.isArray(b.data.md) ? b.data.md.join(EOL) : (b.data.md ?? ''));
|
|
47
74
|
case 'divider-block':
|
|
@@ -96,7 +123,6 @@ async function blockToHtml(b) {
|
|
|
96
123
|
case 'whimsical-block':
|
|
97
124
|
case 'generic-iframe':
|
|
98
125
|
return `<iframe src="${escapeAttr(b.data.url)}" />`;
|
|
99
|
-
case 'guidelines': // @todo guidelines uses text-editor
|
|
100
126
|
case 'design-tokens':
|
|
101
127
|
case 'component-spec-block':
|
|
102
128
|
case 'design-src-component':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks-to-html.js","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"blocks-to-html.js","sourceRoot":"","sources":["../src/blocks-to-html.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knapsack/rendering-utils",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "4.92.
|
|
4
|
+
"version": "4.92.25--canary.7665.aeb414e.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -22,24 +22,23 @@
|
|
|
22
22
|
"build": "tsc",
|
|
23
23
|
"clean": "rm -rf ./dist",
|
|
24
24
|
"lint": "eslint ./",
|
|
25
|
-
"test": "
|
|
25
|
+
"test": "vitest run"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@knapsack/tiptap-utils": "4.92.
|
|
29
|
-
"@knapsack/utils": "4.92.
|
|
28
|
+
"@knapsack/tiptap-utils": "4.92.25--canary.7665.aeb414e.0",
|
|
29
|
+
"@knapsack/utils": "4.92.25--canary.7665.aeb414e.0",
|
|
30
30
|
"isomorphic-dompurify": "^1.13.0",
|
|
31
31
|
"marked": "^6.0.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@knapsack/eslint-config-starter": "4.92.
|
|
35
|
-
"@knapsack/prettier-config": "4.92.
|
|
36
|
-
"@knapsack/
|
|
37
|
-
"@knapsack/
|
|
38
|
-
"@knapsack/typescript-config-starter": "4.92.24",
|
|
34
|
+
"@knapsack/eslint-config-starter": "4.92.25--canary.7665.aeb414e.0",
|
|
35
|
+
"@knapsack/prettier-config": "4.92.25--canary.7665.aeb414e.0",
|
|
36
|
+
"@knapsack/types": "4.92.25--canary.7665.aeb414e.0",
|
|
37
|
+
"@knapsack/typescript-config-starter": "4.92.25--canary.7665.aeb414e.0",
|
|
39
38
|
"@types/node": "^22.19.11",
|
|
40
|
-
"ava": "^6.4.1",
|
|
41
39
|
"eslint": "^9.20.0",
|
|
42
|
-
"typescript": "^5.9.3"
|
|
40
|
+
"typescript": "^5.9.3",
|
|
41
|
+
"vitest": "^4.1.2"
|
|
43
42
|
},
|
|
44
43
|
"license": "GPL-2.0-or-later",
|
|
45
44
|
"publishConfig": {
|
|
@@ -50,5 +49,5 @@
|
|
|
50
49
|
"directory": "libs/rendering-utils",
|
|
51
50
|
"type": "git"
|
|
52
51
|
},
|
|
53
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "aeb414e51e6b6c53d548e976b2b518cf2a063aeb"
|
|
54
53
|
}
|
package/src/blocks-to-html.ts
CHANGED
|
@@ -50,6 +50,12 @@ function tiptapToHtmlSafe(
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
const GUIDELINE_LABELS = {
|
|
54
|
+
do: 'Do',
|
|
55
|
+
dont: "Don't",
|
|
56
|
+
caution: 'Caution',
|
|
57
|
+
} as const;
|
|
58
|
+
|
|
53
59
|
async function blockToHtml(b: BlockConfig): Promise<string> {
|
|
54
60
|
if (!b.data) return '';
|
|
55
61
|
switch (b.blockType) {
|
|
@@ -57,6 +63,32 @@ async function blockToHtml(b: BlockConfig): Promise<string> {
|
|
|
57
63
|
case 'table':
|
|
58
64
|
case 'text-editor':
|
|
59
65
|
return tiptapToHtmlSafe(b.data.content, b.id, b.blockType);
|
|
66
|
+
case 'guidelines': {
|
|
67
|
+
const guidelines = b.data.guidelines ?? [];
|
|
68
|
+
if (guidelines.length === 0) return '';
|
|
69
|
+
const sections = guidelines
|
|
70
|
+
.map((g) => {
|
|
71
|
+
const label = GUIDELINE_LABELS[g.type] ?? g.type;
|
|
72
|
+
const parts: string[] = [`<h4>${escapeAttr(label)}</h4>`];
|
|
73
|
+
if (g.image?.src) {
|
|
74
|
+
const alt = g.image.alt ?? g.image.title ?? label;
|
|
75
|
+
parts.push(
|
|
76
|
+
`<img src="${escapeAttr(g.image.src)}" alt="${escapeAttr(alt)}" />`,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
if (g.content) {
|
|
80
|
+
const inner = tiptapToHtmlSafe(
|
|
81
|
+
g.content,
|
|
82
|
+
`${b.id}--${g.id}`,
|
|
83
|
+
b.blockType,
|
|
84
|
+
);
|
|
85
|
+
if (inner) parts.push(inner);
|
|
86
|
+
}
|
|
87
|
+
return `<section data-guideline-type="${escapeAttr(g.type)}">${parts.join('')}</section>`;
|
|
88
|
+
})
|
|
89
|
+
.join(EOL);
|
|
90
|
+
return sections;
|
|
91
|
+
}
|
|
60
92
|
case 'markdown-block':
|
|
61
93
|
return mdToHtml(
|
|
62
94
|
Array.isArray(b.data.md) ? b.data.md.join(EOL) : (b.data.md ?? ''),
|
|
@@ -122,7 +154,6 @@ async function blockToHtml(b: BlockConfig): Promise<string> {
|
|
|
122
154
|
case 'whimsical-block':
|
|
123
155
|
case 'generic-iframe':
|
|
124
156
|
return `<iframe src="${escapeAttr(b.data.url)}" />`;
|
|
125
|
-
case 'guidelines': // @todo guidelines uses text-editor
|
|
126
157
|
case 'design-tokens':
|
|
127
158
|
case 'component-spec-block':
|
|
128
159
|
case 'design-src-component':
|
package/vitest.config.ts
ADDED
package/ava.config.cjs
DELETED