@byloth/core 1.0.0 → 1.0.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/README.md +3 -0
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/core.umd.cjs +1 -1
- package/dist/core.umd.cjs.map +1 -1
- package/package.json +1 -2
- package/src/index.ts +2 -2
- package/src/models/deferred-promise.ts +1 -1
- package/src/types/index.ts +0 -1
- /package/src/{types/promise.ts → types.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Core 🔧
|
|
2
2
|
|
|
3
|
+
[](https://github.com/Byloth/core/actions/workflows/release-npm.yml)
|
|
4
|
+
[](https://github.com/Byloth/core/actions/workflows/release-gpr.yml)
|
|
5
|
+
|
|
3
6
|
An unopinionated collection of useful functions and classes that I use widely in all my projects.
|
|
4
7
|
|
|
5
8
|
> *You should do it too!* 😉
|
package/dist/core.js
CHANGED
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../src/models/deferred-promise.ts","../src/models/json-storage.ts","../src/utils/async.ts","../src/utils/dom.ts","../src/utils/iterator.ts","../src/utils/math.ts","../src/utils/string.ts","../src/index.ts"],"sourcesContent":["import type { PromiseExecutor, PromiseResolver, PromiseRejecter } from \"@/types/promise\";\n\nexport default class DeferredPromise<T, E = unknown> extends Promise<T>\n{\n protected _resolve: PromiseResolver<T>;\n protected _reject: PromiseRejecter<E>;\n\n public get resolve(): PromiseResolver<T>\n {\n return this._resolve;\n }\n public get reject(): PromiseRejecter<E>\n {\n return this._reject;\n }\n\n public constructor(executor: PromiseExecutor<T>)\n {\n let resolve: PromiseResolver<T>;\n let reject: PromiseRejecter<E>;\n\n super((res, rej) =>\n {\n this._resolve = res;\n this._reject = rej;\n\n executor(res, rej);\n });\n\n this._resolve = resolve!;\n this._reject = reject!;\n }\n}\n","/* eslint-disable no-trailing-spaces */\n\n/**\n * A wrapper around the `Storage` API to store and retrieve JSON values.\n *\n * It allows to handle either the `sessionStorage` or the `localStorage`\n * storage at the same time, depending on the required use case.\n */\nexport default class JsonStorage\n{\n protected _preferPersistence: boolean;\n\n protected _volatile: Storage;\n protected _persistent: Storage;\n\n public constructor(preferPersistence = true)\n {\n this._preferPersistence = preferPersistence;\n\n this._volatile = window.sessionStorage;\n this._persistent = window.localStorage;\n }\n\n protected _get<T>(storage: Storage, propertyName: string): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue: T): T;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined\n {\n const propertyValue = storage.getItem(propertyName);\n if (propertyValue)\n {\n try\n {\n return JSON.parse(propertyValue);\n }\n catch (error)\n {\n if (import.meta.env.DEV)\n {\n // eslint-disable-next-line no-console\n console.warn(\n `The \"${propertyValue}\" value for \"${propertyName}\"` +\n \" property cannot be parsed. Clearing the storage...\");\n }\n\n storage.removeItem(propertyName);\n }\n }\n\n return defaultValue;\n }\n protected _set<T>(storage: Storage, propertyName: string, newValue?: T): void\n {\n const encodedValue = JSON.stringify(newValue);\n if (encodedValue)\n {\n storage.setItem(propertyName, encodedValue);\n }\n else\n {\n storage.removeItem(propertyName);\n }\n }\n\n /**\n * Retrieves the value with the specified name from the corresponding storage.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public get<T>(propertyName: string, defaultValue: undefined, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue: T, persistent?: boolean): T ;\n public get<T>(propertyName: string, defaultValue?: T, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue?: T, persistent = this._preferPersistence): T | undefined\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return this._get<T>(storage, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public recall<T>(propertyName: string): T | undefined;\n public recall<T>(propertyName: string, defaultValue: T): T;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._volatile, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public retrieve<T>(propertyName: string): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue: T): T;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this.recall<T>(propertyName) ?? this.read<T>(propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public read<T>(propertyName: string): T | undefined;\n public read<T>(propertyName: string, defaultValue: T): T;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._persistent, propertyName, defaultValue);\n }\n\n /**\n * Checks whether the property with the specified name exists in the corresponding storage.\n *\n * @param propertyName The name of the property to check.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public has(propertyName: string, persistent?: boolean): boolean\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return storage.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists in the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public knows(propertyName: string): boolean\n {\n return this._volatile.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public find(propertyName: string): boolean\n {\n return this.knows(propertyName) ?? this.exists(propertyName);\n }\n /**\n * Checks whether the property with the specified name exists in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public exists(propertyName: string): boolean\n {\n return this._persistent.getItem(propertyName) !== null;\n }\n\n /**\n * Sets the value with the specified name in the corresponding storage.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n */\n public set<T>(propertyName: string, newValue?: T, persistent = this._preferPersistence): void\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n this._set<T>(storage, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the volatile `sessionStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public remember<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._volatile, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the persistent `localStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public write<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._persistent, propertyName, newValue);\n }\n\n /**\n * Removes the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public forget(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public erase(propertyName: string): void\n {\n this._persistent.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from all the storages.\n *\n * @param propertyName The name of the property to remove.\n */\n public clear(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n this._persistent.removeItem(propertyName);\n }\n}\n","export async function delay(milliseconds: number): Promise<void>\n{\n return new Promise<void>((resolve, reject) => setTimeout(resolve, milliseconds));\n}\n\nexport async function nextAnimationFrame(): Promise<void>\n{\n return new Promise<void>((resolve, reject) => requestAnimationFrame(() => resolve()));\n}\n","export async function loadScript(scriptUrl: string, scriptType = \"text/javascript\"): Promise<void>\n{\n return new Promise<void>((resolve, reject) =>\n {\n const script = document.createElement(\"script\");\n\n script.async = true;\n script.defer = true;\n script.src = scriptUrl;\n script.type = scriptType;\n\n script.onload = () => resolve();\n script.onerror = () => reject();\n\n document.body.appendChild(script);\n });\n}\n","export function count<T>(elements: Iterable<T>): number\n{\n if (\"length\" in elements) { return elements.length as number; }\n\n let _count = 0;\n for (const _ of elements) { _count += 1; }\n\n return _count;\n}\n\nexport function* range(start: number, end: number, step?: number): Iterable<number>\n{\n if (start > end) { step = step ?? -1; }\n else { step = step ?? 1; }\n\n for (let i = start; i < end; i += step) { yield i; }\n}\n\nexport function sum<T extends number>(elements: Iterable<T>): number\n{\n let _sum = 0;\n for (const value of elements) { _sum += value; }\n\n return _sum;\n}\n\nexport function unique<T>(elements: Iterable<T>): T[]\n{\n return [...new Set(elements)];\n}\n","export function hash(value: string): number\n{\n let hash = 0;\n for (let i = 0; i < value.length; i++)\n {\n const char = value.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0;\n }\n\n return hash;\n}\n","export function capitalize(value: string): string\n{\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n","export const VERSION = \"1.0.0\";\n\nexport { DeferredPromise, JsonStorage } from \"./models\";\nexport {\n capitalize,\n count,\n delay,\n hash,\n loadScript,\n nextAnimationFrame,\n range,\n sum,\n unique\n} from \"./utils\";\n\nexport type { Awaitable } from \"./types\";\n"],"names":["DeferredPromise","executor","resolve","reject","res","rej","__publicField","JsonStorage","preferPersistence","storage","propertyName","defaultValue","propertyValue","newValue","encodedValue","persistent","delay","milliseconds","nextAnimationFrame","loadScript","scriptUrl","scriptType","script","count","elements","_count","_","range","start","end","step","sum","_sum","value","unique","hash","i","char","capitalize","VERSION"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../src/models/deferred-promise.ts","../src/models/json-storage.ts","../src/utils/async.ts","../src/utils/dom.ts","../src/utils/iterator.ts","../src/utils/math.ts","../src/utils/string.ts","../src/index.ts"],"sourcesContent":["import type { PromiseExecutor, PromiseResolver, PromiseRejecter } from \"@/types\";\n\nexport default class DeferredPromise<T, E = unknown> extends Promise<T>\n{\n protected _resolve: PromiseResolver<T>;\n protected _reject: PromiseRejecter<E>;\n\n public get resolve(): PromiseResolver<T>\n {\n return this._resolve;\n }\n public get reject(): PromiseRejecter<E>\n {\n return this._reject;\n }\n\n public constructor(executor: PromiseExecutor<T>)\n {\n let resolve: PromiseResolver<T>;\n let reject: PromiseRejecter<E>;\n\n super((res, rej) =>\n {\n this._resolve = res;\n this._reject = rej;\n\n executor(res, rej);\n });\n\n this._resolve = resolve!;\n this._reject = reject!;\n }\n}\n","/* eslint-disable no-trailing-spaces */\n\n/**\n * A wrapper around the `Storage` API to store and retrieve JSON values.\n *\n * It allows to handle either the `sessionStorage` or the `localStorage`\n * storage at the same time, depending on the required use case.\n */\nexport default class JsonStorage\n{\n protected _preferPersistence: boolean;\n\n protected _volatile: Storage;\n protected _persistent: Storage;\n\n public constructor(preferPersistence = true)\n {\n this._preferPersistence = preferPersistence;\n\n this._volatile = window.sessionStorage;\n this._persistent = window.localStorage;\n }\n\n protected _get<T>(storage: Storage, propertyName: string): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue: T): T;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined\n {\n const propertyValue = storage.getItem(propertyName);\n if (propertyValue)\n {\n try\n {\n return JSON.parse(propertyValue);\n }\n catch (error)\n {\n if (import.meta.env.DEV)\n {\n // eslint-disable-next-line no-console\n console.warn(\n `The \"${propertyValue}\" value for \"${propertyName}\"` +\n \" property cannot be parsed. Clearing the storage...\");\n }\n\n storage.removeItem(propertyName);\n }\n }\n\n return defaultValue;\n }\n protected _set<T>(storage: Storage, propertyName: string, newValue?: T): void\n {\n const encodedValue = JSON.stringify(newValue);\n if (encodedValue)\n {\n storage.setItem(propertyName, encodedValue);\n }\n else\n {\n storage.removeItem(propertyName);\n }\n }\n\n /**\n * Retrieves the value with the specified name from the corresponding storage.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public get<T>(propertyName: string, defaultValue: undefined, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue: T, persistent?: boolean): T ;\n public get<T>(propertyName: string, defaultValue?: T, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue?: T, persistent = this._preferPersistence): T | undefined\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return this._get<T>(storage, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public recall<T>(propertyName: string): T | undefined;\n public recall<T>(propertyName: string, defaultValue: T): T;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._volatile, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public retrieve<T>(propertyName: string): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue: T): T;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this.recall<T>(propertyName) ?? this.read<T>(propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public read<T>(propertyName: string): T | undefined;\n public read<T>(propertyName: string, defaultValue: T): T;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._persistent, propertyName, defaultValue);\n }\n\n /**\n * Checks whether the property with the specified name exists in the corresponding storage.\n *\n * @param propertyName The name of the property to check.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public has(propertyName: string, persistent?: boolean): boolean\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return storage.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists in the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public knows(propertyName: string): boolean\n {\n return this._volatile.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public find(propertyName: string): boolean\n {\n return this.knows(propertyName) ?? this.exists(propertyName);\n }\n /**\n * Checks whether the property with the specified name exists in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public exists(propertyName: string): boolean\n {\n return this._persistent.getItem(propertyName) !== null;\n }\n\n /**\n * Sets the value with the specified name in the corresponding storage.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n */\n public set<T>(propertyName: string, newValue?: T, persistent = this._preferPersistence): void\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n this._set<T>(storage, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the volatile `sessionStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public remember<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._volatile, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the persistent `localStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public write<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._persistent, propertyName, newValue);\n }\n\n /**\n * Removes the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public forget(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public erase(propertyName: string): void\n {\n this._persistent.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from all the storages.\n *\n * @param propertyName The name of the property to remove.\n */\n public clear(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n this._persistent.removeItem(propertyName);\n }\n}\n","export async function delay(milliseconds: number): Promise<void>\n{\n return new Promise<void>((resolve, reject) => setTimeout(resolve, milliseconds));\n}\n\nexport async function nextAnimationFrame(): Promise<void>\n{\n return new Promise<void>((resolve, reject) => requestAnimationFrame(() => resolve()));\n}\n","export async function loadScript(scriptUrl: string, scriptType = \"text/javascript\"): Promise<void>\n{\n return new Promise<void>((resolve, reject) =>\n {\n const script = document.createElement(\"script\");\n\n script.async = true;\n script.defer = true;\n script.src = scriptUrl;\n script.type = scriptType;\n\n script.onload = () => resolve();\n script.onerror = () => reject();\n\n document.body.appendChild(script);\n });\n}\n","export function count<T>(elements: Iterable<T>): number\n{\n if (\"length\" in elements) { return elements.length as number; }\n\n let _count = 0;\n for (const _ of elements) { _count += 1; }\n\n return _count;\n}\n\nexport function* range(start: number, end: number, step?: number): Iterable<number>\n{\n if (start > end) { step = step ?? -1; }\n else { step = step ?? 1; }\n\n for (let i = start; i < end; i += step) { yield i; }\n}\n\nexport function sum<T extends number>(elements: Iterable<T>): number\n{\n let _sum = 0;\n for (const value of elements) { _sum += value; }\n\n return _sum;\n}\n\nexport function unique<T>(elements: Iterable<T>): T[]\n{\n return [...new Set(elements)];\n}\n","export function hash(value: string): number\n{\n let hash = 0;\n for (let i = 0; i < value.length; i++)\n {\n const char = value.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0;\n }\n\n return hash;\n}\n","export function capitalize(value: string): string\n{\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n","export const VERSION = \"1.0.1\";\n\nexport { DeferredPromise, JsonStorage } from \"./models\";\nexport {\n capitalize,\n count,\n delay,\n hash,\n loadScript,\n nextAnimationFrame,\n range,\n sum,\n unique\n} from \"./utils\";\n\nexport type { Awaitable, PromiseExecutor, PromiseResolver, PromiseRejecter } from \"./types\";\n"],"names":["DeferredPromise","executor","resolve","reject","res","rej","__publicField","JsonStorage","preferPersistence","storage","propertyName","defaultValue","propertyValue","newValue","encodedValue","persistent","delay","milliseconds","nextAnimationFrame","loadScript","scriptUrl","scriptType","script","count","elements","_count","_","range","start","end","step","sum","_sum","value","unique","hash","i","char","capitalize","VERSION"],"mappings":"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"}
|
package/dist/core.umd.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(i,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(i=typeof globalThis<"u"?globalThis:i||self,o(i.Core={}))})(this,function(i){"use strict";var w=Object.defineProperty;var y=(i,o,c)=>o in i?w(i,o,{enumerable:!0,configurable:!0,writable:!0,value:c}):i[o]=c;var l=(i,o,c)=>(y(i,typeof o!="symbol"?o+"":o,c),c);class o extends Promise{constructor(t){let n,s;super((u,a)=>{this._resolve=u,this._reject=a,t(u,a)});l(this,"_resolve");l(this,"_reject");this._resolve=n,this._reject=s}get resolve(){return this._resolve}get reject(){return this._reject}}class c{constructor(e=!0){l(this,"_preferPersistence");l(this,"_volatile");l(this,"_persistent");this._preferPersistence=e,this._volatile=window.sessionStorage,this._persistent=window.localStorage}_get(e,t,n){const s=e.getItem(t);if(s)try{return JSON.parse(s)}catch{e.removeItem(t)}return n}_set(e,t,n){const s=JSON.stringify(n);s?e.setItem(t,s):e.removeItem(t)}get(e,t,n=this._preferPersistence){const s=n?this._persistent:this._volatile;return this._get(s,e,t)}recall(e,t){return this._get(this._volatile,e,t)}retrieve(e,t){return this.recall(e)??this.read(e,t)}read(e,t){return this._get(this._persistent,e,t)}has(e,t){return(t?this._persistent:this._volatile).getItem(e)!==null}knows(e){return this._volatile.getItem(e)!==null}find(e){return this.knows(e)??this.exists(e)}exists(e){return this._persistent.getItem(e)!==null}set(e,t,n=this._preferPersistence){const s=n?this._persistent:this._volatile;this._set(s,e,t)}remember(e,t){this._set(this._volatile,e,t)}write(e,t){this._set(this._persistent,e,t)}forget(e){this._volatile.removeItem(e)}erase(e){this._persistent.removeItem(e)}clear(e){this._volatile.removeItem(e),this._persistent.removeItem(e)}}async function h(r){return new Promise((e,t)=>setTimeout(e,r))}async function _(){return new Promise((r,e)=>requestAnimationFrame(()=>r()))}async function f(r,e="text/javascript"){return new Promise((t,n)=>{const s=document.createElement("script");s.async=!0,s.defer=!0,s.src=r,s.type=e,s.onload=()=>t(),s.onerror=()=>n(),document.body.appendChild(s)})}function m(r){if("length"in r)return r.length;let e=0;for(const t of r)e+=1;return e}function*d(r,e,t){r>e?t=t??-1:t=t??1;for(let n=r;n<e;n+=t)yield n}function g(r){let e=0;for(const t of r)e+=t;return e}function v(r){return[...new Set(r)]}function I(r){let e=0;for(let t=0;t<r.length;t++){const n=r.charCodeAt(t);e=(e<<5)-e+n,e|=0}return e}function S(r){return`${r.charAt(0).toUpperCase()}${r.slice(1)}`}const p="1.0.
|
|
1
|
+
(function(i,o){typeof exports=="object"&&typeof module<"u"?o(exports):typeof define=="function"&&define.amd?define(["exports"],o):(i=typeof globalThis<"u"?globalThis:i||self,o(i.Core={}))})(this,function(i){"use strict";var w=Object.defineProperty;var y=(i,o,c)=>o in i?w(i,o,{enumerable:!0,configurable:!0,writable:!0,value:c}):i[o]=c;var l=(i,o,c)=>(y(i,typeof o!="symbol"?o+"":o,c),c);class o extends Promise{constructor(t){let n,s;super((u,a)=>{this._resolve=u,this._reject=a,t(u,a)});l(this,"_resolve");l(this,"_reject");this._resolve=n,this._reject=s}get resolve(){return this._resolve}get reject(){return this._reject}}class c{constructor(e=!0){l(this,"_preferPersistence");l(this,"_volatile");l(this,"_persistent");this._preferPersistence=e,this._volatile=window.sessionStorage,this._persistent=window.localStorage}_get(e,t,n){const s=e.getItem(t);if(s)try{return JSON.parse(s)}catch{e.removeItem(t)}return n}_set(e,t,n){const s=JSON.stringify(n);s?e.setItem(t,s):e.removeItem(t)}get(e,t,n=this._preferPersistence){const s=n?this._persistent:this._volatile;return this._get(s,e,t)}recall(e,t){return this._get(this._volatile,e,t)}retrieve(e,t){return this.recall(e)??this.read(e,t)}read(e,t){return this._get(this._persistent,e,t)}has(e,t){return(t?this._persistent:this._volatile).getItem(e)!==null}knows(e){return this._volatile.getItem(e)!==null}find(e){return this.knows(e)??this.exists(e)}exists(e){return this._persistent.getItem(e)!==null}set(e,t,n=this._preferPersistence){const s=n?this._persistent:this._volatile;this._set(s,e,t)}remember(e,t){this._set(this._volatile,e,t)}write(e,t){this._set(this._persistent,e,t)}forget(e){this._volatile.removeItem(e)}erase(e){this._persistent.removeItem(e)}clear(e){this._volatile.removeItem(e),this._persistent.removeItem(e)}}async function h(r){return new Promise((e,t)=>setTimeout(e,r))}async function _(){return new Promise((r,e)=>requestAnimationFrame(()=>r()))}async function f(r,e="text/javascript"){return new Promise((t,n)=>{const s=document.createElement("script");s.async=!0,s.defer=!0,s.src=r,s.type=e,s.onload=()=>t(),s.onerror=()=>n(),document.body.appendChild(s)})}function m(r){if("length"in r)return r.length;let e=0;for(const t of r)e+=1;return e}function*d(r,e,t){r>e?t=t??-1:t=t??1;for(let n=r;n<e;n+=t)yield n}function g(r){let e=0;for(const t of r)e+=t;return e}function v(r){return[...new Set(r)]}function I(r){let e=0;for(let t=0;t<r.length;t++){const n=r.charCodeAt(t);e=(e<<5)-e+n,e|=0}return e}function S(r){return`${r.charAt(0).toUpperCase()}${r.slice(1)}`}const p="1.0.1";i.DeferredPromise=o,i.JsonStorage=c,i.VERSION=p,i.capitalize=S,i.count=m,i.delay=h,i.hash=I,i.loadScript=f,i.nextAnimationFrame=_,i.range=d,i.sum=g,i.unique=v,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=core.umd.cjs.map
|
package/dist/core.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.umd.cjs","sources":["../src/models/deferred-promise.ts","../src/models/json-storage.ts","../src/utils/async.ts","../src/utils/dom.ts","../src/utils/iterator.ts","../src/utils/math.ts","../src/utils/string.ts","../src/index.ts"],"sourcesContent":["import type { PromiseExecutor, PromiseResolver, PromiseRejecter } from \"@/types/promise\";\n\nexport default class DeferredPromise<T, E = unknown> extends Promise<T>\n{\n protected _resolve: PromiseResolver<T>;\n protected _reject: PromiseRejecter<E>;\n\n public get resolve(): PromiseResolver<T>\n {\n return this._resolve;\n }\n public get reject(): PromiseRejecter<E>\n {\n return this._reject;\n }\n\n public constructor(executor: PromiseExecutor<T>)\n {\n let resolve: PromiseResolver<T>;\n let reject: PromiseRejecter<E>;\n\n super((res, rej) =>\n {\n this._resolve = res;\n this._reject = rej;\n\n executor(res, rej);\n });\n\n this._resolve = resolve!;\n this._reject = reject!;\n }\n}\n","/* eslint-disable no-trailing-spaces */\n\n/**\n * A wrapper around the `Storage` API to store and retrieve JSON values.\n *\n * It allows to handle either the `sessionStorage` or the `localStorage`\n * storage at the same time, depending on the required use case.\n */\nexport default class JsonStorage\n{\n protected _preferPersistence: boolean;\n\n protected _volatile: Storage;\n protected _persistent: Storage;\n\n public constructor(preferPersistence = true)\n {\n this._preferPersistence = preferPersistence;\n\n this._volatile = window.sessionStorage;\n this._persistent = window.localStorage;\n }\n\n protected _get<T>(storage: Storage, propertyName: string): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue: T): T;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined\n {\n const propertyValue = storage.getItem(propertyName);\n if (propertyValue)\n {\n try\n {\n return JSON.parse(propertyValue);\n }\n catch (error)\n {\n if (import.meta.env.DEV)\n {\n // eslint-disable-next-line no-console\n console.warn(\n `The \"${propertyValue}\" value for \"${propertyName}\"` +\n \" property cannot be parsed. Clearing the storage...\");\n }\n\n storage.removeItem(propertyName);\n }\n }\n\n return defaultValue;\n }\n protected _set<T>(storage: Storage, propertyName: string, newValue?: T): void\n {\n const encodedValue = JSON.stringify(newValue);\n if (encodedValue)\n {\n storage.setItem(propertyName, encodedValue);\n }\n else\n {\n storage.removeItem(propertyName);\n }\n }\n\n /**\n * Retrieves the value with the specified name from the corresponding storage.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public get<T>(propertyName: string, defaultValue: undefined, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue: T, persistent?: boolean): T ;\n public get<T>(propertyName: string, defaultValue?: T, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue?: T, persistent = this._preferPersistence): T | undefined\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return this._get<T>(storage, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public recall<T>(propertyName: string): T | undefined;\n public recall<T>(propertyName: string, defaultValue: T): T;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._volatile, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public retrieve<T>(propertyName: string): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue: T): T;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this.recall<T>(propertyName) ?? this.read<T>(propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public read<T>(propertyName: string): T | undefined;\n public read<T>(propertyName: string, defaultValue: T): T;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._persistent, propertyName, defaultValue);\n }\n\n /**\n * Checks whether the property with the specified name exists in the corresponding storage.\n *\n * @param propertyName The name of the property to check.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public has(propertyName: string, persistent?: boolean): boolean\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return storage.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists in the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public knows(propertyName: string): boolean\n {\n return this._volatile.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public find(propertyName: string): boolean\n {\n return this.knows(propertyName) ?? this.exists(propertyName);\n }\n /**\n * Checks whether the property with the specified name exists in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public exists(propertyName: string): boolean\n {\n return this._persistent.getItem(propertyName) !== null;\n }\n\n /**\n * Sets the value with the specified name in the corresponding storage.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n */\n public set<T>(propertyName: string, newValue?: T, persistent = this._preferPersistence): void\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n this._set<T>(storage, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the volatile `sessionStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public remember<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._volatile, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the persistent `localStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public write<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._persistent, propertyName, newValue);\n }\n\n /**\n * Removes the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public forget(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public erase(propertyName: string): void\n {\n this._persistent.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from all the storages.\n *\n * @param propertyName The name of the property to remove.\n */\n public clear(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n this._persistent.removeItem(propertyName);\n }\n}\n","export async function delay(milliseconds: number): Promise<void>\n{\n return new Promise<void>((resolve, reject) => setTimeout(resolve, milliseconds));\n}\n\nexport async function nextAnimationFrame(): Promise<void>\n{\n return new Promise<void>((resolve, reject) => requestAnimationFrame(() => resolve()));\n}\n","export async function loadScript(scriptUrl: string, scriptType = \"text/javascript\"): Promise<void>\n{\n return new Promise<void>((resolve, reject) =>\n {\n const script = document.createElement(\"script\");\n\n script.async = true;\n script.defer = true;\n script.src = scriptUrl;\n script.type = scriptType;\n\n script.onload = () => resolve();\n script.onerror = () => reject();\n\n document.body.appendChild(script);\n });\n}\n","export function count<T>(elements: Iterable<T>): number\n{\n if (\"length\" in elements) { return elements.length as number; }\n\n let _count = 0;\n for (const _ of elements) { _count += 1; }\n\n return _count;\n}\n\nexport function* range(start: number, end: number, step?: number): Iterable<number>\n{\n if (start > end) { step = step ?? -1; }\n else { step = step ?? 1; }\n\n for (let i = start; i < end; i += step) { yield i; }\n}\n\nexport function sum<T extends number>(elements: Iterable<T>): number\n{\n let _sum = 0;\n for (const value of elements) { _sum += value; }\n\n return _sum;\n}\n\nexport function unique<T>(elements: Iterable<T>): T[]\n{\n return [...new Set(elements)];\n}\n","export function hash(value: string): number\n{\n let hash = 0;\n for (let i = 0; i < value.length; i++)\n {\n const char = value.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0;\n }\n\n return hash;\n}\n","export function capitalize(value: string): string\n{\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n","export const VERSION = \"1.0.0\";\n\nexport { DeferredPromise, JsonStorage } from \"./models\";\nexport {\n capitalize,\n count,\n delay,\n hash,\n loadScript,\n nextAnimationFrame,\n range,\n sum,\n unique\n} from \"./utils\";\n\nexport type { Awaitable } from \"./types\";\n"],"names":["DeferredPromise","executor","resolve","reject","res","rej","__publicField","JsonStorage","preferPersistence","storage","propertyName","defaultValue","propertyValue","newValue","encodedValue","persistent","delay","milliseconds","nextAnimationFrame","loadScript","scriptUrl","scriptType","script","count","elements","_count","_","range","start","end","step","i","sum","_sum","value","unique","hash","char","capitalize","VERSION"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.umd.cjs","sources":["../src/models/deferred-promise.ts","../src/models/json-storage.ts","../src/utils/async.ts","../src/utils/dom.ts","../src/utils/iterator.ts","../src/utils/math.ts","../src/utils/string.ts","../src/index.ts"],"sourcesContent":["import type { PromiseExecutor, PromiseResolver, PromiseRejecter } from \"@/types\";\n\nexport default class DeferredPromise<T, E = unknown> extends Promise<T>\n{\n protected _resolve: PromiseResolver<T>;\n protected _reject: PromiseRejecter<E>;\n\n public get resolve(): PromiseResolver<T>\n {\n return this._resolve;\n }\n public get reject(): PromiseRejecter<E>\n {\n return this._reject;\n }\n\n public constructor(executor: PromiseExecutor<T>)\n {\n let resolve: PromiseResolver<T>;\n let reject: PromiseRejecter<E>;\n\n super((res, rej) =>\n {\n this._resolve = res;\n this._reject = rej;\n\n executor(res, rej);\n });\n\n this._resolve = resolve!;\n this._reject = reject!;\n }\n}\n","/* eslint-disable no-trailing-spaces */\n\n/**\n * A wrapper around the `Storage` API to store and retrieve JSON values.\n *\n * It allows to handle either the `sessionStorage` or the `localStorage`\n * storage at the same time, depending on the required use case.\n */\nexport default class JsonStorage\n{\n protected _preferPersistence: boolean;\n\n protected _volatile: Storage;\n protected _persistent: Storage;\n\n public constructor(preferPersistence = true)\n {\n this._preferPersistence = preferPersistence;\n\n this._volatile = window.sessionStorage;\n this._persistent = window.localStorage;\n }\n\n protected _get<T>(storage: Storage, propertyName: string): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue: T): T;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined;\n protected _get<T>(storage: Storage, propertyName: string, defaultValue?: T): T | undefined\n {\n const propertyValue = storage.getItem(propertyName);\n if (propertyValue)\n {\n try\n {\n return JSON.parse(propertyValue);\n }\n catch (error)\n {\n if (import.meta.env.DEV)\n {\n // eslint-disable-next-line no-console\n console.warn(\n `The \"${propertyValue}\" value for \"${propertyName}\"` +\n \" property cannot be parsed. Clearing the storage...\");\n }\n\n storage.removeItem(propertyName);\n }\n }\n\n return defaultValue;\n }\n protected _set<T>(storage: Storage, propertyName: string, newValue?: T): void\n {\n const encodedValue = JSON.stringify(newValue);\n if (encodedValue)\n {\n storage.setItem(propertyName, encodedValue);\n }\n else\n {\n storage.removeItem(propertyName);\n }\n }\n\n /**\n * Retrieves the value with the specified name from the corresponding storage.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public get<T>(propertyName: string, defaultValue: undefined, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue: T, persistent?: boolean): T ;\n public get<T>(propertyName: string, defaultValue?: T, persistent?: boolean): T | undefined;\n public get<T>(propertyName: string, defaultValue?: T, persistent = this._preferPersistence): T | undefined\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return this._get<T>(storage, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public recall<T>(propertyName: string): T | undefined;\n public recall<T>(propertyName: string, defaultValue: T): T;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined;\n public recall<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._volatile, propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public retrieve<T>(propertyName: string): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue: T): T;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined;\n public retrieve<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this.recall<T>(propertyName) ?? this.read<T>(propertyName, defaultValue);\n }\n /**\n * Retrieves the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to retrieve.\n * @param defaultValue The default value to return if the property does not exist.\n *\n * @returns The value of the property or the default value if the property does not exist.\n */\n public read<T>(propertyName: string): T | undefined;\n public read<T>(propertyName: string, defaultValue: T): T;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined;\n public read<T>(propertyName: string, defaultValue?: T): T | undefined\n {\n return this._get<T>(this._persistent, propertyName, defaultValue);\n }\n\n /**\n * Checks whether the property with the specified name exists in the corresponding storage.\n *\n * @param propertyName The name of the property to check.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public has(propertyName: string, persistent?: boolean): boolean\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n return storage.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists in the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public knows(propertyName: string): boolean\n {\n return this._volatile.getItem(propertyName) !== null;\n }\n /**\n * Checks whether the property with the specified name exists looking first in the\n * volatile `sessionStorage` and then in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public find(propertyName: string): boolean\n {\n return this.knows(propertyName) ?? this.exists(propertyName);\n }\n /**\n * Checks whether the property with the specified name exists in the persistent `localStorage`.\n *\n * @param propertyName The name of the property to check.\n *\n * @returns `true` if the property exists, `false` otherwise.\n */\n public exists(propertyName: string): boolean\n {\n return this._persistent.getItem(propertyName) !== null;\n }\n\n /**\n * Sets the value with the specified name in the corresponding storage.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n * @param persistent Whether to use the persistent `localStorage` or the volatile `sessionStorage`.\n */\n public set<T>(propertyName: string, newValue?: T, persistent = this._preferPersistence): void\n {\n const storage = persistent ? this._persistent : this._volatile;\n\n this._set<T>(storage, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the volatile `sessionStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public remember<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._volatile, propertyName, newValue);\n }\n /**\n * Sets the value with the specified name in the persistent `localStorage`.\n * If the value is `undefined`, the property is removed from the storage.\n *\n * @param propertyName The name of the property to set.\n * @param newValue The new value to set.\n */\n public write<T>(propertyName: string, newValue?: T): void\n {\n this._set<T>(this._persistent, propertyName, newValue);\n }\n\n /**\n * Removes the value with the specified name from the volatile `sessionStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public forget(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from the persistent `localStorage`.\n *\n * @param propertyName The name of the property to remove.\n */\n public erase(propertyName: string): void\n {\n this._persistent.removeItem(propertyName);\n }\n /**\n * Removes the value with the specified name from all the storages.\n *\n * @param propertyName The name of the property to remove.\n */\n public clear(propertyName: string): void\n {\n this._volatile.removeItem(propertyName);\n this._persistent.removeItem(propertyName);\n }\n}\n","export async function delay(milliseconds: number): Promise<void>\n{\n return new Promise<void>((resolve, reject) => setTimeout(resolve, milliseconds));\n}\n\nexport async function nextAnimationFrame(): Promise<void>\n{\n return new Promise<void>((resolve, reject) => requestAnimationFrame(() => resolve()));\n}\n","export async function loadScript(scriptUrl: string, scriptType = \"text/javascript\"): Promise<void>\n{\n return new Promise<void>((resolve, reject) =>\n {\n const script = document.createElement(\"script\");\n\n script.async = true;\n script.defer = true;\n script.src = scriptUrl;\n script.type = scriptType;\n\n script.onload = () => resolve();\n script.onerror = () => reject();\n\n document.body.appendChild(script);\n });\n}\n","export function count<T>(elements: Iterable<T>): number\n{\n if (\"length\" in elements) { return elements.length as number; }\n\n let _count = 0;\n for (const _ of elements) { _count += 1; }\n\n return _count;\n}\n\nexport function* range(start: number, end: number, step?: number): Iterable<number>\n{\n if (start > end) { step = step ?? -1; }\n else { step = step ?? 1; }\n\n for (let i = start; i < end; i += step) { yield i; }\n}\n\nexport function sum<T extends number>(elements: Iterable<T>): number\n{\n let _sum = 0;\n for (const value of elements) { _sum += value; }\n\n return _sum;\n}\n\nexport function unique<T>(elements: Iterable<T>): T[]\n{\n return [...new Set(elements)];\n}\n","export function hash(value: string): number\n{\n let hash = 0;\n for (let i = 0; i < value.length; i++)\n {\n const char = value.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0;\n }\n\n return hash;\n}\n","export function capitalize(value: string): string\n{\n return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n","export const VERSION = \"1.0.1\";\n\nexport { DeferredPromise, JsonStorage } from \"./models\";\nexport {\n capitalize,\n count,\n delay,\n hash,\n loadScript,\n nextAnimationFrame,\n range,\n sum,\n unique\n} from \"./utils\";\n\nexport type { Awaitable, PromiseExecutor, PromiseResolver, PromiseRejecter } from \"./types\";\n"],"names":["DeferredPromise","executor","resolve","reject","res","rej","__publicField","JsonStorage","preferPersistence","storage","propertyName","defaultValue","propertyValue","newValue","encodedValue","persistent","delay","milliseconds","nextAnimationFrame","loadScript","scriptUrl","scriptType","script","count","elements","_count","_","range","start","end","step","i","sum","_sum","value","unique","hash","char","capitalize","VERSION"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@byloth/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "An unopinionated collection of useful functions and classes that I use widely in all my projects. 🔧",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Core",
|
|
@@ -60,7 +60,6 @@
|
|
|
60
60
|
"@typescript-eslint/eslint-plugin": "^6.7.3",
|
|
61
61
|
"@typescript-eslint/parser": "^6.7.3",
|
|
62
62
|
"eslint": "^8.50.0",
|
|
63
|
-
"sass": "^1.68.0",
|
|
64
63
|
"typescript": "^5.2.2",
|
|
65
64
|
"vite": "^4.4.9"
|
|
66
65
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const VERSION = "1.0.
|
|
1
|
+
export const VERSION = "1.0.1";
|
|
2
2
|
|
|
3
3
|
export { DeferredPromise, JsonStorage } from "./models";
|
|
4
4
|
export {
|
|
@@ -13,4 +13,4 @@ export {
|
|
|
13
13
|
unique
|
|
14
14
|
} from "./utils";
|
|
15
15
|
|
|
16
|
-
export type { Awaitable } from "./types";
|
|
16
|
+
export type { Awaitable, PromiseExecutor, PromiseResolver, PromiseRejecter } from "./types";
|
package/src/types/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { Awaitable } from "./promise";
|
|
File without changes
|