vite-ssg-optimized 0.24.2-optimized.52 → 0.24.2-optimized.53

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/dist/node/cli.cjs CHANGED
@@ -4,7 +4,7 @@ const process = require('node:process');
4
4
  const kolorist = require('kolorist');
5
5
  const yargs = require('yargs');
6
6
  const helpers = require('yargs/helpers');
7
- const node = require('../shared/vite-ssg-optimized.9afed1ac.cjs');
7
+ const node = require('../shared/vite-ssg-optimized.e0773de0.cjs');
8
8
  require('node:module');
9
9
  require('node:path');
10
10
  require('@unhead/ssr');
package/dist/node/cli.mjs CHANGED
@@ -2,7 +2,7 @@ import process from 'node:process';
2
2
  import { gray, bold, red, reset, underline } from 'kolorist';
3
3
  import yargs from 'yargs';
4
4
  import { hideBin } from 'yargs/helpers';
5
- import { b as build } from '../shared/vite-ssg-optimized.9123ca04.mjs';
5
+ import { b as build } from '../shared/vite-ssg-optimized.8d456b79.mjs';
6
6
  import 'node:module';
7
7
  import 'node:path';
8
8
  import '@unhead/ssr';
package/dist/node.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const node = require('./shared/vite-ssg-optimized.9afed1ac.cjs');
3
+ const node = require('./shared/vite-ssg-optimized.e0773de0.cjs');
4
4
  require('node:module');
5
5
  require('node:path');
6
6
  require('node:process');
package/dist/node.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { b as build } from './shared/vite-ssg-optimized.9123ca04.mjs';
1
+ export { b as build } from './shared/vite-ssg-optimized.8d456b79.mjs';
2
2
  import 'node:module';
3
3
  import 'node:path';
4
4
  import 'node:process';
@@ -2,7 +2,7 @@
2
2
 
3
3
  const node_module = require('node:module');
4
4
  const node_worker_threads = require('node:worker_threads');
5
- const node = require('./vite-ssg-optimized.9afed1ac.cjs');
5
+ const node = require('./vite-ssg-optimized.e0773de0.cjs');
6
6
  const kolorist = require('kolorist');
7
7
  const vite = require('vite');
8
8
  require('node:path');
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { parentPort, workerData } from 'node:worker_threads';
3
- import { p as plainify, e as executeTaskFn, a as buildClient, c as buildServer } from './vite-ssg-optimized.9123ca04.mjs';
3
+ import { p as plainify, e as executeTaskFn, a as buildClient, c as buildServer } from './vite-ssg-optimized.8d456b79.mjs';
4
4
  import { red, gray, blue } from 'kolorist';
5
5
  import { resolveConfig } from 'vite';
6
6
  import 'node:path';
@@ -1279,7 +1279,15 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1279
1279
  const workerRunCount = /* @__PURE__ */ new WeakMap();
1280
1280
  const MAX_RUNS_PER_WORKER = 100;
1281
1281
  let lastWorkerIndex = workers.length - 1;
1282
- function replaceWorker(workerProxy) {
1282
+ const workerProxyMap = /* @__PURE__ */ new Map();
1283
+ const workerTransitionPromises = [];
1284
+ const pendingTasks = () => {
1285
+ return Array.from(workerProxyMap.keys()).map((worker) => workersInUse.get(worker) || []).flat();
1286
+ };
1287
+ async function replaceWorker(workerProxy) {
1288
+ if (workerProxyMap.has(workerProxy)) {
1289
+ return await workerProxyMap.get(workerProxy);
1290
+ }
1283
1291
  const index = workers.indexOf(workerProxy);
1284
1292
  if (index === -1) {
1285
1293
  return workerProxy;
@@ -1287,16 +1295,29 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1287
1295
  ++lastWorkerIndex;
1288
1296
  config.logger.info(`${blue("[vite-ssg]")} ${yellow(`Replace worker #${workerProxy.id} => #${lastWorkerIndex}`)}`);
1289
1297
  const workerPromises = workersInUse.get(workerProxy) || [];
1290
- const newWorkerProxy = createProxy({
1291
- ...createProxyOptions,
1292
- workerId: lastWorkerIndex
1293
- });
1294
- workers[index] = newWorkerProxy;
1295
- Promise.allSettled([...workerPromises, Promise.resolve()]).then(async () => {
1298
+ const transitionPromise = Promise.allSettled([...workerPromises, Promise.resolve()]).then(async () => {
1296
1299
  await new Promise((resolve) => setTimeout(resolve, 4));
1297
1300
  await terminateWorker(workerProxy, onFinished);
1301
+ workerTransitionPromises.splice(workerTransitionPromises.indexOf(transitionPromise), 1);
1302
+ workerProxyMap.delete(workerProxy);
1298
1303
  });
1299
- return newWorkerProxy;
1304
+ workerTransitionPromises.push(transitionPromise);
1305
+ workerProxyMap.set(workerProxy, Promise.resolve().then(async () => {
1306
+ while (pendingTasks().length > MAX_RUNS_PER_WORKER / 5) {
1307
+ await new Promise((resolve) => setTimeout(resolve, 300));
1308
+ }
1309
+ while (workerTransitionPromises.length > 2) {
1310
+ console.log(`${gray("[vite-ssg]")} ${yellow(`Waiting for worker transition to finish. ${workerTransitionPromises.length} transitions running`)}`);
1311
+ await Promise.race(workerTransitionPromises);
1312
+ }
1313
+ const newWorkerProxy = createProxy({
1314
+ ...createProxyOptions,
1315
+ workerId: lastWorkerIndex
1316
+ });
1317
+ workers[index] = newWorkerProxy;
1318
+ return newWorkerProxy;
1319
+ }));
1320
+ return await workerProxyMap.get(workerProxy);
1300
1321
  }
1301
1322
  const queue = new PQueue({ concurrency });
1302
1323
  let shouldBreak = false;
@@ -1323,8 +1344,8 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1323
1344
  const currentCount = (workerRunCount.get(workerProxy) ?? 0) + 1;
1324
1345
  workerRunCount.set(workerProxy, currentCount);
1325
1346
  if (currentCount > MAX_RUNS_PER_WORKER) {
1347
+ workerProxy = await replaceWorker(workerProxy);
1326
1348
  workerRunCount.delete(workerProxy);
1327
- workerProxy = replaceWorker(workerProxy);
1328
1349
  }
1329
1350
  let retryCount = 0;
1330
1351
  const maxRetries = 3;
@@ -1135,7 +1135,7 @@ async function buildServer(config, viteConfig, { ssrEntry, ssgOut, format, mock
1135
1135
  }
1136
1136
  function createProxy(options) {
1137
1137
  const workerExt = options.format === "esm" ? ".mjs" : ".cjs";
1138
- const workerProxy = new BuildWorkerProxy(new URL(`./build.worker${workerExt}`, (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.9afed1ac.cjs', document.baseURI).href))), {
1138
+ const workerProxy = new BuildWorkerProxy(new URL(`./build.worker${workerExt}`, (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.e0773de0.cjs', document.baseURI).href))), {
1139
1139
  env: process__default.env,
1140
1140
  workerData: options
1141
1141
  });
@@ -1264,7 +1264,7 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1264
1264
  return worker;
1265
1265
  };
1266
1266
  const serverEntry = prefix + node_path.join(ssgOut, node_path.parse(ssrEntry).name + ext).replace(/\\/g, "/");
1267
- const _require = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.9afed1ac.cjs', document.baseURI).href)));
1267
+ const _require = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.e0773de0.cjs', document.baseURI).href)));
1268
1268
  const { createApp, includedRoutes: serverEntryIncludedRoutes } = format === "esm" ? await import(serverEntry) : _require(serverEntry);
1269
1269
  const includedRoutes = serverEntryIncludedRoutes || configIncludedRoutes;
1270
1270
  const { routes } = await createApp(false);
@@ -1288,7 +1288,15 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1288
1288
  const workerRunCount = /* @__PURE__ */ new WeakMap();
1289
1289
  const MAX_RUNS_PER_WORKER = 100;
1290
1290
  let lastWorkerIndex = workers.length - 1;
1291
- function replaceWorker(workerProxy) {
1291
+ const workerProxyMap = /* @__PURE__ */ new Map();
1292
+ const workerTransitionPromises = [];
1293
+ const pendingTasks = () => {
1294
+ return Array.from(workerProxyMap.keys()).map((worker) => workersInUse.get(worker) || []).flat();
1295
+ };
1296
+ async function replaceWorker(workerProxy) {
1297
+ if (workerProxyMap.has(workerProxy)) {
1298
+ return await workerProxyMap.get(workerProxy);
1299
+ }
1292
1300
  const index = workers.indexOf(workerProxy);
1293
1301
  if (index === -1) {
1294
1302
  return workerProxy;
@@ -1296,16 +1304,29 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1296
1304
  ++lastWorkerIndex;
1297
1305
  config.logger.info(`${kolorist.blue("[vite-ssg]")} ${kolorist.yellow(`Replace worker #${workerProxy.id} => #${lastWorkerIndex}`)}`);
1298
1306
  const workerPromises = workersInUse.get(workerProxy) || [];
1299
- const newWorkerProxy = createProxy({
1300
- ...createProxyOptions,
1301
- workerId: lastWorkerIndex
1302
- });
1303
- workers[index] = newWorkerProxy;
1304
- Promise.allSettled([...workerPromises, Promise.resolve()]).then(async () => {
1307
+ const transitionPromise = Promise.allSettled([...workerPromises, Promise.resolve()]).then(async () => {
1305
1308
  await new Promise((resolve) => setTimeout(resolve, 4));
1306
1309
  await terminateWorker(workerProxy, onFinished);
1310
+ workerTransitionPromises.splice(workerTransitionPromises.indexOf(transitionPromise), 1);
1311
+ workerProxyMap.delete(workerProxy);
1307
1312
  });
1308
- return newWorkerProxy;
1313
+ workerTransitionPromises.push(transitionPromise);
1314
+ workerProxyMap.set(workerProxy, Promise.resolve().then(async () => {
1315
+ while (pendingTasks().length > MAX_RUNS_PER_WORKER / 5) {
1316
+ await new Promise((resolve) => setTimeout(resolve, 300));
1317
+ }
1318
+ while (workerTransitionPromises.length > 2) {
1319
+ console.log(`${kolorist.gray("[vite-ssg]")} ${kolorist.yellow(`Waiting for worker transition to finish. ${workerTransitionPromises.length} transitions running`)}`);
1320
+ await Promise.race(workerTransitionPromises);
1321
+ }
1322
+ const newWorkerProxy = createProxy({
1323
+ ...createProxyOptions,
1324
+ workerId: lastWorkerIndex
1325
+ });
1326
+ workers[index] = newWorkerProxy;
1327
+ return newWorkerProxy;
1328
+ }));
1329
+ return await workerProxyMap.get(workerProxy);
1309
1330
  }
1310
1331
  const queue = new PQueue({ concurrency });
1311
1332
  let shouldBreak = false;
@@ -1332,8 +1353,8 @@ async function build(ssgOptions = {}, viteConfig = {}) {
1332
1353
  const currentCount = (workerRunCount.get(workerProxy) ?? 0) + 1;
1333
1354
  workerRunCount.set(workerProxy, currentCount);
1334
1355
  if (currentCount > MAX_RUNS_PER_WORKER) {
1356
+ workerProxy = await replaceWorker(workerProxy);
1335
1357
  workerRunCount.delete(workerProxy);
1336
- workerProxy = replaceWorker(workerProxy);
1337
1358
  }
1338
1359
  let retryCount = 0;
1339
1360
  const maxRetries = 3;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-ssg-optimized",
3
- "version": "0.24.2-optimized.52",
3
+ "version": "0.24.2-optimized.53",
4
4
  "description": "Server-side generation for Vite",
5
5
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
6
6
  "license": "MIT",