@studiometa/js-toolkit 3.5.0 → 3.6.0-beta.1
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/Base/Base.d.ts +2 -2
- package/Base/Base.js.map +2 -2
- package/Base/managers/AbstractManager.d.ts +2 -2
- package/Base/types.d.ts +3 -3
- package/Base/utils.d.ts +1 -1
- package/Base/utils.js +1 -2
- package/Base/utils.js.map +2 -2
- package/README.md +10 -0
- package/decorators/withBreakpointManager.d.ts +1 -1
- package/decorators/withBreakpointManager.js.map +1 -1
- package/decorators/withBreakpointObserver.d.ts +1 -1
- package/decorators/withBreakpointObserver.js.map +1 -1
- package/decorators/withDrag.d.ts +1 -1
- package/decorators/withDrag.js.map +1 -1
- package/decorators/withExtraConfig.d.ts +1 -1
- package/decorators/withExtraConfig.js.map +1 -1
- package/decorators/withFreezedOptions.d.ts +1 -1
- package/decorators/withFreezedOptions.js.map +1 -1
- package/decorators/withGroup.js.map +2 -2
- package/decorators/withIntersectionObserver.d.ts +1 -1
- package/decorators/withIntersectionObserver.js.map +1 -1
- package/decorators/withMountOnMediaQuery.d.ts +1 -1
- package/decorators/withMountOnMediaQuery.js.map +1 -1
- package/decorators/withMountWhenInView.d.ts +1 -1
- package/decorators/withMountWhenInView.js.map +1 -1
- package/decorators/withMutation.d.ts +1 -1
- package/decorators/withMutation.js.map +1 -1
- package/decorators/withRelativePointer.d.ts +1 -1
- package/decorators/withRelativePointer.js.map +1 -1
- package/decorators/withResponsiveOptions.d.ts +1 -1
- package/decorators/withResponsiveOptions.js.map +1 -1
- package/decorators/withScrolledInView/withScrolledInView.d.ts +1 -1
- package/decorators/withScrolledInView/withScrolledInView.js.map +1 -1
- package/helpers/createApp.d.ts +1 -1
- package/helpers/createApp.js +6 -4
- package/helpers/createApp.js.map +2 -2
- package/helpers/getClosestParent.d.ts +1 -1
- package/helpers/getClosestParent.js.map +1 -1
- package/helpers/getDirectChildren.d.ts +2 -2
- package/helpers/getDirectChildren.js.map +1 -1
- package/helpers/getInstanceFromElement.d.ts +1 -1
- package/helpers/getInstanceFromElement.js.map +1 -1
- package/helpers/importOnInteraction.d.ts +1 -1
- package/helpers/importOnInteraction.js.map +1 -1
- package/helpers/importOnMediaQuery.d.ts +1 -1
- package/helpers/importOnMediaQuery.js.map +1 -1
- package/helpers/importWhenIdle.d.ts +1 -1
- package/helpers/importWhenIdle.js.map +1 -1
- package/helpers/importWhenPrefersMotion.d.ts +1 -1
- package/helpers/importWhenPrefersMotion.js.map +1 -1
- package/helpers/importWhenVisible.d.ts +1 -1
- package/helpers/importWhenVisible.js.map +1 -1
- package/helpers/index.d.ts +1 -0
- package/helpers/index.js +1 -0
- package/helpers/index.js.map +2 -2
- package/helpers/logTree.d.ts +17 -0
- package/helpers/logTree.js +59 -0
- package/helpers/logTree.js.map +7 -0
- package/helpers/queryComponent.js +9 -10
- package/helpers/queryComponent.js.map +2 -2
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/services/AbstractService.d.ts +1 -1
- package/services/AbstractService.js +1 -1
- package/services/AbstractService.js.map +2 -2
- package/services/DragService.d.ts +6 -6
- package/services/DragService.js.map +1 -1
- package/services/KeyService.d.ts +1 -1
- package/services/KeyService.js.map +1 -1
- package/services/LoadService.d.ts +1 -1
- package/services/LoadService.js.map +1 -1
- package/services/MutationService.d.ts +1 -1
- package/services/MutationService.js.map +1 -1
- package/services/PointerService.d.ts +1 -1
- package/services/PointerService.js.map +1 -1
- package/services/RafService.d.ts +2 -2
- package/services/RafService.js +13 -7
- package/services/RafService.js.map +2 -2
- package/services/ResizeService.d.ts +1 -1
- package/services/ResizeService.js.map +1 -1
- package/services/ScrollService.d.ts +22 -4
- package/services/ScrollService.js +55 -7
- package/services/ScrollService.js.map +2 -2
- package/utils/cache.d.ts +1 -1
- package/utils/cache.js.map +1 -1
- package/utils/collide/boundingRectToCircle.d.ts +3 -3
- package/utils/collide/boundingRectToCircle.js.map +1 -1
- package/utils/collide/collideCircleCircle.d.ts +1 -1
- package/utils/collide/collideCircleCircle.js.map +1 -1
- package/utils/collide/collideCircleRect.d.ts +1 -1
- package/utils/collide/collideCircleRect.js.map +1 -1
- package/utils/collide/collidePointCircle.d.ts +1 -1
- package/utils/collide/collidePointCircle.js.map +1 -1
- package/utils/collide/collidePointRect.d.ts +1 -1
- package/utils/collide/collidePointRect.js.map +1 -1
- package/utils/collide/collideRectRect.d.ts +1 -1
- package/utils/collide/collideRectRect.js.map +1 -1
- package/utils/css/animate.d.ts +1 -1
- package/utils/css/animate.js +162 -96
- package/utils/css/animate.js.map +2 -2
- package/utils/css/classes.d.ts +3 -3
- package/utils/css/classes.js.map +1 -1
- package/utils/css/getOffsetSizes.d.ts +1 -1
- package/utils/css/getOffsetSizes.js.map +1 -1
- package/utils/css/matrix.d.ts +1 -1
- package/utils/css/matrix.js.map +1 -1
- package/utils/css/styles.d.ts +2 -2
- package/utils/css/styles.js.map +1 -1
- package/utils/css/transform.d.ts +1 -1
- package/utils/css/transform.js +12 -13
- package/utils/css/transform.js.map +2 -2
- package/utils/css/transition.d.ts +1 -1
- package/utils/css/transition.js.map +1 -1
- package/utils/debounce.d.ts +1 -1
- package/utils/debounce.js.map +1 -1
- package/utils/history.d.ts +3 -3
- package/utils/history.js.map +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/index.js.map +2 -2
- package/utils/is.d.ts +10 -10
- package/utils/is.js.map +1 -1
- package/utils/loadElement.d.ts +5 -5
- package/utils/loadElement.js.map +1 -1
- package/utils/math/clamp.d.ts +1 -1
- package/utils/math/clamp.js.map +1 -1
- package/utils/math/clamp01.d.ts +1 -1
- package/utils/math/clamp01.js.map +1 -1
- package/utils/math/createEases.d.ts +2 -2
- package/utils/math/createEases.js.map +1 -1
- package/utils/math/createRange.d.ts +1 -1
- package/utils/math/createRange.js.map +1 -1
- package/utils/math/damp.d.ts +1 -1
- package/utils/math/damp.js.map +2 -2
- package/utils/math/inertiaFinalValue.d.ts +1 -1
- package/utils/math/inertiaFinalValue.js.map +1 -1
- package/utils/math/lerp.d.ts +1 -1
- package/utils/math/lerp.js.map +1 -1
- package/utils/math/map.d.ts +1 -1
- package/utils/math/map.js.map +1 -1
- package/utils/math/round.d.ts +1 -1
- package/utils/math/round.js.map +1 -1
- package/utils/math/smoothTo.d.ts +24 -6
- package/utils/math/wrap.d.ts +1 -1
- package/utils/math/wrap.js.map +1 -1
- package/utils/memo.d.ts +1 -1
- package/utils/memo.js.map +1 -1
- package/utils/memoize.d.ts +2 -2
- package/utils/memoize.js.map +1 -1
- package/utils/nextFrame.d.ts +1 -1
- package/utils/nextFrame.js.map +1 -1
- package/utils/nextMicrotask.d.ts +1 -1
- package/utils/nextMicrotask.js.map +1 -1
- package/utils/nextTick.d.ts +1 -1
- package/utils/nextTick.js.map +1 -1
- package/utils/object/getAllProperties.js +4 -2
- package/utils/object/getAllProperties.js.map +2 -2
- package/utils/random.d.ts +3 -3
- package/utils/random.js.map +1 -1
- package/utils/scheduler.d.ts +3 -3
- package/utils/scheduler.js.map +1 -1
- package/utils/scrollTo.d.ts +1 -1
- package/utils/scrollTo.js.map +1 -1
- package/utils/storage/createLocalStorageProvider.d.ts +2 -0
- package/utils/storage/createLocalStorageProvider.js +32 -0
- package/utils/storage/createLocalStorageProvider.js.map +7 -0
- package/utils/storage/createMemoryStorageProvider.d.ts +2 -0
- package/utils/storage/createMemoryStorageProvider.js +27 -0
- package/utils/storage/createMemoryStorageProvider.js.map +7 -0
- package/utils/storage/createNoopProvider.d.ts +2 -0
- package/utils/storage/createNoopProvider.js +23 -0
- package/utils/storage/createNoopProvider.js.map +7 -0
- package/utils/storage/createSessionStorageProvider.d.ts +2 -0
- package/utils/storage/createSessionStorageProvider.js +31 -0
- package/utils/storage/createSessionStorageProvider.js.map +7 -0
- package/utils/storage/createStorage.d.ts +2 -0
- package/utils/storage/createStorage.js +96 -0
- package/utils/storage/createStorage.js.map +7 -0
- package/utils/storage/createUrlSearchParamsInHashProvider.d.ts +2 -0
- package/utils/storage/createUrlSearchParamsInHashProvider.js +57 -0
- package/utils/storage/createUrlSearchParamsInHashProvider.js.map +7 -0
- package/utils/storage/createUrlSearchParamsProvider.d.ts +2 -0
- package/utils/storage/createUrlSearchParamsProvider.js +41 -0
- package/utils/storage/createUrlSearchParamsProvider.js.map +7 -0
- package/utils/storage/getBrowserContext.d.ts +1 -0
- package/utils/storage/getBrowserContext.js +17 -0
- package/utils/storage/getBrowserContext.js.map +7 -0
- package/utils/storage/getGlobalStorage.d.ts +1 -0
- package/utils/storage/getGlobalStorage.js +7 -0
- package/utils/storage/getGlobalStorage.js.map +7 -0
- package/utils/storage/getStorageKeys.d.ts +1 -0
- package/utils/storage/getStorageKeys.js +12 -0
- package/utils/storage/getStorageKeys.js.map +7 -0
- package/utils/storage/index.d.ts +8 -0
- package/utils/storage/index.js +62 -0
- package/utils/storage/index.js.map +7 -0
- package/utils/storage/providers.d.ts +11 -0
- package/utils/storage/providers.js +30 -0
- package/utils/storage/providers.js.map +7 -0
- package/utils/storage/serializers.d.ts +2 -0
- package/utils/storage/serializers.js +14 -0
- package/utils/storage/serializers.js.map +7 -0
- package/utils/storage/types.d.ts +33 -0
- package/utils/storage/types.js +1 -0
- package/utils/storage/types.js.map +7 -0
- package/utils/storage.d.ts +1 -0
- package/utils/storage.js +2 -0
- package/utils/storage.js.map +7 -0
- package/utils/string/changeCase.d.ts +6 -6
- package/utils/string/changeCase.js +1 -1
- package/utils/string/changeCase.js.map +2 -2
- package/utils/string/withLeadingCharacters.d.ts +1 -1
- package/utils/string/withLeadingCharacters.js.map +1 -1
- package/utils/string/withLeadingSlash.d.ts +1 -1
- package/utils/string/withLeadingSlash.js.map +1 -1
- package/utils/string/withTrailingCharacters.d.ts +1 -1
- package/utils/string/withTrailingCharacters.js.map +1 -1
- package/utils/string/withTrailingSlash.d.ts +1 -1
- package/utils/string/withTrailingSlash.js.map +1 -1
- package/utils/string/withoutLeadingCharacters.d.ts +1 -1
- package/utils/string/withoutLeadingCharacters.js.map +1 -1
- package/utils/string/withoutLeadingCharactersRecursive.d.ts +1 -1
- package/utils/string/withoutLeadingCharactersRecursive.js.map +1 -1
- package/utils/string/withoutLeadingSlash.d.ts +1 -1
- package/utils/string/withoutLeadingSlash.js.map +1 -1
- package/utils/string/withoutTrailingCharacters.d.ts +1 -1
- package/utils/string/withoutTrailingCharacters.js.map +1 -1
- package/utils/string/withoutTrailingCharactersRecursive.d.ts +1 -1
- package/utils/string/withoutTrailingCharactersRecursive.js.map +1 -1
- package/utils/string/withoutTrailingSlash.d.ts +1 -1
- package/utils/string/withoutTrailingSlash.js.map +1 -1
- package/utils/throttle.d.ts +1 -1
- package/utils/throttle.js.map +1 -1
- package/utils/trapFocus.d.ts +2 -2
- package/utils/trapFocus.js.map +1 -1
- package/utils/tween.js +5 -5
- package/utils/tween.js.map +2 -2
- package/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { hasWindow } from "../has.js";
|
|
2
|
+
import { localStorageProvider } from "./providers.js";
|
|
3
|
+
import { jsonSerializer } from "./serializers.js";
|
|
4
|
+
function createStorage(options = {}) {
|
|
5
|
+
const { provider = localStorageProvider, serializer = jsonSerializer, prefix = "" } = options;
|
|
6
|
+
const listeners = /* @__PURE__ */ new Map();
|
|
7
|
+
function resolveKey(key) {
|
|
8
|
+
return `${prefix}${key}`;
|
|
9
|
+
}
|
|
10
|
+
function syncHandler(event) {
|
|
11
|
+
if (event instanceof StorageEvent) {
|
|
12
|
+
if (provider.storageArea && event.storageArea !== provider.storageArea) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const rawKey = event.key;
|
|
16
|
+
for (const [listenerKey, callbacks] of listeners) {
|
|
17
|
+
if (resolveKey(listenerKey) === rawKey) {
|
|
18
|
+
const newValue = event.newValue ? serializer.deserialize(event.newValue) : void 0;
|
|
19
|
+
callbacks.forEach((callback) => callback(newValue));
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
listeners.forEach((callbacks, key) => {
|
|
26
|
+
const value = provider.get(resolveKey(key));
|
|
27
|
+
const newValue = value !== null ? serializer.deserialize(value) : void 0;
|
|
28
|
+
callbacks.forEach((callback) => callback(newValue));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
if (hasWindow() && provider.syncEvent) {
|
|
32
|
+
window.addEventListener(provider.syncEvent, syncHandler);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
get(key, defaultValue) {
|
|
36
|
+
const storedValue = provider.get(resolveKey(key));
|
|
37
|
+
if (storedValue !== null) {
|
|
38
|
+
const deserialized = serializer.deserialize(storedValue);
|
|
39
|
+
if (deserialized !== void 0) {
|
|
40
|
+
return deserialized;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return defaultValue;
|
|
44
|
+
},
|
|
45
|
+
set(key, value) {
|
|
46
|
+
provider.set(resolveKey(key), serializer.serialize(value));
|
|
47
|
+
listeners.get(key)?.forEach((callback) => callback(value));
|
|
48
|
+
},
|
|
49
|
+
delete(key) {
|
|
50
|
+
provider.remove(resolveKey(key));
|
|
51
|
+
listeners.get(key)?.forEach((callback) => callback(void 0));
|
|
52
|
+
},
|
|
53
|
+
has(key) {
|
|
54
|
+
return provider.has(resolveKey(key));
|
|
55
|
+
},
|
|
56
|
+
keys() {
|
|
57
|
+
const allKeys = provider.keys();
|
|
58
|
+
if (!prefix) {
|
|
59
|
+
return allKeys;
|
|
60
|
+
}
|
|
61
|
+
return allKeys.filter((key) => key.startsWith(prefix)).map((key) => key.slice(prefix.length));
|
|
62
|
+
},
|
|
63
|
+
clear() {
|
|
64
|
+
if (prefix) {
|
|
65
|
+
provider.keys().filter((key) => key.startsWith(prefix)).forEach((key) => provider.remove(key));
|
|
66
|
+
} else {
|
|
67
|
+
provider.clear();
|
|
68
|
+
}
|
|
69
|
+
listeners.forEach((callbacks) => {
|
|
70
|
+
callbacks.forEach((callback) => callback(void 0));
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
subscribe(key, callback) {
|
|
74
|
+
if (!listeners.has(key)) {
|
|
75
|
+
listeners.set(key, /* @__PURE__ */ new Set());
|
|
76
|
+
}
|
|
77
|
+
listeners.get(key)?.add(callback);
|
|
78
|
+
return () => {
|
|
79
|
+
listeners.get(key)?.delete(callback);
|
|
80
|
+
if (listeners.get(key)?.size === 0) {
|
|
81
|
+
listeners.delete(key);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
destroy() {
|
|
86
|
+
listeners.clear();
|
|
87
|
+
if (hasWindow() && provider.syncEvent) {
|
|
88
|
+
window.removeEventListener(provider.syncEvent, syncHandler);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export {
|
|
94
|
+
createStorage
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=createStorage.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/createStorage.ts"],
|
|
4
|
+
"sourcesContent": ["import { hasWindow } from '../has.js';\nimport { localStorageProvider } from './providers.js';\nimport { jsonSerializer } from './serializers.js';\nimport type { StorageInstance, StorageOptions } from './types.js';\n\nexport function createStorage<T extends Record<string, any> = Record<string, any>>(\n options: StorageOptions = {},\n): StorageInstance<T> {\n const { provider = localStorageProvider, serializer = jsonSerializer, prefix = '' } = options;\n\n const listeners = new Map<keyof T, Set<(value: any) => void>>();\n\n function resolveKey(key: string): string {\n return `${prefix}${key}`;\n }\n\n function syncHandler(event: Event): void {\n if (event instanceof StorageEvent) {\n if (provider.storageArea && event.storageArea !== provider.storageArea) {\n return;\n }\n\n const rawKey = event.key;\n for (const [listenerKey, callbacks] of listeners) {\n if (resolveKey(listenerKey as string) === rawKey) {\n const newValue = event.newValue ? serializer.deserialize(event.newValue) : undefined;\n callbacks.forEach((callback) => callback(newValue));\n break;\n }\n }\n return;\n }\n\n listeners.forEach((callbacks, key) => {\n const value = provider.get(resolveKey(key as string));\n const newValue = value !== null ? serializer.deserialize(value) : undefined;\n callbacks.forEach((callback) => callback(newValue));\n });\n }\n\n if (hasWindow() && provider.syncEvent) {\n window.addEventListener(provider.syncEvent, syncHandler);\n }\n\n return {\n get(key, defaultValue?) {\n const storedValue = provider.get(resolveKey(key as string));\n if (storedValue !== null) {\n const deserialized = serializer.deserialize(storedValue);\n if (deserialized !== undefined) {\n return deserialized;\n }\n }\n return defaultValue;\n },\n set(key, value) {\n provider.set(resolveKey(key as string), serializer.serialize(value));\n listeners.get(key)?.forEach((callback) => callback(value));\n },\n delete(key) {\n provider.remove(resolveKey(key as string));\n listeners.get(key)?.forEach((callback) => callback(undefined));\n },\n has(key) {\n return provider.has(resolveKey(key as string));\n },\n keys() {\n const allKeys = provider.keys();\n if (!prefix) {\n return allKeys as (keyof T)[];\n }\n\n return allKeys\n .filter((key) => key.startsWith(prefix))\n .map((key) => key.slice(prefix.length) as keyof T);\n },\n clear() {\n if (prefix) {\n provider\n .keys()\n .filter((key) => key.startsWith(prefix))\n .forEach((key) => provider.remove(key));\n } else {\n provider.clear();\n }\n\n listeners.forEach((callbacks) => {\n callbacks.forEach((callback) => callback(undefined));\n });\n },\n subscribe(key, callback) {\n if (!listeners.has(key)) {\n listeners.set(key, new Set());\n }\n\n listeners.get(key)?.add(callback);\n\n return () => {\n listeners.get(key)?.delete(callback);\n if (listeners.get(key)?.size === 0) {\n listeners.delete(key);\n }\n };\n },\n destroy() {\n listeners.clear();\n if (hasWindow() && provider.syncEvent) {\n window.removeEventListener(provider.syncEvent, syncHandler);\n }\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createNoopProvider } from "./createNoopProvider.js";
|
|
2
|
+
import { getBrowserContext } from "./getBrowserContext.js";
|
|
3
|
+
function createUrlSearchParamsInHashProvider(options = {}) {
|
|
4
|
+
const browserContext = getBrowserContext();
|
|
5
|
+
if (!browserContext) {
|
|
6
|
+
return createNoopProvider();
|
|
7
|
+
}
|
|
8
|
+
const { push = false } = options;
|
|
9
|
+
const { location, history } = browserContext;
|
|
10
|
+
function getParamsFromHash() {
|
|
11
|
+
return new URLSearchParams(location.hash.slice(1));
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
syncEvent: "hashchange",
|
|
15
|
+
get(key) {
|
|
16
|
+
return getParamsFromHash().get(key);
|
|
17
|
+
},
|
|
18
|
+
set(key, value) {
|
|
19
|
+
const params = getParamsFromHash();
|
|
20
|
+
params.set(key, value);
|
|
21
|
+
const newHash = params.toString();
|
|
22
|
+
if (push) {
|
|
23
|
+
location.hash = newHash;
|
|
24
|
+
} else {
|
|
25
|
+
history.replaceState({}, "", `${location.pathname}${location.search}#${newHash}`);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
remove(key) {
|
|
29
|
+
const params = getParamsFromHash();
|
|
30
|
+
params.delete(key);
|
|
31
|
+
const newHash = params.toString();
|
|
32
|
+
if (push) {
|
|
33
|
+
location.hash = newHash;
|
|
34
|
+
} else {
|
|
35
|
+
const url = newHash ? `${location.pathname}${location.search}#${newHash}` : `${location.pathname}${location.search}`;
|
|
36
|
+
history.replaceState({}, "", url);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
has(key) {
|
|
40
|
+
return getParamsFromHash().has(key);
|
|
41
|
+
},
|
|
42
|
+
keys() {
|
|
43
|
+
return [...getParamsFromHash().keys()];
|
|
44
|
+
},
|
|
45
|
+
clear() {
|
|
46
|
+
if (push) {
|
|
47
|
+
location.hash = "";
|
|
48
|
+
} else {
|
|
49
|
+
history.replaceState({}, "", `${location.pathname}${location.search}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
createUrlSearchParamsInHashProvider
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=createUrlSearchParamsInHashProvider.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/createUrlSearchParamsInHashProvider.ts"],
|
|
4
|
+
"sourcesContent": ["import { createNoopProvider } from './createNoopProvider.js';\nimport { getBrowserContext } from './getBrowserContext.js';\nimport type { StorageProvider, UrlProviderOptions } from './types.js';\n\nexport function createUrlSearchParamsInHashProvider(\n options: UrlProviderOptions = {},\n): StorageProvider {\n const browserContext = getBrowserContext();\n\n if (!browserContext) {\n return createNoopProvider();\n }\n\n const { push = false } = options;\n const { location, history } = browserContext;\n\n function getParamsFromHash(): URLSearchParams {\n return new URLSearchParams(location.hash.slice(1));\n }\n\n return {\n syncEvent: 'hashchange',\n get(key) {\n return getParamsFromHash().get(key);\n },\n set(key, value) {\n const params = getParamsFromHash();\n params.set(key, value);\n const newHash = params.toString();\n\n if (push) {\n location.hash = newHash;\n } else {\n history.replaceState({}, '', `${location.pathname}${location.search}#${newHash}`);\n }\n },\n remove(key) {\n const params = getParamsFromHash();\n params.delete(key);\n const newHash = params.toString();\n\n if (push) {\n location.hash = newHash;\n } else {\n const url = newHash\n ? `${location.pathname}${location.search}#${newHash}`\n : `${location.pathname}${location.search}`;\n history.replaceState({}, '', url);\n }\n },\n has(key) {\n return getParamsFromHash().has(key);\n },\n keys() {\n return [...getParamsFromHash().keys()];\n },\n clear() {\n if (push) {\n location.hash = '';\n } else {\n history.replaceState({}, '', `${location.pathname}${location.search}`);\n }\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAG3B,SAAS,oCACd,UAA8B,CAAC,GACd;AACjB,QAAM,iBAAiB,kBAAkB;AAEzC,MAAI,CAAC,gBAAgB;AACnB,WAAO,mBAAmB;AAAA,EAC5B;AAEA,QAAM,EAAE,OAAO,MAAM,IAAI;AACzB,QAAM,EAAE,UAAU,QAAQ,IAAI;AAE9B,WAAS,oBAAqC;AAC5C,WAAO,IAAI,gBAAgB,SAAS,KAAK,MAAM,CAAC,CAAC;AAAA,EACnD;AAEA,SAAO;AAAA,IACL,WAAW;AAAA,IACX,IAAI,KAAK;AACP,aAAO,kBAAkB,EAAE,IAAI,GAAG;AAAA,IACpC;AAAA,IACA,IAAI,KAAK,OAAO;AACd,YAAM,SAAS,kBAAkB;AACjC,aAAO,IAAI,KAAK,KAAK;AACrB,YAAM,UAAU,OAAO,SAAS;AAEhC,UAAI,MAAM;AACR,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,gBAAQ,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,GAAG,SAAS,MAAM,IAAI,OAAO,EAAE;AAAA,MAClF;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AACV,YAAM,SAAS,kBAAkB;AACjC,aAAO,OAAO,GAAG;AACjB,YAAM,UAAU,OAAO,SAAS;AAEhC,UAAI,MAAM;AACR,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,cAAM,MAAM,UACR,GAAG,SAAS,QAAQ,GAAG,SAAS,MAAM,IAAI,OAAO,KACjD,GAAG,SAAS,QAAQ,GAAG,SAAS,MAAM;AAC1C,gBAAQ,aAAa,CAAC,GAAG,IAAI,GAAG;AAAA,MAClC;AAAA,IACF;AAAA,IACA,IAAI,KAAK;AACP,aAAO,kBAAkB,EAAE,IAAI,GAAG;AAAA,IACpC;AAAA,IACA,OAAO;AACL,aAAO,CAAC,GAAG,kBAAkB,EAAE,KAAK,CAAC;AAAA,IACvC;AAAA,IACA,QAAQ;AACN,UAAI,MAAM;AACR,iBAAS,OAAO;AAAA,MAClB,OAAO;AACL,gBAAQ,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,GAAG,SAAS,MAAM,EAAE;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createNoopProvider } from "./createNoopProvider.js";
|
|
2
|
+
import { getBrowserContext } from "./getBrowserContext.js";
|
|
3
|
+
function createUrlSearchParamsProvider(options = {}) {
|
|
4
|
+
const browserContext = getBrowserContext();
|
|
5
|
+
if (!browserContext) {
|
|
6
|
+
return createNoopProvider();
|
|
7
|
+
}
|
|
8
|
+
const { push = false } = options;
|
|
9
|
+
const method = push ? "pushState" : "replaceState";
|
|
10
|
+
const { location, history } = browserContext;
|
|
11
|
+
return {
|
|
12
|
+
syncEvent: "popstate",
|
|
13
|
+
get(key) {
|
|
14
|
+
return new URLSearchParams(location.search).get(key);
|
|
15
|
+
},
|
|
16
|
+
set(key, value) {
|
|
17
|
+
const params = new URLSearchParams(location.search);
|
|
18
|
+
params.set(key, value);
|
|
19
|
+
history[method]({}, "", `${location.pathname}?${params.toString()}${location.hash}`);
|
|
20
|
+
},
|
|
21
|
+
remove(key) {
|
|
22
|
+
const params = new URLSearchParams(location.search);
|
|
23
|
+
params.delete(key);
|
|
24
|
+
const search = params.toString();
|
|
25
|
+
history[method]({}, "", `${location.pathname}${search ? `?${search}` : ""}${location.hash}`);
|
|
26
|
+
},
|
|
27
|
+
has(key) {
|
|
28
|
+
return new URLSearchParams(location.search).has(key);
|
|
29
|
+
},
|
|
30
|
+
keys() {
|
|
31
|
+
return [...new URLSearchParams(location.search).keys()];
|
|
32
|
+
},
|
|
33
|
+
clear() {
|
|
34
|
+
history[method]({}, "", `${location.pathname}${location.hash}`);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
createUrlSearchParamsProvider
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=createUrlSearchParamsProvider.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/createUrlSearchParamsProvider.ts"],
|
|
4
|
+
"sourcesContent": ["import { createNoopProvider } from './createNoopProvider.js';\nimport { getBrowserContext } from './getBrowserContext.js';\nimport type { StorageProvider, UrlProviderOptions } from './types.js';\n\nexport function createUrlSearchParamsProvider(options: UrlProviderOptions = {}): StorageProvider {\n const browserContext = getBrowserContext();\n\n if (!browserContext) {\n return createNoopProvider();\n }\n\n const { push = false } = options;\n const method = push ? 'pushState' : 'replaceState';\n const { location, history } = browserContext;\n\n return {\n syncEvent: 'popstate',\n get(key) {\n return new URLSearchParams(location.search).get(key);\n },\n set(key, value) {\n const params = new URLSearchParams(location.search);\n params.set(key, value);\n history[method]({}, '', `${location.pathname}?${params.toString()}${location.hash}`);\n },\n remove(key) {\n const params = new URLSearchParams(location.search);\n params.delete(key);\n const search = params.toString();\n history[method]({}, '', `${location.pathname}${search ? `?${search}` : ''}${location.hash}`);\n },\n has(key) {\n return new URLSearchParams(location.search).has(key);\n },\n keys() {\n return [...new URLSearchParams(location.search).keys()];\n },\n clear() {\n history[method]({}, '', `${location.pathname}${location.hash}`);\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAG3B,SAAS,8BAA8B,UAA8B,CAAC,GAAoB;AAC/F,QAAM,iBAAiB,kBAAkB;AAEzC,MAAI,CAAC,gBAAgB;AACnB,WAAO,mBAAmB;AAAA,EAC5B;AAEA,QAAM,EAAE,OAAO,MAAM,IAAI;AACzB,QAAM,SAAS,OAAO,cAAc;AACpC,QAAM,EAAE,UAAU,QAAQ,IAAI;AAE9B,SAAO;AAAA,IACL,WAAW;AAAA,IACX,IAAI,KAAK;AACP,aAAO,IAAI,gBAAgB,SAAS,MAAM,EAAE,IAAI,GAAG;AAAA,IACrD;AAAA,IACA,IAAI,KAAK,OAAO;AACd,YAAM,SAAS,IAAI,gBAAgB,SAAS,MAAM;AAClD,aAAO,IAAI,KAAK,KAAK;AACrB,cAAQ,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,IAAI,OAAO,SAAS,CAAC,GAAG,SAAS,IAAI,EAAE;AAAA,IACrF;AAAA,IACA,OAAO,KAAK;AACV,YAAM,SAAS,IAAI,gBAAgB,SAAS,MAAM;AAClD,aAAO,OAAO,GAAG;AACjB,YAAM,SAAS,OAAO,SAAS;AAC/B,cAAQ,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,GAAG,SAAS,IAAI,MAAM,KAAK,EAAE,GAAG,SAAS,IAAI,EAAE;AAAA,IAC7F;AAAA,IACA,IAAI,KAAK;AACP,aAAO,IAAI,gBAAgB,SAAS,MAAM,EAAE,IAAI,GAAG;AAAA,IACrD;AAAA,IACA,OAAO;AACL,aAAO,CAAC,GAAG,IAAI,gBAAgB,SAAS,MAAM,EAAE,KAAK,CAAC;AAAA,IACxD;AAAA,IACA,QAAQ;AACN,cAAQ,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,QAAQ,GAAG,SAAS,IAAI,EAAE;AAAA,IAChE;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getBrowserContext(): Pick<Window, 'location' | 'history'> | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
function getBrowserContext() {
|
|
2
|
+
if (typeof globalThis === "undefined" || !("window" in globalThis)) {
|
|
3
|
+
return void 0;
|
|
4
|
+
}
|
|
5
|
+
const { window } = globalThis;
|
|
6
|
+
if (!window || !window.location || !window.history) {
|
|
7
|
+
return void 0;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
location: window.location,
|
|
11
|
+
history: window.history
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
getBrowserContext
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=getBrowserContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/getBrowserContext.ts"],
|
|
4
|
+
"sourcesContent": ["export function getBrowserContext(): Pick<Window, 'location' | 'history'> | undefined {\n if (typeof globalThis === 'undefined' || !('window' in globalThis)) {\n return undefined;\n }\n\n const { window } = globalThis;\n\n if (!window || !window.location || !window.history) {\n return undefined;\n }\n\n return {\n location: window.location,\n history: window.history,\n };\n}\n"],
|
|
5
|
+
"mappings": "AAAO,SAAS,oBAAsE;AACpF,MAAI,OAAO,eAAe,eAAe,EAAE,YAAY,aAAa;AAClE,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAI,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,OAAO,SAAS;AAClD,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,UAAU,OAAO;AAAA,IACjB,SAAS,OAAO;AAAA,EAClB;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getGlobalStorage(name: 'localStorage' | 'sessionStorage'): Storage | undefined;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/getGlobalStorage.ts"],
|
|
4
|
+
"sourcesContent": ["export function getGlobalStorage(name: 'localStorage' | 'sessionStorage'): Storage | undefined {\n return typeof globalThis !== 'undefined' && name in globalThis ? globalThis[name] : undefined;\n}\n"],
|
|
5
|
+
"mappings": "AAAO,SAAS,iBAAiB,MAA8D;AAC7F,SAAO,OAAO,eAAe,eAAe,QAAQ,aAAa,WAAW,IAAI,IAAI;AACtF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getStorageKeys(storage: Storage | undefined): string[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function getStorageKeys(storage) {
|
|
2
|
+
if (!storage) {
|
|
3
|
+
return [];
|
|
4
|
+
}
|
|
5
|
+
return Array.from({ length: storage.length }, (_, index) => storage.key(index)).filter(
|
|
6
|
+
(key) => key !== null
|
|
7
|
+
);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
getStorageKeys
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=getStorageKeys.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/getStorageKeys.ts"],
|
|
4
|
+
"sourcesContent": ["export function getStorageKeys(storage: Storage | undefined): string[] {\n if (!storage) {\n return [];\n }\n\n return Array.from({ length: storage.length }, (_, index) => storage.key(index)).filter(\n (key): key is string => key !== null,\n );\n}\n"],
|
|
5
|
+
"mappings": "AAAO,SAAS,eAAe,SAAwC;AACrE,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,MAAM,KAAK,EAAE,QAAQ,QAAQ,OAAO,GAAG,CAAC,GAAG,UAAU,QAAQ,IAAI,KAAK,CAAC,EAAE;AAAA,IAC9E,CAAC,QAAuB,QAAQ;AAAA,EAClC;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { StorageInstance, StorageOptions, StorageProvider, StorageSerializer, UrlProviderOptions, } from './types.js';
|
|
2
|
+
export { createLocalStorageProvider, createMemoryStorageProvider, createNoopProvider, createSessionStorageProvider, createUrlSearchParamsInHashProvider, createUrlSearchParamsProvider, localStorageProvider, memoryStorageProvider, sessionStorageProvider, urlSearchParamsInHashProvider, urlSearchParamsProvider, } from './providers.js';
|
|
3
|
+
export { createStorage } from './createStorage.js';
|
|
4
|
+
import type { StorageInstance, StorageOptions, UrlProviderOptions } from './types.js';
|
|
5
|
+
export declare function createLocalStorage<T extends Record<string, any> = Record<string, any>>(options?: Omit<StorageOptions, 'provider'>): StorageInstance<T>;
|
|
6
|
+
export declare function createSessionStorage<T extends Record<string, any> = Record<string, any>>(options?: Omit<StorageOptions, 'provider'>): StorageInstance<T>;
|
|
7
|
+
export declare function createUrlSearchParamsStorage<T extends Record<string, any> = Record<string, any>>(options?: Omit<StorageOptions, 'provider'> & UrlProviderOptions): StorageInstance<T>;
|
|
8
|
+
export declare function createUrlSearchParamsInHashStorage<T extends Record<string, any> = Record<string, any>>(options?: Omit<StorageOptions, 'provider'> & UrlProviderOptions): StorageInstance<T>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createLocalStorageProvider,
|
|
3
|
+
createMemoryStorageProvider,
|
|
4
|
+
createNoopProvider,
|
|
5
|
+
createSessionStorageProvider,
|
|
6
|
+
createUrlSearchParamsInHashProvider,
|
|
7
|
+
createUrlSearchParamsProvider,
|
|
8
|
+
localStorageProvider,
|
|
9
|
+
memoryStorageProvider,
|
|
10
|
+
sessionStorageProvider,
|
|
11
|
+
urlSearchParamsInHashProvider,
|
|
12
|
+
urlSearchParamsProvider
|
|
13
|
+
} from "./providers.js";
|
|
14
|
+
import { createStorage } from "./createStorage.js";
|
|
15
|
+
import { createStorage as createStorage2 } from "./createStorage.js";
|
|
16
|
+
import {
|
|
17
|
+
createUrlSearchParamsInHashProvider as createUrlSearchParamsInHashProvider2,
|
|
18
|
+
createUrlSearchParamsProvider as createUrlSearchParamsProvider2,
|
|
19
|
+
localStorageProvider as localStorageProvider2,
|
|
20
|
+
sessionStorageProvider as sessionStorageProvider2,
|
|
21
|
+
urlSearchParamsInHashProvider as urlSearchParamsInHashProvider2,
|
|
22
|
+
urlSearchParamsProvider as urlSearchParamsProvider2
|
|
23
|
+
} from "./providers.js";
|
|
24
|
+
function createLocalStorage(options) {
|
|
25
|
+
return createStorage2({ ...options, provider: localStorageProvider2 });
|
|
26
|
+
}
|
|
27
|
+
function createSessionStorage(options) {
|
|
28
|
+
return createStorage2({ ...options, provider: sessionStorageProvider2 });
|
|
29
|
+
}
|
|
30
|
+
function createUrlSearchParamsStorage(options) {
|
|
31
|
+
const { push, ...storageOptions } = options ?? {};
|
|
32
|
+
return createStorage2({
|
|
33
|
+
...storageOptions,
|
|
34
|
+
provider: push ? createUrlSearchParamsProvider2({ push }) : urlSearchParamsProvider2
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function createUrlSearchParamsInHashStorage(options) {
|
|
38
|
+
const { push, ...storageOptions } = options ?? {};
|
|
39
|
+
return createStorage2({
|
|
40
|
+
...storageOptions,
|
|
41
|
+
provider: push ? createUrlSearchParamsInHashProvider2({ push }) : urlSearchParamsInHashProvider2
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
createLocalStorage,
|
|
46
|
+
createLocalStorageProvider,
|
|
47
|
+
createMemoryStorageProvider,
|
|
48
|
+
createNoopProvider,
|
|
49
|
+
createSessionStorage,
|
|
50
|
+
createSessionStorageProvider,
|
|
51
|
+
createStorage,
|
|
52
|
+
createUrlSearchParamsInHashProvider,
|
|
53
|
+
createUrlSearchParamsInHashStorage,
|
|
54
|
+
createUrlSearchParamsProvider,
|
|
55
|
+
createUrlSearchParamsStorage,
|
|
56
|
+
localStorageProvider,
|
|
57
|
+
memoryStorageProvider,
|
|
58
|
+
sessionStorageProvider,
|
|
59
|
+
urlSearchParamsInHashProvider,
|
|
60
|
+
urlSearchParamsProvider
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/index.ts"],
|
|
4
|
+
"sourcesContent": ["export type {\n StorageInstance,\n StorageOptions,\n StorageProvider,\n StorageSerializer,\n UrlProviderOptions,\n} from './types.js';\n\nexport {\n createLocalStorageProvider,\n createMemoryStorageProvider,\n createNoopProvider,\n createSessionStorageProvider,\n createUrlSearchParamsInHashProvider,\n createUrlSearchParamsProvider,\n localStorageProvider,\n memoryStorageProvider,\n sessionStorageProvider,\n urlSearchParamsInHashProvider,\n urlSearchParamsProvider,\n} from './providers.js';\nexport { createStorage } from './createStorage.js';\n\nimport type { StorageInstance, StorageOptions, UrlProviderOptions } from './types.js';\nimport { createStorage } from './createStorage.js';\nimport {\n createUrlSearchParamsInHashProvider,\n createUrlSearchParamsProvider,\n localStorageProvider,\n sessionStorageProvider,\n urlSearchParamsInHashProvider,\n urlSearchParamsProvider,\n} from './providers.js';\n\nexport function createLocalStorage<T extends Record<string, any> = Record<string, any>>(\n options?: Omit<StorageOptions, 'provider'>,\n): StorageInstance<T> {\n return createStorage({ ...options, provider: localStorageProvider });\n}\n\nexport function createSessionStorage<T extends Record<string, any> = Record<string, any>>(\n options?: Omit<StorageOptions, 'provider'>,\n): StorageInstance<T> {\n return createStorage({ ...options, provider: sessionStorageProvider });\n}\n\nexport function createUrlSearchParamsStorage<T extends Record<string, any> = Record<string, any>>(\n options?: Omit<StorageOptions, 'provider'> & UrlProviderOptions,\n): StorageInstance<T> {\n const { push, ...storageOptions } = options ?? {};\n return createStorage({\n ...storageOptions,\n provider: push ? createUrlSearchParamsProvider({ push }) : urlSearchParamsProvider,\n });\n}\n\nexport function createUrlSearchParamsInHashStorage<\n T extends Record<string, any> = Record<string, any>,\n>(options?: Omit<StorageOptions, 'provider'> & UrlProviderOptions): StorageInstance<T> {\n const { push, ...storageOptions } = options ?? {};\n return createStorage({\n ...storageOptions,\n provider: push ? createUrlSearchParamsInHashProvider({ push }) : urlSearchParamsInHashProvider,\n });\n}\n"],
|
|
5
|
+
"mappings": "AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;AAG9B,SAAS,iBAAAA,sBAAqB;AAC9B;AAAA,EACE,uCAAAC;AAAA,EACA,iCAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,iCAAAC;AAAA,EACA,2BAAAC;AAAA,OACK;AAEA,SAAS,mBACd,SACoB;AACpB,SAAON,eAAc,EAAE,GAAG,SAAS,UAAUG,sBAAqB,CAAC;AACrE;AAEO,SAAS,qBACd,SACoB;AACpB,SAAOH,eAAc,EAAE,GAAG,SAAS,UAAUI,wBAAuB,CAAC;AACvE;AAEO,SAAS,6BACd,SACoB;AACpB,QAAM,EAAE,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;AAChD,SAAOJ,eAAc;AAAA,IACnB,GAAG;AAAA,IACH,UAAU,OAAOE,+BAA8B,EAAE,KAAK,CAAC,IAAII;AAAA,EAC7D,CAAC;AACH;AAEO,SAAS,mCAEd,SAAqF;AACrF,QAAM,EAAE,MAAM,GAAG,eAAe,IAAI,WAAW,CAAC;AAChD,SAAON,eAAc;AAAA,IACnB,GAAG;AAAA,IACH,UAAU,OAAOC,qCAAoC,EAAE,KAAK,CAAC,IAAII;AAAA,EACnE,CAAC;AACH;",
|
|
6
|
+
"names": ["createStorage", "createUrlSearchParamsInHashProvider", "createUrlSearchParamsProvider", "localStorageProvider", "sessionStorageProvider", "urlSearchParamsInHashProvider", "urlSearchParamsProvider"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { createLocalStorageProvider } from './createLocalStorageProvider.js';
|
|
2
|
+
export { createMemoryStorageProvider } from './createMemoryStorageProvider.js';
|
|
3
|
+
export { createNoopProvider } from './createNoopProvider.js';
|
|
4
|
+
export { createSessionStorageProvider } from './createSessionStorageProvider.js';
|
|
5
|
+
export { createUrlSearchParamsInHashProvider } from './createUrlSearchParamsInHashProvider.js';
|
|
6
|
+
export { createUrlSearchParamsProvider } from './createUrlSearchParamsProvider.js';
|
|
7
|
+
export declare const localStorageProvider: import("./types.js").StorageProvider;
|
|
8
|
+
export declare const memoryStorageProvider: import("./types.js").StorageProvider;
|
|
9
|
+
export declare const sessionStorageProvider: import("./types.js").StorageProvider;
|
|
10
|
+
export declare const urlSearchParamsProvider: import("./types.js").StorageProvider;
|
|
11
|
+
export declare const urlSearchParamsInHashProvider: import("./types.js").StorageProvider;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createLocalStorageProvider } from "./createLocalStorageProvider.js";
|
|
2
|
+
import { createMemoryStorageProvider } from "./createMemoryStorageProvider.js";
|
|
3
|
+
import { createSessionStorageProvider } from "./createSessionStorageProvider.js";
|
|
4
|
+
import { createUrlSearchParamsInHashProvider } from "./createUrlSearchParamsInHashProvider.js";
|
|
5
|
+
import { createUrlSearchParamsProvider } from "./createUrlSearchParamsProvider.js";
|
|
6
|
+
import { createLocalStorageProvider as createLocalStorageProvider2 } from "./createLocalStorageProvider.js";
|
|
7
|
+
import { createMemoryStorageProvider as createMemoryStorageProvider2 } from "./createMemoryStorageProvider.js";
|
|
8
|
+
import { createNoopProvider } from "./createNoopProvider.js";
|
|
9
|
+
import { createSessionStorageProvider as createSessionStorageProvider2 } from "./createSessionStorageProvider.js";
|
|
10
|
+
import { createUrlSearchParamsInHashProvider as createUrlSearchParamsInHashProvider2 } from "./createUrlSearchParamsInHashProvider.js";
|
|
11
|
+
import { createUrlSearchParamsProvider as createUrlSearchParamsProvider2 } from "./createUrlSearchParamsProvider.js";
|
|
12
|
+
const localStorageProvider = createLocalStorageProvider();
|
|
13
|
+
const memoryStorageProvider = createMemoryStorageProvider();
|
|
14
|
+
const sessionStorageProvider = createSessionStorageProvider();
|
|
15
|
+
const urlSearchParamsProvider = createUrlSearchParamsProvider();
|
|
16
|
+
const urlSearchParamsInHashProvider = createUrlSearchParamsInHashProvider();
|
|
17
|
+
export {
|
|
18
|
+
createLocalStorageProvider2 as createLocalStorageProvider,
|
|
19
|
+
createMemoryStorageProvider2 as createMemoryStorageProvider,
|
|
20
|
+
createNoopProvider,
|
|
21
|
+
createSessionStorageProvider2 as createSessionStorageProvider,
|
|
22
|
+
createUrlSearchParamsInHashProvider2 as createUrlSearchParamsInHashProvider,
|
|
23
|
+
createUrlSearchParamsProvider2 as createUrlSearchParamsProvider,
|
|
24
|
+
localStorageProvider,
|
|
25
|
+
memoryStorageProvider,
|
|
26
|
+
sessionStorageProvider,
|
|
27
|
+
urlSearchParamsInHashProvider,
|
|
28
|
+
urlSearchParamsProvider
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/providers.ts"],
|
|
4
|
+
"sourcesContent": ["import { createLocalStorageProvider } from './createLocalStorageProvider.js';\nimport { createMemoryStorageProvider } from './createMemoryStorageProvider.js';\nimport { createSessionStorageProvider } from './createSessionStorageProvider.js';\nimport { createUrlSearchParamsInHashProvider } from './createUrlSearchParamsInHashProvider.js';\nimport { createUrlSearchParamsProvider } from './createUrlSearchParamsProvider.js';\n\nexport { createLocalStorageProvider } from './createLocalStorageProvider.js';\nexport { createMemoryStorageProvider } from './createMemoryStorageProvider.js';\nexport { createNoopProvider } from './createNoopProvider.js';\nexport { createSessionStorageProvider } from './createSessionStorageProvider.js';\nexport { createUrlSearchParamsInHashProvider } from './createUrlSearchParamsInHashProvider.js';\nexport { createUrlSearchParamsProvider } from './createUrlSearchParamsProvider.js';\n\nexport const localStorageProvider = createLocalStorageProvider();\nexport const memoryStorageProvider = createMemoryStorageProvider();\nexport const sessionStorageProvider = createSessionStorageProvider();\nexport const urlSearchParamsProvider = createUrlSearchParamsProvider();\nexport const urlSearchParamsInHashProvider = createUrlSearchParamsInHashProvider();\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,kCAAkC;AAC3C,SAAS,mCAAmC;AAC5C,SAAS,oCAAoC;AAC7C,SAAS,2CAA2C;AACpD,SAAS,qCAAqC;AAE9C,SAAS,8BAAAA,mCAAkC;AAC3C,SAAS,+BAAAC,oCAAmC;AAC5C,SAAS,0BAA0B;AACnC,SAAS,gCAAAC,qCAAoC;AAC7C,SAAS,uCAAAC,4CAA2C;AACpD,SAAS,iCAAAC,sCAAqC;AAEvC,MAAM,uBAAuB,2BAA2B;AACxD,MAAM,wBAAwB,4BAA4B;AAC1D,MAAM,yBAAyB,6BAA6B;AAC5D,MAAM,0BAA0B,8BAA8B;AAC9D,MAAM,gCAAgC,oCAAoC;",
|
|
6
|
+
"names": ["createLocalStorageProvider", "createMemoryStorageProvider", "createSessionStorageProvider", "createUrlSearchParamsInHashProvider", "createUrlSearchParamsProvider"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const jsonSerializer = {
|
|
2
|
+
serialize: (value) => JSON.stringify(value),
|
|
3
|
+
deserialize: (value) => {
|
|
4
|
+
try {
|
|
5
|
+
return JSON.parse(value);
|
|
6
|
+
} catch {
|
|
7
|
+
return void 0;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
jsonSerializer
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=serializers.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/js-toolkit/utils/storage/serializers.ts"],
|
|
4
|
+
"sourcesContent": ["import type { StorageSerializer } from './types.js';\n\nexport const jsonSerializer: StorageSerializer = {\n serialize: <T>(value: T): string => JSON.stringify(value),\n deserialize: <T>(value: string): T | undefined => {\n try {\n return JSON.parse(value);\n } catch {\n return undefined;\n }\n },\n};\n"],
|
|
5
|
+
"mappings": "AAEO,MAAM,iBAAoC;AAAA,EAC/C,WAAW,CAAI,UAAqB,KAAK,UAAU,KAAK;AAAA,EACxD,aAAa,CAAI,UAAiC;AAChD,QAAI;AACF,aAAO,KAAK,MAAM,KAAK;AAAA,IACzB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface StorageProvider {
|
|
2
|
+
get(key: string): string | null;
|
|
3
|
+
set(key: string, value: string): void;
|
|
4
|
+
remove(key: string): void;
|
|
5
|
+
has(key: string): boolean;
|
|
6
|
+
keys(): string[];
|
|
7
|
+
clear(): void;
|
|
8
|
+
syncEvent?: string;
|
|
9
|
+
storageArea?: Storage;
|
|
10
|
+
}
|
|
11
|
+
export interface StorageInstance<T = any> {
|
|
12
|
+
get<K extends keyof T>(key: K): T[K] | undefined;
|
|
13
|
+
get<K extends keyof T>(key: K, defaultValue: T[K]): T[K];
|
|
14
|
+
set<K extends keyof T>(key: K, value: T[K]): void;
|
|
15
|
+
delete<K extends keyof T>(key: K): void;
|
|
16
|
+
has<K extends keyof T>(key: K): boolean;
|
|
17
|
+
keys(): (keyof T)[];
|
|
18
|
+
clear(): void;
|
|
19
|
+
subscribe<K extends keyof T>(key: K, callback: (value: T[K] | undefined) => void): () => void;
|
|
20
|
+
destroy(): void;
|
|
21
|
+
}
|
|
22
|
+
export interface StorageSerializer {
|
|
23
|
+
serialize: (value: any) => string;
|
|
24
|
+
deserialize: (value: string) => any;
|
|
25
|
+
}
|
|
26
|
+
export interface StorageOptions {
|
|
27
|
+
provider?: StorageProvider;
|
|
28
|
+
serializer?: StorageSerializer;
|
|
29
|
+
prefix?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface UrlProviderOptions {
|
|
32
|
+
push?: boolean;
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './storage/index.js';
|
package/utils/storage.js
ADDED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Convert a string to lowercase.
|
|
3
3
|
* @link https://js-toolkit.studiometa.dev/utils/string/lowerCase.html
|
|
4
|
-
*/
|
|
4
|
+
*/
|
|
5
5
|
export declare function lowerCase(string: string): string;
|
|
6
6
|
/**
|
|
7
7
|
* Convert a string to UPPERCASE.
|
|
8
8
|
* @link https://js-toolkit.studiometa.dev/utils/string/upperCase.html
|
|
9
|
-
*/
|
|
9
|
+
*/
|
|
10
10
|
export declare function upperCase(string: string): string;
|
|
11
11
|
/**
|
|
12
12
|
* Convert a string to camelCase.
|
|
13
13
|
* @link https://js-toolkit.studiometa.dev/utils/string/camelCase.html
|
|
14
|
-
*/
|
|
14
|
+
*/
|
|
15
15
|
export declare const camelCase: (string: string) => string;
|
|
16
16
|
/**
|
|
17
17
|
* Convert a string to PascalCase.
|
|
18
18
|
* @link https://js-toolkit.studiometa.dev/utils/string/pascalCase.html
|
|
19
|
-
*/
|
|
19
|
+
*/
|
|
20
20
|
export declare const pascalCase: (string: string) => string;
|
|
21
21
|
/**
|
|
22
22
|
* Convert a string to snake_case.
|
|
23
23
|
* @link https://js-toolkit.studiometa.dev/utils/string/snakeCase.html
|
|
24
|
-
*/
|
|
24
|
+
*/
|
|
25
25
|
export declare const snakeCase: (string: string) => string;
|
|
26
26
|
/**
|
|
27
27
|
* Convert a string to dash-case.
|
|
28
28
|
* @link https://js-toolkit.studiometa.dev/utils/string/dashCase.html
|
|
29
|
-
*/
|
|
29
|
+
*/
|
|
30
30
|
export declare const dashCase: (string: string) => string;
|
|
@@ -12,7 +12,7 @@ function split(value) {
|
|
|
12
12
|
while (result.charAt(start) === "\0") start++;
|
|
13
13
|
if (start === end) return [];
|
|
14
14
|
while (result.charAt(end - 1) === "\0") end--;
|
|
15
|
-
return result.slice(start, end).split(
|
|
15
|
+
return result.slice(start, end).split("\0");
|
|
16
16
|
}
|
|
17
17
|
function delimitedCase(string, delimiter) {
|
|
18
18
|
return split(string).map((word) => lowerCase(word)).join(delimiter);
|