minerender 2.1.0-alpha.144 → 2.1.0-alpha.146

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.
@@ -11561,6 +11561,7 @@ init_PersistentCache();
11561
11561
  var NodeCache = class extends PersistentCache {
11562
11562
  constructor(backing) {
11563
11563
  super(backing);
11564
+ this.pendingWrites = /* @__PURE__ */ new Map();
11564
11565
  }
11565
11566
  ready() {
11566
11567
  return this.initialized ??= this.backing.init();
@@ -11571,7 +11572,14 @@ var NodeCache = class extends PersistentCache {
11571
11572
  }
11572
11573
  async put(key, value) {
11573
11574
  await this.ready();
11574
- return this.backing.setItem(key, value).then((res) => res.content);
11575
+ const previous = this.pendingWrites.get(key);
11576
+ const write = (previous ? previous.catch(() => void 0) : Promise.resolve()).then(() => this.backing.setItem(key, value)).then(() => value);
11577
+ this.pendingWrites.set(key, write);
11578
+ try {
11579
+ return await write;
11580
+ } finally {
11581
+ if (this.pendingWrites.get(key) === write) this.pendingWrites.delete(key);
11582
+ }
11575
11583
  }
11576
11584
  async delete(key) {
11577
11585
  await this.ready();
@@ -11617,7 +11625,10 @@ var NodeEnv = class {
11617
11625
  openCache(name, version2) {
11618
11626
  return new NodeCache(NodePersist.create({
11619
11627
  dir: name + version2,
11620
- encoding: "utf8"
11628
+ encoding: "utf8",
11629
+ // node-persist's unref'd one-second write queue delays loads and lets Node exit before writes finish.
11630
+ // NodeCache serializes writes to each key while allowing different files to write concurrently.
11631
+ writeQueue: false
11621
11632
  }));
11622
11633
  }
11623
11634
  };
@@ -19548,6 +19559,8 @@ function sectionGeometryTransferables(pages) {
19548
19559
 
19549
19560
  // src/world/SectionWorker.ts
19550
19561
  init_Env();
19562
+ init_log();
19563
+ var log19 = logger("SectionWorker");
19551
19564
  var SectionWorker = class _SectionWorker {
19552
19565
  constructor(worker) {
19553
19566
  this.worker = worker;
@@ -19561,8 +19574,12 @@ var SectionWorker = class _SectionWorker {
19561
19574
  if (reply.type === "pages") pending.resolve(reply.pages);
19562
19575
  else pending.reject(new Error(reply.message));
19563
19576
  });
19564
- worker.addEventListener("error", (event) => this.fail(event.message || "Section worker failed"));
19565
- worker.addEventListener("messageerror", () => this.fail("Section worker message could not be deserialized"));
19577
+ const fallBack = (message) => {
19578
+ log19.warn(`${message}, so sections build on the main thread`);
19579
+ this.fail(message);
19580
+ };
19581
+ worker.addEventListener("error", (event) => fallBack(event.message || "Section worker failed"));
19582
+ worker.addEventListener("messageerror", () => fallBack("Section worker message could not be deserialized"));
19566
19583
  }
19567
19584
  static {
19568
19585
  this.initialized = false;