@sanity/sdk 0.0.0-alpha.21 → 0.0.0-alpha.22

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.js CHANGED
@@ -20,7 +20,12 @@ function getEnv(key) {
20
20
  if (typeof window < "u" && window.ENV)
21
21
  return window.ENV?.[key];
22
22
  }
23
- const resourceCache = /* @__PURE__ */ new WeakMap();
23
+ const resourceCache = /* @__PURE__ */ new WeakMap(), SHARED_IDENTITY = {
24
+ id: "shared",
25
+ resourceId: "shared.shared",
26
+ projectId: "shared",
27
+ dataset: "shared"
28
+ };
24
29
  function createResourceState(initialState, devToolsOptions) {
25
30
  const store = createStore$1()(devtools(() => initialState, devToolsOptions));
26
31
  return {
@@ -35,26 +40,50 @@ function createResourceState(initialState, devToolsOptions) {
35
40
  };
36
41
  }
37
42
  function initializeResource(instance, resource) {
38
- const fullName = resource.name === "Auth" ? "Auth-global" : `${resource.name}-${instance.identity.resourceId}`, initialState = resource.getInitialState(instance), state = createResourceState(initialState, {
43
+ const fullName = resource.isShared ? `${resource.name}-shared` : `${resource.name}-${instance.identity.resourceId}`, initialState = resource.getInitialState(instance), state = createResourceState(initialState, {
39
44
  name: fullName,
40
45
  enabled: !!getEnv("DEV")
41
46
  }), dispose = resource.initialize?.call({ instance, state }, instance) ?? (() => {
42
47
  });
43
48
  return { state, dispose };
44
49
  }
50
+ const instanceSharedResources = /* @__PURE__ */ new Map();
45
51
  function getOrCreateResource(instance, resource) {
46
- const fullName = resource.name === "Auth" ? "Auth-global" : `${resource.name}-${instance.identity.resourceId}`;
47
- resourceCache.has(instance.identity) || resourceCache.set(instance.identity, /* @__PURE__ */ new Map());
48
- const initializedResources = resourceCache.get(instance.identity), cached = initializedResources.get(fullName);
52
+ const identityKey = resource.isShared ? SHARED_IDENTITY : instance.identity, fullName = resource.isShared ? `${resource.name}-shared` : `${resource.name}-${instance.identity.resourceId}`;
53
+ resource.isShared && (instanceSharedResources.has(instance.identity) || instanceSharedResources.set(instance.identity, /* @__PURE__ */ new Set()), instanceSharedResources.get(instance.identity).add(fullName)), resourceCache.has(identityKey) || resourceCache.set(identityKey, /* @__PURE__ */ new Map());
54
+ const initializedResources = resourceCache.get(identityKey), cached = initializedResources.get(fullName);
49
55
  if (cached) return cached;
50
56
  const result = initializeResource(instance, resource);
51
57
  return initializedResources.set(fullName, result), result;
52
58
  }
53
59
  function disposeResources(identity) {
54
60
  const resources = resourceCache.get(identity);
55
- if (resources)
61
+ if (resources) {
56
62
  for (const resource of resources.values())
57
63
  resource.dispose();
64
+ resourceCache.delete(identity);
65
+ }
66
+ const usedSharedResources = instanceSharedResources.get(identity);
67
+ if (usedSharedResources) {
68
+ const sharedResources = resourceCache.get(SHARED_IDENTITY);
69
+ if (sharedResources) {
70
+ for (const fullName of usedSharedResources) {
71
+ const resource = sharedResources.get(fullName);
72
+ if (resource) {
73
+ usedSharedResources.delete(fullName);
74
+ let stillInUse = !1;
75
+ for (const [otherIdentity, otherUsed] of instanceSharedResources.entries())
76
+ if (otherIdentity !== identity && otherUsed.has(fullName)) {
77
+ stillInUse = !0;
78
+ break;
79
+ }
80
+ stillInUse || (resource.dispose(), sharedResources.delete(fullName));
81
+ }
82
+ }
83
+ sharedResources.size === 0 && resourceCache.delete(SHARED_IDENTITY);
84
+ }
85
+ instanceSharedResources.delete(identity);
86
+ }
58
87
  }
59
88
  function createAction(resource, actionDefinition) {
60
89
  return (dependencies, ...args) => {
@@ -247,6 +276,7 @@ const subscribeToStorageEventsAndSetToken = createInternalAction(
247
276
  let tokenRefresherRunning = !1;
248
277
  const authStore = {
249
278
  name: "Auth",
279
+ isShared: !0,
250
280
  getInitialState(instance) {
251
281
  const {
252
282
  apiHost,
@@ -4846,7 +4876,7 @@ const API_VERSION = "vX", usersStore = {
4846
4876
  resolveUsers,
4847
4877
  setOptions
4848
4878
  });
4849
- var version = "0.0.0-alpha.21";
4879
+ var version = "0.0.0-alpha.22";
4850
4880
  const CORE_SDK_VERSION = getEnv("PKG_VERSION") || `${version}-development`;
4851
4881
  export {
4852
4882
  AuthStateType,