@happy-dom/server-renderer 19.0.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.
Files changed (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/bin/lib/happy-dom-sr.d.ts +3 -0
  4. package/bin/lib/happy-dom-sr.d.ts.map +1 -0
  5. package/bin/lib/happy-dom-sr.js +25 -0
  6. package/bin/lib/happy-dom-sr.js.map +1 -0
  7. package/bin/src/happy-dom-sr.ts +30 -0
  8. package/lib/ServerRenderer.d.ts +36 -0
  9. package/lib/ServerRenderer.d.ts.map +1 -0
  10. package/lib/ServerRenderer.js +270 -0
  11. package/lib/ServerRenderer.js.map +1 -0
  12. package/lib/ServerRendererBrowser.d.ts +26 -0
  13. package/lib/ServerRendererBrowser.d.ts.map +1 -0
  14. package/lib/ServerRendererBrowser.js +244 -0
  15. package/lib/ServerRendererBrowser.js.map +1 -0
  16. package/lib/ServerRendererServer.d.ts +22 -0
  17. package/lib/ServerRendererServer.d.ts.map +1 -0
  18. package/lib/ServerRendererServer.js +263 -0
  19. package/lib/ServerRendererServer.js.map +1 -0
  20. package/lib/ServerRendererWorker.d.ts +10 -0
  21. package/lib/ServerRendererWorker.d.ts.map +1 -0
  22. package/lib/ServerRendererWorker.js +25 -0
  23. package/lib/ServerRendererWorker.js.map +1 -0
  24. package/lib/config/DefaultServerRendererConfiguration.d.ts +4 -0
  25. package/lib/config/DefaultServerRendererConfiguration.d.ts.map +1 -0
  26. package/lib/config/DefaultServerRendererConfiguration.js +40 -0
  27. package/lib/config/DefaultServerRendererConfiguration.js.map +1 -0
  28. package/lib/enums/ServerRendererLogLevelEnum.d.ts +9 -0
  29. package/lib/enums/ServerRendererLogLevelEnum.d.ts.map +1 -0
  30. package/lib/enums/ServerRendererLogLevelEnum.js +10 -0
  31. package/lib/enums/ServerRendererLogLevelEnum.js.map +1 -0
  32. package/lib/index.d.ts +9 -0
  33. package/lib/index.d.ts.map +1 -0
  34. package/lib/index.js +5 -0
  35. package/lib/index.js.map +1 -0
  36. package/lib/types/IOptionalServerRendererConfiguration.d.ts +108 -0
  37. package/lib/types/IOptionalServerRendererConfiguration.d.ts.map +1 -0
  38. package/lib/types/IOptionalServerRendererConfiguration.js +2 -0
  39. package/lib/types/IOptionalServerRendererConfiguration.js.map +1 -0
  40. package/lib/types/IServerRendererConfiguration.d.ts +108 -0
  41. package/lib/types/IServerRendererConfiguration.d.ts.map +1 -0
  42. package/lib/types/IServerRendererConfiguration.js +2 -0
  43. package/lib/types/IServerRendererConfiguration.js.map +1 -0
  44. package/lib/types/IServerRendererItem.d.ts +8 -0
  45. package/lib/types/IServerRendererItem.d.ts.map +1 -0
  46. package/lib/types/IServerRendererItem.js +2 -0
  47. package/lib/types/IServerRendererItem.js.map +1 -0
  48. package/lib/types/IServerRendererResult.d.ts +14 -0
  49. package/lib/types/IServerRendererResult.d.ts.map +1 -0
  50. package/lib/types/IServerRendererResult.js +2 -0
  51. package/lib/types/IServerRendererResult.js.map +1 -0
  52. package/lib/utilities/BrowserWindowPolyfill.d.ts +13 -0
  53. package/lib/utilities/BrowserWindowPolyfill.d.ts.map +1 -0
  54. package/lib/utilities/BrowserWindowPolyfill.js +92 -0
  55. package/lib/utilities/BrowserWindowPolyfill.js.map +1 -0
  56. package/lib/utilities/HelpPrinter.d.ts +10 -0
  57. package/lib/utilities/HelpPrinter.d.ts.map +1 -0
  58. package/lib/utilities/HelpPrinter.js +32 -0
  59. package/lib/utilities/HelpPrinter.js.map +1 -0
  60. package/lib/utilities/HelpPrinterRows.d.ts +3 -0
  61. package/lib/utilities/HelpPrinterRows.d.ts.map +1 -0
  62. package/lib/utilities/HelpPrinterRows.js +261 -0
  63. package/lib/utilities/HelpPrinterRows.js.map +1 -0
  64. package/lib/utilities/PackageVersion.d.ts +10 -0
  65. package/lib/utilities/PackageVersion.d.ts.map +1 -0
  66. package/lib/utilities/PackageVersion.js +13 -0
  67. package/lib/utilities/PackageVersion.js.map +1 -0
  68. package/lib/utilities/ProcessArgumentsParser.d.ts +20 -0
  69. package/lib/utilities/ProcessArgumentsParser.d.ts.map +1 -0
  70. package/lib/utilities/ProcessArgumentsParser.js +319 -0
  71. package/lib/utilities/ProcessArgumentsParser.js.map +1 -0
  72. package/lib/utilities/ServerRendererConfigurationFactory.d.ts +23 -0
  73. package/lib/utilities/ServerRendererConfigurationFactory.d.ts.map +1 -0
  74. package/lib/utilities/ServerRendererConfigurationFactory.js +82 -0
  75. package/lib/utilities/ServerRendererConfigurationFactory.js.map +1 -0
  76. package/package.json +61 -0
  77. package/src/ServerRenderer.ts +345 -0
  78. package/src/ServerRendererBrowser.ts +286 -0
  79. package/src/ServerRendererServer.ts +337 -0
  80. package/src/ServerRendererWorker.ts +29 -0
  81. package/src/config/DefaultServerRendererConfiguration.ts +41 -0
  82. package/src/enums/ServerRendererLogLevelEnum.ts +9 -0
  83. package/src/index.ts +17 -0
  84. package/src/types/IOptionalServerRendererConfiguration.ts +108 -0
  85. package/src/types/IServerRendererConfiguration.ts +108 -0
  86. package/src/types/IServerRendererItem.ts +5 -0
  87. package/src/types/IServerRendererResult.ts +11 -0
  88. package/src/utilities/BrowserWindowPolyfill.ts +93 -0
  89. package/src/utilities/HelpPrinter.ts +36 -0
  90. package/src/utilities/HelpPrinterRows.ts +260 -0
  91. package/src/utilities/PackageVersion.ts +12 -0
  92. package/src/utilities/ProcessArgumentsParser.ts +294 -0
  93. package/src/utilities/ServerRendererConfigurationFactory.ts +91 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessArgumentsParser.js","sourceRoot":"","sources":["../../src/utilities/ProcessArgumentsParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import IOptionalServerRendererConfiguration from '../types/IOptionalServerRendererConfiguration.js';
2
+ import IServerRendererConfiguration from '../types/IServerRendererConfiguration.js';
3
+ /**
4
+ * Server renderer configuration factory.
5
+ */
6
+ export default class ServerRendererConfigurationFactory {
7
+ /**
8
+ * Returns server renderer configuration factory.
9
+ *
10
+ * @param [configuration] Configuration.
11
+ * @returns Configuration.
12
+ */
13
+ static createConfiguration(configuration?: IOptionalServerRendererConfiguration): IServerRendererConfiguration;
14
+ /**
15
+ * Validates configuration.
16
+ *
17
+ * @param target Target.
18
+ * @param source Source.
19
+ * @param [parentNamespace] Parent namespace.
20
+ */
21
+ private static validate;
22
+ }
23
+ //# sourceMappingURL=ServerRendererConfigurationFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerRendererConfigurationFactory.d.ts","sourceRoot":"","sources":["../../src/utilities/ServerRendererConfigurationFactory.ts"],"names":[],"mappings":"AACA,OAAO,oCAAoC,MAAM,kDAAkD,CAAC;AACpG,OAAO,4BAA4B,MAAM,0CAA0C,CAAC;AAIpF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,kCAAkC;IACtD;;;;;OAKG;WACW,mBAAmB,CAChC,aAAa,CAAC,EAAE,oCAAoC,GAClD,4BAA4B;IAqC/B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;CA4BvB"}
@@ -0,0 +1,82 @@
1
+ import BrowserSettingsFactory from 'happy-dom/lib/browser/BrowserSettingsFactory.js';
2
+ import DefaultServerRendererConfiguration from '../config/DefaultServerRendererConfiguration.js';
3
+ import Path from 'path';
4
+ /**
5
+ * Server renderer configuration factory.
6
+ */
7
+ export default class ServerRendererConfigurationFactory {
8
+ /**
9
+ * Returns server renderer configuration factory.
10
+ *
11
+ * @param [configuration] Configuration.
12
+ * @returns Configuration.
13
+ */
14
+ static createConfiguration(configuration) {
15
+ if (configuration) {
16
+ this.validate(DefaultServerRendererConfiguration, configuration);
17
+ }
18
+ const config = {
19
+ ...DefaultServerRendererConfiguration,
20
+ ...configuration,
21
+ browser: BrowserSettingsFactory.createSettings({
22
+ ...DefaultServerRendererConfiguration.browser,
23
+ ...configuration?.browser
24
+ }),
25
+ cache: {
26
+ ...DefaultServerRendererConfiguration.cache,
27
+ ...configuration?.cache
28
+ },
29
+ worker: {
30
+ ...DefaultServerRendererConfiguration.worker,
31
+ ...configuration?.worker
32
+ },
33
+ render: {
34
+ ...DefaultServerRendererConfiguration.render,
35
+ ...configuration?.render
36
+ },
37
+ urls: configuration?.urls || null,
38
+ server: {
39
+ ...DefaultServerRendererConfiguration.server,
40
+ ...configuration?.server
41
+ }
42
+ };
43
+ config.outputDirectory = Path.resolve(config.outputDirectory);
44
+ config.cache.directory = Path.resolve(config.cache.directory);
45
+ return config;
46
+ }
47
+ /**
48
+ * Validates configuration.
49
+ *
50
+ * @param target Target.
51
+ * @param source Source.
52
+ * @param [parentNamespace] Parent namespace.
53
+ */
54
+ static validate(target, source, parentNamespace) {
55
+ for (const key of Object.keys(source)) {
56
+ if (key === 'browser') {
57
+ continue;
58
+ }
59
+ if (target[key] === undefined) {
60
+ const namespace = parentNamespace ? parentNamespace + '.' + key : key;
61
+ throw new Error(`Unknown configuration "${namespace}"`);
62
+ }
63
+ if (typeof target[key] === 'object' && !Array.isArray(target[key]) && target[key] !== null) {
64
+ const namespace = parentNamespace ? parentNamespace + '.' + key : key;
65
+ if (typeof source[key] !== 'object' || Array.isArray(source[key]) || source[key] === null) {
66
+ throw new Error(`Configuration "${namespace}" cannot be null`);
67
+ }
68
+ this.validate(target[key], source[key], namespace);
69
+ }
70
+ else {
71
+ if ((typeof target[key] === 'boolean' ||
72
+ typeof target[key] === 'number' ||
73
+ typeof target[key] === 'string') &&
74
+ typeof source[key] !== typeof target[key]) {
75
+ const namespace = parentNamespace ? parentNamespace + '.' + key : key;
76
+ throw new Error(`Configuration "${namespace}" must be of type "${typeof target[key]}"`);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=ServerRendererConfigurationFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerRendererConfigurationFactory.js","sourceRoot":"","sources":["../../src/utilities/ServerRendererConfigurationFactory.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@happy-dom/server-renderer",
3
+ "version": "19.0.0",
4
+ "license": "MIT",
5
+ "homepage": "https://github.com/capricorn86/happy-dom/tree/master/packages/@happy-dom/server-renderer",
6
+ "repository": "https://github.com/capricorn86/happy-dom",
7
+ "author": "David Ortner",
8
+ "description": "Use Happy DOM for server-side rendering (SSR) or as a static site generator (SSG).",
9
+ "main": "lib/index.js",
10
+ "type": "module",
11
+ "keywords": [
12
+ "jsdom",
13
+ "happy",
14
+ "dom",
15
+ "webcomponents",
16
+ "web",
17
+ "component",
18
+ "custom",
19
+ "elements",
20
+ "server-side",
21
+ "rendering",
22
+ "server",
23
+ "renderer",
24
+ "ssr",
25
+ "static",
26
+ "site",
27
+ "generator",
28
+ "ssg"
29
+ ],
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "bin": {
34
+ "happy-dom-sr": "bin/lib/happy-dom-sr.js"
35
+ },
36
+ "scripts": {
37
+ "compile": "tsc && tsc --project ./bin",
38
+ "watch": "concurrently --raw \"tsc -w --preserveWatchOutput\" \"tsc -w --preserveWatchOutput --project ./bin\"",
39
+ "test": "vitest run",
40
+ "test:ui": "vitest --ui",
41
+ "test:watch": "vitest",
42
+ "test:debug": "vitest run --inspect-brk --no-file-parallelism"
43
+ },
44
+ "dependencies": {
45
+ "happy-dom": "^19.0.0",
46
+ "chalk": "^5.4.1"
47
+ },
48
+ "devDependencies": {
49
+ "@typescript-eslint/eslint-plugin": "^5.16.0",
50
+ "@typescript-eslint/parser": "^5.16.0",
51
+ "@vitest/ui": "^2.1.4",
52
+ "@types/node": "^20.0.0",
53
+ "concurrently": "^9.1.2",
54
+ "prettier": "^2.6.0",
55
+ "typescript": "^5.0.4",
56
+ "vitest": "^2.1.4"
57
+ },
58
+ "engines": {
59
+ "node": ">=20.0.0"
60
+ }
61
+ }
@@ -0,0 +1,345 @@
1
+ import IOptionalServerRendererConfiguration from './types/IOptionalServerRendererConfiguration.js';
2
+ import IServerRendererItem from './types/IServerRendererItem.js';
3
+ import { Worker } from 'worker_threads';
4
+ import IServerRendererResult from './types/IServerRendererResult.js';
5
+ import ServerRendererLogLevelEnum from './enums/ServerRendererLogLevelEnum.js';
6
+ import IServerRendererConfiguration from './types/IServerRendererConfiguration.js';
7
+ import ServerRendererConfigurationFactory from './utilities/ServerRendererConfigurationFactory.js';
8
+ import Path from 'path';
9
+ import Inspector from 'node:inspector';
10
+ import ServerRendererBrowser from './ServerRendererBrowser.js';
11
+ // eslint-disable-next-line import/no-named-as-default
12
+ import Chalk from 'chalk';
13
+
14
+ interface IWorkerWaitingItem {
15
+ items: IServerRendererItem[];
16
+ resolve: (results: IServerRendererResult[]) => void;
17
+ reject: (error: Error) => void;
18
+ }
19
+
20
+ /**
21
+ * Server renderer.
22
+ */
23
+ export default class ServerRenderer {
24
+ #configuration: IServerRendererConfiguration;
25
+ #workerPool: { busy: Worker[]; free: Worker[]; waiting: IWorkerWaitingItem[] } = {
26
+ busy: [],
27
+ free: [],
28
+ waiting: []
29
+ };
30
+ #browser: ServerRendererBrowser | null = null;
31
+
32
+ /**
33
+ * Constructor.
34
+ *
35
+ * @param configuration Configuration.
36
+ */
37
+ constructor(configuration?: IOptionalServerRendererConfiguration) {
38
+ this.#configuration = ServerRendererConfigurationFactory.createConfiguration(configuration);
39
+
40
+ if (this.#configuration.worker.disable && this.#configuration.inspect) {
41
+ Inspector.open();
42
+ Inspector.waitForDebugger();
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Renders URLs.
48
+ *
49
+ * @param [urls] URLs to render.
50
+ * @param [options] Options.
51
+ * @param [options.keepAlive] Keep the workers and browser alive. This is useful when using the renderer in a server. The workers can be closed with the `close()` method.
52
+ */
53
+ public async render(
54
+ urls?: Array<string | IServerRendererItem> | null,
55
+ options?: { keepAlive?: boolean }
56
+ ): Promise<IServerRendererResult[]> {
57
+ const startTime = performance.now();
58
+ const configuration = this.#configuration;
59
+ const items = urls || configuration.urls;
60
+ const parsedItems: IServerRendererItem[] = [];
61
+
62
+ if (!items || !items.length) {
63
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.info) {
64
+ // eslint-disable-next-line no-console
65
+ console.log(Chalk.bold(`\nNo URLs to render\n`));
66
+ }
67
+ return [];
68
+ }
69
+
70
+ for (const item of items) {
71
+ if (typeof item === 'string') {
72
+ parsedItems.push({ url: item });
73
+ } else {
74
+ parsedItems.push({
75
+ url: item.url,
76
+ outputFile: item.outputFile
77
+ ? Path.join(configuration.outputDirectory, item.outputFile)
78
+ : null,
79
+ headers: item.headers ?? null
80
+ });
81
+ }
82
+ }
83
+
84
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.info) {
85
+ if (configuration.debug) {
86
+ // eslint-disable-next-line no-console
87
+ console.log(Chalk.blue(Chalk.bold(`🔨 Debug mode enabled\n`)));
88
+ }
89
+
90
+ // eslint-disable-next-line no-console
91
+ console.log(
92
+ Chalk.bold(`Rendering ${parsedItems.length} page${parsedItems.length > 1 ? 's' : ''}...\n`)
93
+ );
94
+ }
95
+
96
+ let results: IServerRendererResult[] = [];
97
+ if (!configuration.cache.disable && configuration.cache.warmup) {
98
+ const item = parsedItems.shift();
99
+ if (item) {
100
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.info) {
101
+ // eslint-disable-next-line no-console
102
+ console.log('Warming up cache...\n');
103
+ }
104
+
105
+ results = results.concat(await this.#runInWorker([item]));
106
+
107
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.info) {
108
+ // eslint-disable-next-line no-console
109
+ console.log('\nCache warmup complete.\n');
110
+ }
111
+ }
112
+ }
113
+
114
+ if (parsedItems.length) {
115
+ const promises = [];
116
+
117
+ while (parsedItems.length) {
118
+ const chunk = parsedItems.splice(0, configuration.render.maxConcurrency);
119
+ promises.push(
120
+ this.#runInWorker(chunk).then((chunkResults) => {
121
+ results = results.concat(chunkResults);
122
+ })
123
+ );
124
+ }
125
+
126
+ await Promise.all(promises);
127
+ }
128
+
129
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.info) {
130
+ const time = Math.round((performance.now() - startTime) / 1000);
131
+ const minutes = Math.floor(time / 60);
132
+ const seconds = time % 60;
133
+ // eslint-disable-next-line no-console
134
+ console.log(
135
+ Chalk.bold(
136
+ `\nRendered ${items.length} page${items.length > 1 ? 's' : ''} in ${
137
+ minutes ? `${minutes} minutes and ` : ''
138
+ }${seconds} seconds\n`
139
+ )
140
+ );
141
+ }
142
+
143
+ if (!options?.keepAlive) {
144
+ await this.close();
145
+ }
146
+
147
+ return results;
148
+ }
149
+
150
+ /**
151
+ * Closes the workers and browser.
152
+ */
153
+ public async close(): Promise<void> {
154
+ for (const worker of this.#workerPool.busy) {
155
+ worker.terminate();
156
+ }
157
+
158
+ for (const worker of this.#workerPool.free) {
159
+ worker.terminate();
160
+ }
161
+
162
+ this.#workerPool.busy = [];
163
+ this.#workerPool.free = [];
164
+ this.#workerPool.waiting = [];
165
+
166
+ if (this.#browser) {
167
+ await this.#browser.close();
168
+ this.#browser = null;
169
+ }
170
+ }
171
+
172
+ /**
173
+ * Runs in a worker.
174
+ *
175
+ * @param items Items.
176
+ */
177
+ async #runInWorker(items: IServerRendererItem[]): Promise<IServerRendererResult[]> {
178
+ const configuration = this.#configuration;
179
+
180
+ if (configuration.worker.disable) {
181
+ if (!this.#browser) {
182
+ this.#browser = new ServerRendererBrowser(configuration);
183
+ }
184
+
185
+ const results = await this.#browser.render(items);
186
+
187
+ this.outputResults(results);
188
+
189
+ return results;
190
+ }
191
+
192
+ return new Promise((resolve, reject) => {
193
+ if (this.#workerPool.free.length === 0) {
194
+ const maxConcurrency = configuration.inspect ? 1 : configuration.worker.maxConcurrency;
195
+ if (this.#workerPool.busy.length >= maxConcurrency) {
196
+ this.#workerPool.waiting.push({ items, resolve, reject });
197
+ return;
198
+ }
199
+ const worker = new Worker(new URL('ServerRendererWorker.js', import.meta.url), {
200
+ workerData: {
201
+ configuration: configuration
202
+ }
203
+ });
204
+ this.#workerPool.free.push(worker);
205
+ }
206
+
207
+ if (this.#workerPool.free.length > 0) {
208
+ const worker = this.#workerPool.free.pop()!;
209
+
210
+ this.#workerPool.busy.push(worker);
211
+
212
+ const done = (): void => {
213
+ worker.off('message', listeners.message);
214
+ worker.off('error', listeners.error);
215
+ worker.off('exit', listeners.exit);
216
+
217
+ this.#workerPool.busy.splice(this.#workerPool.busy.indexOf(worker), 1);
218
+ this.#workerPool.free.push(worker);
219
+
220
+ const waiting = this.#workerPool.waiting.shift();
221
+
222
+ if (waiting) {
223
+ this.#runInWorker(waiting.items).then(waiting.resolve).catch(waiting.reject);
224
+ }
225
+ };
226
+ const listeners: {
227
+ message: (message: any) => void;
228
+ error: (error: Error) => void;
229
+ exit: (code: number) => void;
230
+ } = {
231
+ message: (data) => {
232
+ const results = <IServerRendererResult[]>data.results;
233
+ this.outputResults(results);
234
+ done();
235
+ resolve(results);
236
+ },
237
+ error: (error: Error) => {
238
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.error) {
239
+ for (const item of items) {
240
+ // eslint-disable-next-line no-console
241
+ console.error(Chalk.bold(Chalk.red(`\n❌ Failed to render page "${item.url}"\n`)));
242
+ // eslint-disable-next-line no-console
243
+ console.error(Chalk.red(error + '\n'));
244
+ }
245
+ }
246
+
247
+ done();
248
+ resolve(
249
+ items.map((item) => ({
250
+ url: item.url,
251
+ content: null,
252
+ status: 200,
253
+ statusText: 'OK',
254
+ headers: {},
255
+ outputFile: item.outputFile ?? null,
256
+ error: `${error.message}\n${error.stack}`,
257
+ pageConsole: '',
258
+ pageErrors: []
259
+ }))
260
+ );
261
+ },
262
+ exit: (code: number) => {
263
+ // Closed intentionally, either by the user or with terminate()
264
+ if (code === 0) {
265
+ return;
266
+ }
267
+
268
+ this.#workerPool.busy.splice(this.#workerPool.busy.indexOf(worker), 1);
269
+
270
+ for (const worker of this.#workerPool.free) {
271
+ worker.terminate();
272
+ }
273
+
274
+ for (const worker of this.#workerPool.busy) {
275
+ worker.terminate();
276
+ }
277
+
278
+ this.#workerPool.busy = [];
279
+ this.#workerPool.free = [];
280
+ this.#workerPool.waiting = [];
281
+
282
+ reject(new Error(`Worker stopped with exit code ${code}`));
283
+ }
284
+ };
285
+
286
+ worker.on('message', listeners.message);
287
+ worker.on('error', listeners.error);
288
+ worker.on('exit', listeners.exit);
289
+
290
+ worker.postMessage({ items });
291
+ }
292
+ });
293
+ }
294
+
295
+ /**
296
+ * Outputs results to the console.
297
+ *
298
+ * @param results Results.
299
+ */
300
+ private outputResults(results: IServerRendererResult[]): void {
301
+ const configuration = this.#configuration;
302
+
303
+ if (configuration.logLevel === ServerRendererLogLevelEnum.none) {
304
+ return;
305
+ }
306
+
307
+ for (const result of results) {
308
+ if (result.error) {
309
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.error) {
310
+ // eslint-disable-next-line no-console
311
+ console.error(Chalk.bold(Chalk.red(`\n❌ Failed to render page "${result.url}"\n`)));
312
+ // eslint-disable-next-line no-console
313
+ console.error(Chalk.red(result.error + '\n'));
314
+ }
315
+ } else if (result.pageErrors.length) {
316
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.warn) {
317
+ // eslint-disable-next-line no-console
318
+ console.log(Chalk.bold(`• Rendered page "${result.url}"`));
319
+ // eslint-disable-next-line no-console
320
+ console.log(
321
+ Chalk.bold(
322
+ Chalk.yellow(
323
+ `\n⚠️ Warning! Errors where outputted to the browser when the page was rendered.\n`
324
+ )
325
+ )
326
+ );
327
+ // eslint-disable-next-line no-console
328
+ for (const error of result.pageErrors) {
329
+ // eslint-disable-next-line no-console
330
+ console.log(Chalk.red(error + '\n'));
331
+ }
332
+ }
333
+ } else {
334
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.info) {
335
+ // eslint-disable-next-line no-console
336
+ console.log(Chalk.bold(`• Rendered page "${result.url}"`));
337
+ }
338
+ }
339
+ if (configuration.logLevel >= ServerRendererLogLevelEnum.debug && result.pageConsole) {
340
+ // eslint-disable-next-line no-console
341
+ console.log(Chalk.gray(result.pageConsole));
342
+ }
343
+ }
344
+ }
345
+ }