You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
7.0 KiB
240 lines
7.0 KiB
// node_modules/.pnpm/destr@2.0.3/node_modules/destr/dist/index.mjs
|
|
var suspectProtoRx = /"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/;
|
|
var suspectConstructorRx = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;
|
|
var JsonSigRx = /^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;
|
|
function jsonParseTransform(key, value) {
|
|
if (key === "__proto__" || key === "constructor" && value && typeof value === "object" && "prototype" in value) {
|
|
warnKeyDropped(key);
|
|
return;
|
|
}
|
|
return value;
|
|
}
|
|
function warnKeyDropped(key) {
|
|
console.warn(`[destr] Dropping "${key}" key to prevent prototype pollution.`);
|
|
}
|
|
function destr(value, options = {}) {
|
|
if (typeof value !== "string") {
|
|
return value;
|
|
}
|
|
const _value = value.trim();
|
|
if (
|
|
// eslint-disable-next-line unicorn/prefer-at
|
|
value[0] === '"' && value.endsWith('"') && !value.includes("\\")
|
|
) {
|
|
return _value.slice(1, -1);
|
|
}
|
|
if (_value.length <= 9) {
|
|
const _lval = _value.toLowerCase();
|
|
if (_lval === "true") {
|
|
return true;
|
|
}
|
|
if (_lval === "false") {
|
|
return false;
|
|
}
|
|
if (_lval === "undefined") {
|
|
return void 0;
|
|
}
|
|
if (_lval === "null") {
|
|
return null;
|
|
}
|
|
if (_lval === "nan") {
|
|
return Number.NaN;
|
|
}
|
|
if (_lval === "infinity") {
|
|
return Number.POSITIVE_INFINITY;
|
|
}
|
|
if (_lval === "-infinity") {
|
|
return Number.NEGATIVE_INFINITY;
|
|
}
|
|
}
|
|
if (!JsonSigRx.test(value)) {
|
|
if (options.strict) {
|
|
throw new SyntaxError("[destr] Invalid JSON");
|
|
}
|
|
return value;
|
|
}
|
|
try {
|
|
if (suspectProtoRx.test(value) || suspectConstructorRx.test(value)) {
|
|
if (options.strict) {
|
|
throw new Error("[destr] Possible prototype pollution");
|
|
}
|
|
return JSON.parse(value, jsonParseTransform);
|
|
}
|
|
return JSON.parse(value);
|
|
} catch (error) {
|
|
if (options.strict) {
|
|
throw error;
|
|
}
|
|
return value;
|
|
}
|
|
}
|
|
|
|
// node_modules/.pnpm/deep-pick-omit@1.2.1/node_modules/deep-pick-omit/dist/index.mjs
|
|
function get(obj, path) {
|
|
if (obj == null)
|
|
return void 0;
|
|
let value = obj;
|
|
for (let i = 0; i < path.length; i++) {
|
|
if (value == null || value[path[i]] == null)
|
|
return void 0;
|
|
value = value[path[i]];
|
|
}
|
|
return value;
|
|
}
|
|
function set(obj, value, path) {
|
|
if (path.length === 0)
|
|
return value;
|
|
const idx = path[0];
|
|
if (path.length > 1) {
|
|
value = set(
|
|
typeof obj !== "object" || obj === null || !Object.prototype.hasOwnProperty.call(obj, idx) ? Number.isInteger(Number(path[1])) ? [] : {} : obj[idx],
|
|
value,
|
|
Array.prototype.slice.call(path, 1)
|
|
);
|
|
}
|
|
if (Number.isInteger(Number(idx)) && Array.isArray(obj))
|
|
return obj.slice()[idx];
|
|
return Object.assign({}, obj, { [idx]: value });
|
|
}
|
|
function unset(obj, path) {
|
|
if (obj == null || path.length === 0)
|
|
return obj;
|
|
if (path.length === 1) {
|
|
if (obj == null)
|
|
return obj;
|
|
if (Number.isInteger(path[0]) && Array.isArray(obj))
|
|
return Array.prototype.slice.call(obj, 0).splice(path[0], 1);
|
|
const result = {};
|
|
for (const p in obj)
|
|
result[p] = obj[p];
|
|
delete result[path[0]];
|
|
return result;
|
|
}
|
|
if (obj[path[0]] == null) {
|
|
if (Number.isInteger(path[0]) && Array.isArray(obj))
|
|
return Array.prototype.concat.call([], obj);
|
|
const result = {};
|
|
for (const p in obj)
|
|
result[p] = obj[p];
|
|
return result;
|
|
}
|
|
return set(
|
|
obj,
|
|
unset(
|
|
obj[path[0]],
|
|
Array.prototype.slice.call(path, 1)
|
|
),
|
|
[path[0]]
|
|
);
|
|
}
|
|
function deepPickUnsafe(obj, paths) {
|
|
return paths.map((p) => p.split(".")).map((p) => [p, get(obj, p)]).filter((t) => t[1] !== void 0).reduce((acc, cur) => set(acc, cur[1], cur[0]), {});
|
|
}
|
|
function deepOmitUnsafe(obj, paths) {
|
|
return paths.map((p) => p.split(".")).reduce((acc, cur) => unset(acc, cur), obj);
|
|
}
|
|
|
|
// node_modules/.pnpm/pinia-plugin-persistedstate@4.1.1_pinia@2.2.4_vue@3.5.11__rollup@4.24.0/node_modules/pinia-plugin-persistedstate/dist/index.js
|
|
function hydrateStore(store, {
|
|
storage,
|
|
serializer,
|
|
key,
|
|
debug,
|
|
pick,
|
|
omit,
|
|
beforeHydrate,
|
|
afterHydrate
|
|
}, context, runHooks = true) {
|
|
try {
|
|
if (runHooks)
|
|
beforeHydrate == null ? void 0 : beforeHydrate(context);
|
|
const fromStorage = storage.getItem(key);
|
|
if (fromStorage) {
|
|
const deserialized = serializer.deserialize(fromStorage);
|
|
const picked = pick ? deepPickUnsafe(deserialized, pick) : deserialized;
|
|
const omitted = omit ? deepOmitUnsafe(picked, omit) : picked;
|
|
store.$patch(omitted);
|
|
}
|
|
if (runHooks)
|
|
afterHydrate == null ? void 0 : afterHydrate(context);
|
|
} catch (error) {
|
|
if (debug)
|
|
console.error("[pinia-plugin-persistedstate]", error);
|
|
}
|
|
}
|
|
function persistState(state, {
|
|
storage,
|
|
serializer,
|
|
key,
|
|
debug,
|
|
pick,
|
|
omit
|
|
}) {
|
|
try {
|
|
const picked = pick ? deepPickUnsafe(state, pick) : state;
|
|
const omitted = omit ? deepOmitUnsafe(picked, omit) : picked;
|
|
const toStorage = serializer.serialize(omitted);
|
|
storage.setItem(key, toStorage);
|
|
} catch (error) {
|
|
if (debug)
|
|
console.error("[pinia-plugin-persistedstate]", error);
|
|
}
|
|
}
|
|
function createPersistence(context, optionsParser, auto) {
|
|
const { pinia, store, options: { persist = auto } } = context;
|
|
if (!persist)
|
|
return;
|
|
if (!(store.$id in pinia.state.value)) {
|
|
const originalStore = pinia._s.get(store.$id.replace("__hot:", ""));
|
|
if (originalStore)
|
|
Promise.resolve().then(() => originalStore.$persist());
|
|
return;
|
|
}
|
|
const persistenceOptions = Array.isArray(persist) ? persist : persist === true ? [{}] : [persist];
|
|
const persistences = persistenceOptions.map(optionsParser);
|
|
store.$hydrate = ({ runHooks = true } = {}) => {
|
|
persistences.forEach((p) => {
|
|
hydrateStore(store, p, context, runHooks);
|
|
});
|
|
};
|
|
store.$persist = () => {
|
|
persistences.forEach((p) => {
|
|
persistState(store.$state, p);
|
|
});
|
|
};
|
|
persistences.forEach((p) => {
|
|
hydrateStore(store, p, context);
|
|
store.$subscribe(
|
|
(_mutation, state) => persistState(state, p),
|
|
{ detached: true }
|
|
);
|
|
});
|
|
}
|
|
function createPersistedState(options = {}) {
|
|
return function(context) {
|
|
createPersistence(
|
|
context,
|
|
(p) => ({
|
|
key: (options.key ? options.key : (x) => x)(p.key ?? context.store.$id),
|
|
debug: p.debug ?? options.debug ?? false,
|
|
serializer: p.serializer ?? options.serializer ?? {
|
|
serialize: (data) => JSON.stringify(data),
|
|
deserialize: (data) => destr(data)
|
|
},
|
|
storage: p.storage ?? options.storage ?? window.localStorage,
|
|
beforeHydrate: p.beforeHydrate,
|
|
afterHydrate: p.afterHydrate,
|
|
pick: p.pick,
|
|
omit: p.omit
|
|
}),
|
|
options.auto ?? false
|
|
);
|
|
};
|
|
}
|
|
var src_default = createPersistedState();
|
|
export {
|
|
createPersistedState,
|
|
src_default as default
|
|
};
|
|
//# sourceMappingURL=pinia-plugin-persistedstate.js.map
|