minerender 2.1.0-alpha.8 → 2.1.0-alpha.9

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.
@@ -23,14 +23,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
24
  mod
25
25
  ));
26
- var __decorateClass = (decorators, target, key, kind) => {
27
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
28
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
29
- if (decorator = decorators[i])
30
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
31
- if (kind && result) __defProp(target, key, result);
32
- return result;
33
- };
34
26
 
35
27
  // ../../node_modules/ts-deepmerge/dist/index.js
36
28
  var require_dist = __commonJS({
@@ -156,11 +148,14 @@ var _PersistentCache = class _PersistentCache {
156
148
  static open(name) {
157
149
  return Env.provider.openCache(name, _PersistentCache.VERSION);
158
150
  }
151
+ /** Loads a missing entry and stores only non-nullish results. */
159
152
  async getOrLoad(key, loader) {
160
153
  let v = await this.get(key);
161
154
  if (typeof v === "undefined" || v === null) {
162
155
  v = await loader(key);
163
- await this.put(key, v);
156
+ if (typeof v !== "undefined" && v !== null) {
157
+ await this.put(key, v);
158
+ }
164
159
  }
165
160
  return v;
166
161
  }
@@ -357,7 +352,10 @@ function serializeMeshKey(key) {
357
352
  // src/cache/Caching.ts
358
353
  import { Caches } from "@inventivetalent/loading-cache";
359
354
  import { Time } from "@inventivetalent/time";
360
- var Caching = class {
355
+ var _Caching = class _Caching {
356
+ static createAssetCache() {
357
+ return Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
358
+ }
361
359
  /** Every cache above, so clear()/end() can never fall out of sync with the field list again. */
362
360
  static get all() {
363
361
  return [
@@ -374,7 +372,10 @@ var Caching = class {
374
372
  this.rawModelCache,
375
373
  this.mergedModelCache,
376
374
  this.modelTextureAtlasCache,
377
- this.blockStateCache
375
+ this.blockStateCache,
376
+ this.listAssetCache,
377
+ this.defaultBlockStatesCache,
378
+ this.entityModelsCache
378
379
  ];
379
380
  }
380
381
  static clear() {
@@ -400,20 +401,24 @@ var Caching = class {
400
401
  };
401
402
  }
402
403
  };
403
- Caching.rawImageCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(5)).buildAsync();
404
- Caching.imageDataCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(10)).buildAsync();
405
- Caching.canvasImageDataCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(10)).buildAsync();
406
- Caching.wrappedImageCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(10)).buildAsync();
407
- Caching.boxGeometryCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(20)).build();
408
- Caching.textureCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).build();
409
- Caching.materialCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).build();
410
- Caching.boxMeshCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).build();
411
- Caching.textureAssetCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
412
- Caching.textureMetaCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
413
- Caching.rawModelCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
414
- Caching.mergedModelCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
415
- Caching.modelTextureAtlasCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
416
- Caching.blockStateCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
404
+ _Caching.rawImageCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(5)).buildAsync();
405
+ _Caching.imageDataCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(10)).buildAsync();
406
+ _Caching.canvasImageDataCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(10)).buildAsync();
407
+ _Caching.wrappedImageCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(10)).buildAsync();
408
+ _Caching.boxGeometryCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(20)).build();
409
+ _Caching.textureCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).build();
410
+ _Caching.materialCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).build();
411
+ _Caching.boxMeshCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).build();
412
+ _Caching.textureAssetCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
413
+ _Caching.textureMetaCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
414
+ _Caching.rawModelCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
415
+ _Caching.mergedModelCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
416
+ _Caching.modelTextureAtlasCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
417
+ _Caching.blockStateCache = Caches.builder().expireAfterWrite(Time.minutes(10)).expireAfterAccess(Time.minutes(5)).expirationInterval(Time.seconds(30)).buildAsync();
418
+ _Caching.listAssetCache = _Caching.createAssetCache();
419
+ _Caching.defaultBlockStatesCache = _Caching.createAssetCache();
420
+ _Caching.entityModelsCache = _Caching.createAssetCache();
421
+ var Caching = _Caching;
417
422
 
418
423
  // src/Geometries.ts
419
424
  var Geometries = class _Geometries {
@@ -1197,9 +1202,6 @@ var ModelMerger = class {
1197
1202
  }
1198
1203
  };
1199
1204
 
1200
- // src/assets/Models.ts
1201
- import { Memoize } from "typescript-memoize";
1202
-
1203
1205
  // src/assets/source/parser/AssetParsers.ts
1204
1206
  var AssetParser = /* @__PURE__ */ ((AssetParser2) => {
1205
1207
  AssetParser2["MODEL"] = "model";
@@ -1213,14 +1215,14 @@ var AssetParser = /* @__PURE__ */ ((AssetParser2) => {
1213
1215
  })(AssetParser || {});
1214
1216
 
1215
1217
  // src/assets/Models.ts
1216
- var _Models = class _Models {
1218
+ var Models = class _Models {
1217
1219
  // opened lazily: touching the store at import time would hit IndexedDB/disk just for loading
1218
1220
  // the library, and would require an EnvProvider before any entry has had a chance to register
1219
1221
  static get PERSISTENT_CACHE() {
1220
1222
  return this._persistentCache ??= PersistentCache.open("minerender-models");
1221
1223
  }
1222
1224
  static async getItemList() {
1223
- return AssetLoader.get(new AssetKey(
1225
+ const key = new AssetKey(
1224
1226
  DEFAULT_NAMESPACE,
1225
1227
  "_list",
1226
1228
  "models",
@@ -1228,7 +1230,10 @@ var _Models = class _Models {
1228
1230
  "assets",
1229
1231
  ".json",
1230
1232
  DEFAULT_ROOT
1231
- ), "list" /* LIST */).then((r) => (r == null ? void 0 : r.files) ?? []);
1233
+ );
1234
+ return Caching.listAssetCache.get(key.serialize(), () => {
1235
+ return AssetLoader.get(key, "list" /* LIST */);
1236
+ }).then((r) => (r == null ? void 0 : r.files) ?? []);
1232
1237
  }
1233
1238
  static async loadAndMerge(key) {
1234
1239
  const model = await this.getRaw(key);
@@ -1275,19 +1280,15 @@ var _Models = class _Models {
1275
1280
  return this.PERSISTENT_CACHE.clear();
1276
1281
  }
1277
1282
  };
1278
- __decorateClass([
1279
- Memoize()
1280
- ], _Models, "getItemList", 1);
1281
- var Models = _Models;
1282
1283
 
1283
1284
  // src/assets/BlockStates.ts
1284
- import { Memoize as Memoize2 } from "typescript-memoize";
1285
1285
  var BlockStates = class {
1286
1286
  static get PERSISTENT_CACHE() {
1287
1287
  return this._persistentCache ??= PersistentCache.open("minerender-blockstates");
1288
1288
  }
1289
+ // BlockState names are hardcoded
1289
1290
  static async getList() {
1290
- return AssetLoader.get(new AssetKey(
1291
+ const key = new AssetKey(
1291
1292
  DEFAULT_NAMESPACE,
1292
1293
  "_list",
1293
1294
  "blockstates",
@@ -1295,11 +1296,16 @@ var BlockStates = class {
1295
1296
  "assets",
1296
1297
  ".json",
1297
1298
  DEFAULT_ROOT
1298
- ), "list" /* LIST */).then((r) => (r == null ? void 0 : r.files) ?? []);
1299
+ );
1300
+ return Caching.listAssetCache.get(key.serialize(), () => {
1301
+ return AssetLoader.get(key, "list" /* LIST */);
1302
+ }).then((r) => (r == null ? void 0 : r.files) ?? []);
1299
1303
  }
1300
1304
  static async getDefaultStates() {
1301
1305
  const key = AssetKey.parse("blockstates", "minerender:defaultBlockStates");
1302
- return AssetLoader.get(key, "json" /* JSON */);
1306
+ return Caching.defaultBlockStatesCache.get(key.serialize(), () => {
1307
+ return AssetLoader.get(key, "json" /* JSON */);
1308
+ });
1303
1309
  }
1304
1310
  static async getDefaultState(key) {
1305
1311
  const defaultStates = await this.getDefaultStates();
@@ -1338,12 +1344,6 @@ var BlockStates = class {
1338
1344
  await this.PERSISTENT_CACHE.clear();
1339
1345
  }
1340
1346
  };
1341
- __decorateClass([
1342
- Memoize2()
1343
- ], BlockStates, "getList", 1);
1344
- __decorateClass([
1345
- Memoize2()
1346
- ], BlockStates, "getDefaultStates", 1);
1347
1347
  var DefaultBlockStates = class {
1348
1348
  };
1349
1349
 
@@ -2395,17 +2395,20 @@ function shutdown() {
2395
2395
  }
2396
2396
 
2397
2397
  // src/assets/Entities.ts
2398
- import { Memoize as Memoize3 } from "typescript-memoize";
2399
2398
  var Entities = class {
2400
2399
  static async getBlockEntityModels() {
2401
2400
  const key = AssetKey.parse("models", "minerender:blockEntityModels");
2402
2401
  console.log(key);
2403
- return AssetLoader.get(key, "json" /* JSON */);
2402
+ return Caching.entityModelsCache.get(key.serialize(), () => {
2403
+ return AssetLoader.get(key, "json" /* JSON */);
2404
+ });
2404
2405
  }
2405
2406
  static async getEntityModels() {
2406
2407
  const key = AssetKey.parse("models", "minerender:entityModels");
2407
2408
  console.log(key);
2408
- return AssetLoader.get(key, "json" /* JSON */);
2409
+ return Caching.entityModelsCache.get(key.serialize(), () => {
2410
+ return AssetLoader.get(key, "json" /* JSON */);
2411
+ });
2409
2412
  }
2410
2413
  // BlockEntity names are hardcoded
2411
2414
  static async getBlockList() {
@@ -2451,12 +2454,6 @@ var Entities = class {
2451
2454
  };
2452
2455
  }
2453
2456
  };
2454
- __decorateClass([
2455
- Memoize3()
2456
- ], Entities, "getBlockEntityModels", 1);
2457
- __decorateClass([
2458
- Memoize3()
2459
- ], Entities, "getEntityModels", 1);
2460
2457
  var EntityModels = class {
2461
2458
  };
2462
2459
  var BlockEntityModels = class {