jamdesk 1.1.220 → 1.1.221
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-text.d.ts","sourceRoot":"","sources":["../../src/lib/svg-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,kBAAkB,UAAY,CAAC;AAC5C,eAAO,MAAM,gBAAgB,8IACgH,CAAC;AAC9I,eAAO,MAAM,aAAa,mEAAmE,CAAC;
|
|
1
|
+
{"version":3,"file":"svg-text.d.ts","sourceRoot":"","sources":["../../src/lib/svg-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,kBAAkB,UAAY,CAAC;AAC5C,eAAO,MAAM,gBAAgB,8IACgH,CAAC;AAC9I,eAAO,MAAM,aAAa,mEAAmE,CAAC;AAwF9F;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsF/C;AAED,KAAK,UAAU,GAAG,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC;AAEzE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CACpG,GAAG,MAAM,GAAG,IAAI,CAoBhB"}
|
package/dist/lib/svg-text.js
CHANGED
|
@@ -10,6 +10,11 @@ export const SVG_TEXT_MESSAGE = "This SVG logo has text in it that link previews
|
|
|
10
10
|
export const SVG_TEXT_LINK = 'https://jamdesk.com/docs/content/seo#customize-the-social-card';
|
|
11
11
|
// Elements whose contents are never painted, so a <text> inside them is not visible text.
|
|
12
12
|
const NON_RENDERED = new Set(['title', 'desc', 'metadata', 'script', 'style']);
|
|
13
|
+
// Entities that draw as blank space. Input is lowercased already. Any other
|
|
14
|
+
// entity (D and friends) is a visible character.
|
|
15
|
+
const BLANK_ENTITIES = [
|
|
16
|
+
' ', ' ', ' ', ' ', ' ', '	', '	', ' ', '
', ' ', '
',
|
|
17
|
+
];
|
|
13
18
|
/** Character data of a <text> body with nested tags (tspan etc.) dropped. */
|
|
14
19
|
function visibleData(body) {
|
|
15
20
|
let i = 0;
|
|
@@ -18,8 +23,17 @@ function visibleData(body) {
|
|
|
18
23
|
const end = lt === -1 ? body.length : lt;
|
|
19
24
|
for (let k = i; k < end; k++) {
|
|
20
25
|
const c = body.charCodeAt(k);
|
|
21
|
-
// Anything that is not
|
|
22
|
-
if (c
|
|
26
|
+
// Anything that is not whitespace counts. U+00A0 is blank, like its entities.
|
|
27
|
+
if (c === 38) {
|
|
28
|
+
// Fixed-size list, and k jumps past the match, so this stays linear.
|
|
29
|
+
const hit = BLANK_ENTITIES.find((e) => body.startsWith(e, k));
|
|
30
|
+
if (hit) {
|
|
31
|
+
k += hit.length - 1;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (c !== 32 && c !== 9 && c !== 10 && c !== 13 && c !== 12 && c !== 160)
|
|
23
37
|
return true;
|
|
24
38
|
}
|
|
25
39
|
if (lt === -1)
|
|
@@ -47,6 +61,28 @@ function findClose(lc, rawName, from) {
|
|
|
47
61
|
}
|
|
48
62
|
return -1;
|
|
49
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Index of the first '>' at or after `from` that is outside a quoted attribute
|
|
66
|
+
* value, or -1. A '>' inside "..." or '...' does not end the tag. One forward
|
|
67
|
+
* walk; an unterminated quote returns -1 (no later tag can be whole).
|
|
68
|
+
*/
|
|
69
|
+
function tagEnd(lc, from) {
|
|
70
|
+
let quote = 0;
|
|
71
|
+
for (let k = from; k < lc.length; k++) {
|
|
72
|
+
const c = lc.charCodeAt(k);
|
|
73
|
+
if (quote) {
|
|
74
|
+
if (c === quote)
|
|
75
|
+
quote = 0;
|
|
76
|
+
}
|
|
77
|
+
else if (c === 34 || c === 39) {
|
|
78
|
+
quote = c;
|
|
79
|
+
}
|
|
80
|
+
else if (c === 62) {
|
|
81
|
+
return k;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return -1;
|
|
85
|
+
}
|
|
50
86
|
// display:none on an element or its style hides the whole subtree. Design tools
|
|
51
87
|
// leave the original text in a hidden layer after outlining a copy of it.
|
|
52
88
|
// visibility:hidden is not here on purpose: a child can set it back to visible.
|
|
@@ -109,9 +145,9 @@ export function svgHasText(svg) {
|
|
|
109
145
|
n++;
|
|
110
146
|
}
|
|
111
147
|
const rawName = lc.slice(nameStart, n);
|
|
112
|
-
// Every tag is read up to its '>' and the scan resumes after it, so no
|
|
148
|
+
// Every tag is read up to its '>' (outside quotes) and the scan resumes after it, so no
|
|
113
149
|
// character is looked at twice. With no '>' left, no later tag can be whole.
|
|
114
|
-
const gt = lc
|
|
150
|
+
const gt = tagEnd(lc, n);
|
|
115
151
|
if (gt === -1)
|
|
116
152
|
return false;
|
|
117
153
|
const selfClosing = lc.charCodeAt(gt - 1) === 47;
|
|
@@ -122,7 +158,8 @@ export function svgHasText(svg) {
|
|
|
122
158
|
continue;
|
|
123
159
|
}
|
|
124
160
|
const local = rawName.slice(rawName.indexOf(':') + 1);
|
|
125
|
-
|
|
161
|
+
// HTML inside <foreignObject> is not drawn by the card either, so it counts like <text>.
|
|
162
|
+
const isText = local === 'text' || local === 'foreignobject';
|
|
126
163
|
if (isText || NON_RENDERED.has(local)) {
|
|
127
164
|
if (selfClosing) {
|
|
128
165
|
i = gt + 1;
|
package/dist/lib/svg-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg-text.js","sourceRoot":"","sources":["../../src/lib/svg-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oEAAoE;AAEpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAC3B,2IAA2I,CAAC;AAC9I,MAAM,CAAC,MAAM,aAAa,GAAG,gEAAgE,CAAC;AAE9F,0FAA0F;AAC1F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/E,6EAA6E;AAC7E,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,
|
|
1
|
+
{"version":3,"file":"svg-text.js","sourceRoot":"","sources":["../../src/lib/svg-text.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.221",
|
|
4
4
|
"description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jamdesk",
|
package/vendored/lib/svg-text.ts
CHANGED
|
@@ -8,6 +8,12 @@ export const SVG_TEXT_LINK = 'https://jamdesk.com/docs/content/seo#customize-the
|
|
|
8
8
|
// Elements whose contents are never painted, so a <text> inside them is not visible text.
|
|
9
9
|
const NON_RENDERED = new Set(['title', 'desc', 'metadata', 'script', 'style']);
|
|
10
10
|
|
|
11
|
+
// Entities that draw as blank space. Input is lowercased already. Any other
|
|
12
|
+
// entity (D and friends) is a visible character.
|
|
13
|
+
const BLANK_ENTITIES = [
|
|
14
|
+
' ', ' ', ' ', ' ', ' ', '	', '	', ' ', '
', ' ', '
',
|
|
15
|
+
];
|
|
16
|
+
|
|
11
17
|
/** Character data of a <text> body with nested tags (tspan etc.) dropped. */
|
|
12
18
|
function visibleData(body: string): boolean {
|
|
13
19
|
let i = 0;
|
|
@@ -16,8 +22,17 @@ function visibleData(body: string): boolean {
|
|
|
16
22
|
const end = lt === -1 ? body.length : lt;
|
|
17
23
|
for (let k = i; k < end; k++) {
|
|
18
24
|
const c = body.charCodeAt(k);
|
|
19
|
-
// Anything that is not
|
|
20
|
-
if (c
|
|
25
|
+
// Anything that is not whitespace counts. U+00A0 is blank, like its entities.
|
|
26
|
+
if (c === 38) {
|
|
27
|
+
// Fixed-size list, and k jumps past the match, so this stays linear.
|
|
28
|
+
const hit = BLANK_ENTITIES.find((e) => body.startsWith(e, k));
|
|
29
|
+
if (hit) {
|
|
30
|
+
k += hit.length - 1;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
if (c !== 32 && c !== 9 && c !== 10 && c !== 13 && c !== 12 && c !== 160) return true;
|
|
21
36
|
}
|
|
22
37
|
if (lt === -1) return false;
|
|
23
38
|
const gt = body.indexOf('>', lt);
|
|
@@ -43,6 +58,26 @@ function findClose(lc: string, rawName: string, from: number): number {
|
|
|
43
58
|
return -1;
|
|
44
59
|
}
|
|
45
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Index of the first '>' at or after `from` that is outside a quoted attribute
|
|
63
|
+
* value, or -1. A '>' inside "..." or '...' does not end the tag. One forward
|
|
64
|
+
* walk; an unterminated quote returns -1 (no later tag can be whole).
|
|
65
|
+
*/
|
|
66
|
+
function tagEnd(lc: string, from: number): number {
|
|
67
|
+
let quote = 0;
|
|
68
|
+
for (let k = from; k < lc.length; k++) {
|
|
69
|
+
const c = lc.charCodeAt(k);
|
|
70
|
+
if (quote) {
|
|
71
|
+
if (c === quote) quote = 0;
|
|
72
|
+
} else if (c === 34 || c === 39) {
|
|
73
|
+
quote = c;
|
|
74
|
+
} else if (c === 62) {
|
|
75
|
+
return k;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return -1;
|
|
79
|
+
}
|
|
80
|
+
|
|
46
81
|
// display:none on an element or its style hides the whole subtree. Design tools
|
|
47
82
|
// leave the original text in a hidden layer after outlining a copy of it.
|
|
48
83
|
// visibility:hidden is not here on purpose: a child can set it back to visible.
|
|
@@ -103,9 +138,9 @@ export function svgHasText(svg: string): boolean {
|
|
|
103
138
|
n++;
|
|
104
139
|
}
|
|
105
140
|
const rawName = lc.slice(nameStart, n);
|
|
106
|
-
// Every tag is read up to its '>' and the scan resumes after it, so no
|
|
141
|
+
// Every tag is read up to its '>' (outside quotes) and the scan resumes after it, so no
|
|
107
142
|
// character is looked at twice. With no '>' left, no later tag can be whole.
|
|
108
|
-
const gt = lc
|
|
143
|
+
const gt = tagEnd(lc, n);
|
|
109
144
|
if (gt === -1) return false;
|
|
110
145
|
const selfClosing = lc.charCodeAt(gt - 1) === 47;
|
|
111
146
|
|
|
@@ -116,7 +151,8 @@ export function svgHasText(svg: string): boolean {
|
|
|
116
151
|
}
|
|
117
152
|
|
|
118
153
|
const local = rawName.slice(rawName.indexOf(':') + 1);
|
|
119
|
-
|
|
154
|
+
// HTML inside <foreignObject> is not drawn by the card either, so it counts like <text>.
|
|
155
|
+
const isText = local === 'text' || local === 'foreignobject';
|
|
120
156
|
if (isText || NON_RENDERED.has(local)) {
|
|
121
157
|
if (selfClosing) {
|
|
122
158
|
i = gt + 1;
|