@kosdev-code/kos-ui-sdk 0.1.0-next.850 → 0.1.0-next.851

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.
@@ -3,6 +3,12 @@ export declare class KosDependencyManager {
3
3
  private _usesCache;
4
4
  add(modelId: string, dependencyId: string): void;
5
5
  remove(modelId: string, dependencyId: string): void;
6
+ /**
7
+ * Drops every edge into and out of a model. Called when the model is
8
+ * destroyed, so its dependencies are not left pinned by a model that is
9
+ * gone and can never release them.
10
+ */
11
+ removeAll(modelId: string): void;
6
12
  canDestroy(modelId: string): boolean;
7
13
  clear(): void;
8
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/kos-ui-sdk/src/core/core/dependency-manager.ts"],"names":[],"mappings":"AAOA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,UAAU,CAA+B;IAEjD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAYzC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAc5C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASpC,KAAK;CAIN"}
1
+ {"version":3,"file":"dependency-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/kos-ui-sdk/src/core/core/dependency-manager.ts"],"names":[],"mappings":"AAOA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,UAAU,CAA+B;IAEjD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAYzC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAc5C;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM;IAwBzB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASpC,KAAK;CAIN"}
@@ -1 +1 @@
1
- {"version":3,"file":"kosModelManager.d.ts","sourceRoot":"","sources":["../../../../../packages/kos-ui-sdk/src/core/core/kosModelManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kosModelManager.d.ts","sourceRoot":"","sources":["../../../../../packages/kos-ui-sdk/src/core/core/kosModelManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Suspense cache backing `useKosModel`.
3
+ *
4
+ * A `finished` entry never re-runs its fetcher, so it has to be evicted when
5
+ * the model it stands for is destroyed. Otherwise the hook keeps resolving the
6
+ * key against a model that no longer exists and the model is never rebuilt.
7
+ *
8
+ * It lives in core rather than beside the hook so the model manager can evict
9
+ * on destroy without depending on the ui layer.
10
+ */
11
+ export type ModelHookCacheEntry = {
12
+ status: "pending";
13
+ promise: Promise<unknown>;
14
+ } | {
15
+ status: "finished";
16
+ key: string;
17
+ } | {
18
+ status: "error";
19
+ error: unknown;
20
+ };
21
+ export declare const modelHookCache: {
22
+ has: (key: string) => boolean;
23
+ get: (key: string) => ModelHookCacheEntry | undefined;
24
+ set: (key: string, entry: ModelHookCacheEntry) => Map<string, ModelHookCacheEntry>;
25
+ delete: (key: string) => boolean;
26
+ clear: () => void;
27
+ };
28
+ /** Evicts a model's cache entry so the next render rebuilds it. */
29
+ export declare const clearModelHookCacheEntry: (modelId?: string) => void;
30
+ //# sourceMappingURL=model-hook-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-hook-cache.d.ts","sourceRoot":"","sources":["../../../../../../packages/kos-ui-sdk/src/core/core/model/model-hook-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAIxC,eAAO,MAAM,cAAc;eACd,MAAM;eACN,MAAM;eACN,MAAM,SAAS,mBAAmB;kBAC/B,MAAM;;CAErB,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,GAAI,UAAU,MAAM,KAAG,IAI3D,CAAC"}
package/core/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export * from './core/kosModelManager';
16
16
  export { KosModelEvents, KosModelState } from './core/lifecycle';
17
17
  export * from './core/log';
18
18
  export { KosLoggerFactory } from './core/model/kos-logger-factory';
19
+ export { clearModelHookCacheEntry, modelHookCache, type ModelHookCacheEntry, } from './core/model/model-hook-cache';
19
20
  export * from './core/models';
20
21
  export { default as KosToken } from './core/models/kos-token';
21
22
  export { KosModelRegistrationFactory, preloadKosModel, registerCompanionModel, registerKosModel, registerLegacyModel, RegistrationManager, SingletonKosModelRegistrationFactory, type KosModelRegistrationType, type RegistrationResult, } from './core/registration';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/kos-ui-sdk/src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,kBAAkB,EAClB,cAAc,EAEd,QAAQ,EACR,WAAW,EACX,IAAI,EACL,MAAM,MAAM,CAAC;AACd,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,oCAAoC,EACpC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,cAAc,GACf,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,OAAO,aAAO,CAAC;AAErB;;;GAGG;AACH,QAAA,MAAM,WAAW,iCAAW,CAAC;AAC7B;;;GAGG;AACH,QAAA,MAAM,SAAS,oBAAc,CAAC;AAE9B;;;;;;;GAOG;AACH,QAAA,MAAM,aAAa,gBAAU,CAAC;AAE9B;;;GAGG;AACH,QAAA,MAAM,SAAS,iBAAW,CAAC;AAE3B;;;GAGG;AACH,QAAA,MAAM,aAAa,mCAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/kos-ui-sdk/src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,kBAAkB,EAClB,cAAc,EAEd,QAAQ,EACR,WAAW,EACX,IAAI,EACL,MAAM,MAAM,CAAC;AACd,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EACL,wBAAwB,EACxB,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,oCAAoC,EACpC,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,cAAc,GACf,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,OAAO,aAAO,CAAC;AAErB;;;GAGG;AACH,QAAA,MAAM,WAAW,iCAAW,CAAC;AAC7B;;;GAGG;AACH,QAAA,MAAM,SAAS,oBAAc,CAAC;AAE9B;;;;;;;GAOG;AACH,QAAA,MAAM,aAAa,gBAAU,CAAC;AAE9B;;;GAGG;AACH,QAAA,MAAM,SAAS,iBAAW,CAAC;AAE3B;;;GAGG;AACH,QAAA,MAAM,aAAa,mCAAa,CAAC"}
package/index.cjs CHANGED
@@ -4190,6 +4190,33 @@ class KosDependencyManager {
4190
4190
  uses.filter((id) => id !== dependencyId)
4191
4191
  );
4192
4192
  }
4193
+ /**
4194
+ * Drops every edge into and out of a model. Called when the model is
4195
+ * destroyed, so its dependencies are not left pinned by a model that is
4196
+ * gone and can never release them.
4197
+ */
4198
+ removeAll(modelId) {
4199
+ for (const dependencyId of this._usesCache.get(modelId) ?? []) {
4200
+ const usedBy = this._usedByCache.get(dependencyId);
4201
+ if (usedBy) {
4202
+ this._usedByCache.set(
4203
+ dependencyId,
4204
+ usedBy.filter((id) => id !== modelId)
4205
+ );
4206
+ }
4207
+ }
4208
+ this._usesCache.delete(modelId);
4209
+ for (const dependentId of this._usedByCache.get(modelId) ?? []) {
4210
+ const uses = this._usesCache.get(dependentId);
4211
+ if (uses) {
4212
+ this._usesCache.set(
4213
+ dependentId,
4214
+ uses.filter((id) => id !== modelId)
4215
+ );
4216
+ }
4217
+ }
4218
+ this._usedByCache.delete(modelId);
4219
+ }
4193
4220
  canDestroy(modelId) {
4194
4221
  const usedBy = this._usedByCache.get(modelId);
4195
4222
  if (usedBy?.length) {
@@ -4267,6 +4294,19 @@ class KosModelCache {
4267
4294
  return this._preloaded;
4268
4295
  }
4269
4296
  }
4297
+ const cache$1 = /* @__PURE__ */ new Map();
4298
+ const modelHookCache = {
4299
+ has: (key) => cache$1.has(key),
4300
+ get: (key) => cache$1.get(key),
4301
+ set: (key, entry) => cache$1.set(key, entry),
4302
+ delete: (key) => cache$1.delete(key),
4303
+ clear: () => cache$1.clear()
4304
+ };
4305
+ const clearModelHookCacheEntry = (modelId) => {
4306
+ if (modelId) {
4307
+ cache$1.delete(modelId);
4308
+ }
4309
+ };
4270
4310
  class KosModelError extends Error {
4271
4311
  context;
4272
4312
  originalCause;
@@ -11742,6 +11782,8 @@ class KosModelManager {
11742
11782
  if (model?.modelId && this.dependencies.canDestroy(model.modelId)) {
11743
11783
  await model.unload?.();
11744
11784
  this.removeModel(model);
11785
+ this.dependencies.removeAll(model.modelId);
11786
+ clearModelHookCacheEntry(model.modelId);
11745
11787
  }
11746
11788
  }
11747
11789
  /**
@@ -26821,30 +26863,29 @@ const waitForRetry = (depth = 0) => new Promise((resolve) => {
26821
26863
  resolve(true);
26822
26864
  }, 2 ** depth * 10);
26823
26865
  });
26824
- const cache$1 = /* @__PURE__ */ new Map();
26825
26866
  function fetchData$1(key, fetcher) {
26826
- if (cache$1.has(key)) {
26827
- const entry = cache$1.get(key);
26867
+ const entry = modelHookCache.get(key);
26868
+ if (entry) {
26828
26869
  if (entry.status === "finished") {
26829
26870
  const kosModel2 = KosCore.getInstance().modelManager.getModelById(key);
26830
26871
  return { kosModel: kosModel2, model: kosModel2?.modelData };
26831
- } else {
26832
- throw entry.promise;
26833
26872
  }
26834
- } else {
26835
- const promise = fetcher().then(
26836
- () => {
26837
- cache$1.set(key, { status: "finished", key });
26838
- },
26839
- (error) => {
26840
- cache$1.set(key, { status: "error", error });
26841
- throw error;
26842
- }
26843
- );
26844
- const entry = { status: "pending", promise };
26845
- cache$1.set(key, entry);
26846
- throw promise;
26873
+ if (entry.status === "error") {
26874
+ throw entry.error;
26875
+ }
26876
+ throw entry.promise;
26847
26877
  }
26878
+ const promise = fetcher().then(
26879
+ () => {
26880
+ modelHookCache.set(key, { status: "finished", key });
26881
+ },
26882
+ (error) => {
26883
+ modelHookCache.set(key, { status: "error", error });
26884
+ throw error;
26885
+ }
26886
+ );
26887
+ modelHookCache.set(key, { status: "pending", promise });
26888
+ throw promise;
26848
26889
  }
26849
26890
  function useSuspenseData$1(key, fetcher) {
26850
26891
  const data = fetchData$1(key, fetcher);
@@ -26935,7 +26976,7 @@ const useKosModel = (modelOptions) => {
26935
26976
  if (destroyOnUnmount) {
26936
26977
  const modelId2 = model.id;
26937
26978
  destroyKosModel(model).then(() => {
26938
- cache$1.delete(modelId2);
26979
+ clearModelHookCacheEntry(modelId2);
26939
26980
  disposer?.();
26940
26981
  });
26941
26982
  }
@@ -26944,7 +26985,7 @@ const useKosModel = (modelOptions) => {
26944
26985
  } else {
26945
26986
  if (destroyOnUnmount && model) {
26946
26987
  destroyKosModel(model).then(() => {
26947
- cache$1.delete(modelId);
26988
+ clearModelHookCacheEntry(modelId);
26948
26989
  disposer?.();
26949
26990
  });
26950
26991
  }
@@ -29226,6 +29267,7 @@ exports.cancelFuture = cancelFuture;
29226
29267
  exports.checkAppsStarted = checkAppsStarted;
29227
29268
  exports.checkWildcardPattern = checkWildcardPattern;
29228
29269
  exports.clearAllServiceResponses = clearAllServiceResponses;
29270
+ exports.clearModelHookCacheEntry = clearModelHookCacheEntry;
29229
29271
  exports.clearPath = clearPath;
29230
29272
  exports.clearServiceResponse = clearServiceResponse;
29231
29273
  exports.convert = convert;
@@ -29380,6 +29422,7 @@ exports.mapDtoToFutureOptions = mapDtoToFutureOptions;
29380
29422
  exports.mapUpdateDtoToConfigBeanModel = mapUpdateDtoToConfigBeanModel;
29381
29423
  exports.modelEventTopicFactory = modelEventTopicFactory;
29382
29424
  exports.modelFactory = modelFactory;
29425
+ exports.modelHookCache = modelHookCache;
29383
29426
  exports.modelTypeEventTopicFactory = modelTypeEventTopicFactory;
29384
29427
  exports.modifyConfigBean = modifyConfigBean;
29385
29428
  exports.modifyFuture = modifyFuture;