CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
middleware.js610 linesDownload Raw Back to zustand
1'use strict';2 3function _extends() {4  return _extends = Object.assign ? Object.assign.bind() : function (n) {5    for (var e = 1; e < arguments.length; e++) {6      var t = arguments[e];7      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);8    }9    return n;10  }, _extends.apply(null, arguments);11}12function _objectWithoutPropertiesLoose(r, e) {13  if (null == r) return {};14  var t = {};15  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {16    if (e.includes(n)) continue;17    t[n] = r[n];18  }19  return t;20}21 22var reduxImpl = function reduxImpl(reducer, initial) {23  return function (set, _get, api) {24    api.dispatch = function (action) {25      set(function (state) {26        return reducer(state, action);27      }, false, action);28      return action;29    };30    api.dispatchFromDevtools = true;31    return _extends({32      dispatch: function dispatch() {33        var _ref;34        return (_ref = api).dispatch.apply(_ref, arguments);35      }36    }, initial);37  };38};39var redux = reduxImpl;40 41var _excluded = ["enabled", "anonymousActionType", "store"],42  _excluded2 = ["connection"];43var trackedConnections = new Map();44var getTrackedConnectionState = function getTrackedConnectionState(name) {45  var api = trackedConnections.get(name);46  if (!api) return {};47  return Object.fromEntries(Object.entries(api.stores).map(function (_ref) {48    var key = _ref[0],49      api = _ref[1];50    return [key, api.getState()];51  }));52};53var extractConnectionInformation = function extractConnectionInformation(store, extensionConnector, options) {54  if (store === undefined) {55    return {56      type: 'untracked',57      connection: extensionConnector.connect(options)58    };59  }60  var existingConnection = trackedConnections.get(options.name);61  if (existingConnection) {62    return _extends({63      type: 'tracked',64      store: store65    }, existingConnection);66  }67  var newConnection = {68    connection: extensionConnector.connect(options),69    stores: {}70  };71  trackedConnections.set(options.name, newConnection);72  return _extends({73    type: 'tracked',74    store: store75  }, newConnection);76};77var devtoolsImpl = function devtoolsImpl(fn, devtoolsOptions) {78  if (devtoolsOptions === void 0) {79    devtoolsOptions = {};80  }81  return function (set, get, api) {82    var _devtoolsOptions = devtoolsOptions,83      enabled = _devtoolsOptions.enabled,84      anonymousActionType = _devtoolsOptions.anonymousActionType,85      store = _devtoolsOptions.store,86      options = _objectWithoutPropertiesLoose(_devtoolsOptions, _excluded);87    var extensionConnector;88    try {89      extensionConnector = (enabled != null ? enabled : process.env.NODE_ENV !== 'production') && window.__REDUX_DEVTOOLS_EXTENSION__;90    } catch (_e) {}91    if (!extensionConnector) {92      if (process.env.NODE_ENV !== 'production' && enabled) {93        console.warn('[zustand devtools middleware] Please install/enable Redux devtools extension');94      }95      return fn(set, get, api);96    }97    var _extractConnectionInf = extractConnectionInformation(store, extensionConnector, options),98      connection = _extractConnectionInf.connection,99      connectionInformation = _objectWithoutPropertiesLoose(_extractConnectionInf, _excluded2);100    var isRecording = true;101    api.setState = function (state, replace, nameOrAction) {102      var _extends2;103      var r = set(state, replace);104      if (!isRecording) return r;105      var action = nameOrAction === undefined ? {106        type: anonymousActionType || 'anonymous'107      } : typeof nameOrAction === 'string' ? {108        type: nameOrAction109      } : nameOrAction;110      if (store === undefined) {111        connection == null || connection.send(action, get());112        return r;113      }114      connection == null || connection.send(_extends({}, action, {115        type: store + "/" + action.type116      }), _extends({}, getTrackedConnectionState(options.name), (_extends2 = {}, _extends2[store] = api.getState(), _extends2)));117      return r;118    };119    var setStateFromDevtools = function setStateFromDevtools() {120      var originalIsRecording = isRecording;121      isRecording = false;122      set.apply(void 0, arguments);123      isRecording = originalIsRecording;124    };125    var initialState = fn(api.setState, get, api);126    if (connectionInformation.type === 'untracked') {127      connection == null || connection.init(initialState);128    } else {129      connectionInformation.stores[connectionInformation.store] = api;130      connection == null || connection.init(Object.fromEntries(Object.entries(connectionInformation.stores).map(function (_ref2) {131        var key = _ref2[0],132          store = _ref2[1];133        return [key, key === connectionInformation.store ? initialState : store.getState()];134      })));135    }136    if (api.dispatchFromDevtools && typeof api.dispatch === 'function') {137      var didWarnAboutReservedActionType = false;138      var originalDispatch = api.dispatch;139      api.dispatch = function () {140        for (var _len = arguments.length, a = new Array(_len), _key = 0; _key < _len; _key++) {141          a[_key] = arguments[_key];142        }143        if (process.env.NODE_ENV !== 'production' && a[0].type === '__setState' && !didWarnAboutReservedActionType) {144          console.warn('[zustand devtools middleware] "__setState" action type is reserved ' + 'to set state from the devtools. Avoid using it.');145          didWarnAboutReservedActionType = true;146        }147        originalDispatch.apply(void 0, a);148      };149    }150    connection.subscribe(function (message) {151      switch (message.type) {152        case 'ACTION':153          if (typeof message.payload !== 'string') {154            console.error('[zustand devtools middleware] Unsupported action format');155            return;156          }157          return parseJsonThen(message.payload, function (action) {158            if (action.type === '__setState') {159              if (store === undefined) {160                setStateFromDevtools(action.state);161                return;162              }163              if (Object.keys(action.state).length !== 1) {164                console.error("\n                    [zustand devtools middleware] Unsupported __setState action format. \n                    When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n                    and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n                    ");165              }166              var stateFromDevtools = action.state[store];167              if (stateFromDevtools === undefined || stateFromDevtools === null) {168                return;169              }170              if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {171                setStateFromDevtools(stateFromDevtools);172              }173              return;174            }175            if (!api.dispatchFromDevtools) return;176            if (typeof api.dispatch !== 'function') return;177            api.dispatch(action);178          });179        case 'DISPATCH':180          switch (message.payload.type) {181            case 'RESET':182              setStateFromDevtools(initialState);183              if (store === undefined) {184                return connection == null ? void 0 : connection.init(api.getState());185              }186              return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));187            case 'COMMIT':188              if (store === undefined) {189                connection == null || connection.init(api.getState());190                return;191              }192              return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));193            case 'ROLLBACK':194              return parseJsonThen(message.state, function (state) {195                if (store === undefined) {196                  setStateFromDevtools(state);197                  connection == null || connection.init(api.getState());198                  return;199                }200                setStateFromDevtools(state[store]);201                connection == null || connection.init(getTrackedConnectionState(options.name));202              });203            case 'JUMP_TO_STATE':204            case 'JUMP_TO_ACTION':205              return parseJsonThen(message.state, function (state) {206                if (store === undefined) {207                  setStateFromDevtools(state);208                  return;209                }210                if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {211                  setStateFromDevtools(state[store]);212                }213              });214            case 'IMPORT_STATE':215              {216                var _nextLiftedState$comp;217                var nextLiftedState = message.payload.nextLiftedState;218                var lastComputedState = (_nextLiftedState$comp = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _nextLiftedState$comp.state;219                if (!lastComputedState) return;220                if (store === undefined) {221                  setStateFromDevtools(lastComputedState);222                } else {223                  setStateFromDevtools(lastComputedState[store]);224                }225                connection == null || connection.send(null, nextLiftedState);226                return;227              }228            case 'PAUSE_RECORDING':229              return isRecording = !isRecording;230          }231          return;232      }233    });234    return initialState;235  };236};237var devtools = devtoolsImpl;238var parseJsonThen = function parseJsonThen(stringified, f) {239  var parsed;240  try {241    parsed = JSON.parse(stringified);242  } catch (e) {243    console.error('[zustand devtools middleware] Could not parse the received json', e);244  }245  if (parsed !== undefined) f(parsed);246};247 248var subscribeWithSelectorImpl = function subscribeWithSelectorImpl(fn) {249  return function (set, get, api) {250    var origSubscribe = api.subscribe;251    api.subscribe = function (selector, optListener, options) {252      var listener = selector;253      if (optListener) {254        var equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;255        var currentSlice = selector(api.getState());256        listener = function listener(state) {257          var nextSlice = selector(state);258          if (!equalityFn(currentSlice, nextSlice)) {259            var previousSlice = currentSlice;260            optListener(currentSlice = nextSlice, previousSlice);261          }262        };263        if (options != null && options.fireImmediately) {264          optListener(currentSlice, currentSlice);265        }266      }267      return origSubscribe(listener);268    };269    var initialState = fn(set, get, api);270    return initialState;271  };272};273var subscribeWithSelector = subscribeWithSelectorImpl;274 275var combine = function combine(initialState, create) {276  return function () {277    return Object.assign({}, initialState, create.apply(void 0, arguments));278  };279};280 281function createJSONStorage(getStorage, options) {282  var storage;283  try {284    storage = getStorage();285  } catch (_e) {286    return;287  }288  var persistStorage = {289    getItem: function getItem(name) {290      var _getItem;291      var parse = function parse(str) {292        if (str === null) {293          return null;294        }295        return JSON.parse(str, options == null ? void 0 : options.reviver);296      };297      var str = (_getItem = storage.getItem(name)) != null ? _getItem : null;298      if (str instanceof Promise) {299        return str.then(parse);300      }301      return parse(str);302    },303    setItem: function setItem(name, newValue) {304      return storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer));305    },306    removeItem: function removeItem(name) {307      return storage.removeItem(name);308    }309  };310  return persistStorage;311}312var _toThenable = function toThenable(fn) {313  return function (input) {314    try {315      var result = fn(input);316      if (result instanceof Promise) {317        return result;318      }319      return {320        then: function then(onFulfilled) {321          return _toThenable(onFulfilled)(result);322        },323        catch: function _catch(_onRejected) {324          return this;325        }326      };327    } catch (e) {328      return {329        then: function then(_onFulfilled) {330          return this;331        },332        catch: function _catch(onRejected) {333          return _toThenable(onRejected)(e);334        }335      };336    }337  };338};339var oldImpl = function oldImpl(config, baseOptions) {340  return function (set, get, api) {341    var options = _extends({342      getStorage: function getStorage() {343        return localStorage;344      },345      serialize: JSON.stringify,346      deserialize: JSON.parse,347      partialize: function partialize(state) {348        return state;349      },350      version: 0,351      merge: function merge(persistedState, currentState) {352        return _extends({}, currentState, persistedState);353      }354    }, baseOptions);355    var _hasHydrated = false;356    var hydrationListeners = new Set();357    var finishHydrationListeners = new Set();358    var storage;359    try {360      storage = options.getStorage();361    } catch (_e) {}362    if (!storage) {363      return config(function () {364        console.warn("[zustand persist middleware] Unable to update item '" + options.name + "', the given storage is currently unavailable.");365        set.apply(void 0, arguments);366      }, get, api);367    }368    var thenableSerialize = _toThenable(options.serialize);369    var setItem = function setItem() {370      var state = options.partialize(_extends({}, get()));371      var errorInSync;372      var thenable = thenableSerialize({373        state: state,374        version: options.version375      }).then(function (serializedValue) {376        return storage.setItem(options.name, serializedValue);377      }).catch(function (e) {378        errorInSync = e;379      });380      if (errorInSync) {381        throw errorInSync;382      }383      return thenable;384    };385    var savedSetState = api.setState;386    api.setState = function (state, replace) {387      savedSetState(state, replace);388      void setItem();389    };390    var configResult = config(function () {391      set.apply(void 0, arguments);392      void setItem();393    }, get, api);394    var stateFromStorage;395    var hydrate = function hydrate() {396      if (!storage) return;397      _hasHydrated = false;398      hydrationListeners.forEach(function (cb) {399        return cb(get());400      });401      var postRehydrationCallback = (options.onRehydrateStorage == null ? void 0 : options.onRehydrateStorage(get())) || undefined;402      return _toThenable(storage.getItem.bind(storage))(options.name).then(function (storageValue) {403        if (storageValue) {404          return options.deserialize(storageValue);405        }406      }).then(function (deserializedStorageValue) {407        if (deserializedStorageValue) {408          if (typeof deserializedStorageValue.version === 'number' && deserializedStorageValue.version !== options.version) {409            if (options.migrate) {410              return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);411            }412            console.error("State loaded from storage couldn't be migrated since no migrate function was provided");413          } else {414            return deserializedStorageValue.state;415          }416        }417      }).then(function (migratedState) {418        var _get;419        stateFromStorage = options.merge(migratedState, (_get = get()) != null ? _get : configResult);420        set(stateFromStorage, true);421        return setItem();422      }).then(function () {423        postRehydrationCallback == null || postRehydrationCallback(stateFromStorage, undefined);424        _hasHydrated = true;425        finishHydrationListeners.forEach(function (cb) {426          return cb(stateFromStorage);427        });428      }).catch(function (e) {429        postRehydrationCallback == null || postRehydrationCallback(undefined, e);430      });431    };432    api.persist = {433      setOptions: function setOptions(newOptions) {434        options = _extends({}, options, newOptions);435        if (newOptions.getStorage) {436          storage = newOptions.getStorage();437        }438      },439      clearStorage: function clearStorage() {440        var _storage;441        (_storage = storage) == null || _storage.removeItem(options.name);442      },443      getOptions: function getOptions() {444        return options;445      },446      rehydrate: function rehydrate() {447        return hydrate();448      },449      hasHydrated: function hasHydrated() {450        return _hasHydrated;451      },452      onHydrate: function onHydrate(cb) {453        hydrationListeners.add(cb);454        return function () {455          hydrationListeners.delete(cb);456        };457      },458      onFinishHydration: function onFinishHydration(cb) {459        finishHydrationListeners.add(cb);460        return function () {461          finishHydrationListeners.delete(cb);462        };463      }464    };465    hydrate();466    return stateFromStorage || configResult;467  };468};469var newImpl = function newImpl(config, baseOptions) {470  return function (set, get, api) {471    var options = _extends({472      storage: createJSONStorage(function () {473        return localStorage;474      }),475      partialize: function partialize(state) {476        return state;477      },478      version: 0,479      merge: function merge(persistedState, currentState) {480        return _extends({}, currentState, persistedState);481      }482    }, baseOptions);483    var _hasHydrated2 = false;484    var hydrationListeners = new Set();485    var finishHydrationListeners = new Set();486    var storage = options.storage;487    if (!storage) {488      return config(function () {489        console.warn("[zustand persist middleware] Unable to update item '" + options.name + "', the given storage is currently unavailable.");490        set.apply(void 0, arguments);491      }, get, api);492    }493    var setItem = function setItem() {494      var state = options.partialize(_extends({}, get()));495      return storage.setItem(options.name, {496        state: state,497        version: options.version498      });499    };500    var savedSetState = api.setState;501    api.setState = function (state, replace) {502      savedSetState(state, replace);503      void setItem();504    };505    var configResult = config(function () {506      set.apply(void 0, arguments);507      void setItem();508    }, get, api);509    api.getInitialState = function () {510      return configResult;511    };512    var stateFromStorage;513    var hydrate = function hydrate() {514      var _get3;515      if (!storage) return;516      _hasHydrated2 = false;517      hydrationListeners.forEach(function (cb) {518        var _get2;519        return cb((_get2 = get()) != null ? _get2 : configResult);520      });521      var postRehydrationCallback = (options.onRehydrateStorage == null ? void 0 : options.onRehydrateStorage((_get3 = get()) != null ? _get3 : configResult)) || undefined;522      return _toThenable(storage.getItem.bind(storage))(options.name).then(function (deserializedStorageValue) {523        if (deserializedStorageValue) {524          if (typeof deserializedStorageValue.version === 'number' && deserializedStorageValue.version !== options.version) {525            if (options.migrate) {526              return [true, options.migrate(deserializedStorageValue.state, deserializedStorageValue.version)];527            }528            console.error("State loaded from storage couldn't be migrated since no migrate function was provided");529          } else {530            return [false, deserializedStorageValue.state];531          }532        }533        return [false, undefined];534      }).then(function (migrationResult) {535        var _get4;536        var migrated = migrationResult[0],537          migratedState = migrationResult[1];538        stateFromStorage = options.merge(migratedState, (_get4 = get()) != null ? _get4 : configResult);539        set(stateFromStorage, true);540        if (migrated) {541          return setItem();542        }543      }).then(function () {544        postRehydrationCallback == null || postRehydrationCallback(stateFromStorage, undefined);545        stateFromStorage = get();546        _hasHydrated2 = true;547        finishHydrationListeners.forEach(function (cb) {548          return cb(stateFromStorage);549        });550      }).catch(function (e) {551        postRehydrationCallback == null || postRehydrationCallback(undefined, e);552      });553    };554    api.persist = {555      setOptions: function setOptions(newOptions) {556        options = _extends({}, options, newOptions);557        if (newOptions.storage) {558          storage = newOptions.storage;559        }560      },561      clearStorage: function clearStorage() {562        var _storage2;563        (_storage2 = storage) == null || _storage2.removeItem(options.name);564      },565      getOptions: function getOptions() {566        return options;567      },568      rehydrate: function rehydrate() {569        return hydrate();570      },571      hasHydrated: function hasHydrated() {572        return _hasHydrated2;573      },574      onHydrate: function onHydrate(cb) {575        hydrationListeners.add(cb);576        return function () {577          hydrationListeners.delete(cb);578        };579      },580      onFinishHydration: function onFinishHydration(cb) {581        finishHydrationListeners.add(cb);582        return function () {583          finishHydrationListeners.delete(cb);584        };585      }586    };587    if (!options.skipHydration) {588      hydrate();589    }590    return stateFromStorage || configResult;591  };592};593var persistImpl = function persistImpl(config, baseOptions) {594  if ('getStorage' in baseOptions || 'serialize' in baseOptions || 'deserialize' in baseOptions) {595    if (process.env.NODE_ENV !== 'production') {596      console.warn('[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.');597    }598    return oldImpl(config, baseOptions);599  }600  return newImpl(config, baseOptions);601};602var persist = persistImpl;603 604exports.combine = combine;605exports.createJSONStorage = createJSONStorage;606exports.devtools = devtools;607exports.persist = persist;608exports.redux = redux;609exports.subscribeWithSelector = subscribeWithSelector;610