@moostjs/vite 0.6.18 → 0.6.21

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/index.cjs CHANGED
@@ -374,6 +374,11 @@ function moostVite(options) {
374
374
  ];
375
375
  /** A logger instance for plugin debug output. */ const logger = isTest ? console : getLogger();
376
376
  let reloadRequired = false;
377
+ /** In-flight app reload, shared so concurrent requests await one reload. */ let reloadPromise = null;
378
+ /**
379
+ * Drains any pending Moost app reload before a request is served. Assigned once
380
+ * the SSR module runner exists (see configureServer); a no-op until then.
381
+ */ let drainReload = () => Promise.resolve();
377
382
  patchMoostHandlerLogging();
378
383
  const pluginConfig = {
379
384
  name: PLUGIN_NAME,
@@ -507,18 +512,29 @@ function moostVite(options) {
507
512
  async configureServer(server) {
508
513
  const runner = (0, vite.createServerModuleRunner)(server.environments.ssr);
509
514
  const ssrImport = (id) => runner.import(id);
515
+ const runReload = () => {
516
+ reloadRequired = false;
517
+ console.log();
518
+ logger.debug("🚀 Reloading Moost App...");
519
+ console.log();
520
+ return (async () => {
521
+ await ssrImport(options.entry);
522
+ await new Promise((resolve) => setTimeout(resolve, 1));
523
+ })().finally(() => {
524
+ reloadPromise = null;
525
+ });
526
+ };
527
+ drainReload = async () => {
528
+ while (reloadRequired || reloadPromise) {
529
+ if (!reloadPromise) reloadPromise = runReload();
530
+ await reloadPromise;
531
+ }
532
+ };
510
533
  for (const adapter of adapters) adapter.ssrLoadModule = ssrImport;
511
534
  moostRestartCleanup(adapters, options.onEject);
512
535
  await ssrImport(options.entry);
513
536
  server.middlewares.use(async (req, res, next) => {
514
- if (reloadRequired) {
515
- reloadRequired = false;
516
- console.log();
517
- logger.debug("🚀 Reloading Moost App...");
518
- console.log();
519
- await ssrImport(options.entry);
520
- await new Promise((resolve) => setTimeout(resolve, 1));
521
- }
537
+ await drainReload();
522
538
  if (options.middleware && prefix) {
523
539
  const url = req.url || "";
524
540
  if (url !== prefix && !url.startsWith(prefixSlash) && !url.startsWith(prefixQuery)) return next();
@@ -575,6 +591,7 @@ function moostVite(options) {
575
591
  if (req.method !== "GET") return next();
576
592
  const url = req.originalUrl || req.url || "/";
577
593
  try {
594
+ await drainReload();
578
595
  let template = await fs.readFile((0, node_path.resolve)(process.cwd(), "index.html"), "utf8");
579
596
  template = await server.transformIndexHtml(url, template);
580
597
  const { render } = await server.ssrLoadModule(options.ssrEntry);
package/dist/index.mjs CHANGED
@@ -343,6 +343,11 @@ function moostVite(options) {
343
343
  ];
344
344
  /** A logger instance for plugin debug output. */ const logger = getLogger();
345
345
  let reloadRequired = false;
346
+ /** In-flight app reload, shared so concurrent requests await one reload. */ let reloadPromise = null;
347
+ /**
348
+ * Drains any pending Moost app reload before a request is served. Assigned once
349
+ * the SSR module runner exists (see configureServer); a no-op until then.
350
+ */ let drainReload = () => Promise.resolve();
346
351
  patchMoostHandlerLogging();
347
352
  return [{
348
353
  name: PLUGIN_NAME,
@@ -476,18 +481,29 @@ function moostVite(options) {
476
481
  async configureServer(server) {
477
482
  const runner = createServerModuleRunner(server.environments.ssr);
478
483
  const ssrImport = (id) => runner.import(id);
484
+ const runReload = () => {
485
+ reloadRequired = false;
486
+ console.log();
487
+ logger.debug("🚀 Reloading Moost App...");
488
+ console.log();
489
+ return (async () => {
490
+ await ssrImport(options.entry);
491
+ await new Promise((resolve) => setTimeout(resolve, 1));
492
+ })().finally(() => {
493
+ reloadPromise = null;
494
+ });
495
+ };
496
+ drainReload = async () => {
497
+ while (reloadRequired || reloadPromise) {
498
+ if (!reloadPromise) reloadPromise = runReload();
499
+ await reloadPromise;
500
+ }
501
+ };
479
502
  for (const adapter of adapters) adapter.ssrLoadModule = ssrImport;
480
503
  moostRestartCleanup(adapters, options.onEject);
481
504
  await ssrImport(options.entry);
482
505
  server.middlewares.use(async (req, res, next) => {
483
- if (reloadRequired) {
484
- reloadRequired = false;
485
- console.log();
486
- logger.debug("🚀 Reloading Moost App...");
487
- console.log();
488
- await ssrImport(options.entry);
489
- await new Promise((resolve) => setTimeout(resolve, 1));
490
- }
506
+ await drainReload();
491
507
  if (options.middleware && prefix) {
492
508
  const url = req.url || "";
493
509
  if (url !== prefix && !url.startsWith(prefixSlash) && !url.startsWith(prefixQuery)) return next();
@@ -536,6 +552,7 @@ function moostVite(options) {
536
552
  if (req.method !== "GET") return next();
537
553
  const url = req.originalUrl || req.url || "/";
538
554
  try {
555
+ await drainReload();
539
556
  let template = await fs.readFile(resolve(process.cwd(), "index.html"), "utf8");
540
557
  template = await server.transformIndexHtml(url, template);
541
558
  const { render } = await server.ssrLoadModule(options.ssrEntry);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moostjs/vite",
3
- "version": "0.6.18",
3
+ "version": "0.6.21",
4
4
  "description": "Vite Dev plugin for moostjs",
5
5
  "keywords": [
6
6
  "composables",
@@ -58,8 +58,8 @@
58
58
  "peerDependencies": {
59
59
  "sirv": "^3.0.0",
60
60
  "vite": "^8.0.0",
61
- "@moostjs/event-http": "^0.6.18",
62
- "moost": "^0.6.18"
61
+ "moost": "^0.6.21",
62
+ "@moostjs/event-http": "^0.6.21"
63
63
  },
64
64
  "peerDependenciesMeta": {
65
65
  "sirv": {