CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

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