sliftutils 0.9.0 → 0.11.0
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/.cursorrules +2 -0
- package/.gitignore +38 -0
- package/assets/icon128.png +0 -0
- package/assets/icon16.png +0 -0
- package/assets/icon48.png +0 -0
- package/build-electron/assets/icon128.png +0 -0
- package/build-electron/assets/icon16.png +0 -0
- package/build-electron/assets/icon48.png +0 -0
- package/build-electron/electron/electronIndex.html +12 -0
- package/build-electron/electronMain.js +5185 -0
- package/build-electron/electronRenderer.js +20852 -0
- package/build-extension/assets/icon128.png +0 -0
- package/build-extension/assets/icon16.png +0 -0
- package/build-extension/assets/icon48.png +0 -0
- package/build-extension/extBackground.js +5246 -0
- package/build-extension/extContentScript.js +5243 -0
- package/build-extension/manifest.json +29 -0
- package/build-nodejs/server.js +198610 -0
- package/build-web/assets/icon128.png +0 -0
- package/build-web/assets/icon16.png +0 -0
- package/build-web/assets/icon48.png +0 -0
- package/build-web/browser.js +199266 -0
- package/build-web/web/index.html +32 -0
- package/builders/dist/electronBuild.ts.cache +105 -0
- package/builders/dist/extensionBuild.ts.cache +146 -0
- package/builders/dist/generateIndexDts.ts.cache +74 -0
- package/builders/dist/hotReload.ts.cache +93 -0
- package/builders/dist/nodeJSBuild.ts.cache +29 -0
- package/builders/dist/watch.ts.cache +163 -0
- package/builders/dist/webBuild.ts.cache +81 -0
- package/builders/generateIndexDts.ts +63 -0
- package/bundler/dist/bundleEntry.ts.cache +48 -0
- package/bundler/dist/bundleEntryCaller.ts.cache +18 -0
- package/bundler/dist/bundleRequire.ts.cache +246 -0
- package/bundler/dist/bundleWrapper.ts.cache +101 -0
- package/bundler/dist/bundler.ts.cache +66 -0
- package/bundler/dist/sourceMaps.ts.cache +210 -0
- package/dist/electronMain.ts.cache +27 -0
- package/dist/electronRenderer.tsx.cache +62 -0
- package/electron/dist/electronMain.ts.cache +26 -0
- package/electron/dist/electronRenderer.tsx.cache +64 -0
- package/extension/dist/extBackground.ts.cache +20 -0
- package/extension/dist/extContentScript.ts.cache +17 -0
- package/index.d.ts +46 -0
- package/misc/dist/environment.ts.cache +50 -0
- package/misc/dist/fs.ts.cache +29 -0
- package/misc/environment.d.ts +8 -0
- package/misc/fs.d.ts +1 -0
- package/misc/getSecret.d.ts +8 -0
- package/misc/getSecret.ts +0 -4
- package/misc/types.d.ts +1 -0
- package/misc/zip.d.ts +7 -0
- package/nodejs/dist/exampleFile.ts.cache +11 -0
- package/nodejs/dist/server.ts.cache +15 -0
- package/package.json +8 -3
- package/render-utils/SyncedController.d.ts +1 -0
- package/render-utils/dist/observer.tsx.cache +33 -0
- package/storage/dist/CachedStorage.ts.cache +31 -0
- package/storage/dist/DelayedStorage.ts.cache +35 -0
- package/storage/dist/DiskCollection.ts.cache +241 -0
- package/storage/dist/FileFolderAPI.tsx.cache +345 -0
- package/storage/dist/IndexedDBFileFolderAPI.ts.cache +142 -0
- package/storage/dist/JSONStorage.ts.cache +38 -0
- package/storage/dist/PendingManager.tsx.cache +73 -0
- package/storage/dist/PendingStorage.ts.cache +49 -0
- package/storage/dist/PrivateFileSystemStorage.ts.cache +178 -0
- package/storage/dist/StorageObservable.ts.cache +120 -0
- package/storage/dist/TransactionStorage.ts.cache +421 -0
- package/storage/dist/fileSystemPointer.ts.cache +77 -0
- package/tsconfig.declarations.json +3 -1
- package/web/dist/browser.tsx.cache +66 -0
- package/yarn.lock +1752 -0
- package/builders/generateIndexDts.js +0 -50
package/misc/fs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getAllFiles(folder: string): AsyncIterableIterator<string>;
|
package/misc/getSecret.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
// Ex, sms.json.id => os.homedir() + "/sms.json", then read key "id"
|
|
3
|
-
// - As in, we expect .json, and use that to determine the path vs key.
|
|
4
|
-
// - If there is no .json, we just assume the entire key is the path (still os.homedir()), and return the entire file.
|
|
5
|
-
|
|
6
2
|
import { cache } from "socket-function/src/caching";
|
|
7
3
|
import os from "os";
|
|
8
4
|
import fs from "fs";
|
package/misc/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isDefined<T>(value: T | undefined | null): value is T;
|
package/misc/zip.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
export declare class Zip {
|
|
4
|
+
static gzip(buffer: Buffer, level?: number): Promise<Buffer>;
|
|
5
|
+
static gunzip(buffer: Buffer): Promise<Buffer>;
|
|
6
|
+
static gunzipBatch(buffers: Buffer[]): Promise<Buffer[]>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
|
+
//exports.exampleFunction = void 0;
|
|
4
|
+
// Either set this flag on the files you want to hot reload, or add a file called hotreload.flag and that folder, everything in it and all the child uh files will hot reload.
|
|
5
|
+
module.hotreload = true;
|
|
6
|
+
function exampleFunction() {
|
|
7
|
+
return "Hello from exampleFile.ts";
|
|
8
|
+
}
|
|
9
|
+
exports.exampleFunction = exampleFunction;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhbXBsZUZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGFtcGxlRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrS0FBK0s7QUFDL0ssTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFFeEIsU0FBZ0IsZUFBZTtJQUMzQixPQUFPLDJCQUEyQixDQUFDO0FBQ3ZDLENBQUM7QUFGRCwwQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEVpdGhlciBzZXQgdGhpcyBmbGFnIG9uIHRoZSBmaWxlcyB5b3Ugd2FudCB0byBob3QgcmVsb2FkLCBvciBhZGQgYSBmaWxlIGNhbGxlZCBob3RyZWxvYWQuZmxhZyBhbmQgdGhhdCBmb2xkZXIsIGV2ZXJ5dGhpbmcgaW4gaXQgYW5kIGFsbCB0aGUgY2hpbGQgdWggZmlsZXMgd2lsbCBob3QgcmVsb2FkLiBcbm1vZHVsZS5ob3RyZWxvYWQgPSB0cnVlO1xuXG5leHBvcnQgZnVuY3Rpb24gZXhhbXBsZUZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIkhlbGxvIGZyb20gZXhhbXBsZUZpbGUudHNcIjtcbn0iXX0=
|
|
11
|
+
/* _JS_SOURCE_HASH = "5ce927e8446d0fc48114e61b3f1481145250a61049c1f754bbf963fbc06fe53e"; */
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
|
+
const batching_1 = require("socket-function/src/batching");
|
|
4
|
+
const exampleFile_1 = require("./exampleFile");
|
|
5
|
+
const hotReload_1 = require("../builders/hotReload");
|
|
6
|
+
async function main() {
|
|
7
|
+
await (0, hotReload_1.enableHotReloading)();
|
|
8
|
+
while (true) {
|
|
9
|
+
console.log((0, exampleFile_1.exampleFunction)());
|
|
10
|
+
await (0, batching_1.delay)(1000);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
main().catch(console.error);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkRBQXFEO0FBQ3JELCtDQUFnRDtBQUNoRCxxREFBMkQ7QUFFM0QsS0FBSyxVQUFVLElBQUk7SUFDZixNQUFNLElBQUEsOEJBQWtCLEdBQUUsQ0FBQztJQUMzQixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFBLDZCQUFlLEdBQUUsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sSUFBQSxnQkFBSyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDTCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlbGF5IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYmF0Y2hpbmdcIjtcbmltcG9ydCB7IGV4YW1wbGVGdW5jdGlvbiB9IGZyb20gXCIuL2V4YW1wbGVGaWxlXCI7XG5pbXBvcnQgeyBlbmFibGVIb3RSZWxvYWRpbmcgfSBmcm9tIFwiLi4vYnVpbGRlcnMvaG90UmVsb2FkXCI7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gICAgYXdhaXQgZW5hYmxlSG90UmVsb2FkaW5nKCk7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXhhbXBsZUZ1bmN0aW9uKCkpO1xuICAgICAgICBhd2FpdCBkZWxheSgxMDAwKTtcbiAgICB9XG59XG5cbm1haW4oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcblxuIl1//9
|
|
15
|
+
/* _JS_SOURCE_HASH = "9d5836fddfa312252033bbc20caa82669811e9ebfcaff9dc2b932bbf657228c1"; */
|
package/package.json
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliftutils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"files": [
|
|
7
|
+
"**/*",
|
|
8
|
+
".gitignore"
|
|
9
|
+
],
|
|
6
10
|
"scripts": {
|
|
7
11
|
"type": "yarn tsc --noEmit",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
12
|
+
"update-types": "yarn emit-dts && yarn generate-index-dts",
|
|
13
|
+
"emit-dts": "yarn tsc --project tsconfig.declarations.json || true",
|
|
14
|
+
"generate-index-dts": "typenode ./builders/generateIndexDts.ts",
|
|
10
15
|
"run-nodejs": "node ./build-nodejs/server.js",
|
|
11
16
|
"run-nodejs-dev": "typenode ./nodejs/server.ts",
|
|
12
17
|
"run-web": "node ./builders/webRun.js",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
|
+
//exports.observer = void 0;
|
|
4
|
+
const mobx_1 = require("mobx");
|
|
5
|
+
let globalConstructOrder = 1;
|
|
6
|
+
function observer(Constructor) {
|
|
7
|
+
let name = Constructor.name;
|
|
8
|
+
return class extends Constructor {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.reaction = new mobx_1.Reaction(`render.${name}.${globalConstructOrder++}`, () => {
|
|
12
|
+
super.forceUpdate();
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
static get name() { return Constructor.name; }
|
|
17
|
+
componentWillUnmount() {
|
|
18
|
+
var _a;
|
|
19
|
+
this.reaction.dispose();
|
|
20
|
+
(_a = super.componentWillUnmount) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
21
|
+
}
|
|
22
|
+
render(...args) {
|
|
23
|
+
let output;
|
|
24
|
+
this.reaction.track(() => {
|
|
25
|
+
output = super.render(...args);
|
|
26
|
+
});
|
|
27
|
+
return output;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
exports.observer = observer;
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvYnNlcnZlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRDO0FBRTVDLElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLFNBQWdCLFFBQVEsQ0FTcEIsV0FBYztJQUVkLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDNUIsT0FBTyxLQUFNLFNBQVEsV0FBVztRQUF6Qjs7WUFHSCxhQUFRLEdBQUcsSUFBSSxlQUFRLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDckUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBWVAsQ0FBQztRQWhCRyxhQUFhO1FBQ2IsTUFBTSxLQUFLLElBQUksS0FBSyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBSTlDLG9CQUFvQjs7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixNQUFBLEtBQUssQ0FBQyxvQkFBb0Isb0RBQUksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBVztZQUNqQixJQUFJLE1BQTZCLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNyQixNQUFNLEdBQUksS0FBSyxDQUFDLE1BQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDO0FBOUJELDRCQThCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHByZWFjdCBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBvYnNlcnZhYmxlLCBSZWFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5cbmxldCBnbG9iYWxDb25zdHJ1Y3RPcmRlciA9IDE7XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZXI8XG4gICAgVCBleHRlbmRzIHtcbiAgICAgICAgbmV3KC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICAgICAgcmVuZGVyKCk6IHByZWFjdC5Db21wb25lbnRDaGlsZDtcbiAgICAgICAgICAgIGZvcmNlVXBkYXRlKGNhbGxiYWNrPzogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgICAgICAgICBjb21wb25lbnRXaWxsVW5tb3VudD8oKTogdm9pZDtcbiAgICAgICAgfVxuICAgIH1cbj4oXG4gICAgQ29uc3RydWN0b3I6IFRcbikge1xuICAgIGxldCBuYW1lID0gQ29uc3RydWN0b3IubmFtZTtcbiAgICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBDb25zdHJ1Y3RvciB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc3RhdGljIGdldCBuYW1lKCkgeyByZXR1cm4gQ29uc3RydWN0b3IubmFtZTsgfVxuICAgICAgICByZWFjdGlvbiA9IG5ldyBSZWFjdGlvbihgcmVuZGVyLiR7bmFtZX0uJHtnbG9iYWxDb25zdHJ1Y3RPcmRlcisrfWAsICgpID0+IHtcbiAgICAgICAgICAgIHN1cGVyLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgICAgIHRoaXMucmVhY3Rpb24uZGlzcG9zZSgpO1xuICAgICAgICAgICAgc3VwZXIuY29tcG9uZW50V2lsbFVubW91bnQ/LigpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgbGV0IG91dHB1dDogcHJlYWN0LkNvbXBvbmVudENoaWxkO1xuICAgICAgICAgICAgdGhpcy5yZWFjdGlvbi50cmFjaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gKHN1cGVyLnJlbmRlciBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9XG4gICAgfTtcbn0iXX0=
|
|
33
|
+
/* _JS_SOURCE_HASH = "aa8d03d3849c2a27da30d4ba63a17e14c12256a9cf8719a3f9f17af6f7f83c98"; */
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
|
+
//exports.newCachedStrStorage = void 0;
|
|
4
|
+
const DelayedStorage_1 = require("./DelayedStorage");
|
|
5
|
+
const FileFolderAPI_1 = require("./FileFolderAPI");
|
|
6
|
+
const JSONStorage_1 = require("./JSONStorage");
|
|
7
|
+
const PendingStorage_1 = require("./PendingStorage");
|
|
8
|
+
const StorageObservable_1 = require("./StorageObservable");
|
|
9
|
+
function newCachedStrStorage(folder, getValue) {
|
|
10
|
+
let base = new PendingStorage_1.PendingStorage(`CachedStrStorage`, new DelayedStorage_1.DelayedStorage((0, FileFolderAPI_1.getFileStorageNested)(folder)));
|
|
11
|
+
let storage = new StorageObservable_1.StorageSync(new JSONStorage_1.JSONStorage(base));
|
|
12
|
+
let pending = new Set();
|
|
13
|
+
let baseStorageGet = storage.get;
|
|
14
|
+
storage.get = (key) => {
|
|
15
|
+
if (!pending.has(key)) {
|
|
16
|
+
pending.add(key);
|
|
17
|
+
(async () => {
|
|
18
|
+
let existingValue = await storage.getPromise(key);
|
|
19
|
+
if (existingValue)
|
|
20
|
+
return;
|
|
21
|
+
let value = await getValue(key);
|
|
22
|
+
storage.set(key, value);
|
|
23
|
+
})().catch(console.error);
|
|
24
|
+
}
|
|
25
|
+
return baseStorageGet.call(storage, key);
|
|
26
|
+
};
|
|
27
|
+
return storage;
|
|
28
|
+
}
|
|
29
|
+
exports.newCachedStrStorage = newCachedStrStorage;
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGVkU3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkNhY2hlZFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBQ2xELG1EQUF1RDtBQUV2RCwrQ0FBNEM7QUFDNUMscURBQWtEO0FBQ2xELDJEQUFrRDtBQUVsRCxTQUFnQixtQkFBbUIsQ0FDL0IsTUFBYyxFQUNkLFFBQXFDO0lBRXJDLElBQUksSUFBSSxHQUFHLElBQUksK0JBQWMsQ0FBQyxrQkFBa0IsRUFDNUMsSUFBSSwrQkFBYyxDQUFDLElBQUEsb0NBQW9CLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FDbkQsQ0FBQztJQUNGLElBQUksT0FBTyxHQUFHLElBQUksK0JBQVcsQ0FBQyxJQUFJLHlCQUFXLENBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2hDLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDakMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVqQixDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNSLElBQUksYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxhQUFhO29CQUFFLE9BQU87Z0JBQzFCLElBQUksS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQXhCRCxrREF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWxheWVkU3RvcmFnZSB9IGZyb20gXCIuL0RlbGF5ZWRTdG9yYWdlXCI7XG5pbXBvcnQgeyBnZXRGaWxlU3RvcmFnZU5lc3RlZCB9IGZyb20gXCIuL0ZpbGVGb2xkZXJBUElcIjtcbmltcG9ydCB7IElTdG9yYWdlU3luYyB9IGZyb20gXCIuL0lTdG9yYWdlXCI7XG5pbXBvcnQgeyBKU09OU3RvcmFnZSB9IGZyb20gXCIuL0pTT05TdG9yYWdlXCI7XG5pbXBvcnQgeyBQZW5kaW5nU3RvcmFnZSB9IGZyb20gXCIuL1BlbmRpbmdTdG9yYWdlXCI7XG5pbXBvcnQgeyBTdG9yYWdlU3luYyB9IGZyb20gXCIuL1N0b3JhZ2VPYnNlcnZhYmxlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdDYWNoZWRTdHJTdG9yYWdlPFQ+KFxuICAgIGZvbGRlcjogc3RyaW5nLFxuICAgIGdldFZhbHVlOiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8VD5cbikge1xuICAgIGxldCBiYXNlID0gbmV3IFBlbmRpbmdTdG9yYWdlKGBDYWNoZWRTdHJTdG9yYWdlYCxcbiAgICAgICAgbmV3IERlbGF5ZWRTdG9yYWdlKGdldEZpbGVTdG9yYWdlTmVzdGVkKGZvbGRlcikpXG4gICAgKTtcbiAgICBsZXQgc3RvcmFnZSA9IG5ldyBTdG9yYWdlU3luYyhuZXcgSlNPTlN0b3JhZ2U8VD4oYmFzZSkpO1xuICAgIGxldCBwZW5kaW5nID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgbGV0IGJhc2VTdG9yYWdlR2V0ID0gc3RvcmFnZS5nZXQ7XG4gICAgc3RvcmFnZS5nZXQgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFwZW5kaW5nLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBwZW5kaW5nLmFkZChrZXkpO1xuXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBleGlzdGluZ1ZhbHVlID0gYXdhaXQgc3RvcmFnZS5nZXRQcm9taXNlKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBhd2FpdCBnZXRWYWx1ZShrZXkpO1xuICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgfSkoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVN0b3JhZ2VHZXQuY2FsbChzdG9yYWdlLCBrZXkpO1xuICAgIH07XG4gICAgcmV0dXJuIHN0b3JhZ2U7XG59Il19
|
|
31
|
+
/* _JS_SOURCE_HASH = "6b417b9d5a7a6f24cd23d3bb315476365b196d7a7314bc05772769aebd4cfeaf"; */
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
|
+
//exports.DelayedStorage = void 0;
|
|
4
|
+
class DelayedStorage {
|
|
5
|
+
constructor(storage) {
|
|
6
|
+
this.storage = storage;
|
|
7
|
+
}
|
|
8
|
+
async get(key) {
|
|
9
|
+
const storage = await this.storage;
|
|
10
|
+
return storage.get(key);
|
|
11
|
+
}
|
|
12
|
+
async set(key, value) {
|
|
13
|
+
const storage = await this.storage;
|
|
14
|
+
return storage.set(key, value);
|
|
15
|
+
}
|
|
16
|
+
async remove(key) {
|
|
17
|
+
const storage = await this.storage;
|
|
18
|
+
return storage.remove(key);
|
|
19
|
+
}
|
|
20
|
+
async getKeys() {
|
|
21
|
+
const storage = await this.storage;
|
|
22
|
+
return storage.getKeys();
|
|
23
|
+
}
|
|
24
|
+
async getInfo(key) {
|
|
25
|
+
const storage = await this.storage;
|
|
26
|
+
return storage.getInfo(key);
|
|
27
|
+
}
|
|
28
|
+
async reset() {
|
|
29
|
+
const storage = await this.storage;
|
|
30
|
+
return storage.reset();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.DelayedStorage = DelayedStorage;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsYXllZFN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEZWxheWVkU3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLGNBQWM7SUFDdkIsWUFBb0IsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBSSxDQUFDO0lBQy9DLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUN4QixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFRO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVc7UUFDM0IsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ00sS0FBSyxDQUFDLE9BQU87UUFDaEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFDTSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVc7UUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDZCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKO0FBM0JELHdDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTdG9yYWdlIH0gZnJvbSBcIi4vSVN0b3JhZ2VcIjtcblxuZXhwb3J0IGNsYXNzIERlbGF5ZWRTdG9yYWdlPFQ+IGltcGxlbWVudHMgSVN0b3JhZ2U8VD4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogUHJvbWlzZTxJU3RvcmFnZTxUPj4pIHsgfVxuICAgIHB1YmxpYyBhc3luYyBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IGF3YWl0IHRoaXMuc3RvcmFnZTtcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2UuZ2V0KGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBhd2FpdCB0aGlzLnN0b3JhZ2U7XG4gICAgICAgIHJldHVybiBzdG9yYWdlLnNldChrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIHJlbW92ZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gYXdhaXQgdGhpcy5zdG9yYWdlO1xuICAgICAgICByZXR1cm4gc3RvcmFnZS5yZW1vdmUoa2V5KTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldEtleXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gYXdhaXQgdGhpcy5zdG9yYWdlO1xuICAgICAgICByZXR1cm4gc3RvcmFnZS5nZXRLZXlzKCk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBhd2FpdCB0aGlzLnN0b3JhZ2U7XG4gICAgICAgIHJldHVybiBzdG9yYWdlLmdldEluZm8oa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzZXQoKSB7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSBhd2FpdCB0aGlzLnN0b3JhZ2U7XG4gICAgICAgIHJldHVybiBzdG9yYWdlLnJlc2V0KCk7XG4gICAgfVxufSJdfQ==
|
|
35
|
+
/* _JS_SOURCE_HASH = "1677f66b78d575c994d05644480c2abd0bd91d4dc1c9229dacb970af14213878"; */
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
|
+
//exports.newFileStorageJSONSyncer = exports.newFileStorageBufferSyncer = exports.DiskCollectionRawBrowser = exports.DiskCollectionRaw = exports.DiskCollectionPromise = exports.DiskCollectionBrowser = exports.DiskCollection = void 0;
|
|
4
|
+
const typesafecss_1 = require("typesafecss");
|
|
5
|
+
const DelayedStorage_1 = require("./DelayedStorage");
|
|
6
|
+
const FileFolderAPI_1 = require("./FileFolderAPI");
|
|
7
|
+
const JSONStorage_1 = require("./JSONStorage");
|
|
8
|
+
const StorageObservable_1 = require("./StorageObservable");
|
|
9
|
+
const TransactionStorage_1 = require("./TransactionStorage");
|
|
10
|
+
const PendingStorage_1 = require("./PendingStorage");
|
|
11
|
+
const types_1 = require("../misc/types");
|
|
12
|
+
const PrivateFileSystemStorage_1 = require("./PrivateFileSystemStorage");
|
|
13
|
+
const context_1 = require("../../context");
|
|
14
|
+
class DiskCollection {
|
|
15
|
+
constructor(collectionName, writeDelay) {
|
|
16
|
+
this.collectionName = collectionName;
|
|
17
|
+
this.writeDelay = writeDelay;
|
|
18
|
+
this.baseStorage = this.initStorage();
|
|
19
|
+
this.synced = new StorageObservable_1.StorageSync(new PendingStorage_1.PendingStorage(`Collection (${this.collectionName})`, new DelayedStorage_1.DelayedStorage(this.baseStorage)));
|
|
20
|
+
}
|
|
21
|
+
async initStorage() {
|
|
22
|
+
// If a Chrome extension, just return null.
|
|
23
|
+
if ((0, context_1.isInChromeExtension)())
|
|
24
|
+
return null;
|
|
25
|
+
let fileStorage = await (0, FileFolderAPI_1.getFileStorage)();
|
|
26
|
+
let collections = await fileStorage.folder.getStorage("collections");
|
|
27
|
+
let curCollection = await collections.folder.getStorage(this.collectionName);
|
|
28
|
+
let baseStorage = new TransactionStorage_1.TransactionStorage(curCollection, this.collectionName, this.writeDelay);
|
|
29
|
+
this.transactionStorage = baseStorage;
|
|
30
|
+
return new JSONStorage_1.JSONStorage(baseStorage);
|
|
31
|
+
}
|
|
32
|
+
get(key) {
|
|
33
|
+
return this.synced.get(key);
|
|
34
|
+
}
|
|
35
|
+
async getPromise(key) {
|
|
36
|
+
let base = await this.baseStorage;
|
|
37
|
+
return base.get(key);
|
|
38
|
+
}
|
|
39
|
+
set(key, value) {
|
|
40
|
+
this.synced.set(key, value);
|
|
41
|
+
}
|
|
42
|
+
remove(key) {
|
|
43
|
+
this.synced.remove(key);
|
|
44
|
+
}
|
|
45
|
+
getKeys() {
|
|
46
|
+
return this.synced.getKeys();
|
|
47
|
+
}
|
|
48
|
+
getKeysPromise() {
|
|
49
|
+
return this.synced.getKeysPromise();
|
|
50
|
+
}
|
|
51
|
+
getEntries() {
|
|
52
|
+
let keys = this.getKeys();
|
|
53
|
+
return keys.map(key => [key, this.get(key)]).filter(([_, value]) => (0, types_1.isDefined)(value));
|
|
54
|
+
}
|
|
55
|
+
getValues() {
|
|
56
|
+
let keys = this.getKeys();
|
|
57
|
+
return keys.map(key => this.get(key)).filter(types_1.isDefined);
|
|
58
|
+
}
|
|
59
|
+
async getValuesPromise() {
|
|
60
|
+
let keys = await this.getKeysPromise();
|
|
61
|
+
let values = [];
|
|
62
|
+
for (let key of keys) {
|
|
63
|
+
let value = await this.getPromise(key);
|
|
64
|
+
if ((0, types_1.isDefined)(value)) {
|
|
65
|
+
values.push(value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return values;
|
|
69
|
+
}
|
|
70
|
+
getInfo(key) {
|
|
71
|
+
return this.synced.getInfo(key);
|
|
72
|
+
}
|
|
73
|
+
async reset() {
|
|
74
|
+
await this.synced.reset();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.DiskCollection = DiskCollection;
|
|
78
|
+
class DiskCollectionBrowser {
|
|
79
|
+
constructor(collectionName, writeDelay) {
|
|
80
|
+
this.collectionName = collectionName;
|
|
81
|
+
this.writeDelay = writeDelay;
|
|
82
|
+
this.baseStorage = this.initStorage();
|
|
83
|
+
this.synced = new StorageObservable_1.StorageSync(new PendingStorage_1.PendingStorage(`Collection (${this.collectionName})`, new DelayedStorage_1.DelayedStorage(this.baseStorage)));
|
|
84
|
+
}
|
|
85
|
+
async initStorage() {
|
|
86
|
+
if ((0, typesafecss_1.isNode)())
|
|
87
|
+
return undefined;
|
|
88
|
+
let curCollection = await new PrivateFileSystemStorage_1.PrivateFileSystemStorage(`collections/${this.collectionName}`);
|
|
89
|
+
let baseStorage = new TransactionStorage_1.TransactionStorage(curCollection, this.collectionName);
|
|
90
|
+
return new JSONStorage_1.JSONStorage(baseStorage);
|
|
91
|
+
}
|
|
92
|
+
get(key) {
|
|
93
|
+
return this.synced.get(key);
|
|
94
|
+
}
|
|
95
|
+
async getPromise(key) {
|
|
96
|
+
let base = await this.baseStorage;
|
|
97
|
+
return base.get(key);
|
|
98
|
+
}
|
|
99
|
+
set(key, value) {
|
|
100
|
+
this.synced.set(key, value);
|
|
101
|
+
}
|
|
102
|
+
remove(key) {
|
|
103
|
+
this.synced.remove(key);
|
|
104
|
+
}
|
|
105
|
+
getKeys() {
|
|
106
|
+
return this.synced.getKeys();
|
|
107
|
+
}
|
|
108
|
+
getKeysPromise() {
|
|
109
|
+
return this.synced.getKeysPromise();
|
|
110
|
+
}
|
|
111
|
+
getEntries() {
|
|
112
|
+
let keys = this.getKeys();
|
|
113
|
+
return keys.map(key => [key, this.get(key)]).filter(([_, value]) => (0, types_1.isDefined)(value));
|
|
114
|
+
}
|
|
115
|
+
getValues() {
|
|
116
|
+
let keys = this.getKeys();
|
|
117
|
+
return keys.map(key => this.get(key)).filter(types_1.isDefined);
|
|
118
|
+
}
|
|
119
|
+
async getValuesPromise() {
|
|
120
|
+
let keys = await this.getKeysPromise();
|
|
121
|
+
let values = [];
|
|
122
|
+
for (let key of keys) {
|
|
123
|
+
let value = await this.getPromise(key);
|
|
124
|
+
if ((0, types_1.isDefined)(value)) {
|
|
125
|
+
values.push(value);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return values;
|
|
129
|
+
}
|
|
130
|
+
getInfo(key) {
|
|
131
|
+
return this.synced.getInfo(key);
|
|
132
|
+
}
|
|
133
|
+
async reset() {
|
|
134
|
+
await this.synced.reset();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.DiskCollectionBrowser = DiskCollectionBrowser;
|
|
138
|
+
class DiskCollectionPromise {
|
|
139
|
+
constructor(collectionName, writeDelay) {
|
|
140
|
+
this.collectionName = collectionName;
|
|
141
|
+
this.writeDelay = writeDelay;
|
|
142
|
+
this.synced = (new PendingStorage_1.PendingStorage(`Collection (${this.collectionName})`, new DelayedStorage_1.DelayedStorage(this.initStorage())));
|
|
143
|
+
}
|
|
144
|
+
async initStorage() {
|
|
145
|
+
let fileStorage = await (0, FileFolderAPI_1.getFileStorage)();
|
|
146
|
+
let collections = await fileStorage.folder.getStorage("collections");
|
|
147
|
+
let curCollection = await collections.folder.getStorage(this.collectionName);
|
|
148
|
+
let baseStorage = new TransactionStorage_1.TransactionStorage(curCollection, this.collectionName, this.writeDelay);
|
|
149
|
+
return new JSONStorage_1.JSONStorage(baseStorage);
|
|
150
|
+
}
|
|
151
|
+
async get(key) {
|
|
152
|
+
return await this.synced.get(key);
|
|
153
|
+
}
|
|
154
|
+
async set(key, value) {
|
|
155
|
+
await this.synced.set(key, value);
|
|
156
|
+
}
|
|
157
|
+
async remove(key) {
|
|
158
|
+
await this.synced.remove(key);
|
|
159
|
+
}
|
|
160
|
+
async getKeys() {
|
|
161
|
+
return await this.synced.getKeys();
|
|
162
|
+
}
|
|
163
|
+
async getInfo(key) {
|
|
164
|
+
return await this.synced.getInfo(key);
|
|
165
|
+
}
|
|
166
|
+
async reset() {
|
|
167
|
+
await this.synced.reset();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.DiskCollectionPromise = DiskCollectionPromise;
|
|
171
|
+
class DiskCollectionRaw {
|
|
172
|
+
constructor(collectionName) {
|
|
173
|
+
this.collectionName = collectionName;
|
|
174
|
+
this.synced = (new PendingStorage_1.PendingStorage(`Collection (${this.collectionName})`, new DelayedStorage_1.DelayedStorage(this.initStorage())));
|
|
175
|
+
}
|
|
176
|
+
async initStorage() {
|
|
177
|
+
let fileStorage = await (0, FileFolderAPI_1.getFileStorage)();
|
|
178
|
+
let collections = await fileStorage.folder.getStorage("collections");
|
|
179
|
+
let baseStorage = await collections.folder.getStorage(this.collectionName);
|
|
180
|
+
return baseStorage;
|
|
181
|
+
}
|
|
182
|
+
async get(key) {
|
|
183
|
+
return await this.synced.get(key);
|
|
184
|
+
}
|
|
185
|
+
async set(key, value) {
|
|
186
|
+
await this.synced.set(key, value);
|
|
187
|
+
}
|
|
188
|
+
async remove(key) {
|
|
189
|
+
await this.synced.remove(key);
|
|
190
|
+
}
|
|
191
|
+
async getKeys() {
|
|
192
|
+
return await this.synced.getKeys();
|
|
193
|
+
}
|
|
194
|
+
async getInfo(key) {
|
|
195
|
+
return await this.synced.getInfo(key);
|
|
196
|
+
}
|
|
197
|
+
async reset() {
|
|
198
|
+
await this.synced.reset();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.DiskCollectionRaw = DiskCollectionRaw;
|
|
202
|
+
class DiskCollectionRawBrowser {
|
|
203
|
+
constructor(collectionName) {
|
|
204
|
+
this.collectionName = collectionName;
|
|
205
|
+
this.synced = new StorageObservable_1.StorageSync(new PendingStorage_1.PendingStorage(`Collection (${this.collectionName})`, new DelayedStorage_1.DelayedStorage(this.initStorage())));
|
|
206
|
+
}
|
|
207
|
+
async initStorage() {
|
|
208
|
+
return await new PrivateFileSystemStorage_1.PrivateFileSystemStorage(`collections/${this.collectionName}`);
|
|
209
|
+
}
|
|
210
|
+
get(key) {
|
|
211
|
+
return this.synced.get(key);
|
|
212
|
+
}
|
|
213
|
+
async getPromise(key) {
|
|
214
|
+
return await this.synced.get(key);
|
|
215
|
+
}
|
|
216
|
+
set(key, value) {
|
|
217
|
+
this.synced.set(key, value);
|
|
218
|
+
}
|
|
219
|
+
async getKeys() {
|
|
220
|
+
return await this.synced.getKeys();
|
|
221
|
+
}
|
|
222
|
+
async getInfo(key) {
|
|
223
|
+
return await this.synced.getInfo(key);
|
|
224
|
+
}
|
|
225
|
+
async reset() {
|
|
226
|
+
await this.synced.reset();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.DiskCollectionRawBrowser = DiskCollectionRawBrowser;
|
|
230
|
+
function newFileStorageBufferSyncer(folder = "") {
|
|
231
|
+
let base = new PendingStorage_1.PendingStorage(`FileStorageBufferSyncer`, new DelayedStorage_1.DelayedStorage((0, FileFolderAPI_1.getFileStorageNested)(folder)));
|
|
232
|
+
return new StorageObservable_1.StorageSync(base);
|
|
233
|
+
}
|
|
234
|
+
exports.newFileStorageBufferSyncer = newFileStorageBufferSyncer;
|
|
235
|
+
function newFileStorageJSONSyncer(folder = "") {
|
|
236
|
+
let base = new PendingStorage_1.PendingStorage(`FileStorageJSONSyncer`, new DelayedStorage_1.DelayedStorage((0, FileFolderAPI_1.getFileStorageNested)(folder)));
|
|
237
|
+
return new StorageObservable_1.StorageSync(new JSONStorage_1.JSONStorage(base));
|
|
238
|
+
}
|
|
239
|
+
exports.newFileStorageJSONSyncer = newFileStorageJSONSyncer;
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlza0NvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEaXNrQ29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBcUM7QUFDckMscURBQWtEO0FBQ2xELG1EQUFvRjtBQUVwRiwrQ0FBNEM7QUFDNUMsMkRBQWtEO0FBQ2xELDZEQUEwRDtBQUMxRCxxREFBa0Q7QUFFbEQseUNBQTBDO0FBQzFDLHlFQUFzRTtBQUN0RSwyQ0FBb0Q7QUFFcEQsTUFBYSxjQUFjO0lBQ3ZCLFlBQ1ksY0FBc0IsRUFDdEIsVUFBbUI7UUFEbkIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQWN4QixnQkFBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxXQUFNLEdBQUcsSUFBSSwrQkFBVyxDQUM1QixJQUFJLCtCQUFjLENBQUMsZUFBZSxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQ3BELElBQUksK0JBQWMsQ0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzFDLENBQ0osQ0FBQztJQWpCRixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDYiw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFBLDZCQUFtQixHQUFFO1lBQUUsT0FBTyxJQUFXLENBQUM7UUFDOUMsSUFBSSxXQUFXLEdBQUcsTUFBTSxJQUFBLDhCQUFjLEdBQUUsQ0FBQztRQUN6QyxJQUFJLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLElBQUksYUFBYSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdFLElBQUksV0FBVyxHQUFHLElBQUksdUNBQWtCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FB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QUFDLENBQUM7QUFDckQsQ0FBQztBQUxELDREQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcInR5cGVzYWZlY3NzXCI7XG5pbXBvcnQgeyBEZWxheWVkU3RvcmFnZSB9IGZyb20gXCIuL0RlbGF5ZWRTdG9yYWdlXCI7XG5pbXBvcnQgeyBGaWxlU3RvcmFnZSwgZ2V0RmlsZVN0b3JhZ2UsIGdldEZpbGVTdG9yYWdlTmVzdGVkIH0gZnJvbSBcIi4vRmlsZUZvbGRlckFQSVwiO1xuaW1wb3J0IHsgSVN0b3JhZ2UsIElTdG9yYWdlU3luYyB9IGZyb20gXCIuL0lTdG9yYWdlXCI7XG5pbXBvcnQgeyBKU09OU3RvcmFnZSB9IGZyb20gXCIuL0pTT05TdG9yYWdlXCI7XG5pbXBvcnQgeyBTdG9yYWdlU3luYyB9IGZyb20gXCIuL1N0b3JhZ2VPYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0b3JhZ2UgfSBmcm9tIFwiLi9UcmFuc2FjdGlvblN0b3JhZ2VcIjtcbmltcG9ydCB7IFBlbmRpbmdTdG9yYWdlIH0gZnJvbSBcIi4vUGVuZGluZ1N0b3JhZ2VcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwiLi4vbWlzYy9tb2J4VHlwZWRcIjtcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gXCIuLi9taXNjL3R5cGVzXCI7XG5pbXBvcnQgeyBQcml2YXRlRmlsZVN5c3RlbVN0b3JhZ2UgfSBmcm9tIFwiLi9Qcml2YXRlRmlsZVN5c3RlbVN0b3JhZ2VcIjtcbmltcG9ydCB7IGlzSW5DaHJvbWVFeHRlbnNpb24gfSBmcm9tIFwiLi4vLi4vY29udGV4dFwiO1xuXG5leHBvcnQgY2xhc3MgRGlza0NvbGxlY3Rpb248VD4gaW1wbGVtZW50cyBJU3RvcmFnZVN5bmM8VD4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgd3JpdGVEZWxheT86IG51bWJlcixcbiAgICApIHtcbiAgICB9XG4gICAgcHVibGljIHRyYW5zYWN0aW9uU3RvcmFnZTogVHJhbnNhY3Rpb25TdG9yYWdlIHwgdW5kZWZpbmVkO1xuICAgIGFzeW5jIGluaXRTdG9yYWdlKCk6IFByb21pc2U8SVN0b3JhZ2U8VD4+IHtcbiAgICAgICAgLy8gSWYgYSBDaHJvbWUgZXh0ZW5zaW9uLCBqdXN0IHJldHVybiBudWxsLiBcbiAgICAgICAgaWYgKGlzSW5DaHJvbWVFeHRlbnNpb24oKSkgcmV0dXJuIG51bGwgYXMgYW55O1xuICAgICAgICBsZXQgZmlsZVN0b3JhZ2UgPSBhd2FpdCBnZXRGaWxlU3RvcmFnZSgpO1xuICAgICAgICBsZXQgY29sbGVjdGlvbnMgPSBhd2FpdCBmaWxlU3RvcmFnZS5mb2xkZXIuZ2V0U3RvcmFnZShcImNvbGxlY3Rpb25zXCIpO1xuICAgICAgICBsZXQgY3VyQ29sbGVjdGlvbiA9IGF3YWl0IGNvbGxlY3Rpb25zLmZvbGRlci5nZXRTdG9yYWdlKHRoaXMuY29sbGVjdGlvbk5hbWUpO1xuICAgICAgICBsZXQgYmFzZVN0b3JhZ2UgPSBuZXcgVHJhbnNhY3Rpb25TdG9yYWdlKGN1ckNvbGxlY3Rpb24sIHRoaXMuY29sbGVjdGlvbk5hbWUsIHRoaXMud3JpdGVEZWxheSk7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25TdG9yYWdlID0gYmFzZVN0b3JhZ2U7XG4gICAgICAgIHJldHVybiBuZXcgSlNPTlN0b3JhZ2U8VD4oYmFzZVN0b3JhZ2UpO1xuICAgIH1cbiAgICBwdWJsaWMgYmFzZVN0b3JhZ2UgPSB0aGlzLmluaXRTdG9yYWdlKCk7XG4gICAgcHJpdmF0ZSBzeW5jZWQgPSBuZXcgU3RvcmFnZVN5bmMoXG4gICAgICAgIG5ldyBQZW5kaW5nU3RvcmFnZShgQ29sbGVjdGlvbiAoJHt0aGlzLmNvbGxlY3Rpb25OYW1lfSlgLFxuICAgICAgICAgICAgbmV3IERlbGF5ZWRTdG9yYWdlPFQ+KHRoaXMuYmFzZVN0b3JhZ2UpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jZWQuZ2V0KGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRQcm9taXNlKGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGxldCBiYXNlID0gYXdhaXQgdGhpcy5iYXNlU3RvcmFnZTtcbiAgICAgICAgcmV0dXJuIGJhc2UuZ2V0KGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3luY2VkLnNldChrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIHJlbW92ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN5bmNlZC5yZW1vdmUoa2V5KTtcbiAgICB9XG4gICAgcHVibGljIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jZWQuZ2V0S2V5cygpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0S2V5c1Byb21pc2UoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jZWQuZ2V0S2V5c1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW50cmllcygpOiBbc3RyaW5nLCBUXVtdIHtcbiAgICAgICAgbGV0IGtleXMgPSB0aGlzLmdldEtleXMoKTtcbiAgICAgICAgcmV0dXJuIGtleXMubWFwKGtleSA9PiBba2V5LCB0aGlzLmdldChrZXkpXSkuZmlsdGVyKChbXywgdmFsdWVdKSA9PiBpc0RlZmluZWQodmFsdWUpKSBhcyBbc3RyaW5nLCBUXVtdO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0VmFsdWVzKCk6IFRbXSB7XG4gICAgICAgIGxldCBrZXlzID0gdGhpcy5nZXRLZXlzKCk7XG4gICAgICAgIHJldHVybiBrZXlzLm1hcChrZXkgPT4gdGhpcy5nZXQoa2V5KSkuZmlsdGVyKGlzRGVmaW5lZCk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRWYWx1ZXNQcm9taXNlKCk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBrZXlzID0gYXdhaXQgdGhpcy5nZXRLZXlzUHJvbWlzZSgpO1xuICAgICAgICBsZXQgdmFsdWVzOiBUW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0UHJvbWlzZShrZXkpO1xuICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgcHVibGljIGdldEluZm8oa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY2VkLmdldEluZm8oa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzZXQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY2VkLnJlc2V0KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlza0NvbGxlY3Rpb25Ccm93c2VyPFQ+IGltcGxlbWVudHMgSVN0b3JhZ2VTeW5jPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb2xsZWN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHdyaXRlRGVsYXk/OiBudW1iZXIsXG4gICAgKSB7XG4gICAgfVxuICAgIHB1YmxpYyB0cmFuc2FjdGlvblN0b3JhZ2U6IFRyYW5zYWN0aW9uU3RvcmFnZSB8IHVuZGVmaW5lZDtcbiAgICBhc3luYyBpbml0U3RvcmFnZSgpOiBQcm9taXNlPElTdG9yYWdlPFQ+PiB7XG4gICAgICAgIGlmIChpc05vZGUoKSkgcmV0dXJuIHVuZGVmaW5lZCBhcyBhbnk7XG4gICAgICAgIGxldCBjdXJDb2xsZWN0aW9uID0gYXdhaXQgbmV3IFByaXZhdGVGaWxlU3lzdGVtU3RvcmFnZShgY29sbGVjdGlvbnMvJHt0aGlzLmNvbGxlY3Rpb25OYW1lfWApO1xuICAgICAgICBsZXQgYmFzZVN0b3JhZ2UgPSBuZXcgVHJhbnNhY3Rpb25TdG9yYWdlKGN1ckNvbGxlY3Rpb24sIHRoaXMuY29sbGVjdGlvbk5hbWUpO1xuICAgICAgICByZXR1cm4gbmV3IEpTT05TdG9yYWdlPFQ+KGJhc2VTdG9yYWdlKTtcbiAgICB9XG4gICAgcHVibGljIGJhc2VTdG9yYWdlID0gdGhpcy5pbml0U3RvcmFnZSgpO1xuICAgIHByaXZhdGUgc3luY2VkID0gbmV3IFN0b3JhZ2VTeW5jKFxuICAgICAgICBuZXcgUGVuZGluZ1N0b3JhZ2UoYENvbGxlY3Rpb24gKCR7dGhpcy5jb2xsZWN0aW9uTmFtZX0pYCxcbiAgICAgICAgICAgIG5ldyBEZWxheWVkU3RvcmFnZTxUPih0aGlzLmJhc2VTdG9yYWdlKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY2VkLmdldChrZXkpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UHJvbWlzZShrZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgYmFzZSA9IGF3YWl0IHRoaXMuYmFzZVN0b3JhZ2U7XG4gICAgICAgIHJldHVybiBiYXNlLmdldChrZXkpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN5bmNlZC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zeW5jZWQucmVtb3ZlKGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY2VkLmdldEtleXMoKTtcbiAgICB9XG4gICAgcHVibGljIGdldEtleXNQcm9taXNlKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY2VkLmdldEtleXNQcm9taXNlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVudHJpZXMoKTogW3N0cmluZywgVF1bXSB7XG4gICAgICAgIGxldCBrZXlzID0gdGhpcy5nZXRLZXlzKCk7XG4gICAgICAgIHJldHVybiBrZXlzLm1hcChrZXkgPT4gW2tleSwgdGhpcy5nZXQoa2V5KV0pLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gaXNEZWZpbmVkKHZhbHVlKSkgYXMgW3N0cmluZywgVF1bXTtcbiAgICB9XG4gICAgcHVibGljIGdldFZhbHVlcygpOiBUW10ge1xuICAgICAgICBsZXQga2V5cyA9IHRoaXMuZ2V0S2V5cygpO1xuICAgICAgICByZXR1cm4ga2V5cy5tYXAoa2V5ID0+IHRoaXMuZ2V0KGtleSkpLmZpbHRlcihpc0RlZmluZWQpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0VmFsdWVzUHJvbWlzZSgpOiBQcm9taXNlPFRbXT4ge1xuICAgICAgICBsZXQga2V5cyA9IGF3YWl0IHRoaXMuZ2V0S2V5c1Byb21pc2UoKTtcbiAgICAgICAgbGV0IHZhbHVlczogVFtdID0gW107XG4gICAgICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBhd2FpdCB0aGlzLmdldFByb21pc2Uoa2V5KTtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRJbmZvKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNlZC5nZXRJbmZvKGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNlZC5yZXNldCgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpc2tDb2xsZWN0aW9uUHJvbWlzZTxUPiBpbXBsZW1lbnRzIElTdG9yYWdlPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb2xsZWN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHdyaXRlRGVsYXk/OiBudW1iZXIsXG4gICAgKSB7IH1cbiAgICBhc3luYyBpbml0U3RvcmFnZSgpOiBQcm9taXNlPElTdG9yYWdlPFQ+PiB7XG4gICAgICAgIGxldCBmaWxlU3RvcmFnZSA9IGF3YWl0IGdldEZpbGVTdG9yYWdlKCk7XG4gICAgICAgIGxldCBjb2xsZWN0aW9ucyA9IGF3YWl0IGZpbGVTdG9yYWdlLmZvbGRlci5nZXRTdG9yYWdlKFwiY29sbGVjdGlvbnNcIik7XG4gICAgICAgIGxldCBjdXJDb2xsZWN0aW9uID0gYXdhaXQgY29sbGVjdGlvbnMuZm9sZGVyLmdldFN0b3JhZ2UodGhpcy5jb2xsZWN0aW9uTmFtZSk7XG4gICAgICAgIGxldCBiYXNlU3RvcmFnZSA9IG5ldyBUcmFuc2FjdGlvblN0b3JhZ2UoY3VyQ29sbGVjdGlvbiwgdGhpcy5jb2xsZWN0aW9uTmFtZSwgdGhpcy53cml0ZURlbGF5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBKU09OU3RvcmFnZTxUPihiYXNlU3RvcmFnZSk7XG4gICAgfVxuICAgIHByaXZhdGUgc3luY2VkID0gKFxuICAgICAgICBuZXcgUGVuZGluZ1N0b3JhZ2UoYENvbGxlY3Rpb24gKCR7dGhpcy5jb2xsZWN0aW9uTmFtZX0pYCxcbiAgICAgICAgICAgIG5ldyBEZWxheWVkU3RvcmFnZTxUPih0aGlzLmluaXRTdG9yYWdlKCkpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcHVibGljIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zeW5jZWQuZ2V0KGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY2VkLnNldChrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIHJlbW92ZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNlZC5yZW1vdmUoa2V5KTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldEtleXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zeW5jZWQuZ2V0S2V5cygpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5mbyhrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zeW5jZWQuZ2V0SW5mbyhrZXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jZWQucmVzZXQoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaXNrQ29sbGVjdGlvblJhdyBpbXBsZW1lbnRzIElTdG9yYWdlPEJ1ZmZlcj4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29sbGVjdGlvbk5hbWU6IHN0cmluZykgeyB9XG4gICAgYXN5bmMgaW5pdFN0b3JhZ2UoKTogUHJvbWlzZTxJU3RvcmFnZTxCdWZmZXI+PiB7XG4gICAgICAgIGxldCBmaWxlU3RvcmFnZSA9IGF3YWl0IGdldEZpbGVTdG9yYWdlKCk7XG4gICAgICAgIGxldCBjb2xsZWN0aW9ucyA9IGF3YWl0IGZpbGVTdG9yYWdlLmZvbGRlci5nZXRTdG9yYWdlKFwiY29sbGVjdGlvbnNcIik7XG4gICAgICAgIGxldCBiYXNlU3RvcmFnZSA9IGF3YWl0IGNvbGxlY3Rpb25zLmZvbGRlci5nZXRTdG9yYWdlKHRoaXMuY29sbGVjdGlvbk5hbWUpO1xuICAgICAgICByZXR1cm4gYmFzZVN0b3JhZ2U7XG4gICAgfVxuICAgIHByaXZhdGUgc3luY2VkID0gKFxuICAgICAgICBuZXcgUGVuZGluZ1N0b3JhZ2UoYENvbGxlY3Rpb24gKCR7dGhpcy5jb2xsZWN0aW9uTmFtZX0pYCxcbiAgICAgICAgICAgIG5ldyBEZWxheWVkU3RvcmFnZSh0aGlzLmluaXRTdG9yYWdlKCkpXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgcHVibGljIGFzeW5jIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN5bmNlZC5nZXQoa2V5KTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIHNldChrZXk6IHN0cmluZywgdmFsdWU6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNlZC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyByZW1vdmUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jZWQucmVtb3ZlKGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRLZXlzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc3luY2VkLmdldEtleXMoKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGdldEluZm8oa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc3luY2VkLmdldEluZm8oa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVzZXQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY2VkLnJlc2V0KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlza0NvbGxlY3Rpb25SYXdCcm93c2VyIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcpIHsgfVxuICAgIGFzeW5jIGluaXRTdG9yYWdlKCk6IFByb21pc2U8SVN0b3JhZ2U8QnVmZmVyPj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByaXZhdGVGaWxlU3lzdGVtU3RvcmFnZShgY29sbGVjdGlvbnMvJHt0aGlzLmNvbGxlY3Rpb25OYW1lfWApO1xuICAgIH1cbiAgICBwcml2YXRlIHN5bmNlZCA9IG5ldyBTdG9yYWdlU3luYyhcbiAgICAgICAgbmV3IFBlbmRpbmdTdG9yYWdlKGBDb2xsZWN0aW9uICgke3RoaXMuY29sbGVjdGlvbk5hbWV9KWAsXG4gICAgICAgICAgICBuZXcgRGVsYXllZFN0b3JhZ2UodGhpcy5pbml0U3RvcmFnZSgpKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBCdWZmZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jZWQuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFByb21pc2Uoa2V5OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zeW5jZWQuZ2V0KGtleSk7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBCdWZmZXIpIHtcbiAgICAgICAgdGhpcy5zeW5jZWQuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZ2V0S2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN5bmNlZC5nZXRLZXlzKCk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyBnZXRJbmZvKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN5bmNlZC5nZXRJbmZvKGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc2V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNlZC5yZXNldCgpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0ZpbGVTdG9yYWdlQnVmZmVyU3luY2VyKGZvbGRlciA9IFwiXCIpIHtcbiAgICBsZXQgYmFzZSA9IG5ldyBQZW5kaW5nU3RvcmFnZShgRmlsZVN0b3JhZ2VCdWZmZXJTeW5jZXJgLFxuICAgICAgICBuZXcgRGVsYXllZFN0b3JhZ2UoZ2V0RmlsZVN0b3JhZ2VOZXN0ZWQoZm9sZGVyKSlcbiAgICApO1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVN5bmMoYmFzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdGaWxlU3RvcmFnZUpTT05TeW5jZXI8VD4oZm9sZGVyID0gXCJcIikge1xuICAgIGxldCBiYXNlID0gbmV3IFBlbmRpbmdTdG9yYWdlKGBGaWxlU3RvcmFnZUpTT05TeW5jZXJgLFxuICAgICAgICBuZXcgRGVsYXllZFN0b3JhZ2UoZ2V0RmlsZVN0b3JhZ2VOZXN0ZWQoZm9sZGVyKSlcbiAgICApO1xuICAgIHJldHVybiBuZXcgU3RvcmFnZVN5bmMobmV3IEpTT05TdG9yYWdlPFQ+KGJhc2UpKTtcbn0iXX0=
|
|
241
|
+
/* _JS_SOURCE_HASH = "9040948c89cb52116d4a857fc8dc90924b8e12c2aeb4e436d3dfd0091470df55"; */
|