@turntrout/subfont 1.10.1 → 1.10.2
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/lib/concurrencyLimit.d.ts.map +1 -1
- package/lib/concurrencyLimit.js +6 -8
- package/lib/concurrencyLimit.js.map +1 -1
- package/lib/extractVisibleText.d.ts.map +1 -1
- package/lib/extractVisibleText.js +58 -30
- package/lib/extractVisibleText.js.map +1 -1
- package/lib/fontConverter.d.ts.map +1 -1
- package/lib/fontConverter.js +27 -23
- package/lib/fontConverter.js.map +1 -1
- package/lib/injectSubsetDefinitions.d.ts.map +1 -1
- package/lib/injectSubsetDefinitions.js +24 -21
- package/lib/injectSubsetDefinitions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrencyLimit.d.ts","sourceRoot":"","sources":["../src/concurrencyLimit.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,QAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"concurrencyLimit.d.ts","sourceRoot":"","sources":["../src/concurrencyLimit.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AAMpD,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C"}
|
package/lib/concurrencyLimit.js
CHANGED
|
@@ -5,15 +5,13 @@ exports.getMaxConcurrency = getMaxConcurrency;
|
|
|
5
5
|
const os = require("os");
|
|
6
6
|
// Approximate memory footprint of each worker thread (jsdom + font-tracer).
|
|
7
7
|
exports.WORKER_MEMORY_BYTES = 50 * 1024 * 1024; // 50 MB
|
|
8
|
+
function positiveOrOne(n) {
|
|
9
|
+
return n > 0 ? n : 1;
|
|
10
|
+
}
|
|
8
11
|
function getMaxConcurrency() {
|
|
9
|
-
const freeMem = os.freemem();
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
: 1;
|
|
13
|
-
const cpus = os.cpus();
|
|
14
|
-
// Font tracing is CPU-bound (not I/O), so match the pool size to the
|
|
15
|
-
// core count directly — no multiplier.
|
|
16
|
-
const byCpu = cpus.length || 1;
|
|
12
|
+
const freeMem = positiveOrOne(os.freemem());
|
|
13
|
+
const byCpu = positiveOrOne(os.cpus().length);
|
|
14
|
+
const byMemory = Math.floor(freeMem / exports.WORKER_MEMORY_BYTES);
|
|
17
15
|
return Math.max(1, Math.min(byMemory, byCpu));
|
|
18
16
|
}
|
|
19
17
|
//# sourceMappingURL=concurrencyLimit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrencyLimit.js","sourceRoot":"","sources":["../src/concurrencyLimit.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"concurrencyLimit.js","sourceRoot":"","sources":["../src/concurrencyLimit.ts"],"names":[],"mappings":";;;AASA,8CAKC;AAdD,yBAA0B;AAE1B,4EAA4E;AAC/D,QAAA,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE7D,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,2BAAmB,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractVisibleText.d.ts","sourceRoot":"","sources":["../src/extractVisibleText.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extractVisibleText.d.ts","sourceRoot":"","sources":["../src/extractVisibleText.ts"],"names":[],"mappings":"AAwLA,UAAU,kBAAkB;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjC;wBAK8B,kBAAkB;AAAjD,kBAAkD"}
|
|
@@ -90,54 +90,82 @@ function decodeEntities(str) {
|
|
|
90
90
|
return match;
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
function
|
|
99
|
-
if (!html)
|
|
100
|
-
return '';
|
|
101
|
-
// Reset lastIndex on global regexes — a prior call that threw
|
|
102
|
-
// mid-function would leave them in an indeterminate state.
|
|
93
|
+
// --- Pipeline stages ---
|
|
94
|
+
// Each stage takes an HTML string and returns a transformed string or
|
|
95
|
+
// extracted data. Ordering is enforced by the pipeline structure: stages
|
|
96
|
+
// that must run on "clean" HTML (invisible blocks removed) receive the
|
|
97
|
+
// output of stripInvisible, not the original HTML.
|
|
98
|
+
function resetGlobalRegexes() {
|
|
103
99
|
invisibleBlockRe.lastIndex = 0;
|
|
104
100
|
hiddenInputRe.lastIndex = 0;
|
|
105
101
|
attrRe.lastIndex = 0;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
102
|
+
}
|
|
103
|
+
function collectHiddenInputValues(html) {
|
|
104
|
+
hiddenInputRe.lastIndex = 0;
|
|
105
|
+
const values = new Set();
|
|
106
|
+
let match;
|
|
107
|
+
while ((match = hiddenInputRe.exec(html)) !== null) {
|
|
108
|
+
const fragment = match[0];
|
|
112
109
|
let m;
|
|
113
110
|
const localAttrRe = /\bvalue\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>]*))/gi;
|
|
114
111
|
while ((m = localAttrRe.exec(fragment)) !== null) {
|
|
115
112
|
const val = m[1] ?? m[2] ?? m[3];
|
|
116
113
|
if (val)
|
|
117
|
-
|
|
114
|
+
values.add(val);
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
return values;
|
|
118
|
+
}
|
|
119
|
+
function stripInvisible(html) {
|
|
120
|
+
invisibleBlockRe.lastIndex = 0;
|
|
121
|
+
let text = html.replace(invisibleBlockRe, ' ');
|
|
124
122
|
text = text.replace(commentRe, ' ');
|
|
125
|
-
|
|
123
|
+
return text;
|
|
124
|
+
}
|
|
125
|
+
function extractAttributes(cleanedHtml, hiddenInputValues) {
|
|
126
126
|
attrRe.lastIndex = 0;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const
|
|
127
|
+
const parts = [];
|
|
128
|
+
let match;
|
|
129
|
+
while ((match = attrRe.exec(cleanedHtml)) !== null) {
|
|
130
|
+
const attrName = match[1].toLowerCase();
|
|
131
|
+
const val = match[2] ?? match[3] ?? match[4];
|
|
131
132
|
if (!val)
|
|
132
133
|
continue;
|
|
133
134
|
if (attrName === 'value' && hiddenInputValues.has(val))
|
|
134
135
|
continue;
|
|
135
136
|
parts.push(decodeEntities(val));
|
|
136
137
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
return parts;
|
|
139
|
+
}
|
|
140
|
+
function stripTagsAndDecode(cleanedHtml) {
|
|
141
|
+
const text = cleanedHtml.replace(tagRe, ' ');
|
|
142
|
+
return decodeEntities(text);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Fast extraction of visible text content from HTML source.
|
|
146
|
+
* Used as a lightweight alternative to full font-tracer for pages
|
|
147
|
+
* that share the same CSS configuration as an already-traced page.
|
|
148
|
+
*
|
|
149
|
+
* Pipeline:
|
|
150
|
+
* 1. Collect hidden-input values (for exclusion)
|
|
151
|
+
* 2. Strip invisible blocks + comments
|
|
152
|
+
* 3. Extract text-bearing attributes from cleaned HTML
|
|
153
|
+
* 4. Strip remaining tags and decode entities
|
|
154
|
+
*/
|
|
155
|
+
function extractVisibleText(html) {
|
|
156
|
+
if (!html)
|
|
157
|
+
return '';
|
|
158
|
+
resetGlobalRegexes();
|
|
159
|
+
// Stage 1: identify hidden-input values (on original HTML, since
|
|
160
|
+
// hidden inputs are visible elements whose values we want to exclude)
|
|
161
|
+
const hiddenInputValues = collectHiddenInputValues(html);
|
|
162
|
+
// Stage 2: remove invisible content
|
|
163
|
+
const cleaned = stripInvisible(html);
|
|
164
|
+
// Stage 3: extract attributes from cleaned HTML (not original!)
|
|
165
|
+
const attrTexts = extractAttributes(cleaned, hiddenInputValues);
|
|
166
|
+
// Stage 4: strip tags and decode remaining text content
|
|
167
|
+
const bodyText = stripTagsAndDecode(cleaned);
|
|
168
|
+
return [...attrTexts, bodyText].join(' ');
|
|
141
169
|
}
|
|
142
170
|
extractVisibleText.INVISIBLE_ELEMENTS =
|
|
143
171
|
INVISIBLE_ELEMENTS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractVisibleText.js","sourceRoot":"","sources":["../src/extractVisibleText.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"extractVisibleText.js","sourceRoot":"","sources":["../src/extractVisibleText.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fontConverter.d.ts","sourceRoot":"","sources":["../src/fontConverter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fontConverter.d.ts","sourceRoot":"","sources":["../src/fontConverter.ts"],"names":[],"mappings":"AA8IA,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,GAAG,UAAU,EAC3B,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAM7C"}
|
package/lib/fontConverter.js
CHANGED
|
@@ -8,10 +8,14 @@ const worker_threads_1 = require("worker_threads");
|
|
|
8
8
|
const workerPath = pathModule.join(__dirname, 'fontConverterWorker.js');
|
|
9
9
|
const CONVERT_TIMEOUT_MS = 120_000;
|
|
10
10
|
const POOL_SIZE = Math.max(1, Math.min(os.cpus().length, 8));
|
|
11
|
+
// Worker lifecycle: Created → Idle → Busy → Idle | Discarded
|
|
12
|
+
// Only Idle workers may be handed to callers. Discarded workers are
|
|
13
|
+
// terminated and never reused. This structure makes it impossible
|
|
14
|
+
// to accidentally reuse a worker that encountered an error.
|
|
15
|
+
const _idle = [];
|
|
16
|
+
const _alive = new Set();
|
|
11
17
|
let _activeCount = 0;
|
|
12
18
|
const _queue = [];
|
|
13
|
-
const _idleWorkers = [];
|
|
14
|
-
const _allWorkers = new Set();
|
|
15
19
|
function acquireSlot() {
|
|
16
20
|
if (_activeCount < POOL_SIZE) {
|
|
17
21
|
_activeCount++;
|
|
@@ -33,23 +37,23 @@ function releaseSlot() {
|
|
|
33
37
|
function createWorker() {
|
|
34
38
|
const worker = new worker_threads_1.Worker(workerPath);
|
|
35
39
|
worker.unref();
|
|
36
|
-
|
|
37
|
-
// Drop crashed idle workers from the cache so we never hand a zombie
|
|
38
|
-
// to a future caller. doConvert attaches its own short-lived exit
|
|
39
|
-
// handler for the in-flight case; both can fire harmlessly.
|
|
40
|
+
_alive.add(worker);
|
|
40
41
|
worker.on('exit', () => {
|
|
41
|
-
|
|
42
|
-
const idx =
|
|
42
|
+
_alive.delete(worker);
|
|
43
|
+
const idx = _idle.indexOf(worker);
|
|
43
44
|
if (idx !== -1)
|
|
44
|
-
|
|
45
|
+
_idle.splice(idx, 1);
|
|
45
46
|
});
|
|
46
47
|
return worker;
|
|
47
48
|
}
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
function returnToIdle(worker) {
|
|
50
|
+
_idle.push(worker);
|
|
51
|
+
}
|
|
52
|
+
function discard(worker) {
|
|
53
|
+
_alive.delete(worker);
|
|
54
|
+
const idx = _idle.indexOf(worker);
|
|
51
55
|
if (idx !== -1)
|
|
52
|
-
|
|
56
|
+
_idle.splice(idx, 1);
|
|
53
57
|
worker.terminate().catch(() => { });
|
|
54
58
|
}
|
|
55
59
|
function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
@@ -60,7 +64,7 @@ function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
|
60
64
|
return;
|
|
61
65
|
settled = true;
|
|
62
66
|
cleanup();
|
|
63
|
-
|
|
67
|
+
discard(worker);
|
|
64
68
|
reject(new Error(`Font conversion to ${targetFormat} timed out after ${CONVERT_TIMEOUT_MS}ms`));
|
|
65
69
|
}, CONVERT_TIMEOUT_MS);
|
|
66
70
|
timer.unref();
|
|
@@ -76,11 +80,11 @@ function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
|
76
80
|
settled = true;
|
|
77
81
|
cleanup();
|
|
78
82
|
if (msg.type === 'result' && msg.buffer) {
|
|
79
|
-
|
|
83
|
+
returnToIdle(worker);
|
|
80
84
|
resolve(Buffer.from(msg.buffer));
|
|
81
85
|
}
|
|
82
86
|
else {
|
|
83
|
-
|
|
87
|
+
discard(worker);
|
|
84
88
|
reject(new Error(msg.error || `Font conversion to ${targetFormat} failed`));
|
|
85
89
|
}
|
|
86
90
|
};
|
|
@@ -89,7 +93,7 @@ function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
|
89
93
|
return;
|
|
90
94
|
settled = true;
|
|
91
95
|
cleanup();
|
|
92
|
-
|
|
96
|
+
discard(worker);
|
|
93
97
|
reject(err);
|
|
94
98
|
};
|
|
95
99
|
const onExit = (code) => {
|
|
@@ -97,7 +101,7 @@ function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
|
97
101
|
return;
|
|
98
102
|
settled = true;
|
|
99
103
|
cleanup();
|
|
100
|
-
|
|
104
|
+
discard(worker);
|
|
101
105
|
reject(new Error(`Font converter worker exited unexpectedly with code ${code}`));
|
|
102
106
|
};
|
|
103
107
|
worker.on('message', onMessage);
|
|
@@ -109,7 +113,7 @@ function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
|
109
113
|
catch (err) {
|
|
110
114
|
settled = true;
|
|
111
115
|
cleanup();
|
|
112
|
-
|
|
116
|
+
discard(worker);
|
|
113
117
|
reject(err);
|
|
114
118
|
}
|
|
115
119
|
});
|
|
@@ -117,7 +121,7 @@ function doConvert(worker, buffer, targetFormat, sourceFormat) {
|
|
|
117
121
|
async function convert(buffer, targetFormat, sourceFormat) {
|
|
118
122
|
await acquireSlot();
|
|
119
123
|
try {
|
|
120
|
-
const worker =
|
|
124
|
+
const worker = _idle.pop() ?? createWorker();
|
|
121
125
|
return await doConvert(worker, buffer, targetFormat, sourceFormat);
|
|
122
126
|
}
|
|
123
127
|
finally {
|
|
@@ -126,9 +130,9 @@ async function convert(buffer, targetFormat, sourceFormat) {
|
|
|
126
130
|
}
|
|
127
131
|
async function destroy() {
|
|
128
132
|
_queue.length = 0;
|
|
129
|
-
|
|
130
|
-
const workers = Array.from(
|
|
131
|
-
|
|
133
|
+
_idle.length = 0;
|
|
134
|
+
const workers = Array.from(_alive);
|
|
135
|
+
_alive.clear();
|
|
132
136
|
await Promise.all(workers.map((w) => w.terminate()));
|
|
133
137
|
}
|
|
134
138
|
//# sourceMappingURL=fontConverter.js.map
|
package/lib/fontConverter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fontConverter.js","sourceRoot":"","sources":["../src/fontConverter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fontConverter.js","sourceRoot":"","sources":["../src/fontConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectSubsetDefinitions.d.ts","sourceRoot":"","sources":["../src/injectSubsetDefinitions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectSubsetDefinitions.d.ts","sourceRoot":"","sources":["../src/injectSubsetDefinitions.ts"],"names":[],"mappings":"AAQA,iBAAS,uBAAuB,CAC9B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,eAAe,EAAE,OAAO,GACvB,MAAM,CAkER;AAED,SAAS,uBAAuB,CAAC"}
|
|
@@ -3,32 +3,35 @@ const postcssValueParser = require("postcss-value-parser");
|
|
|
3
3
|
function injectSubsetDefinitions(cssValue, webfontNameMap, replaceOriginal) {
|
|
4
4
|
const subsetFontNames = new Set(Object.values(webfontNameMap).map((name) => name.toLowerCase()));
|
|
5
5
|
const rootNode = postcssValueParser(cssValue);
|
|
6
|
-
let
|
|
6
|
+
let state = 'awaiting';
|
|
7
7
|
for (const [i, node] of rootNode.nodes.entries()) {
|
|
8
8
|
let possibleFontFamily;
|
|
9
9
|
let lastFontFamilyTokenIndex = i;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
switch (node.type) {
|
|
11
|
+
case 'string':
|
|
12
|
+
possibleFontFamily = node.value;
|
|
13
|
+
state = 'awaiting';
|
|
14
|
+
break;
|
|
15
|
+
case 'word':
|
|
16
|
+
case 'space':
|
|
17
|
+
if (state === 'awaiting') {
|
|
18
|
+
const wordSequence = [];
|
|
19
|
+
for (let j = i; j < rootNode.nodes.length; j += 1) {
|
|
20
|
+
if (rootNode.nodes[j].type === 'word') {
|
|
21
|
+
wordSequence.push(rootNode.nodes[j].value);
|
|
22
|
+
lastFontFamilyTokenIndex = j;
|
|
23
|
+
}
|
|
24
|
+
else if (rootNode.nodes[j].type !== 'space') {
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
24
27
|
}
|
|
28
|
+
possibleFontFamily = wordSequence.join(' ');
|
|
25
29
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
isPrecededByWords = false;
|
|
30
|
+
state = 'inside-bareword';
|
|
31
|
+
break;
|
|
32
|
+
default:
|
|
33
|
+
state = 'awaiting';
|
|
34
|
+
break;
|
|
32
35
|
}
|
|
33
36
|
if (possibleFontFamily) {
|
|
34
37
|
const possibleFontFamilyLowerCase = possibleFontFamily.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectSubsetDefinitions.js","sourceRoot":"","sources":["../src/injectSubsetDefinitions.ts"],"names":[],"mappings":";AAAA,2DAA4D;
|
|
1
|
+
{"version":3,"file":"injectSubsetDefinitions.js","sourceRoot":"","sources":["../src/injectSubsetDefinitions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED