@turntrout/subfont 1.7.0 → 1.7.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/lib/FontTracerPool.d.ts +37 -0
- package/lib/FontTracerPool.d.ts.map +1 -0
- package/lib/FontTracerPool.js +210 -219
- package/lib/FontTracerPool.js.map +1 -0
- package/lib/cli.d.ts +3 -0
- package/lib/cli.d.ts.map +1 -0
- package/lib/cli.js +15 -12
- package/lib/cli.js.map +1 -0
- package/lib/subfont.d.ts +33 -0
- package/lib/subfont.d.ts.map +1 -0
- package/lib/subfont.js +530 -629
- package/lib/subfont.js.map +1 -0
- package/lib/subsetFontWithGlyphs.d.ts +17 -0
- package/lib/subsetFontWithGlyphs.d.ts.map +1 -0
- package/lib/subsetFontWithGlyphs.js +223 -256
- package/lib/subsetFontWithGlyphs.js.map +1 -0
- package/lib/subsetFonts.d.ts +59 -0
- package/lib/subsetFonts.d.ts.map +1 -0
- package/lib/subsetFonts.js +898 -1200
- package/lib/subsetFonts.js.map +1 -0
- package/lib/subsetGeneration.d.ts +39 -0
- package/lib/subsetGeneration.d.ts.map +1 -0
- package/lib/subsetGeneration.js +294 -324
- package/lib/subsetGeneration.js.map +1 -0
- package/package.json +11 -2
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
interface StylesheetWithPredicates {
|
|
2
|
+
text?: string;
|
|
3
|
+
asset?: {
|
|
4
|
+
text?: string;
|
|
5
|
+
};
|
|
6
|
+
predicates?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
interface FontTracerPoolOptions {
|
|
9
|
+
taskTimeoutMs?: number;
|
|
10
|
+
}
|
|
11
|
+
declare class FontTracerPool {
|
|
12
|
+
private _workerPath;
|
|
13
|
+
private _numWorkers;
|
|
14
|
+
private _taskTimeoutMs;
|
|
15
|
+
private _workers;
|
|
16
|
+
private _idle;
|
|
17
|
+
private _pendingTasks;
|
|
18
|
+
private _taskCallbacks;
|
|
19
|
+
private _taskTimers;
|
|
20
|
+
private _taskByWorker;
|
|
21
|
+
private _nextTaskId;
|
|
22
|
+
constructor(numWorkers: number, { taskTimeoutMs }?: FontTracerPoolOptions);
|
|
23
|
+
init(): Promise<void>;
|
|
24
|
+
private _clearTaskTimer;
|
|
25
|
+
private _onWorkerMessage;
|
|
26
|
+
private _onWorkerExit;
|
|
27
|
+
private _startTaskTimer;
|
|
28
|
+
private _dispatchPending;
|
|
29
|
+
/**
|
|
30
|
+
* Run fontTracer on the given HTML text + stylesheets in a worker.
|
|
31
|
+
* Returns a promise that resolves to textByProps.
|
|
32
|
+
*/
|
|
33
|
+
trace(htmlText: string, stylesheetsWithPredicates: StylesheetWithPredicates[]): Promise<unknown>;
|
|
34
|
+
destroy(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export = FontTracerPool;
|
|
37
|
+
//# sourceMappingURL=FontTracerPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FontTracerPool.d.ts","sourceRoot":"","sources":["../src/FontTracerPool.ts"],"names":[],"mappings":"AAkBA,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAqCD,UAAU,qBAAqB;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,cAAM,cAAc;IAClB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAS;gBAG1B,UAAU,EAAE,MAAM,EAClB,EAAE,aAAuC,EAAE,GAAE,qBAA0B;IAcnE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC3B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;IAGH,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,wBAAwB,EAAE,GAEpD,OAAO,CAAC,OAAO,CAAC;IAsBb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C/B;AAED,SAAS,cAAc,CAAC"}
|
package/lib/FontTracerPool.js
CHANGED
|
@@ -1,239 +1,230 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
const pathModule = require("path");
|
|
3
|
+
const worker_threads_1 = require("worker_threads");
|
|
4
4
|
/**
|
|
5
5
|
* Worker pool for running fontTracer in parallel across pages.
|
|
6
6
|
* Each worker re-parses HTML with jsdom and runs fontTracer independently.
|
|
7
7
|
*/
|
|
8
8
|
const DEFAULT_TASK_TIMEOUT_MS = 60_000;
|
|
9
|
-
|
|
10
9
|
class FontTracerPool {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const onMessage = (msg) => {
|
|
33
|
-
if (msg.type === 'ready') {
|
|
34
|
-
worker.off('message', onMessage);
|
|
35
|
-
worker.off('error', onError);
|
|
36
|
-
worker.on('message', (msg) => this._onWorkerMessage(worker, msg));
|
|
37
|
-
worker.on('exit', (code) => this._onWorkerExit(worker, code));
|
|
38
|
-
this._idle.push(worker);
|
|
39
|
-
resolve();
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
worker.on('message', onMessage);
|
|
43
|
-
worker.on('error', onError);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
worker.postMessage({ type: 'init' });
|
|
47
|
-
|
|
48
|
-
initPromises.push(initPromise);
|
|
49
|
-
}
|
|
50
|
-
await Promise.all(initPromises);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
_clearTaskTimer(taskId) {
|
|
54
|
-
const timer = this._taskTimers.get(taskId);
|
|
55
|
-
if (timer) {
|
|
56
|
-
clearTimeout(timer);
|
|
57
|
-
this._taskTimers.delete(taskId);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
_onWorkerMessage(worker, msg) {
|
|
62
|
-
this._taskByWorker.delete(worker);
|
|
63
|
-
this._clearTaskTimer(msg.taskId);
|
|
64
|
-
const cb = this._taskCallbacks.get(msg.taskId);
|
|
65
|
-
if (cb) {
|
|
66
|
-
this._taskCallbacks.delete(msg.taskId);
|
|
67
|
-
if (msg.type === 'result') {
|
|
68
|
-
cb.resolve(msg.textByProps);
|
|
69
|
-
} else if (msg.type === 'error') {
|
|
70
|
-
cb.reject(new Error(`Worker error: ${msg.error}\n${msg.stack}`));
|
|
71
|
-
}
|
|
10
|
+
_workerPath;
|
|
11
|
+
_numWorkers;
|
|
12
|
+
_taskTimeoutMs;
|
|
13
|
+
_workers;
|
|
14
|
+
_idle;
|
|
15
|
+
_pendingTasks;
|
|
16
|
+
_taskCallbacks;
|
|
17
|
+
_taskTimers;
|
|
18
|
+
_taskByWorker;
|
|
19
|
+
_nextTaskId;
|
|
20
|
+
constructor(numWorkers, { taskTimeoutMs = DEFAULT_TASK_TIMEOUT_MS } = {}) {
|
|
21
|
+
this._workerPath = pathModule.join(__dirname, 'fontTracerWorker.js');
|
|
22
|
+
this._numWorkers = numWorkers;
|
|
23
|
+
this._taskTimeoutMs = taskTimeoutMs;
|
|
24
|
+
this._workers = [];
|
|
25
|
+
this._idle = [];
|
|
26
|
+
this._pendingTasks = [];
|
|
27
|
+
this._taskCallbacks = new Map();
|
|
28
|
+
this._taskTimers = new Map();
|
|
29
|
+
this._taskByWorker = new Map();
|
|
30
|
+
this._nextTaskId = 0;
|
|
72
31
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
32
|
+
async init() {
|
|
33
|
+
const initPromises = [];
|
|
34
|
+
for (let i = 0; i < this._numWorkers; i++) {
|
|
35
|
+
const worker = new worker_threads_1.Worker(this._workerPath);
|
|
36
|
+
this._workers.push(worker);
|
|
37
|
+
const initPromise = new Promise((resolve, reject) => {
|
|
38
|
+
const onError = reject;
|
|
39
|
+
const onMessage = (msg) => {
|
|
40
|
+
if (msg.type === 'ready') {
|
|
41
|
+
worker.off('message', onMessage);
|
|
42
|
+
worker.off('error', onError);
|
|
43
|
+
worker.on('message', (msg) => this._onWorkerMessage(worker, msg));
|
|
44
|
+
worker.on('exit', (code) => this._onWorkerExit(worker, code));
|
|
45
|
+
this._idle.push(worker);
|
|
46
|
+
resolve();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
worker.on('message', onMessage);
|
|
50
|
+
worker.on('error', onError);
|
|
51
|
+
});
|
|
52
|
+
worker.postMessage({ type: 'init' });
|
|
53
|
+
initPromises.push(initPromise);
|
|
54
|
+
}
|
|
55
|
+
await Promise.all(initPromises);
|
|
83
56
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
57
|
+
_clearTaskTimer(taskId) {
|
|
58
|
+
const timer = this._taskTimers.get(taskId);
|
|
59
|
+
if (timer) {
|
|
60
|
+
clearTimeout(timer);
|
|
61
|
+
this._taskTimers.delete(taskId);
|
|
62
|
+
}
|
|
87
63
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this._clearTaskTimer(taskId);
|
|
95
|
-
const cb = this._taskCallbacks.get(taskId);
|
|
64
|
+
_onWorkerMessage(worker, msg) {
|
|
65
|
+
if (msg.type === 'ready')
|
|
66
|
+
return;
|
|
67
|
+
this._taskByWorker.delete(worker);
|
|
68
|
+
this._clearTaskTimer(msg.taskId);
|
|
69
|
+
const cb = this._taskCallbacks.get(msg.taskId);
|
|
96
70
|
if (cb) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
for (const task of this._pendingTasks) {
|
|
105
|
-
const cb = this._taskCallbacks.get(task.message.taskId);
|
|
106
|
-
if (cb) {
|
|
107
|
-
this._taskCallbacks.delete(task.message.taskId);
|
|
108
|
-
cb.reject(
|
|
109
|
-
new Error('All workers have crashed, no workers available')
|
|
110
|
-
);
|
|
111
|
-
}
|
|
71
|
+
this._taskCallbacks.delete(msg.taskId);
|
|
72
|
+
if (msg.type === 'result') {
|
|
73
|
+
cb.resolve(msg.textByProps);
|
|
74
|
+
}
|
|
75
|
+
else if (msg.type === 'error') {
|
|
76
|
+
cb.reject(new Error(`Worker error: ${msg.error}\n${msg.stack}`));
|
|
77
|
+
}
|
|
112
78
|
}
|
|
113
|
-
|
|
114
|
-
|
|
79
|
+
// Worker is now idle, check for pending tasks
|
|
80
|
+
this._idle.push(worker);
|
|
81
|
+
this._dispatchPending();
|
|
115
82
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
this._taskTimers.delete(taskId);
|
|
122
|
-
const cb = this._taskCallbacks.get(taskId);
|
|
123
|
-
if (cb) {
|
|
124
|
-
this._taskCallbacks.delete(taskId);
|
|
125
|
-
cb.reject(
|
|
126
|
-
new Error(
|
|
127
|
-
`Font tracing task ${taskId} timed out after ${this._taskTimeoutMs}ms`
|
|
128
|
-
)
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
// Terminate the hung worker so it doesn't permanently consume a pool
|
|
132
|
-
// slot. _onWorkerExit will remove it from _workers and _idle.
|
|
133
|
-
for (const [worker, tid] of this._taskByWorker) {
|
|
134
|
-
if (tid === taskId) {
|
|
135
|
-
this._taskByWorker.delete(worker);
|
|
136
|
-
worker.terminate();
|
|
137
|
-
break;
|
|
83
|
+
_onWorkerExit(worker, code) {
|
|
84
|
+
// Remove crashed worker from tracking
|
|
85
|
+
const workerIdx = this._workers.indexOf(worker);
|
|
86
|
+
if (workerIdx !== -1) {
|
|
87
|
+
this._workers.splice(workerIdx, 1);
|
|
138
88
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
89
|
+
const idleIdx = this._idle.indexOf(worker);
|
|
90
|
+
if (idleIdx !== -1) {
|
|
91
|
+
this._idle.splice(idleIdx, 1);
|
|
92
|
+
}
|
|
93
|
+
if (code !== 0) {
|
|
94
|
+
// Reject the task that was in-flight on this worker
|
|
95
|
+
const taskId = this._taskByWorker.get(worker);
|
|
96
|
+
this._taskByWorker.delete(worker);
|
|
97
|
+
if (taskId !== undefined) {
|
|
98
|
+
this._clearTaskTimer(taskId);
|
|
99
|
+
const cb = this._taskCallbacks.get(taskId);
|
|
100
|
+
if (cb) {
|
|
101
|
+
this._taskCallbacks.delete(taskId);
|
|
102
|
+
cb.reject(new Error(`Worker exited with code ${code}`));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// If no workers remain, reject all pending tasks
|
|
106
|
+
if (this._workers.length === 0) {
|
|
107
|
+
for (const task of this._pendingTasks) {
|
|
108
|
+
const cb = this._taskCallbacks.get(task.message.taskId);
|
|
109
|
+
if (cb) {
|
|
110
|
+
this._taskCallbacks.delete(task.message.taskId);
|
|
111
|
+
cb.reject(new Error('All workers have crashed, no workers available'));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
this._pendingTasks = [];
|
|
115
|
+
}
|
|
162
116
|
}
|
|
163
|
-
}
|
|
164
117
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
this._taskCallbacks.set(taskId, { resolve, reject });
|
|
188
|
-
this._pendingTasks.push({ message });
|
|
189
|
-
this._dispatchPending();
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
async destroy() {
|
|
194
|
-
// Clear all task timers
|
|
195
|
-
for (const timer of this._taskTimers.values()) {
|
|
196
|
-
clearTimeout(timer);
|
|
118
|
+
_startTaskTimer(taskId) {
|
|
119
|
+
if (this._taskTimeoutMs <= 0)
|
|
120
|
+
return;
|
|
121
|
+
const timer = setTimeout(() => {
|
|
122
|
+
this._taskTimers.delete(taskId);
|
|
123
|
+
const cb = this._taskCallbacks.get(taskId);
|
|
124
|
+
if (cb) {
|
|
125
|
+
this._taskCallbacks.delete(taskId);
|
|
126
|
+
cb.reject(new Error(`Font tracing task ${taskId} timed out after ${this._taskTimeoutMs}ms`));
|
|
127
|
+
}
|
|
128
|
+
// Terminate the hung worker so it doesn't permanently consume a pool
|
|
129
|
+
// slot. _onWorkerExit will remove it from _workers and _idle.
|
|
130
|
+
for (const [worker, tid] of this._taskByWorker) {
|
|
131
|
+
if (tid === taskId) {
|
|
132
|
+
this._taskByWorker.delete(worker);
|
|
133
|
+
worker.terminate();
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}, this._taskTimeoutMs);
|
|
138
|
+
timer.unref();
|
|
139
|
+
this._taskTimers.set(taskId, timer);
|
|
197
140
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
141
|
+
_dispatchPending() {
|
|
142
|
+
while (this._idle.length > 0 && this._pendingTasks.length > 0) {
|
|
143
|
+
const worker = this._idle.pop();
|
|
144
|
+
const task = this._pendingTasks.shift();
|
|
145
|
+
this._taskByWorker.set(worker, task.message.taskId);
|
|
146
|
+
try {
|
|
147
|
+
worker.postMessage(task.message);
|
|
148
|
+
this._startTaskTimer(task.message.taskId);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
// postMessage can fail synchronously (e.g. structured clone error).
|
|
152
|
+
// Return the worker to the idle pool and reject the task.
|
|
153
|
+
this._taskByWorker.delete(worker);
|
|
154
|
+
this._idle.push(worker);
|
|
155
|
+
const cb = this._taskCallbacks.get(task.message.taskId);
|
|
156
|
+
if (cb) {
|
|
157
|
+
this._taskCallbacks.delete(task.message.taskId);
|
|
158
|
+
cb.reject(err);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Run fontTracer on the given HTML text + stylesheets in a worker.
|
|
165
|
+
* Returns a promise that resolves to textByProps.
|
|
166
|
+
*/
|
|
167
|
+
// The pool is payload-agnostic; callers (subsetFonts.ts) interpret the
|
|
168
|
+
// returned textByProps according to font-tracer's contract.
|
|
169
|
+
trace(htmlText, stylesheetsWithPredicates
|
|
170
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
171
|
+
) {
|
|
172
|
+
const taskId = this._nextTaskId++;
|
|
173
|
+
// Serialize stylesheets to plain data — asset objects contain DOM/PostCSS
|
|
174
|
+
// trees that cannot be transferred via structured clone.
|
|
175
|
+
const serializedStylesheets = stylesheetsWithPredicates.map((entry) => ({
|
|
176
|
+
text: entry.text || (entry.asset && entry.asset.text) || '',
|
|
177
|
+
predicates: entry.predicates || {},
|
|
178
|
+
}));
|
|
179
|
+
const message = {
|
|
180
|
+
type: 'trace',
|
|
181
|
+
taskId,
|
|
182
|
+
htmlText,
|
|
183
|
+
stylesheetsWithPredicates: serializedStylesheets,
|
|
184
|
+
};
|
|
185
|
+
return new Promise((resolve, reject) => {
|
|
186
|
+
this._taskCallbacks.set(taskId, { resolve, reject });
|
|
187
|
+
this._pendingTasks.push({ message });
|
|
188
|
+
this._dispatchPending();
|
|
189
|
+
});
|
|
207
190
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
this.
|
|
216
|
-
|
|
217
|
-
|
|
191
|
+
async destroy() {
|
|
192
|
+
// Clear all task timers
|
|
193
|
+
for (const timer of this._taskTimers.values()) {
|
|
194
|
+
clearTimeout(timer);
|
|
195
|
+
}
|
|
196
|
+
this._taskTimers.clear();
|
|
197
|
+
// Reject any tasks still waiting in the queue
|
|
198
|
+
for (const task of this._pendingTasks) {
|
|
199
|
+
const cb = this._taskCallbacks.get(task.message.taskId);
|
|
200
|
+
if (cb) {
|
|
201
|
+
this._taskCallbacks.delete(task.message.taskId);
|
|
202
|
+
cb.reject(new Error('Worker pool destroyed'));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
this._pendingTasks = [];
|
|
206
|
+
// Reject any in-flight tasks still assigned to workers.
|
|
207
|
+
// Clear _taskByWorker before terminate() so _onWorkerExit won't double-reject.
|
|
208
|
+
for (const [, taskId] of this._taskByWorker) {
|
|
209
|
+
const cb = this._taskCallbacks.get(taskId);
|
|
210
|
+
if (cb) {
|
|
211
|
+
this._taskCallbacks.delete(taskId);
|
|
212
|
+
cb.reject(new Error('Worker pool destroyed'));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
this._taskByWorker.clear();
|
|
216
|
+
// Terminate workers with a 5-second timeout to prevent hanging
|
|
217
|
+
const TERMINATE_TIMEOUT_MS = 5000;
|
|
218
|
+
await Promise.all(this._workers.map((w) => Promise.race([
|
|
219
|
+
w.terminate(),
|
|
220
|
+
new Promise((resolve) => {
|
|
221
|
+
const timer = setTimeout(resolve, TERMINATE_TIMEOUT_MS);
|
|
222
|
+
timer.unref();
|
|
223
|
+
}),
|
|
224
|
+
])));
|
|
225
|
+
this._workers = [];
|
|
226
|
+
this._idle = [];
|
|
218
227
|
}
|
|
219
|
-
this._taskByWorker.clear();
|
|
220
|
-
|
|
221
|
-
// Terminate workers with a 5-second timeout to prevent hanging
|
|
222
|
-
const TERMINATE_TIMEOUT_MS = 5000;
|
|
223
|
-
await Promise.all(
|
|
224
|
-
this._workers.map((w) =>
|
|
225
|
-
Promise.race([
|
|
226
|
-
w.terminate(),
|
|
227
|
-
new Promise((resolve) => {
|
|
228
|
-
const timer = setTimeout(resolve, TERMINATE_TIMEOUT_MS);
|
|
229
|
-
timer.unref();
|
|
230
|
-
}),
|
|
231
|
-
])
|
|
232
|
-
)
|
|
233
|
-
);
|
|
234
|
-
this._workers = [];
|
|
235
|
-
this._idle = [];
|
|
236
|
-
}
|
|
237
228
|
}
|
|
238
|
-
|
|
239
229
|
module.exports = FontTracerPool;
|
|
230
|
+
//# sourceMappingURL=FontTracerPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FontTracerPool.js","sourceRoot":"","sources":["../src/FontTracerPool.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.d.ts
ADDED
package/lib/cli.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/lib/cli.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const parseCommandLineOptions = require("./parseCommandLineOptions");
|
|
5
|
+
const asyncMainWrap = require("@gustavnikolaj/async-main-wrap");
|
|
6
|
+
const subfont = require("./subfont");
|
|
7
|
+
const { yargs, help: _help, ...options } = parseCommandLineOptions();
|
|
8
|
+
asyncMainWrap(subfont, {
|
|
9
|
+
processError(err) {
|
|
10
|
+
yargs.showHelp();
|
|
11
|
+
if (err.name === 'UsageError') {
|
|
12
|
+
err.customOutput = err.message;
|
|
13
|
+
}
|
|
14
|
+
return err;
|
|
15
|
+
},
|
|
14
16
|
})(options, console);
|
|
17
|
+
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,qEAAsE;AACtE,gEAAiE;AACjE,qCAAsC;AAEtC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,uBAAuB,EAAE,CAAC;AAIrE,aAAa,CAAC,OAAO,EAAE;IACrB,YAAY,CAAC,GAA0B;QACrC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC"}
|
package/lib/subfont.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import AssetGraph = require('assetgraph');
|
|
2
|
+
declare class UsageError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
interface SubfontOptions {
|
|
6
|
+
root?: string;
|
|
7
|
+
canonicalRoot?: string;
|
|
8
|
+
output?: string;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
dryRun?: boolean;
|
|
11
|
+
silent?: boolean;
|
|
12
|
+
inlineCss?: boolean;
|
|
13
|
+
fontDisplay?: string;
|
|
14
|
+
inPlace?: boolean;
|
|
15
|
+
inputFiles?: Array<string | URL>;
|
|
16
|
+
recursive?: boolean;
|
|
17
|
+
relativeUrls?: boolean;
|
|
18
|
+
dynamic?: boolean;
|
|
19
|
+
fallbacks?: boolean;
|
|
20
|
+
text?: string;
|
|
21
|
+
sourceMaps?: boolean;
|
|
22
|
+
concurrency?: number;
|
|
23
|
+
chromeFlags?: string[];
|
|
24
|
+
cache?: boolean | string;
|
|
25
|
+
strict?: boolean;
|
|
26
|
+
}
|
|
27
|
+
interface SubfontFn {
|
|
28
|
+
(options: SubfontOptions, console?: Console): Promise<InstanceType<typeof AssetGraph>>;
|
|
29
|
+
UsageError: typeof UsageError;
|
|
30
|
+
}
|
|
31
|
+
declare const subfont: SubfontFn;
|
|
32
|
+
export = subfont;
|
|
33
|
+
//# sourceMappingURL=subfont.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subfont.d.ts","sourceRoot":"","sources":["../src/subfont.ts"],"names":[],"mappings":"AAKA,OAAO,UAAU,GAAG,QAAQ,YAAY,CAAC,CAAC;AAQ1C,cAAM,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAI5B;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqBD,UAAU,SAAS;IACjB,CACE,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;IAC5C,UAAU,EAAE,OAAO,UAAU,CAAC;CAC/B;AAED,QAAA,MAAM,OAAO,EA6pBR,SAAS,CAAC;AAIf,SAAS,OAAO,CAAC"}
|