taon-storage 18.0.8
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/assets/shared/shared_folder_info.txt +7 -0
- package/browser/README.md +24 -0
- package/browser/esm2022/lib/constants.mjs +30 -0
- package/browser/esm2022/lib/file-stor.mjs +56 -0
- package/browser/esm2022/lib/helpers.mjs +10 -0
- package/browser/esm2022/lib/index.mjs +4 -0
- package/browser/esm2022/lib/models.mjs +4 -0
- package/browser/esm2022/lib/storage.mjs +187 -0
- package/browser/esm2022/public-api.mjs +2 -0
- package/browser/esm2022/taon-storage.mjs +5 -0
- package/browser/fesm2022/taon-storage.mjs +235 -0
- package/browser/fesm2022/taon-storage.mjs.map +1 -0
- package/browser/index.d.ts +6 -0
- package/browser/lib/constants.d.ts +4 -0
- package/browser/lib/file-stor.d.ts +10 -0
- package/browser/lib/helpers.d.ts +3 -0
- package/browser/lib/index.d.ts +2 -0
- package/browser/lib/models.d.ts +11 -0
- package/browser/lib/storage.d.ts +33 -0
- package/browser/package.json +25 -0
- package/browser/public-api.d.ts +2 -0
- package/client/README.md +24 -0
- package/client/esm2022/lib/constants.mjs +30 -0
- package/client/esm2022/lib/file-stor.mjs +56 -0
- package/client/esm2022/lib/helpers.mjs +10 -0
- package/client/esm2022/lib/index.mjs +4 -0
- package/client/esm2022/lib/models.mjs +4 -0
- package/client/esm2022/lib/storage.mjs +187 -0
- package/client/esm2022/public-api.mjs +2 -0
- package/client/esm2022/taon-storage.mjs +5 -0
- package/client/fesm2022/taon-storage.mjs +235 -0
- package/client/fesm2022/taon-storage.mjs.map +1 -0
- package/client/index.d.ts +6 -0
- package/client/lib/constants.d.ts +4 -0
- package/client/lib/file-stor.d.ts +10 -0
- package/client/lib/helpers.d.ts +3 -0
- package/client/lib/index.d.ts +2 -0
- package/client/lib/models.d.ts +11 -0
- package/client/lib/storage.d.ts +33 -0
- package/client/public-api.d.ts +2 -0
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -0
- package/lib/build-info._auto-generated_.d.ts +1 -0
- package/lib/build-info._auto-generated_.js +5 -0
- package/lib/build-info._auto-generated_.js.map +1 -0
- package/lib/constants.d.ts +3 -0
- package/lib/constants.js +48 -0
- package/lib/constants.js.map +1 -0
- package/lib/file-stor.d.ts +9 -0
- package/lib/file-stor.js +94 -0
- package/lib/file-stor.js.map +1 -0
- package/lib/helpers.d.ts +2 -0
- package/lib/helpers.js +15 -0
- package/lib/helpers.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/lib/models.d.ts +10 -0
- package/lib/models.js +5 -0
- package/lib/models.js.map +1 -0
- package/lib/storage.d.ts +38 -0
- package/lib/storage.js +296 -0
- package/lib/storage.js.map +1 -0
- package/package.json +42 -0
- package/src.d.ts +6 -0
- package/taon.jsonc +30 -0
- package/tmp-environment.json +358 -0
- package/websql/README.md +24 -0
- package/websql/esm2022/lib/constants.mjs +30 -0
- package/websql/esm2022/lib/file-stor.mjs +56 -0
- package/websql/esm2022/lib/helpers.mjs +10 -0
- package/websql/esm2022/lib/index.mjs +4 -0
- package/websql/esm2022/lib/models.mjs +4 -0
- package/websql/esm2022/lib/storage.mjs +187 -0
- package/websql/esm2022/public-api.mjs +2 -0
- package/websql/esm2022/taon-storage.mjs +5 -0
- package/websql/fesm2022/taon-storage.mjs +235 -0
- package/websql/fesm2022/taon-storage.mjs.map +1 -0
- package/websql/index.d.ts +6 -0
- package/websql/lib/constants.d.ts +4 -0
- package/websql/lib/file-stor.d.ts +10 -0
- package/websql/lib/helpers.d.ts +3 -0
- package/websql/lib/index.d.ts +2 -0
- package/websql/lib/models.d.ts +11 -0
- package/websql/lib/storage.d.ts +33 -0
- package/websql/package.json +25 -0
- package/websql/public-api.d.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taon-storage.mjs","sources":["../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/helpers.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/constants.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/storage.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/lib/index.ts","../../../tmp-libs-for-dist/taon-storage/projects/taon-storage/src/taon-storage.ts"],"sourcesContent":["\n\n\nexport const keyValue = (classFun, memberName) => {\n\n const res = `taon.localstorage.class.${classFun.name}.prop.${memberName}`\n return res;\n}\n\nexport const keyDefaultValueAreadySet = (classFun, memberName) => {\n const res = keyValue(classFun, memberName) + 'defaultvalueisset';\n return res;\n}\n\n\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/helpers.ts","\n\n\nimport { Helpers, _ } from \"tnp-core/browser\";\n\nimport * as localForge from 'localforage';\n\n\n\n\nexport const storeName = 'taon-storage_'\n\n + window?.location.port;\n\n\n\n\nlet environment = {} as any;\n/* */\n/* */\n/* */\n \n\n// @ts-ignore\nenvironment = window['ENV'];\n\n\n\n\nconst websql = Helpers.isWebSQL ? 'websql' : '';\n\nexport const storLocalStorage = localForge.createInstance({\n driver: localForge.LOCALSTORAGE,\n storeName: [\n storeName,\n 'LOCALSTORAGE',\n _.kebabCase(environment?.currentProjectGenericName) + websql,\n ].join('_')\n , // + _.kebabCase(window.location.origin),\n}) as any; // TODO UNCOMMENT any\n\n\n\n\n\nexport const storIndexdDb = localForge.createInstance({\n driver: localForge.INDEXEDDB,\n storeName: [\n storeName,\n 'INDEXEDDB',\n _.kebabCase(environment?.currentProjectGenericName) + websql,\n ].join('_')\n}) as any; // TODO UNCOMMENT any\n\n\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/constants.ts","\n\n\nimport { _ } from 'tnp-core/browser';\nimport { keyDefaultValueAreadySet, keyValue } from './helpers';\nimport { Models } from './models';\nimport { FileStor } from './file-stor';\n\nimport { storIndexdDb, storLocalStorage } from './constants';\n\n\n\n\nconst AWAITING_INTERVAL_TIME = 200;\n\n\n\nexport function uncache<CLASS_FUNCTION = any>(onlyInThisComponentClass: CLASS_FUNCTION, propertyValueToDeleteFromCache: keyof CLASS_FUNCTION) {\n if (!onlyInThisComponentClass) { // @ts-ignore\n onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };\n }\n return Promise.all([\n\n storLocalStorage.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n storLocalStorage.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n storIndexdDb.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n storIndexdDb.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),\n\n ])\n}\n\n\nclass TaonStorage {\n\n\n private static pendingOperatins: Models.PendingOperation[] = [];\n private static id = 0;\n\n /**\n * TODO This is fine for now, but could be something smarter here\n */\n public static async awaitPendingOperatios(id = TaonStorage.id++): Promise<void> {\n\n if (id > Number.MAX_SAFE_INTEGER - 2) {\n TaonStorage.id = 0;\n id = TaonStorage.id++;\n }\n const pending = this.pendingOperatins as Models.PendingOperation[];\n const toDeleteIndex = [];\n for (let index = 0; index < pending.length; index++) {\n const op = pending[index] as Models.PendingOperation;\n\n if (!op.isDone) {\n await new Promise<void>(async (resovle, reject) => {\n setTimeout(async () => {\n await this.awaitPendingOperatios(id);\n resovle();\n }, AWAITING_INTERVAL_TIME)\n })\n return;\n } else {\n toDeleteIndex.push(index);\n }\n }\n for (let index = 0; index < toDeleteIndex.length; index++) {\n const toDelete = toDeleteIndex[index];\n pending.splice(toDelete, 1);\n }\n }\n\n static get property() {\n return new TaonStorage();\n }\n\n\n\n private onlyInThisComponentClass?: Function;\n private defaultValue: any;\n private engine: Models.StorgeEngine;\n\n\n\n/* */\n/* */\n \n\n\n\n\n public get in() {\n const that = this;\n return {\n get indexedb() {\n that.engine = 'indexeddb';\n return that as Omit<TaonStorage, 'in'>;\n },\n get localstorage() {\n that.engine = 'localstorage';\n return that as Omit<TaonStorage, 'in'>;\n },\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n }\n\n\n\n\n\n\n public for(onlyInThisComponentClass?: Function): Omit<TaonStorage, 'for' | 'in'> {\n this.onlyInThisComponentClass = onlyInThisComponentClass;\n return this as Omit<TaonStorage, 'for' | 'in'>;\n }\n\n\n\n\n public withDefaultValue(defaultValue?: any): any {\n\n return this.action(defaultValue, this.getEngine(), this.engine)\n }\n\n\n\n withOptions(options: {\n /**\n * default value\n */\n defaultValue?: any;\n transformFrom?: (valueFromDb: any) => any,\n transformTo?: (valueThatGetToDB: any) => any,\n }) {\n const { defaultValue, transformFrom, transformTo } = (options || {}) as any;\n return this.action(\n defaultValue ? defaultValue : this.defaultValue,\n this.getEngine(),\n this.engine,\n transformFrom,\n transformTo,\n );\n }\n\n\n\n\n\n\n\n private getEngine() {\n switch (this.engine) {\n\n case 'localstorage':\n return storLocalStorage;\n case 'indexeddb':\n return storIndexdDb;\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n }\n\n\n\n private endObserverAction(observe: Models.PendingOperation) {\n\n observe.isDone = true;\n }\n\n\n\n private action = (\n defaultValue: any,\n storageEngine\n\n : Models.StorType\n\n ,\n engine: Models.StorgeEngine,\n transformFrom?,\n transformTo?,\n ) => {\n if (!this.onlyInThisComponentClass) { // @ts-ignore\n this.onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };\n }\n\n return (target: any, memberName: string) => {\n let currentValue: any = target[memberName];\n\n const setItemDefaultValue = async () => {\n\n const observe = {\n engine,\n id: 'setting default value'\n } as Models.PendingOperation;\n TaonStorage.pendingOperatins.push(observe);\n\n await new Promise<void>((resolve, reject) => {\n storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {\n\n currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;\n\n resolve();\n this.endObserverAction(observe);\n })\n });\n\n }\n\n if (defaultValue !== void 0) {\n\n const observe = {\n engine,\n id: 'setting not rivial default value'\n } as Models.PendingOperation;\n TaonStorage.pendingOperatins.push(observe);\n\n (new Promise<void>((resolve, reject) => {\n storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {\n\n if (val) {\n await setItemDefaultValue();\n resolve()\n } else {\n await new Promise<void>((res, rej) => {\n storageEngine.setItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), true, (err, v) => {\n res();\n })\n });\n\n await new Promise<void>((res, rej) => {\n storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName),\n transformTo ? transformTo(defaultValue) : defaultValue, (err, val) => {\n res();\n })\n });\n\n currentValue = defaultValue;\n\n resolve()\n }\n });\n })).then(() => {\n this.endObserverAction(observe);\n });\n\n\n } else {\n setItemDefaultValue();\n }\n\n Object.defineProperty(target, memberName, {\n set: (newValue: any) => {\n\n const observe = {\n engine,\n id: 'setting in SET not rivial default value'\n } as Models.PendingOperation;\n TaonStorage.pendingOperatins.push(observe);\n\n (new Promise<void>((resolve, reject) => {\n storageEngine.setItem(\n keyValue(this.onlyInThisComponentClass, memberName),\n transformTo ? transformTo(newValue) : newValue,\n (err, savedValue) => {\n resolve();\n }\n );\n })).then(() => {\n this.endObserverAction(observe);\n });\n\n currentValue = newValue;\n },\n get: () => currentValue,\n });\n };\n };\n\n\n\n\n}\n\nexport const Stor = TaonStorage;\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/storage.ts","\n\nexport * from './storage';\n\n ;({}); // @--end-of-file-for-module=taon-storage lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Models } from "./models";
|
|
3
|
+
export declare class FileStor implements Models.StorType {
|
|
4
|
+
private filePath;
|
|
5
|
+
private useJSON;
|
|
6
|
+
constructor(filePath: string, useJSON?: boolean);
|
|
7
|
+
setItem<T>(key: string, value: T, callback?: (err: any, value: T) => void): Promise<T>;
|
|
8
|
+
getItem<T>(key: string, callback?: (err: any, value: T) => void): Promise<T>;
|
|
9
|
+
removeItem(key: string, callback?: (err: any) => void): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import type { storIndexdDb } from "./constants";
|
|
3
|
+
export declare namespace Models {
|
|
4
|
+
type StorType = Partial<(typeof storIndexdDb)>;
|
|
5
|
+
interface PendingOperation {
|
|
6
|
+
engine: StorgeEngine;
|
|
7
|
+
id: string;
|
|
8
|
+
isDone: boolean;
|
|
9
|
+
}
|
|
10
|
+
type StorgeEngine = 'localstorage' | 'indexeddb';
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
export declare function uncache<CLASS_FUNCTION = any>(onlyInThisComponentClass: CLASS_FUNCTION, propertyValueToDeleteFromCache: keyof CLASS_FUNCTION): Promise<[any, any, any, any]>;
|
|
3
|
+
declare class TaonStorage {
|
|
4
|
+
private static pendingOperatins;
|
|
5
|
+
private static id;
|
|
6
|
+
/**
|
|
7
|
+
* TODO This is fine for now, but could be something smarter here
|
|
8
|
+
*/
|
|
9
|
+
static awaitPendingOperatios(id?: number): Promise<void>;
|
|
10
|
+
static get property(): TaonStorage;
|
|
11
|
+
private onlyInThisComponentClass?;
|
|
12
|
+
private defaultValue;
|
|
13
|
+
private engine;
|
|
14
|
+
get in(): {
|
|
15
|
+
readonly indexedb: Omit<TaonStorage, "in">;
|
|
16
|
+
readonly localstorage: Omit<TaonStorage, "in">;
|
|
17
|
+
};
|
|
18
|
+
for(onlyInThisComponentClass?: Function): Omit<TaonStorage, 'for' | 'in'>;
|
|
19
|
+
withDefaultValue(defaultValue?: any): any;
|
|
20
|
+
withOptions(options: {
|
|
21
|
+
/**
|
|
22
|
+
* default value
|
|
23
|
+
*/
|
|
24
|
+
defaultValue?: any;
|
|
25
|
+
transformFrom?: (valueFromDb: any) => any;
|
|
26
|
+
transformTo?: (valueThatGetToDB: any) => any;
|
|
27
|
+
}): (target: any, memberName: string) => void;
|
|
28
|
+
private getEngine;
|
|
29
|
+
private endObserverAction;
|
|
30
|
+
private action;
|
|
31
|
+
}
|
|
32
|
+
export declare const Stor: typeof TaonStorage;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "taon-storage",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^13.2.0",
|
|
6
|
+
"@angular/core": "^13.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"module": "fesm2022/taon-storage.mjs",
|
|
12
|
+
"typings": "index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
"./package.json": {
|
|
15
|
+
"default": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./index.d.ts",
|
|
19
|
+
"esm2022": "./esm2022/taon-storage.mjs",
|
|
20
|
+
"esm": "./esm2022/taon-storage.mjs",
|
|
21
|
+
"default": "./fesm2022/taon-storage.mjs"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"sideEffects": false
|
|
25
|
+
}
|
package/client/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# MyLib
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
|
8
|
+
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Helpers, _ } from "tnp-core/browser";
|
|
2
|
+
import * as localForge from 'localforage';
|
|
3
|
+
export const storeName = 'taon-storage_'
|
|
4
|
+
+ window?.location.port;
|
|
5
|
+
let environment = {};
|
|
6
|
+
/* */
|
|
7
|
+
/* */
|
|
8
|
+
/* */
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
environment = window['ENV'];
|
|
11
|
+
const websql = Helpers.isWebSQL ? 'websql' : '';
|
|
12
|
+
export const storLocalStorage = localForge.createInstance({
|
|
13
|
+
driver: localForge.LOCALSTORAGE,
|
|
14
|
+
storeName: [
|
|
15
|
+
storeName,
|
|
16
|
+
'LOCALSTORAGE',
|
|
17
|
+
_.kebabCase(environment?.currentProjectGenericName) + websql,
|
|
18
|
+
].join('_'), // + _.kebabCase(window.location.origin),
|
|
19
|
+
}); // TODO UNCOMMENT any
|
|
20
|
+
export const storIndexdDb = localForge.createInstance({
|
|
21
|
+
driver: localForge.INDEXEDDB,
|
|
22
|
+
storeName: [
|
|
23
|
+
storeName,
|
|
24
|
+
'INDEXEDDB',
|
|
25
|
+
_.kebabCase(environment?.currentProjectGenericName) + websql,
|
|
26
|
+
].join('_')
|
|
27
|
+
}); // TODO UNCOMMENT any
|
|
28
|
+
;
|
|
29
|
+
({}); // @--end-of-file-for-module=taon-storage lib/constants.ts
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBSzFDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxlQUFlO01BRXBDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO0FBSzFCLElBQUksV0FBVyxHQUFHLEVBQVMsQ0FBQztBQUM1QixLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHTCxhQUFhO0FBQ2IsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUs1QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxVQUFVLENBQUMsWUFBWTtJQUMvQixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsY0FBYztRQUNkLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDLEdBQUcsTUFBTTtLQUM3RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDVCx5Q0FBeUM7Q0FDNUMsQ0FBUSxDQUFDLENBQUMscUJBQXFCO0FBTWhDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3BELE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUztJQUM1QixTQUFTLEVBQUU7UUFDVCxTQUFTO1FBQ1QsV0FBVztRQUNYLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLHlCQUF5QixDQUFDLEdBQUcsTUFBTTtLQUM3RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Q0FDWixDQUFRLENBQUMsQ0FBQyxxQkFBcUI7QUFJL0IsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwREFBMEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBIZWxwZXJzLCBfIH0gZnJvbSBcInRucC1jb3JlL2Jyb3dzZXJcIjtcblxuaW1wb3J0ICogYXMgbG9jYWxGb3JnZSBmcm9tICdsb2NhbGZvcmFnZSc7XG5cblxuXG5cbmV4cG9ydCBjb25zdCBzdG9yZU5hbWUgPSAndGFvbi1zdG9yYWdlXydcblxuICArIHdpbmRvdz8ubG9jYXRpb24ucG9ydDtcblxuXG5cblxubGV0IGVudmlyb25tZW50ID0ge30gYXMgYW55O1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLy8gQHRzLWlnbm9yZVxuZW52aXJvbm1lbnQgPSB3aW5kb3dbJ0VOViddO1xuXG5cblxuXG5jb25zdCB3ZWJzcWwgPSBIZWxwZXJzLmlzV2ViU1FMID8gJ3dlYnNxbCcgOiAnJztcblxuZXhwb3J0IGNvbnN0IHN0b3JMb2NhbFN0b3JhZ2UgPSBsb2NhbEZvcmdlLmNyZWF0ZUluc3RhbmNlKHtcbiAgZHJpdmVyOiBsb2NhbEZvcmdlLkxPQ0FMU1RPUkFHRSxcbiAgc3RvcmVOYW1lOiBbXG4gICAgc3RvcmVOYW1lLFxuICAgICdMT0NBTFNUT1JBR0UnLFxuICAgIF8ua2ViYWJDYXNlKGVudmlyb25tZW50Py5jdXJyZW50UHJvamVjdEdlbmVyaWNOYW1lKSArIHdlYnNxbCxcbiAgXS5qb2luKCdfJylcbiAgLCAvLyArIF8ua2ViYWJDYXNlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pLFxufSkgYXMgYW55OyAvLyBUT0RPIFVOQ09NTUVOVCBhbnlcblxuXG5cblxuXG5leHBvcnQgY29uc3Qgc3RvckluZGV4ZERiID0gbG9jYWxGb3JnZS5jcmVhdGVJbnN0YW5jZSh7XG4gIGRyaXZlcjogbG9jYWxGb3JnZS5JTkRFWEVEREIsXG4gIHN0b3JlTmFtZTogW1xuICAgIHN0b3JlTmFtZSxcbiAgICAnSU5ERVhFRERCJyxcbiAgICBfLmtlYmFiQ2FzZShlbnZpcm9ubWVudD8uY3VycmVudFByb2plY3RHZW5lcmljTmFtZSkgKyB3ZWJzcWwsXG4gIF0uam9pbignXycpXG59KSBhcyBhbnk7IC8vIFRPRE8gVU5DT01NRU5UIGFueVxuXG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvY29uc3RhbnRzLnRzIl19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export class FileStor {
|
|
2
|
+
constructor(filePath, useJSON = false) {
|
|
3
|
+
this.filePath = filePath;
|
|
4
|
+
this.useJSON = useJSON;
|
|
5
|
+
}
|
|
6
|
+
async setItem(key, value, callback) {
|
|
7
|
+
/* */
|
|
8
|
+
/* */
|
|
9
|
+
/* */
|
|
10
|
+
/* */
|
|
11
|
+
/* */
|
|
12
|
+
/* */
|
|
13
|
+
/* */
|
|
14
|
+
/* */
|
|
15
|
+
/* */
|
|
16
|
+
/* */
|
|
17
|
+
/* */
|
|
18
|
+
/* */
|
|
19
|
+
/* */
|
|
20
|
+
/* */
|
|
21
|
+
/* */
|
|
22
|
+
return (void 0);
|
|
23
|
+
}
|
|
24
|
+
async getItem(key, callback) {
|
|
25
|
+
/* */
|
|
26
|
+
/* */
|
|
27
|
+
/* */
|
|
28
|
+
/* */
|
|
29
|
+
/* */
|
|
30
|
+
/* */
|
|
31
|
+
/* */
|
|
32
|
+
/* */
|
|
33
|
+
/* */
|
|
34
|
+
/* */
|
|
35
|
+
/* */
|
|
36
|
+
/* */
|
|
37
|
+
/* */
|
|
38
|
+
/* */
|
|
39
|
+
return (void 0);
|
|
40
|
+
}
|
|
41
|
+
async removeItem(key, callback) {
|
|
42
|
+
/* */
|
|
43
|
+
/* */
|
|
44
|
+
/* */
|
|
45
|
+
/* */
|
|
46
|
+
/* */
|
|
47
|
+
/* */
|
|
48
|
+
/* */
|
|
49
|
+
/* */
|
|
50
|
+
/* */
|
|
51
|
+
return (void 0);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
;
|
|
55
|
+
({}); // @--end-of-file-for-module=taon-storage lib/file-stor.ts
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvbGliL2ZpbGUtc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sUUFBUTtJQUtuQixZQUNVLFFBQWdCLEVBQ2hCLFVBQVUsS0FBSztRQURmLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUNyQixDQUFDO0lBRUwsS0FBSyxDQUFDLE9BQU8sQ0FBSSxHQUFXLEVBQUUsS0FBUSxFQUFFLFFBQXVDO1FBQ2pGLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxDQUFJLEdBQVcsRUFBRSxRQUF1QztRQUN2RSxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUE2QjtRQUM3RCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFJQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSBcInRucC1jb3JlL2Jyb3dzZXJcIjtcbmltcG9ydCB7IE1vZGVscyB9IGZyb20gXCIuL21vZGVsc1wiO1xuXG5cbmV4cG9ydCBjbGFzcyBGaWxlU3RvclxuXG4gIGltcGxlbWVudHMgTW9kZWxzLlN0b3JUeXBlXG5cbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaWxlUGF0aDogc3RyaW5nLFxuICAgIHByaXZhdGUgdXNlSlNPTiA9IGZhbHNlXG4gICkgeyB9XG5cbiAgYXN5bmMgc2V0SXRlbTxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQsIGNhbGxiYWNrPzogKGVycjogYW55LCB2YWx1ZTogVCkgPT4gdm9pZCk6IFByb21pc2U8VD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBhc3luYyBnZXRJdGVtPFQ+KGtleTogc3RyaW5nLCBjYWxsYmFjaz86IChlcnI6IGFueSwgdmFsdWU6IFQpID0+IHZvaWQpOiBQcm9taXNlPFQ+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBhc3luYyByZW1vdmVJdGVtKGtleTogc3RyaW5nLCBjYWxsYmFjaz86IChlcnI6IGFueSkgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxufVxuXG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvZmlsZS1zdG9yLnRzIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const keyValue = (classFun, memberName) => {
|
|
2
|
+
const res = `taon.localstorage.class.${classFun.name}.prop.${memberName}`;
|
|
3
|
+
return res;
|
|
4
|
+
};
|
|
5
|
+
export const keyDefaultValueAreadySet = (classFun, memberName) => {
|
|
6
|
+
const res = keyValue(classFun, memberName) + 'defaultvalueisset';
|
|
7
|
+
return res;
|
|
8
|
+
};
|
|
9
|
+
({}); // @--end-of-file-for-module=taon-storage lib/helpers.ts
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tc3RvcmFnZS9wcm9qZWN0cy90YW9uLXN0b3JhZ2Uvc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFBRTtJQUUvQyxNQUFNLEdBQUcsR0FBRywyQkFBMkIsUUFBUSxDQUFDLElBQUksU0FBUyxVQUFVLEVBQUUsQ0FBQTtJQUN6RSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQy9ELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsbUJBQW1CLENBQUM7SUFDakUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBSUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuZXhwb3J0IGNvbnN0IGtleVZhbHVlID0gKGNsYXNzRnVuLCBtZW1iZXJOYW1lKSA9PiB7XG5cbiAgY29uc3QgcmVzID0gYHRhb24ubG9jYWxzdG9yYWdlLmNsYXNzLiR7Y2xhc3NGdW4ubmFtZX0ucHJvcC4ke21lbWJlck5hbWV9YFxuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgY29uc3Qga2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0ID0gKGNsYXNzRnVuLCBtZW1iZXJOYW1lKSA9PiB7XG4gIGNvbnN0IHJlcyA9IGtleVZhbHVlKGNsYXNzRnVuLCBtZW1iZXJOYW1lKSArICdkZWZhdWx0dmFsdWVpc3NldCc7XG4gIHJldHVybiByZXM7XG59XG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi1zdG9yYWdlIGxpYi9oZWxwZXJzLnRzIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './storage';
|
|
2
|
+
;
|
|
3
|
+
({}); // @--end-of-file-for-module=taon-storage lib/index.ts
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uLXN0b3JhZ2UvcHJvamVjdHMvdGFvbi1zdG9yYWdlL3NyYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxXQUFXLENBQUM7QUFFekIsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzREFBc0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlJztcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvaW5kZXgudHMiXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
;
|
|
2
|
+
({}); // @--end-of-file-for-module=taon-storage lib/models.ts
|
|
3
|
+
export {};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQkMsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgdHlwZSB7IHN0b3JJbmRleGREYiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5cbmV4cG9ydCBuYW1lc3BhY2UgTW9kZWxzIHtcblxuXG4gIGV4cG9ydCB0eXBlIFN0b3JUeXBlID0gUGFydGlhbDwodHlwZW9mIHN0b3JJbmRleGREYik+O1xuXG5cbiAgZXhwb3J0IGludGVyZmFjZSBQZW5kaW5nT3BlcmF0aW9uIHtcbiAgICBlbmdpbmU6IFN0b3JnZUVuZ2luZTtcbiAgICBpZDogc3RyaW5nO1xuICAgIGlzRG9uZTogYm9vbGVhbjtcblxuXG5cblxuICB9XG5cbiAgZXhwb3J0IHR5cGUgU3RvcmdlRW5naW5lID0gJ2xvY2Fsc3RvcmFnZSdcbiAgICB8ICdpbmRleGVkZGInXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIDtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tc3RvcmFnZSBsaWIvbW9kZWxzLnRzIl19
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { keyDefaultValueAreadySet, keyValue } from './helpers';
|
|
2
|
+
import { storIndexdDb, storLocalStorage } from './constants';
|
|
3
|
+
const AWAITING_INTERVAL_TIME = 200;
|
|
4
|
+
export function uncache(onlyInThisComponentClass, propertyValueToDeleteFromCache) {
|
|
5
|
+
if (!onlyInThisComponentClass) { // @ts-ignore
|
|
6
|
+
onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
|
|
7
|
+
}
|
|
8
|
+
return Promise.all([
|
|
9
|
+
storLocalStorage.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
|
|
10
|
+
storLocalStorage.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
|
|
11
|
+
storIndexdDb.removeItem(keyValue(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
|
|
12
|
+
storIndexdDb.removeItem(keyDefaultValueAreadySet(onlyInThisComponentClass, propertyValueToDeleteFromCache)),
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
class TaonStorage {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.action = (defaultValue, storageEngine, engine, transformFrom, transformTo) => {
|
|
18
|
+
if (!this.onlyInThisComponentClass) { // @ts-ignore
|
|
19
|
+
this.onlyInThisComponentClass = { name: '__GLOBAL_NAMESPACE__' };
|
|
20
|
+
}
|
|
21
|
+
return (target, memberName) => {
|
|
22
|
+
let currentValue = target[memberName];
|
|
23
|
+
const setItemDefaultValue = async () => {
|
|
24
|
+
const observe = {
|
|
25
|
+
engine,
|
|
26
|
+
id: 'setting default value'
|
|
27
|
+
};
|
|
28
|
+
TaonStorage.pendingOperatins.push(observe);
|
|
29
|
+
await new Promise((resolve, reject) => {
|
|
30
|
+
storageEngine.getItem(keyValue(this.onlyInThisComponentClass, memberName), (err, valFromDb) => {
|
|
31
|
+
currentValue = transformFrom ? transformFrom(valFromDb) : valFromDb;
|
|
32
|
+
resolve();
|
|
33
|
+
this.endObserverAction(observe);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
if (defaultValue !== void 0) {
|
|
38
|
+
const observe = {
|
|
39
|
+
engine,
|
|
40
|
+
id: 'setting not rivial default value'
|
|
41
|
+
};
|
|
42
|
+
TaonStorage.pendingOperatins.push(observe);
|
|
43
|
+
(new Promise((resolve, reject) => {
|
|
44
|
+
storageEngine.getItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), async (err, val) => {
|
|
45
|
+
if (val) {
|
|
46
|
+
await setItemDefaultValue();
|
|
47
|
+
resolve();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await new Promise((res, rej) => {
|
|
51
|
+
storageEngine.setItem(keyDefaultValueAreadySet(this.onlyInThisComponentClass, memberName), true, (err, v) => {
|
|
52
|
+
res();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
await new Promise((res, rej) => {
|
|
56
|
+
storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName), transformTo ? transformTo(defaultValue) : defaultValue, (err, val) => {
|
|
57
|
+
res();
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
currentValue = defaultValue;
|
|
61
|
+
resolve();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
})).then(() => {
|
|
65
|
+
this.endObserverAction(observe);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
setItemDefaultValue();
|
|
70
|
+
}
|
|
71
|
+
Object.defineProperty(target, memberName, {
|
|
72
|
+
set: (newValue) => {
|
|
73
|
+
const observe = {
|
|
74
|
+
engine,
|
|
75
|
+
id: 'setting in SET not rivial default value'
|
|
76
|
+
};
|
|
77
|
+
TaonStorage.pendingOperatins.push(observe);
|
|
78
|
+
(new Promise((resolve, reject) => {
|
|
79
|
+
storageEngine.setItem(keyValue(this.onlyInThisComponentClass, memberName), transformTo ? transformTo(newValue) : newValue, (err, savedValue) => {
|
|
80
|
+
resolve();
|
|
81
|
+
});
|
|
82
|
+
})).then(() => {
|
|
83
|
+
this.endObserverAction(observe);
|
|
84
|
+
});
|
|
85
|
+
currentValue = newValue;
|
|
86
|
+
},
|
|
87
|
+
get: () => currentValue,
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
static { this.pendingOperatins = []; }
|
|
93
|
+
static { this.id = 0; }
|
|
94
|
+
/**
|
|
95
|
+
* TODO This is fine for now, but could be something smarter here
|
|
96
|
+
*/
|
|
97
|
+
static async awaitPendingOperatios(id = TaonStorage.id++) {
|
|
98
|
+
if (id > Number.MAX_SAFE_INTEGER - 2) {
|
|
99
|
+
TaonStorage.id = 0;
|
|
100
|
+
id = TaonStorage.id++;
|
|
101
|
+
}
|
|
102
|
+
const pending = this.pendingOperatins;
|
|
103
|
+
const toDeleteIndex = [];
|
|
104
|
+
for (let index = 0; index < pending.length; index++) {
|
|
105
|
+
const op = pending[index];
|
|
106
|
+
if (!op.isDone) {
|
|
107
|
+
await new Promise(async (resovle, reject) => {
|
|
108
|
+
setTimeout(async () => {
|
|
109
|
+
await this.awaitPendingOperatios(id);
|
|
110
|
+
resovle();
|
|
111
|
+
}, AWAITING_INTERVAL_TIME);
|
|
112
|
+
});
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
toDeleteIndex.push(index);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
for (let index = 0; index < toDeleteIndex.length; index++) {
|
|
120
|
+
const toDelete = toDeleteIndex[index];
|
|
121
|
+
pending.splice(toDelete, 1);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
static get property() {
|
|
125
|
+
return new TaonStorage();
|
|
126
|
+
}
|
|
127
|
+
/* */
|
|
128
|
+
/* */
|
|
129
|
+
get in() {
|
|
130
|
+
const that = this;
|
|
131
|
+
return {
|
|
132
|
+
get indexedb() {
|
|
133
|
+
that.engine = 'indexeddb';
|
|
134
|
+
return that;
|
|
135
|
+
},
|
|
136
|
+
get localstorage() {
|
|
137
|
+
that.engine = 'localstorage';
|
|
138
|
+
return that;
|
|
139
|
+
},
|
|
140
|
+
/* */
|
|
141
|
+
/* */
|
|
142
|
+
/* */
|
|
143
|
+
/* */
|
|
144
|
+
/* */
|
|
145
|
+
/* */
|
|
146
|
+
/* */
|
|
147
|
+
/* */
|
|
148
|
+
/* */
|
|
149
|
+
/* */
|
|
150
|
+
/* */
|
|
151
|
+
/* */
|
|
152
|
+
/* */
|
|
153
|
+
/* */
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
for(onlyInThisComponentClass) {
|
|
157
|
+
this.onlyInThisComponentClass = onlyInThisComponentClass;
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
withDefaultValue(defaultValue) {
|
|
161
|
+
return this.action(defaultValue, this.getEngine(), this.engine);
|
|
162
|
+
}
|
|
163
|
+
withOptions(options) {
|
|
164
|
+
const { defaultValue, transformFrom, transformTo } = (options || {});
|
|
165
|
+
return this.action(defaultValue ? defaultValue : this.defaultValue, this.getEngine(), this.engine, transformFrom, transformTo);
|
|
166
|
+
}
|
|
167
|
+
getEngine() {
|
|
168
|
+
switch (this.engine) {
|
|
169
|
+
case 'localstorage':
|
|
170
|
+
return storLocalStorage;
|
|
171
|
+
case 'indexeddb':
|
|
172
|
+
return storIndexdDb;
|
|
173
|
+
/* */
|
|
174
|
+
/* */
|
|
175
|
+
/* */
|
|
176
|
+
/* */
|
|
177
|
+
/* */
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
endObserverAction(observe) {
|
|
181
|
+
observe.isDone = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export const Stor = TaonStorage;
|
|
185
|
+
;
|
|
186
|
+
({}); // @--end-of-file-for-module=taon-storage lib/storage.ts
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tc3RvcmFnZS9wcm9qZWN0cy90YW9uLXN0b3JhZ2Uvc3JjL2xpYi9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs3RCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUluQyxNQUFNLFVBQVUsT0FBTyxDQUF1Qix3QkFBd0MsRUFBRSw4QkFBb0Q7SUFDMUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxhQUFhO1FBQzVDLHdCQUF3QixHQUFHLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUVqQixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDL0YsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDL0csWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUMzRixZQUFZLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixFQUFFLDhCQUE4QixDQUFDLENBQUM7S0FFNUcsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUdELE1BQU0sV0FBVztJQUFqQjtRQTRKVSxXQUFNLEdBQUcsQ0FDZixZQUFpQixFQUNqQixhQUVtQixFQUduQixNQUEyQixFQUMzQixhQUFjLEVBQ2QsV0FBWSxFQUNaLEVBQUU7WUFDRixJQUFJLENBQUMs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LElBQUksQ0FBQyxNQUFNLENBQ2hCLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQ1gsYUFBYSxFQUNiLFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQVFPLFNBQVM7UUFDZixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVwQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sWUFBWSxDQUFDO1lBRTVCLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1FBRUQsQ0FBQztJQUNILENBQUM7SUFJTyxpQkFBaUIsQ0FBQyxPQUFnQztRQUV4RCxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDOztBQXFISCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBRS9CLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0RBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsga2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0LCBrZXlWYWx1ZSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBNb2RlbHMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBGaWxlU3RvciB9IGZyb20gJy4vZmlsZS1zdG9yJztcblxuaW1wb3J0IHsgc3RvckluZGV4ZERiLCBzdG9yTG9jYWxTdG9yYWdlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5cblxuXG5jb25zdCBBV0FJVElOR19JTlRFUlZBTF9USU1FID0gMjAwO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIHVuY2FjaGU8Q0xBU1NfRlVOQ1RJT04gPSBhbnk+KG9ubHlJblRoaXNDb21wb25lbnRDbGFzczogQ0xBU1NfRlVOQ1RJT04sIHByb3BlcnR5VmFsdWVUb0RlbGV0ZUZyb21DYWNoZToga2V5b2YgQ0xBU1NfRlVOQ1RJT04pIHtcbiAgaWYgKCFvbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MpIHsgLy8gQHRzLWlnbm9yZVxuICAgIG9ubHlJblRoaXNDb21wb25lbnRDbGFzcyA9IHsgbmFtZTogJ19fR0xPQkFMX05BTUVTUEFDRV9fJyB9O1xuICB9XG4gIHJldHVybiBQcm9taXNlLmFsbChbXG5cbiAgICBzdG9yTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5VmFsdWUob25seUluVGhpc0NvbXBvbmVudENsYXNzLCBwcm9wZXJ0eVZhbHVlVG9EZWxldGVGcm9tQ2FjaGUpKSxcbiAgICBzdG9yTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0KG9ubHlJblRoaXNDb21wb25lbnRDbGFzcywgcHJvcGVydHlWYWx1ZVRvRGVsZXRlRnJvbUNhY2hlKSksXG4gICAgc3RvckluZGV4ZERiLnJlbW92ZUl0ZW0oa2V5VmFsdWUob25seUluVGhpc0NvbXBvbmVudENsYXNzLCBwcm9wZXJ0eVZhbHVlVG9EZWxldGVGcm9tQ2FjaGUpKSxcbiAgICBzdG9ySW5kZXhkRGIucmVtb3ZlSXRlbShrZXlEZWZhdWx0VmFsdWVBcmVhZHlTZXQob25seUluVGhpc0NvbXBvbmVudENsYXNzLCBwcm9wZXJ0eVZhbHVlVG9EZWxldGVGcm9tQ2FjaGUpKSxcblxuICBdKVxufVxuXG5cbmNsYXNzIFRhb25TdG9yYWdlIHtcblxuXG4gIHByaXZhdGUgc3RhdGljIHBlbmRpbmdPcGVyYXRpbnM6IE1vZGVscy5QZW5kaW5nT3BlcmF0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgaWQgPSAwO1xuXG4gIC8qKlxuICAgKiBUT0RPIFRoaXMgaXMgZmluZSBmb3Igbm93LCBidXQgY291bGQgYmUgc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBhd2FpdFBlbmRpbmdPcGVyYXRpb3MoaWQgPSBUYW9uU3RvcmFnZS5pZCsrKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICBpZiAoaWQgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAtIDIpIHtcbiAgICAgIFRhb25TdG9yYWdlLmlkID0gMDtcbiAgICAgIGlkID0gVGFvblN0b3JhZ2UuaWQrKztcbiAgICB9XG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMucGVuZGluZ09wZXJhdGlucyBhcyBNb2RlbHMuUGVuZGluZ09wZXJhdGlvbltdO1xuICAgIGNvbnN0IHRvRGVsZXRlSW5kZXggPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGVuZGluZy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG9wID0gcGVuZGluZ1tpbmRleF0gYXMgTW9kZWxzLlBlbmRpbmdPcGVyYXRpb247XG5cbiAgICAgIGlmICghb3AuaXNEb25lKSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvdmxlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXdhaXRQZW5kaW5nT3BlcmF0aW9zKGlkKTtcbiAgICAgICAgICAgIHJlc292bGUoKTtcbiAgICAgICAgICB9LCBBV0FJVElOR19JTlRFUlZBTF9USU1FKVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b0RlbGV0ZUluZGV4LnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdG9EZWxldGVJbmRleC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHRvRGVsZXRlID0gdG9EZWxldGVJbmRleFtpbmRleF07XG4gICAgICBwZW5kaW5nLnNwbGljZSh0b0RlbGV0ZSwgMSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gbmV3IFRhb25TdG9yYWdlKCk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBvbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3M/OiBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBlbmdpbmU6IE1vZGVscy5TdG9yZ2VFbmdpbmU7XG5cblxuXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG5cbiAgcHVibGljIGdldCBpbigpIHtcbiAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0IGluZGV4ZWRiKCkge1xuICAgICAgICB0aGF0LmVuZ2luZSA9ICdpbmRleGVkZGInO1xuICAgICAgICByZXR1cm4gdGhhdCBhcyBPbWl0PFRhb25TdG9yYWdlLCAnaW4nPjtcbiAgICAgIH0sXG4gICAgICBnZXQgbG9jYWxzdG9yYWdlKCkge1xuICAgICAgICB0aGF0LmVuZ2luZSA9ICdsb2NhbHN0b3JhZ2UnO1xuICAgICAgICByZXR1cm4gdGhhdCBhcyBPbWl0PFRhb25TdG9yYWdlLCAnaW4nPjtcbiAgICAgIH0sXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgfVxuICB9XG5cblxuXG5cblxuXG4gIHB1YmxpYyBmb3Iob25seUluVGhpc0NvbXBvbmVudENsYXNzPzogRnVuY3Rpb24pOiBPbWl0PFRhb25TdG9yYWdlLCAnZm9yJyB8ICdpbic+IHtcbiAgICB0aGlzLm9ubHlJblRoaXNDb21wb25lbnRDbGFzcyA9IG9ubHlJblRoaXNDb21wb25lbnRDbGFzcztcbiAgICByZXR1cm4gdGhpcyBhcyBPbWl0PFRhb25TdG9yYWdlLCAnZm9yJyB8ICdpbic+O1xuICB9XG5cblxuXG5cbiAgcHVibGljIHdpdGhEZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlPzogYW55KTogYW55IHtcblxuICAgIHJldHVybiB0aGlzLmFjdGlvbihkZWZhdWx0VmFsdWUsIHRoaXMuZ2V0RW5naW5lKCksIHRoaXMuZW5naW5lKVxuICB9XG5cblxuXG4gIHdpdGhPcHRpb25zKG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0IHZhbHVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYW55O1xuICAgIHRyYW5zZm9ybUZyb20/OiAodmFsdWVGcm9tRGI6IGFueSkgPT4gYW55LFxuICAgIHRyYW5zZm9ybVRvPzogKHZhbHVlVGhhdEdldFRvREI6IGFueSkgPT4gYW55LFxuICB9KSB7XG4gICAgY29uc3QgeyBkZWZhdWx0VmFsdWUsIHRyYW5zZm9ybUZyb20sIHRyYW5zZm9ybVRvIH0gPSAob3B0aW9ucyB8fCB7fSkgYXMgYW55O1xuICAgIHJldHVybiB0aGlzLmFjdGlvbihcbiAgICAgIGRlZmF1bHRWYWx1ZSA/IGRlZmF1bHRWYWx1ZSA6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgdGhpcy5nZXRFbmdpbmUoKSxcbiAgICAgIHRoaXMuZW5naW5lLFxuICAgICAgdHJhbnNmb3JtRnJvbSxcbiAgICAgIHRyYW5zZm9ybVRvLFxuICAgICk7XG4gIH1cblxuXG5cblxuXG5cblxuICBwcml2YXRlIGdldEVuZ2luZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuZW5naW5lKSB7XG5cbiAgICAgIGNhc2UgJ2xvY2Fsc3RvcmFnZSc6XG4gICAgICAgIHJldHVybiBzdG9yTG9jYWxTdG9yYWdlO1xuICAgICAgY2FzZSAnaW5kZXhlZGRiJzpcbiAgICAgICAgcmV0dXJuIHN0b3JJbmRleGREYjtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIH1cbiAgfVxuXG5cblxuICBwcml2YXRlIGVuZE9ic2VydmVyQWN0aW9uKG9ic2VydmU6IE1vZGVscy5QZW5kaW5nT3BlcmF0aW9uKSB7XG5cbiAgICBvYnNlcnZlLmlzRG9uZSA9IHRydWU7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBhY3Rpb24gPSAoXG4gICAgZGVmYXVsdFZhbHVlOiBhbnksXG4gICAgc3RvcmFnZUVuZ2luZVxuXG4gICAgICA6IE1vZGVscy5TdG9yVHlwZVxuXG4gICAgLFxuICAgIGVuZ2luZTogTW9kZWxzLlN0b3JnZUVuZ2luZSxcbiAgICB0cmFuc2Zvcm1Gcm9tPyxcbiAgICB0cmFuc2Zvcm1Ubz8sXG4gICkgPT4ge1xuICAgIGlmICghdGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MpIHsgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MgPSB7IG5hbWU6ICdfX0dMT0JBTF9OQU1FU1BBQ0VfXycgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBtZW1iZXJOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBjdXJyZW50VmFsdWU6IGFueSA9IHRhcmdldFttZW1iZXJOYW1lXTtcblxuICAgICAgY29uc3Qgc2V0SXRlbURlZmF1bHRWYWx1ZSA9IGFzeW5jICgpID0+IHtcblxuICAgICAgICBjb25zdCBvYnNlcnZlID0ge1xuICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICBpZDogJ3NldHRpbmcgZGVmYXVsdCB2YWx1ZSdcbiAgICAgICAgfSBhcyBNb2RlbHMuUGVuZGluZ09wZXJhdGlvbjtcbiAgICAgICAgVGFvblN0b3JhZ2UucGVuZGluZ09wZXJhdGlucy5wdXNoKG9ic2VydmUpO1xuXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzdG9yYWdlRW5naW5lLmdldEl0ZW0oa2V5VmFsdWUodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLCAoZXJyLCB2YWxGcm9tRGIpID0+IHtcblxuICAgICAgICAgICAgY3VycmVudFZhbHVlID0gdHJhbnNmb3JtRnJvbSA/IHRyYW5zZm9ybUZyb20odmFsRnJvbURiKSA6IHZhbEZyb21EYjtcblxuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgdGhpcy5lbmRPYnNlcnZlckFjdGlvbihvYnNlcnZlKTtcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcblxuICAgICAgfVxuXG4gICAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB2b2lkIDApIHtcblxuICAgICAgICBjb25zdCBvYnNlcnZlID0ge1xuICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICBpZDogJ3NldHRpbmcgbm90IHJpdmlhbCBkZWZhdWx0IHZhbHVlJ1xuICAgICAgICB9IGFzIE1vZGVscy5QZW5kaW5nT3BlcmF0aW9uO1xuICAgICAgICBUYW9uU3RvcmFnZS5wZW5kaW5nT3BlcmF0aW5zLnB1c2gob2JzZXJ2ZSk7XG5cbiAgICAgICAgKG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBzdG9yYWdlRW5naW5lLmdldEl0ZW0oa2V5RGVmYXVsdFZhbHVlQXJlYWR5U2V0KHRoaXMub25seUluVGhpc0NvbXBvbmVudENsYXNzLCBtZW1iZXJOYW1lKSwgYXN5bmMgKGVyciwgdmFsKSA9PiB7XG5cbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgYXdhaXQgc2V0SXRlbURlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXMsIHJlaikgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JhZ2VFbmdpbmUuc2V0SXRlbShrZXlEZWZhdWx0VmFsdWVBcmVhZHlTZXQodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLCB0cnVlLCAoZXJyLCB2KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXMoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzLCByZWopID0+IHtcbiAgICAgICAgICAgICAgICBzdG9yYWdlRW5naW5lLnNldEl0ZW0oa2V5VmFsdWUodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLFxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVG8gPyB0cmFuc2Zvcm1UbyhkZWZhdWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlLCAoZXJyLCB2YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzKCk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjdXJyZW50VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuZE9ic2VydmVyQWN0aW9uKG9ic2VydmUpO1xuICAgICAgICB9KTtcblxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRJdGVtRGVmYXVsdFZhbHVlKCk7XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG1lbWJlck5hbWUsIHtcbiAgICAgICAgc2V0OiAobmV3VmFsdWU6IGFueSkgPT4ge1xuXG4gICAgICAgICAgY29uc3Qgb2JzZXJ2ZSA9IHtcbiAgICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICAgIGlkOiAnc2V0dGluZyBpbiBTRVQgbm90IHJpdmlhbCBkZWZhdWx0IHZhbHVlJ1xuICAgICAgICAgIH0gYXMgTW9kZWxzLlBlbmRpbmdPcGVyYXRpb247XG4gICAgICAgICAgVGFvblN0b3JhZ2UucGVuZGluZ09wZXJhdGlucy5wdXNoKG9ic2VydmUpO1xuXG4gICAgICAgICAgKG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHN0b3JhZ2VFbmdpbmUuc2V0SXRlbShcbiAgICAgICAgICAgICAga2V5VmFsdWUodGhpcy5vbmx5SW5UaGlzQ29tcG9uZW50Q2xhc3MsIG1lbWJlck5hbWUpLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1UbyA/IHRyYW5zZm9ybVRvKG5ld1ZhbHVlKSA6IG5ld1ZhbHVlLFxuICAgICAgICAgICAgICAoZXJyLCBzYXZlZFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2JzZXJ2ZXJBY3Rpb24ob2JzZXJ2ZSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjdXJyZW50VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0OiAoKSA9PiBjdXJyZW50VmFsdWUsXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xuXG5cblxuXG59XG5cbmV4cG9ydCBjb25zdCBTdG9yID0gVGFvblN0b3JhZ2U7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXN0b3JhZ2UgbGliL3N0b3JhZ2UudHMiXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3Rhb24tc3RvcmFnZS9wcm9qZWN0cy90YW9uLXN0b3JhZ2Uvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi1zdG9yYWdlL3Byb2plY3RzL3Rhb24tc3RvcmFnZS9zcmMvdGFvbi1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|