@stemy/backend 6.0.4 → 6.1.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.
Files changed (39) hide show
  1. package/commands/clear.command.d.ts +6 -0
  2. package/commands/fixtures.command.d.ts +9 -0
  3. package/commands/move-assets.command.d.ts +10 -0
  4. package/common-types.d.ts +22 -15
  5. package/esm2022/commands/clear.command.mjs +15 -0
  6. package/esm2022/commands/fixtures.command.mjs +26 -0
  7. package/esm2022/commands/index.mjs +6 -4
  8. package/esm2022/commands/move-assets.command.mjs +45 -0
  9. package/esm2022/common-types.mjs +3 -5
  10. package/esm2022/public_api.mjs +15 -14
  11. package/esm2022/services/assets.mjs +46 -13
  12. package/esm2022/services/backend-provider.mjs +7 -1
  13. package/esm2022/services/cli-terminal.mjs +56 -0
  14. package/esm2022/services/configuration.mjs +11 -4
  15. package/esm2022/services/drivers/asset-grid.driver.mjs +5 -5
  16. package/esm2022/services/drivers/asset-local.driver.mjs +19 -16
  17. package/esm2022/services/drivers/asset-storage-proxy.driver.mjs +15 -10
  18. package/esm2022/services/drivers/fallback-streams.mjs +1 -39
  19. package/esm2022/services/entities/asset.mjs +47 -6
  20. package/esm2022/services/entities/temp-asset.mjs +15 -3
  21. package/esm2022/services/terminal-manager.mjs +30 -16
  22. package/esm2022/socket-controllers/socket-terminal.mjs +89 -0
  23. package/esm2022/socket-controllers/terminal.controller.mjs +3 -3
  24. package/fesm2022/stemy-backend.mjs +357 -213
  25. package/fesm2022/stemy-backend.mjs.map +1 -1
  26. package/package.json +2 -2
  27. package/public_api.d.ts +1 -1
  28. package/services/assets.d.ts +13 -5
  29. package/services/cli-terminal.d.ts +18 -0
  30. package/services/configuration.d.ts +2 -0
  31. package/services/drivers/asset-grid.driver.d.ts +4 -4
  32. package/services/drivers/asset-local.driver.d.ts +6 -5
  33. package/services/drivers/asset-storage-proxy.driver.d.ts +5 -5
  34. package/services/drivers/fallback-streams.d.ts +1 -8
  35. package/services/entities/asset.d.ts +8 -3
  36. package/services/entities/temp-asset.d.ts +6 -1
  37. package/services/terminal-manager.d.ts +3 -0
  38. package/socket-controllers/socket-terminal.d.ts +19 -0
  39. package/socket-controllers/terminal.controller.d.ts +2 -2
@@ -0,0 +1,56 @@
1
+ import * as readline from "readline";
2
+ export class CliTerminal {
3
+ callbacks = new Set();
4
+ stdin = process.stdin;
5
+ constructor() {
6
+ // Set stdin to raw mode to get character-by-character data
7
+ if (this.stdin.isTTY) {
8
+ this.stdin.setRawMode(true);
9
+ }
10
+ this.clearScreen();
11
+ this.stdin.setEncoding('utf8');
12
+ this.stdin.on('data', this.handleInput);
13
+ }
14
+ clearScreen() {
15
+ readline.cursorTo(process.stdout, 0, 0);
16
+ readline.clearScreenDown(process.stdout);
17
+ }
18
+ handleInput = (data) => {
19
+ const input = data.toString();
20
+ // Standard "Ctrl+C" exit handling
21
+ if (input === '\u0003') {
22
+ this.clearScreen();
23
+ this.dispose();
24
+ }
25
+ this.callbacks.forEach((cb) => cb(input));
26
+ };
27
+ /**
28
+ * Registers a listener for data input.
29
+ * Returns an IDisposable to unregister the listener.
30
+ */
31
+ onData(cb) {
32
+ this.callbacks.add(cb);
33
+ return {
34
+ dispose: () => this.callbacks.delete(cb),
35
+ };
36
+ }
37
+ write(data) {
38
+ process.stdout.write(data);
39
+ }
40
+ writeln(data) {
41
+ process.stdout.write(data + '\n');
42
+ }
43
+ loadAddon(addon) {
44
+ addon.activate(this);
45
+ }
46
+ dispose() {
47
+ if (this.stdin.isTTY) {
48
+ this.stdin.setRawMode(false);
49
+ }
50
+ this.stdin.removeListener('data', this.handleInput);
51
+ this.stdin.pause();
52
+ this.callbacks.clear();
53
+ process.exit();
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRlcm1pbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2NsaS10ZXJtaW5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUlyQyxNQUFNLE9BQU8sV0FBVztJQUNaLFNBQVMsR0FBK0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNsRCxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQTBCLENBQUM7SUFFbkQ7UUFDSSwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sV0FBVztRQUNmLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFdBQVcsR0FBRyxDQUFDLElBQXFCLEVBQVEsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFOUIsa0NBQWtDO1FBQ2xDLElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBeUI7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsT0FBTztZQUNILE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBWTtRQUNyQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sT0FBTyxDQUFDLElBQVk7UUFDdkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBcUI7UUFDbEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xyXG5pbXBvcnQge0lEaXNwb3NhYmxlLCBJVGVybWluYWxBZGRvbn0gZnJvbSBcIkBzdGVteS90ZXJtaW5hbC1jb21tYW5kcy1hZGRvblwiO1xyXG5pbXBvcnQge0lUZXJtaW5hbH0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIENsaVRlcm1pbmFsIGltcGxlbWVudHMgSVRlcm1pbmFsIHtcclxuICAgIHByaXZhdGUgY2FsbGJhY2tzOiBTZXQ8KGRhdGE6IHN0cmluZykgPT4gYW55PiA9IG5ldyBTZXQoKTtcclxuICAgIHByaXZhdGUgc3RkaW4gPSBwcm9jZXNzLnN0ZGluIGFzIE5vZGVKUy5SZWFkU3RyZWFtO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIC8vIFNldCBzdGRpbiB0byByYXcgbW9kZSB0byBnZXQgY2hhcmFjdGVyLWJ5LWNoYXJhY3RlciBkYXRhXHJcbiAgICAgICAgaWYgKHRoaXMuc3RkaW4uaXNUVFkpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGRpbi5zZXRSYXdNb2RlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNsZWFyU2NyZWVuKCk7XHJcbiAgICAgICAgdGhpcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpO1xyXG4gICAgICAgIHRoaXMuc3RkaW4ub24oJ2RhdGEnLCB0aGlzLmhhbmRsZUlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsZWFyU2NyZWVuKCk6IHZvaWQge1xyXG4gICAgICAgIHJlYWRsaW5lLmN1cnNvclRvKHByb2Nlc3Muc3Rkb3V0LCAwLCAwKTtcclxuICAgICAgICByZWFkbGluZS5jbGVhclNjcmVlbkRvd24ocHJvY2Vzcy5zdGRvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlSW5wdXQgPSAoZGF0YTogQnVmZmVyIHwgc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkYXRhLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIC8vIFN0YW5kYXJkIFwiQ3RybCtDXCIgZXhpdCBoYW5kbGluZ1xyXG4gICAgICAgIGlmIChpbnB1dCA9PT0gJ1xcdTAwMDMnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTY3JlZW4oKTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNhbGxiYWNrcy5mb3JFYWNoKChjYikgPT4gY2IoaW5wdXQpKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgZGF0YSBpbnB1dC5cclxuICAgICAqIFJldHVybnMgYW4gSURpc3Bvc2FibGUgdG8gdW5yZWdpc3RlciB0aGUgbGlzdGVuZXIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkRhdGEoY2I6IChkYXRhOiBzdHJpbmcpID0+IGFueSk6IElEaXNwb3NhYmxlIHtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrcy5hZGQoY2IpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRpc3Bvc2U6ICgpID0+IHRoaXMuY2FsbGJhY2tzLmRlbGV0ZShjYiksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgd3JpdGUoZGF0YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHdyaXRlbG4oZGF0YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZGF0YSArICdcXG4nKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9hZEFkZG9uKGFkZG9uOiBJVGVybWluYWxBZGRvbik6IHZvaWQge1xyXG4gICAgICAgIGFkZG9uLmFjdGl2YXRlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0ZGluLmlzVFRZKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RkaW4uc2V0UmF3TW9kZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RkaW4ucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCB0aGlzLmhhbmRsZUlucHV0KTtcclxuICAgICAgICB0aGlzLnN0ZGluLnBhdXNlKCk7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFja3MuY2xlYXIoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -4,10 +4,12 @@ import dotenv from "dotenv";
4
4
  import { PARAMETER } from "../common-types";
5
5
  import { colorize, ConsoleColor, convertValue, getType, isFunction } from "../utils";
6
6
  let Configuration = class Configuration {
7
+ isCli;
7
8
  paramMap;
8
9
  paramValues;
9
10
  constructor(params) {
10
11
  dotenv.config();
12
+ this.isCli = process.env.IS_CLI === 'true';
11
13
  this.paramMap = {};
12
14
  this.paramValues = {};
13
15
  (params || []).forEach(param => this.add(param));
@@ -28,15 +30,15 @@ let Configuration = class Configuration {
28
30
  const value = isFunction(param.resolver)
29
31
  ? param.resolver(envValue, helper)
30
32
  : convertValue(envValue, getType(param.defaultValue));
31
- console.log(colorize(`Processing param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), colorize(envName, ConsoleColor.FgBlue), `"${envValue}"`, value);
33
+ this.log(colorize(`Processing param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), colorize(envName, ConsoleColor.FgBlue), `"${envValue}"`, value);
32
34
  return value;
33
35
  }
34
36
  else if (isFunction(param.resolver)) {
35
37
  const value = param.resolver(param.defaultValue, helper);
36
- console.log(colorize(`Processing default param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), param.defaultValue, value);
38
+ this.log(colorize(`Processing default param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), param.defaultValue, value);
37
39
  return value;
38
40
  }
39
- console.log(colorize(`Using default param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), param.defaultValue);
41
+ this.log(colorize(`Using default param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), param.defaultValue);
40
42
  return param.defaultValue;
41
43
  }
42
44
  hasParam(name) {
@@ -58,6 +60,11 @@ let Configuration = class Configuration {
58
60
  }
59
61
  return this.paramValues[name];
60
62
  }
63
+ log(...args) {
64
+ if (this.isCli)
65
+ return;
66
+ console.log(...args);
67
+ }
61
68
  };
62
69
  Configuration = __decorate([
63
70
  singleton(),
@@ -65,4 +72,4 @@ Configuration = __decorate([
65
72
  __metadata("design:paramtypes", [Array])
66
73
  ], Configuration);
67
74
  export { Configuration };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLFNBQVMsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRzVFLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWE7SUFFWixRQUFRLENBQThCO0lBQ3RDLFdBQVcsQ0FBd0I7SUFFN0MsWUFBa0MsTUFBbUI7UUFDakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsR0FBRyxDQUFDLEtBQWdCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN6RCxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDaEQsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcs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QyxJQUFJLENBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNKLENBQUE7QUEzRVksYUFBYTtJQUR6QixTQUFTLEVBQUU7SUFNSyxXQUFBLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTs7R0FMeEIsYUFBYSxDQTJFekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdEFsbCwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IGRvdGVudiBmcm9tIFwiZG90ZW52XCI7XHJcblxyXG5pbXBvcnQge1BBUkFNRVRFUiwgUGFyYW1ldGVyfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7Y29sb3JpemUsIENvbnNvbGVDb2xvciwgY29udmVydFZhbHVlLCBnZXRUeXBlLCBpc0Z1bmN0aW9ufSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvbiB7XHJcblxyXG4gICAgcHJvdGVjdGVkIHBhcmFtTWFwOiB7W25hbWU6IHN0cmluZ106IFBhcmFtZXRlcn07XHJcbiAgICBwcm90ZWN0ZWQgcGFyYW1WYWx1ZXM6IHtbbmFtZTogc3RyaW5nXTogYW55fTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihAaW5qZWN0QWxsKFBBUkFNRVRFUikgcGFyYW1zOiBQYXJhbWV0ZXJbXSkge1xyXG4gICAgICAgIGRvdGVudi5jb25maWcoKTtcclxuICAgICAgICB0aGlzLnBhcmFtTWFwID0ge307XHJcbiAgICAgICAgdGhpcy5wYXJhbVZhbHVlcyA9IHt9O1xyXG4gICAgICAgIChwYXJhbXMgfHwgW10pLmZvckVhY2gocGFyYW0gPT4gdGhpcy5hZGQocGFyYW0pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkKHBhcmFtOiBQYXJhbWV0ZXIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBleGlzdGluZ1BhcmFtID0gdGhpcy5wYXJhbU1hcFtwYXJhbS5uYW1lXSB8fCBwYXJhbTtcclxuICAgICAgICBleGlzdGluZ1BhcmFtLmRlZmF1bHRWYWx1ZSA9IHBhcmFtLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICBleGlzdGluZ1BhcmFtLnJlc29sdmVyID0gcGFyYW0ucmVzb2x2ZXIgfHwgZXhpc3RpbmdQYXJhbS5yZXNvbHZlcjtcclxuICAgICAgICB0aGlzLnBhcmFtTWFwW3BhcmFtLm5hbWVdID0gZXhpc3RpbmdQYXJhbTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZVZhbHVlKHBhcmFtOiBQYXJhbWV0ZXIsIGFscmVhZHlSZXNvbHZlZDogc3RyaW5nW10pOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGVudk5hbWUgPSBwYXJhbS5uYW1lLnJlcGxhY2UoL1xcLj8oW0EtWnwwLTldKykvZywgZnVuY3Rpb24gKHgsIHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiX1wiICsgeS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgfSkucmVwbGFjZSgvXFwuL2dpLCBcIl9cIikucmVwbGFjZSgvXl8vLCBcIlwiKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGVudlZhbHVlID0gcHJvY2Vzcy5lbnZbZW52TmFtZV07XHJcbiAgICAgICAgY29uc3QgaGVscGVyID0gKHA6IHN0cmluZykgPT4gdGhpcy5yZXNvbHZlSW50ZXJuYWwocCwgYWxyZWFkeVJlc29sdmVkKTtcclxuICAgICAgICBpZiAodHlwZW9mIGVudlZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXNGdW5jdGlvbihwYXJhbS5yZXNvbHZlcilcclxuICAgICAgICAgICAgICAgID8gcGFyYW0ucmVzb2x2ZXIoZW52VmFsdWUsIGhlbHBlcilcclxuICAgICAgICAgICAgICAgIDogY29udmVydFZhbHVlKGVudlZhbHVlLCBnZXRUeXBlKHBhcmFtLmRlZmF1bHRWYWx1ZSkpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgIGNvbG9yaXplKGBQcm9jZXNzaW5nIHBhcmFtIHZhbHVlYCwgQ29uc29sZUNvbG9yLkZnWWVsbG93KSxcclxuICAgICAgICAgICAgICAgIGNvbG9yaXplKHBhcmFtLm5hbWUsIENvbnNvbGVDb2xvci5GZ0dyZWVuKSxcclxuICAgICAgICAgICAgICAgIGNvbG9yaXplKGVudk5hbWUsIENvbnNvbGVDb2xvci5GZ0JsdWUpLFxyXG4gICAgICAgICAgICAgICAgYFwiJHtlbnZWYWx1ZX1cImAsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHBhcmFtLnJlc29sdmVyKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtLnJlc29sdmVyKHBhcmFtLmRlZmF1bHRWYWx1ZSwgaGVscGVyKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShgUHJvY2Vzc2luZyBkZWZhdWx0IHBhcmFtIHZhbHVlYCwgQ29uc29sZUNvbG9yLkZnWWVsbG93KSxcclxuICAgICAgICAgICAgICAgIGNvbG9yaXplKHBhcmFtLm5hbWUsIENvbnNvbGVDb2xvci5GZ0dyZWVuKSxcclxuICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHRWYWx1ZSxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICAgIGNvbG9yaXplKGBVc2luZyBkZWZhdWx0IHBhcmFtIHZhbHVlYCwgQ29uc29sZUNvbG9yLkZnWWVsbG93KSxcclxuICAgICAgICAgICAgY29sb3JpemUocGFyYW0ubmFtZSwgQ29uc29sZUNvbG9yLkZnR3JlZW4pLFxyXG4gICAgICAgICAgICBwYXJhbS5kZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gcGFyYW0uZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1BhcmFtKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMucGFyYW1NYXBbbmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgcmVzb2x2ZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVJbnRlcm5hbChuYW1lLCBbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlc29sdmVJbnRlcm5hbChuYW1lOiBzdHJpbmcsIGFscmVhZHlSZXNvbHZlZDogc3RyaW5nW10pOiBhbnkge1xyXG4gICAgICAgIGlmIChhbHJlYWR5UmVzb2x2ZWQuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkOiAke2FscmVhZHlSZXNvbHZlZC5qb2luKFwiIC0+IFwiKX0gLT4gJHtuYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhbHJlYWR5UmVzb2x2ZWQucHVzaChuYW1lKTtcclxuICAgICAgICBjb25zdCBwYXJhbSA9IHRoaXMucGFyYW1NYXBbbmFtZV07XHJcbiAgICAgICAgaWYgKCFwYXJhbSkgdGhyb3cgbmV3IEVycm9yKGBQYXJhbWV0ZXIgd2l0aCBuYW1lOiAnJHtuYW1lfScgZG9lcyBub3QgZXhpc3RzIGluIGNvbmZpZ3VyYXRpb25gKTtcclxuICAgICAgICBpZiAoIShuYW1lIGluIHRoaXMucGFyYW1WYWx1ZXMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1WYWx1ZXNbbmFtZV0gPSB0aGlzLnJlc29sdmVWYWx1ZShwYXJhbSwgYWxyZWFkeVJlc29sdmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1WYWx1ZXNbbmFtZV07XHJcbiAgICB9XHJcbn1cclxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLFNBQVMsRUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRzVFLElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQWE7SUFFYixLQUFLLENBQVU7SUFDZCxRQUFRLENBQThCO0lBQ3RDLFdBQVcsQ0FBd0I7SUFFN0MsWUFBa0MsTUFBbUI7UUFDakQsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsR0FBRyxDQUFDLEtBQWdCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN6RCxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDaEQsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMs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QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDSixDQUFBO0FBbEZZLGFBQWE7SUFEekIsU0FBUyxFQUFFO0lBT0ssV0FBQSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7O0dBTnhCLGFBQWEsQ0FrRnpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RBbGwsIHNpbmdsZXRvbn0gZnJvbSBcInRzeXJpbmdlXCI7XHJcbmltcG9ydCBkb3RlbnYgZnJvbSBcImRvdGVudlwiO1xyXG5cclxuaW1wb3J0IHtQQVJBTUVURVIsIFBhcmFtZXRlcn0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2NvbG9yaXplLCBDb25zb2xlQ29sb3IsIGNvbnZlcnRWYWx1ZSwgZ2V0VHlwZSwgaXNGdW5jdGlvbn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb24ge1xyXG5cclxuICAgIHJlYWRvbmx5IGlzQ2xpOiBib29sZWFuO1xyXG4gICAgcHJvdGVjdGVkIHBhcmFtTWFwOiB7W25hbWU6IHN0cmluZ106IFBhcmFtZXRlcn07XHJcbiAgICBwcm90ZWN0ZWQgcGFyYW1WYWx1ZXM6IHtbbmFtZTogc3RyaW5nXTogYW55fTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihAaW5qZWN0QWxsKFBBUkFNRVRFUikgcGFyYW1zOiBQYXJhbWV0ZXJbXSkge1xyXG4gICAgICAgIGRvdGVudi5jb25maWcoKTtcclxuICAgICAgICB0aGlzLmlzQ2xpID0gcHJvY2Vzcy5lbnYuSVNfQ0xJID09PSAndHJ1ZSc7XHJcbiAgICAgICAgdGhpcy5wYXJhbU1hcCA9IHt9O1xyXG4gICAgICAgIHRoaXMucGFyYW1WYWx1ZXMgPSB7fTtcclxuICAgICAgICAocGFyYW1zIHx8IFtdKS5mb3JFYWNoKHBhcmFtID0+IHRoaXMuYWRkKHBhcmFtKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGFkZChwYXJhbTogUGFyYW1ldGVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdQYXJhbSA9IHRoaXMucGFyYW1NYXBbcGFyYW0ubmFtZV0gfHwgcGFyYW07XHJcbiAgICAgICAgZXhpc3RpbmdQYXJhbS5kZWZhdWx0VmFsdWUgPSBwYXJhbS5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgZXhpc3RpbmdQYXJhbS5yZXNvbHZlciA9IHBhcmFtLnJlc29sdmVyIHx8IGV4aXN0aW5nUGFyYW0ucmVzb2x2ZXI7XHJcbiAgICAgICAgdGhpcy5wYXJhbU1hcFtwYXJhbS5uYW1lXSA9IGV4aXN0aW5nUGFyYW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlc29sdmVWYWx1ZShwYXJhbTogUGFyYW1ldGVyLCBhbHJlYWR5UmVzb2x2ZWQ6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBjb25zdCBlbnZOYW1lID0gcGFyYW0ubmFtZS5yZXBsYWNlKC9cXC4/KFtBLVp8MC05XSspL2csIGZ1bmN0aW9uICh4LCB5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIl9cIiArIHkudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIH0pLnJlcGxhY2UoL1xcLi9naSwgXCJfXCIpLnJlcGxhY2UoL15fLywgXCJcIikudG9VcHBlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBlbnZWYWx1ZSA9IHByb2Nlc3MuZW52W2Vudk5hbWVdO1xyXG4gICAgICAgIGNvbnN0IGhlbHBlciA9IChwOiBzdHJpbmcpID0+IHRoaXMucmVzb2x2ZUludGVybmFsKHAsIGFscmVhZHlSZXNvbHZlZCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBlbnZWYWx1ZSAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlzRnVuY3Rpb24ocGFyYW0ucmVzb2x2ZXIpXHJcbiAgICAgICAgICAgICAgICA/IHBhcmFtLnJlc29sdmVyKGVudlZhbHVlLCBoZWxwZXIpXHJcbiAgICAgICAgICAgICAgICA6IGNvbnZlcnRWYWx1ZShlbnZWYWx1ZSwgZ2V0VHlwZShwYXJhbS5kZWZhdWx0VmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5sb2coXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShgUHJvY2Vzc2luZyBwYXJhbSB2YWx1ZWAsIENvbnNvbGVDb2xvci5GZ1llbGxvdyksXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShwYXJhbS5uYW1lLCBDb25zb2xlQ29sb3IuRmdHcmVlbiksXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShlbnZOYW1lLCBDb25zb2xlQ29sb3IuRmdCbHVlKSxcclxuICAgICAgICAgICAgICAgIGBcIiR7ZW52VmFsdWV9XCJgLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihwYXJhbS5yZXNvbHZlcikpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbS5yZXNvbHZlcihwYXJhbS5kZWZhdWx0VmFsdWUsIGhlbHBlcik7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFxyXG4gICAgICAgICAgICAgICAgY29sb3JpemUoYFByb2Nlc3NpbmcgZGVmYXVsdCBwYXJhbSB2YWx1ZWAsIENvbnNvbGVDb2xvci5GZ1llbGxvdyksXHJcbiAgICAgICAgICAgICAgICBjb2xvcml6ZShwYXJhbS5uYW1lLCBDb25zb2xlQ29sb3IuRmdHcmVlbiksXHJcbiAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9nKFxyXG4gICAgICAgICAgICBjb2xvcml6ZShgVXNpbmcgZGVmYXVsdCBwYXJhbSB2YWx1ZWAsIENvbnNvbGVDb2xvci5GZ1llbGxvdyksXHJcbiAgICAgICAgICAgIGNvbG9yaXplKHBhcmFtLm5hbWUsIENvbnNvbGVDb2xvci5GZ0dyZWVuKSxcclxuICAgICAgICAgICAgcGFyYW0uZGVmYXVsdFZhbHVlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHBhcmFtLmRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNQYXJhbShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLnBhcmFtTWFwW25hbWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc29sdmUobmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlSW50ZXJuYWwobmFtZSwgW10pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlSW50ZXJuYWwobmFtZTogc3RyaW5nLCBhbHJlYWR5UmVzb2x2ZWQ6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBpZiAoYWxyZWFkeVJlc29sdmVkLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZDogJHthbHJlYWR5UmVzb2x2ZWQuam9pbihcIiAtPiBcIil9IC0+ICR7bmFtZX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWxyZWFkeVJlc29sdmVkLnB1c2gobmFtZSk7XHJcbiAgICAgICAgY29uc3QgcGFyYW0gPSB0aGlzLnBhcmFtTWFwW25hbWVdO1xyXG4gICAgICAgIGlmICghcGFyYW0pIHRocm93IG5ldyBFcnJvcihgUGFyYW1ldGVyIHdpdGggbmFtZTogJyR7bmFtZX0nIGRvZXMgbm90IGV4aXN0cyBpbiBjb25maWd1cmF0aW9uYCk7XHJcbiAgICAgICAgaWYgKCEobmFtZSBpbiB0aGlzLnBhcmFtVmFsdWVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtVmFsdWVzW25hbWVdID0gdGhpcy5yZXNvbHZlVmFsdWUocGFyYW0sIGFscmVhZHlSZXNvbHZlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFtVmFsdWVzW25hbWVdO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsb2coLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICBpZiAodGhpcy5pc0NsaSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -10,11 +10,11 @@ let AssetGridDriver = class AssetGridDriver {
10
10
  openUploadStream(filename, opts) {
11
11
  return this.bucket.openUploadStream(filename, opts);
12
12
  }
13
- openDownloadStream(id) {
14
- return this.bucket.openDownloadStream(id);
13
+ openDownloadStream(asset) {
14
+ return this.bucket.openDownloadStream(asset.streamId);
15
15
  }
16
- delete(id) {
17
- return this.bucket.delete(id);
16
+ delete(asset) {
17
+ return this.bucket.delete(asset.streamId);
18
18
  }
19
19
  };
20
20
  AssetGridDriver = __decorate([
@@ -22,4 +22,4 @@ AssetGridDriver = __decorate([
22
22
  __metadata("design:paramtypes", [MongoConnector])
23
23
  ], AssetGridDriver);
24
24
  export { AssetGridDriver };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtZ3JpZC5kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZHJpdmVycy9hc3NldC1ncmlkLmRyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUMsWUFBWSxJQUFJLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUczQyxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlO0lBRWQsTUFBTSxDQUFlO0lBRS9CLFlBQVksU0FBeUI7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsSUFBdUI7UUFDdEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBWTtRQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0osQ0FBQTtBQW5CWSxlQUFlO0lBRDNCLFVBQVUsRUFBRTtxQ0FLYyxjQUFjO0dBSjVCLGVBQWUsQ0FtQjNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7R3JpZEZTQnVja2V0LCBPYmplY3RJZH0gZnJvbSAnbW9uZ29kYic7XG5pbXBvcnQge0dyaWRGU0J1Y2tldCBhcyBCdWNrZXRJbXBsfSBmcm9tICdtb25nb2RiL2xpYi9ncmlkZnMnO1xuXG5pbXBvcnQge0lBc3NldERyaXZlciwgSUFzc2V0VXBsb2FkT3B0c30gZnJvbSAnLi4vLi4vY29tbW9uLXR5cGVzJztcbmltcG9ydCB7TW9uZ29Db25uZWN0b3J9IGZyb20gXCIuLi9tb25nby1jb25uZWN0b3JcIjtcblxuQGluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFzc2V0R3JpZERyaXZlciBpbXBsZW1lbnRzIElBc3NldERyaXZlciB7XG5cbiAgICBwcm90ZWN0ZWQgYnVja2V0OiBHcmlkRlNCdWNrZXQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25uZWN0b3I6IE1vbmdvQ29ubmVjdG9yKSB7XG4gICAgICAgIHRoaXMuYnVja2V0ID0gbmV3IEJ1Y2tldEltcGwoY29ubmVjdG9yLmRhdGFiYXNlLCB7YnVja2V0TmFtZTogJ2Fzc2V0cyd9KTtcbiAgICB9XG5cbiAgICBvcGVuVXBsb2FkU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIG9wdHM/OiBJQXNzZXRVcGxvYWRPcHRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1Y2tldC5vcGVuVXBsb2FkU3RyZWFtKGZpbGVuYW1lLCBvcHRzKTtcbiAgICB9XG5cbiAgICBvcGVuRG93bmxvYWRTdHJlYW0oaWQ6IE9iamVjdElkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1Y2tldC5vcGVuRG93bmxvYWRTdHJlYW0oaWQpO1xuICAgIH1cblxuICAgIGRlbGV0ZShpZDogT2JqZWN0SWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVja2V0LmRlbGV0ZShpZCk7XG4gICAgfVxufVxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtZ3JpZC5kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZHJpdmVycy9hc3NldC1ncmlkLmRyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUMsWUFBWSxJQUFJLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUczQyxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFlO0lBRWQsTUFBTSxDQUFlO0lBRS9CLFlBQVksU0FBeUI7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsSUFBdUI7UUFDdEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0osQ0FBQTtBQW5CWSxlQUFlO0lBRDNCLFVBQVUsRUFBRTtxQ0FLYyxjQUFjO0dBSjVCLGVBQWUsQ0FtQjNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3RhYmxlfSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7R3JpZEZTQnVja2V0fSBmcm9tICdtb25nb2RiJztcbmltcG9ydCB7R3JpZEZTQnVja2V0IGFzIEJ1Y2tldEltcGx9IGZyb20gJ21vbmdvZGIvbGliL2dyaWRmcyc7XG5cbmltcG9ydCB7SUFzc2V0LCBJQXNzZXREcml2ZXIsIElBc3NldFVwbG9hZE9wdHN9IGZyb20gJy4uLy4uL2NvbW1vbi10eXBlcyc7XG5pbXBvcnQge01vbmdvQ29ubmVjdG9yfSBmcm9tIFwiLi4vbW9uZ28tY29ubmVjdG9yXCI7XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBc3NldEdyaWREcml2ZXIgaW1wbGVtZW50cyBJQXNzZXREcml2ZXIge1xuXG4gICAgcHJvdGVjdGVkIGJ1Y2tldDogR3JpZEZTQnVja2V0O1xuXG4gICAgY29uc3RydWN0b3IoY29ubmVjdG9yOiBNb25nb0Nvbm5lY3Rvcikge1xuICAgICAgICB0aGlzLmJ1Y2tldCA9IG5ldyBCdWNrZXRJbXBsKGNvbm5lY3Rvci5kYXRhYmFzZSwge2J1Y2tldE5hbWU6ICdhc3NldHMnfSk7XG4gICAgfVxuXG4gICAgb3BlblVwbG9hZFN0cmVhbShmaWxlbmFtZTogc3RyaW5nLCBvcHRzPzogSUFzc2V0VXBsb2FkT3B0cykge1xuICAgICAgICByZXR1cm4gdGhpcy5idWNrZXQub3BlblVwbG9hZFN0cmVhbShmaWxlbmFtZSwgb3B0cyk7XG4gICAgfVxuXG4gICAgb3BlbkRvd25sb2FkU3RyZWFtKGFzc2V0OiBJQXNzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVja2V0Lm9wZW5Eb3dubG9hZFN0cmVhbShhc3NldC5zdHJlYW1JZCk7XG4gICAgfVxuXG4gICAgZGVsZXRlKGFzc2V0OiBJQXNzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVja2V0LmRlbGV0ZShhc3NldC5zdHJlYW1JZCk7XG4gICAgfVxufVxuIl19
@@ -1,39 +1,42 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
- import { createReadStream, createWriteStream, mkdirSync } from 'fs';
3
- import { inject, injectable } from "tsyringe";
4
- import { rm, writeFile } from 'fs/promises';
5
- import { Types } from 'mongoose';
6
- import { LOCAL_DIR } from '../../common-types';
2
+ import { createReadStream, createWriteStream, mkdirSync, writeFileSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { inject, injectable } from 'tsyringe';
5
+ import { rm } from 'fs/promises';
6
+ import { ObjectId } from 'bson';
7
+ import { ASSET_LOCAL_DIR } from '../../common-types';
7
8
  let AssetLocalDriver = class AssetLocalDriver {
8
9
  dir;
9
10
  constructor(dir) {
10
11
  this.dir = dir;
11
12
  }
12
13
  openUploadStream(filename, opts) {
13
- const id = new Types.ObjectId();
14
+ const id = new ObjectId();
14
15
  const dir = `${this.dir}/${id.toHexString()}`;
15
16
  mkdirSync(dir, { recursive: true });
16
- const stream = createWriteStream(`${dir}/file.bin`);
17
- stream.id = id;
17
+ const stream = createWriteStream(this.getPath(id, filename, opts.extension));
18
18
  stream.done = false;
19
19
  stream.on('finish', () => {
20
- writeFile(`${dir}/filename.txt`, filename);
21
- writeFile(`${dir}/metadata.json`, JSON.stringify(opts?.metadata || {}));
20
+ stream.id = id;
22
21
  stream.done = true;
22
+ writeFileSync(`${dir}/metadata.json`, JSON.stringify(opts?.metadata || {}));
23
23
  });
24
24
  return stream;
25
25
  }
26
- openDownloadStream(id) {
27
- return createReadStream(`${this.dir}/${id.toHexString()}/file.bin`, { autoClose: true, emitClose: true });
26
+ openDownloadStream(asset) {
27
+ return createReadStream(this.getPath(asset.streamId, asset.filename, asset.metadata.extension), { autoClose: true, emitClose: true });
28
28
  }
29
- delete(id) {
30
- return rm(`${this.dir}/${id.toHexString()}`, { recursive: true, force: true });
29
+ delete(asset) {
30
+ return rm(this.getPath(asset.streamId, asset.filename, asset.metadata.extension), { recursive: true, force: true });
31
+ }
32
+ getPath(id, name, ext) {
33
+ return join(this.dir, id.toHexString(), `${name}.${ext}`);
31
34
  }
32
35
  };
33
36
  AssetLocalDriver = __decorate([
34
37
  injectable(),
35
- __param(0, inject(LOCAL_DIR)),
38
+ __param(0, inject(ASSET_LOCAL_DIR)),
36
39
  __metadata("design:paramtypes", [String])
37
40
  ], AssetLocalDriver);
38
41
  export { AssetLocalDriver };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbG9jYWwuZHJpdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2RyaXZlcnMvYXNzZXQtbG9jYWwuZHJpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxFQUFFLEVBQUUsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFL0IsT0FBTyxFQUFxRCxTQUFTLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRixJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQUVnQjtJQUF6QyxZQUF5QyxHQUFXO1FBQVgsUUFBRyxHQUFILEdBQUcsQ0FBUTtJQUNwRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxJQUF1QjtRQUN0RCxNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDOUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxXQUFXLENBQXVCLENBQUM7UUFDMUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNwQixNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDckIsU0FBUyxDQUFDLEdBQUcsR0FBRyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDM0MsU0FBUyxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFZO1FBQzNCLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVk7UUFDZixPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7Q0FDSixDQUFBO0FBM0JZLGdCQUFnQjtJQUQ1QixVQUFVLEVBQUU7SUFHSSxXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTs7R0FGckIsZ0JBQWdCLENBMkI1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlUmVhZFN0cmVhbSwgY3JlYXRlV3JpdGVTdHJlYW0sIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtpbmplY3QsIGluamVjdGFibGV9IGZyb20gXCJ0c3lyaW5nZVwiO1xuaW1wb3J0IHtybSwgd3JpdGVGaWxlfSBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgdHlwZSB7T2JqZWN0SWR9IGZyb20gJ21vbmdvZGInO1xuaW1wb3J0IHtUeXBlc30gZnJvbSAnbW9uZ29vc2UnO1xuXG5pbXBvcnQge0lBc3NldERyaXZlciwgSUFzc2V0VXBsb2FkT3B0cywgSUFzc2V0VXBsb2FkU3RyZWFtLCBMT0NBTF9ESVJ9IGZyb20gJy4uLy4uL2NvbW1vbi10eXBlcyc7XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBc3NldExvY2FsRHJpdmVyIGltcGxlbWVudHMgSUFzc2V0RHJpdmVyIHtcblxuICAgIGNvbnN0cnVjdG9yKEBpbmplY3QoTE9DQUxfRElSKSBwcm90ZWN0ZWQgZGlyOiBzdHJpbmcpIHtcbiAgICB9XG5cbiAgICBvcGVuVXBsb2FkU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIG9wdHM/OiBJQXNzZXRVcGxvYWRPcHRzKSB7XG4gICAgICAgIGNvbnN0IGlkID0gbmV3IFR5cGVzLk9iamVjdElkKCk7XG4gICAgICAgIGNvbnN0IGRpciA9IGAke3RoaXMuZGlyfS8ke2lkLnRvSGV4U3RyaW5nKCl9YDtcbiAgICAgICAgbWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IGNyZWF0ZVdyaXRlU3RyZWFtKGAke2Rpcn0vZmlsZS5iaW5gKSBhcyBJQXNzZXRVcGxvYWRTdHJlYW07XG4gICAgICAgIHN0cmVhbS5pZCA9IGlkO1xuICAgICAgICBzdHJlYW0uZG9uZSA9IGZhbHNlO1xuICAgICAgICBzdHJlYW0ub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgICAgICAgIHdyaXRlRmlsZShgJHtkaXJ9L2ZpbGVuYW1lLnR4dGAsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIHdyaXRlRmlsZShgJHtkaXJ9L21ldGFkYXRhLmpzb25gLCBKU09OLnN0cmluZ2lmeShvcHRzPy5tZXRhZGF0YSB8fCB7fSkpO1xuICAgICAgICAgICAgc3RyZWFtLmRvbmUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbTtcbiAgICB9XG5cbiAgICBvcGVuRG93bmxvYWRTdHJlYW0oaWQ6IE9iamVjdElkKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKGAke3RoaXMuZGlyfS8ke2lkLnRvSGV4U3RyaW5nKCl9L2ZpbGUuYmluYCwge2F1dG9DbG9zZTogdHJ1ZSwgZW1pdENsb3NlOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlKGlkOiBPYmplY3RJZCkge1xuICAgICAgICByZXR1cm4gcm0oYCR7dGhpcy5kaXJ9LyR7aWQudG9IZXhTdHJpbmcoKX1gLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbG9jYWwuZHJpdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2RyaXZlcnMvYXNzZXQtbG9jYWwuZHJpdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBQyxNQUFNLElBQUksQ0FBQztBQUNqRixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQUMsZUFBZSxFQUE2RCxNQUFNLG9CQUFvQixDQUFDO0FBR3hHLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBRXNCO0lBQS9DLFlBQStDLEdBQVc7UUFBWCxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBQzFELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLElBQXNCO1FBQ3JELE1BQU0sRUFBRSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUF1QixDQUFDO1FBQ25HLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUNyQixNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ25CLGFBQWEsQ0FBQyxHQUFHLEdBQUcsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM1QixPQUFPLGdCQUFnQixDQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUN0RSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxDQUNyQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sRUFBRSxDQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3RFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQ25DLENBQUM7SUFDTixDQUFDO0lBRVMsT0FBTyxDQUFDLEVBQVksRUFBRSxJQUFZLEVBQUUsR0FBVztRQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDSixDQUFBO0FBcENZLGdCQUFnQjtJQUQ1QixVQUFVLEVBQUU7SUFHSSxXQUFBLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTs7R0FGM0IsZ0JBQWdCLENBb0M1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlUmVhZFN0cmVhbSwgY3JlYXRlV3JpdGVTdHJlYW0sIG1rZGlyU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtqb2lufSBmcm9tICdwYXRoJztcbmltcG9ydCB7aW5qZWN0LCBpbmplY3RhYmxlfSBmcm9tICd0c3lyaW5nZSc7XG5pbXBvcnQge3JtfSBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQge09iamVjdElkfSBmcm9tICdic29uJztcblxuaW1wb3J0IHtBU1NFVF9MT0NBTF9ESVIsIElBc3NldCwgSUFzc2V0RHJpdmVyLCBJQXNzZXRVcGxvYWRPcHRzLCBJQXNzZXRVcGxvYWRTdHJlYW19IGZyb20gJy4uLy4uL2NvbW1vbi10eXBlcyc7XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBc3NldExvY2FsRHJpdmVyIGltcGxlbWVudHMgSUFzc2V0RHJpdmVyIHtcblxuICAgIGNvbnN0cnVjdG9yKEBpbmplY3QoQVNTRVRfTE9DQUxfRElSKSBwcm90ZWN0ZWQgZGlyOiBzdHJpbmcpIHtcbiAgICB9XG5cbiAgICBvcGVuVXBsb2FkU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIG9wdHM6IElBc3NldFVwbG9hZE9wdHMpIHtcbiAgICAgICAgY29uc3QgaWQgPSBuZXcgT2JqZWN0SWQoKTtcbiAgICAgICAgY29uc3QgZGlyID0gYCR7dGhpcy5kaXJ9LyR7aWQudG9IZXhTdHJpbmcoKX1gO1xuICAgICAgICBta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gY3JlYXRlV3JpdGVTdHJlYW0odGhpcy5nZXRQYXRoKGlkLCBmaWxlbmFtZSwgb3B0cy5leHRlbnNpb24pKSBhcyBJQXNzZXRVcGxvYWRTdHJlYW07XG4gICAgICAgIHN0cmVhbS5kb25lID0gZmFsc2U7XG4gICAgICAgIHN0cmVhbS5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgICAgICAgc3RyZWFtLmlkID0gaWQ7XG4gICAgICAgICAgICBzdHJlYW0uZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB3cml0ZUZpbGVTeW5jKGAke2Rpcn0vbWV0YWRhdGEuanNvbmAsIEpTT04uc3RyaW5naWZ5KG9wdHM/Lm1ldGFkYXRhIHx8IHt9KSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3RyZWFtO1xuICAgIH1cblxuICAgIG9wZW5Eb3dubG9hZFN0cmVhbShhc3NldDogSUFzc2V0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKFxuICAgICAgICAgICAgdGhpcy5nZXRQYXRoKGFzc2V0LnN0cmVhbUlkLCBhc3NldC5maWxlbmFtZSwgYXNzZXQubWV0YWRhdGEuZXh0ZW5zaW9uKSxcbiAgICAgICAgICAgIHthdXRvQ2xvc2U6IHRydWUsIGVtaXRDbG9zZTogdHJ1ZX1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGUoYXNzZXQ6IElBc3NldCkge1xuICAgICAgICByZXR1cm4gcm0oXG4gICAgICAgICAgICB0aGlzLmdldFBhdGgoYXNzZXQuc3RyZWFtSWQsIGFzc2V0LmZpbGVuYW1lLCBhc3NldC5tZXRhZGF0YS5leHRlbnNpb24pLFxuICAgICAgICAgICAgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UGF0aChpZDogT2JqZWN0SWQsIG5hbWU6IHN0cmluZywgZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gam9pbih0aGlzLmRpciwgaWQudG9IZXhTdHJpbmcoKSwgYCR7bmFtZX0uJHtleHR9YCk7XG4gICAgfVxufVxuIl19
@@ -3,6 +3,7 @@ import { injectable } from "tsyringe";
3
3
  import { ObjectId } from "bson";
4
4
  import got from "got";
5
5
  import { Configuration } from "../configuration";
6
+ import { createFallbackReadable } from "./fallback-streams";
6
7
  let AssetStorageProxyDriver = class AssetStorageProxyDriver {
7
8
  config;
8
9
  baseUrl;
@@ -12,12 +13,9 @@ let AssetStorageProxyDriver = class AssetStorageProxyDriver {
12
13
  this.baseUrl = this.config.resolve("storageProxyUri");
13
14
  this.url = this.baseUrl + this.config.resolve("storageProxyBucket");
14
15
  }
15
- openDownloadStream(id) {
16
- return got.stream.get(this.getUrl(id));
17
- }
18
16
  openUploadStream(_, opts) {
19
17
  const id = new ObjectId();
20
- const stream = got.stream.put(this.getUrl(id), { headers: {
18
+ const stream = got.stream.put(this.getUrl(id, opts.extension), { headers: {
21
19
  'Content-Type': opts?.contentType || 'application/octet-stream'
22
20
  } });
23
21
  stream.done = false;
@@ -27,12 +25,19 @@ let AssetStorageProxyDriver = class AssetStorageProxyDriver {
27
25
  });
28
26
  return stream;
29
27
  }
30
- async delete(id) {
31
- console.log("DELETE", id.toHexString());
32
- await got.delete(this.getUrl(id));
28
+ openDownloadStream(asset) {
29
+ return createFallbackReadable(got.stream.get(this.getUrl(asset.streamId, asset.metadata.extension)), () => got.stream.get(this.getUrl(asset.streamId)));
30
+ }
31
+ async delete(asset) {
32
+ try {
33
+ await got.delete(this.getUrl(asset.streamId, asset.metadata.extension));
34
+ }
35
+ catch (e) {
36
+ await got.delete(this.getUrl(asset.streamId));
37
+ }
33
38
  }
34
- getUrl(id) {
35
- return `${this.url}/${id.toHexString()}`;
39
+ getUrl(id, ext) {
40
+ return !ext ? `${this.url}/${id.toHexString()}` : `${this.url}/${id.toHexString()}.${ext}`;
36
41
  }
37
42
  };
38
43
  AssetStorageProxyDriver = __decorate([
@@ -40,4 +45,4 @@ AssetStorageProxyDriver = __decorate([
40
45
  __metadata("design:paramtypes", [Configuration])
41
46
  ], AssetStorageProxyDriver);
42
47
  export { AssetStorageProxyDriver };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc3RvcmFnZS1wcm94eS5kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZHJpdmVycy9hc3NldC1zdG9yYWdlLXByb3h5LmRyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUV0QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHeEMsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUFLVjtJQUhiLE9BQU8sQ0FBUztJQUNoQixHQUFHLENBQVM7SUFFckIsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVk7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQVMsRUFBRSxJQUF1QjtRQUMvQyxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUU7Z0JBQ2pELGNBQWMsRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLDBCQUEwQjthQUNsRSxFQUFDLENBQXVCLENBQUM7UUFDOUIsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDcEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFZO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVTLE1BQU0sQ0FBQyxFQUFZO1FBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FDSixDQUFBO0FBbkNZLHVCQUF1QjtJQURuQyxVQUFVLEVBQUU7cUNBTXFCLGFBQWE7R0FMbEMsdUJBQXVCLENBbUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhZGFibGV9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7aW5qZWN0YWJsZX0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IGdvdCBmcm9tIFwiZ290XCI7XG5pbXBvcnQge0lBc3NldERyaXZlciwgSUFzc2V0VXBsb2FkT3B0cywgSUFzc2V0VXBsb2FkU3RyZWFtfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9jb25maWd1cmF0aW9uXCI7XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBc3NldFN0b3JhZ2VQcm94eURyaXZlciBpbXBsZW1lbnRzIElBc3NldERyaXZlciB7XG5cbiAgICByZWFkb25seSBiYXNlVXJsOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29uZmlnOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuY29uZmlnLnJlc29sdmUoXCJzdG9yYWdlUHJveHlVcmlcIik7XG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5iYXNlVXJsICsgdGhpcy5jb25maWcucmVzb2x2ZShcInN0b3JhZ2VQcm94eUJ1Y2tldFwiKTtcbiAgICB9XG5cbiAgICBvcGVuRG93bmxvYWRTdHJlYW0oaWQ6IE9iamVjdElkKTogUmVhZGFibGUge1xuICAgICAgICByZXR1cm4gZ290LnN0cmVhbS5nZXQodGhpcy5nZXRVcmwoaWQpKTtcbiAgICB9XG5cbiAgICBvcGVuVXBsb2FkU3RyZWFtKF86IHN0cmluZywgb3B0cz86IElBc3NldFVwbG9hZE9wdHMpOiBJQXNzZXRVcGxvYWRTdHJlYW0ge1xuICAgICAgICBjb25zdCBpZCA9IG5ldyBPYmplY3RJZCgpO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBnb3Quc3RyZWFtLnB1dCh0aGlzLmdldFVybChpZCksIHtoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IG9wdHM/LmNvbnRlbnRUeXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG4gICAgICAgICAgICB9fSkgYXMgSUFzc2V0VXBsb2FkU3RyZWFtO1xuICAgICAgICBzdHJlYW0uZG9uZSA9IGZhbHNlO1xuICAgICAgICBzdHJlYW0ub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgICAgICAgIHN0cmVhbS5pZCA9IGlkO1xuICAgICAgICAgICAgc3RyZWFtLmRvbmUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbTtcbiAgICB9XG5cbiAgICBhc3luYyBkZWxldGUoaWQ6IE9iamVjdElkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiREVMRVRFXCIsIGlkLnRvSGV4U3RyaW5nKCkpO1xuICAgICAgICBhd2FpdCBnb3QuZGVsZXRlKHRoaXMuZ2V0VXJsKGlkKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFVybChpZDogT2JqZWN0SWQpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy51cmx9LyR7aWQudG9IZXhTdHJpbmcoKX1gO1xuICAgIH1cbn1cbiJdfQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtc3RvcmFnZS1wcm94eS5kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZHJpdmVycy9hc3NldC1zdG9yYWdlLXByb3h5LmRyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUV0QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUFLVjtJQUhiLE9BQU8sQ0FBUztJQUNoQixHQUFHLENBQVM7SUFFckIsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQVMsRUFBRSxJQUFzQjtRQUM5QyxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFDLE9BQU8sRUFBRTtnQkFDakUsY0FBYyxFQUFFLElBQUksRUFBRSxXQUFXLElBQUksMEJBQTBCO2FBQ2xFLEVBQUMsQ0FBdUIsQ0FBQztRQUM5QixNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNwQixNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDckIsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDZixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sc0JBQXNCLENBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ3JFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQ3BELENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQztZQUNELE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNMLENBQUM7SUFFUyxNQUFNLENBQUMsRUFBWSxFQUFFLEdBQVk7UUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9GLENBQUM7Q0FDSixDQUFBO0FBekNZLHVCQUF1QjtJQURuQyxVQUFVLEVBQUU7cUNBTXFCLGFBQWE7R0FMbEMsdUJBQXVCLENBeUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhZGFibGV9IGZyb20gXCJzdHJlYW1cIjtcbmltcG9ydCB7aW5qZWN0YWJsZX0gZnJvbSBcInRzeXJpbmdlXCI7XG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IGdvdCBmcm9tIFwiZ290XCI7XG5pbXBvcnQge0lBc3NldCwgSUFzc2V0RHJpdmVyLCBJQXNzZXRVcGxvYWRPcHRzLCBJQXNzZXRVcGxvYWRTdHJlYW19IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7Y3JlYXRlRmFsbGJhY2tSZWFkYWJsZX0gZnJvbSBcIi4vZmFsbGJhY2stc3RyZWFtc1wiO1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXNzZXRTdG9yYWdlUHJveHlEcml2ZXIgaW1wbGVtZW50cyBJQXNzZXREcml2ZXIge1xuXG4gICAgcmVhZG9ubHkgYmFzZVVybDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbmZpZzogQ29uZmlndXJhdGlvbikge1xuICAgICAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmNvbmZpZy5yZXNvbHZlKFwic3RvcmFnZVByb3h5VXJpXCIpO1xuICAgICAgICB0aGlzLnVybCA9IHRoaXMuYmFzZVVybCArIHRoaXMuY29uZmlnLnJlc29sdmUoXCJzdG9yYWdlUHJveHlCdWNrZXRcIik7XG4gICAgfVxuXG4gICAgb3BlblVwbG9hZFN0cmVhbShfOiBzdHJpbmcsIG9wdHM6IElBc3NldFVwbG9hZE9wdHMpOiBJQXNzZXRVcGxvYWRTdHJlYW0ge1xuICAgICAgICBjb25zdCBpZCA9IG5ldyBPYmplY3RJZCgpO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBnb3Quc3RyZWFtLnB1dCh0aGlzLmdldFVybChpZCwgb3B0cy5leHRlbnNpb24pLCB7aGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBvcHRzPy5jb250ZW50VHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICAgICAgICAgICAgfX0pIGFzIElBc3NldFVwbG9hZFN0cmVhbTtcbiAgICAgICAgc3RyZWFtLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgc3RyZWFtLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW0uaWQgPSBpZDtcbiAgICAgICAgICAgIHN0cmVhbS5kb25lID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdHJlYW07XG4gICAgfVxuXG4gICAgb3BlbkRvd25sb2FkU3RyZWFtKGFzc2V0OiBJQXNzZXQpOiBSZWFkYWJsZSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVGYWxsYmFja1JlYWRhYmxlKFxuICAgICAgICAgICAgZ290LnN0cmVhbS5nZXQodGhpcy5nZXRVcmwoYXNzZXQuc3RyZWFtSWQsIGFzc2V0Lm1ldGFkYXRhLmV4dGVuc2lvbikpLFxuICAgICAgICAgICAgKCkgPT4gZ290LnN0cmVhbS5nZXQodGhpcy5nZXRVcmwoYXNzZXQuc3RyZWFtSWQpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzeW5jIGRlbGV0ZShhc3NldDogSUFzc2V0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBnb3QuZGVsZXRlKHRoaXMuZ2V0VXJsKGFzc2V0LnN0cmVhbUlkLCBhc3NldC5tZXRhZGF0YS5leHRlbnNpb24pKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgYXdhaXQgZ290LmRlbGV0ZSh0aGlzLmdldFVybChhc3NldC5zdHJlYW1JZCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFVybChpZDogT2JqZWN0SWQsIGV4dD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAhZXh0ID8gYCR7dGhpcy51cmx9LyR7aWQudG9IZXhTdHJpbmcoKX1gIDogYCR7dGhpcy51cmx9LyR7aWQudG9IZXhTdHJpbmcoKX0uJHtleHR9YDtcbiAgICB9XG59XG4iXX0=
@@ -31,42 +31,4 @@ export function createFallbackReadable(primary, fallbackFactory) {
31
31
  });
32
32
  return proxy;
33
33
  }
34
- /**
35
- * Creates a Writable proxy that switches to a fallback destination on error.
36
- * @param primary The initial Writable destination.
37
- * @param fallbackFactory A function that returns a new Writable destination.
38
- */
39
- export function createFallbackWritable(primary, fallbackFactory) {
40
- // 1. The Proxy acts as the stable "entry point" for your data
41
- const proxy = new PassThrough();
42
- let currentDestination = primary;
43
- let hasSwitched = false;
44
- // Function to handle the swap
45
- const handleSwitch = (err) => {
46
- if (hasSwitched)
47
- return; // Prevent infinite loops if fallback also fails
48
- hasSwitched = true;
49
- // 2. Unpipe from the failed stream and destroy it
50
- proxy.unpipe(currentDestination);
51
- currentDestination.destroy();
52
- // 3. Create the new destination and pipe the remaining data to it
53
- const fallback = fallbackFactory();
54
- currentDestination = fallback;
55
- // Pipe the proxy into the fallback
56
- proxy.pipe(fallback);
57
- // Ensure errors on the fallback are bubbled up
58
- fallback.on('error', (fallbackErr) => {
59
- proxy.emit('error', fallbackErr);
60
- });
61
- };
62
- // Initial setup
63
- primary.on('error', handleSwitch);
64
- proxy.on('finish', () => {
65
- const final = proxy;
66
- final.id = currentDestination.id;
67
- final.done = true;
68
- });
69
- proxy.pipe(primary);
70
- return proxy;
71
- }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stc3RyZWFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9kcml2ZXJzL2ZhbGxiYWNrLXN0cmVhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLFdBQVcsRUFBWSxNQUFNLFFBQVEsQ0FBQztBQUd6RCxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLE9BQWlCLEVBQ2pCLGVBQStCO0lBRS9CLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDaEMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRXhCLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxFQUFFO1FBQzFCLElBQUksV0FBVztZQUFFLE9BQU87UUFDeEIsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQixpQ0FBaUM7UUFDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbEIsc0NBQXNDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBRW5DLDBEQUEwRDtRQUMxRCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRixtRUFBbUU7SUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUVwQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDckIsZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILHlFQUF5RTtJQUN6RSxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsZ0VBQWdFO1lBQ2hFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsT0FBMkIsRUFDM0IsZUFBeUM7SUFFekMsOERBQThEO0lBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFFaEMsSUFBSSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7SUFDakMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRXhCLDhCQUE4QjtJQUM5QixNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVUsRUFBRSxFQUFFO1FBQ2hDLElBQUksV0FBVztZQUFFLE9BQU8sQ0FBQyxnREFBZ0Q7UUFDekUsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQixrREFBa0Q7UUFDbEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTdCLGtFQUFrRTtRQUNsRSxNQUFNLFFBQVEsR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUNuQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7UUFFOUIsbUNBQW1DO1FBQ25DLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckIsK0NBQStDO1FBQy9DLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDakMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRixnQkFBZ0I7SUFDaEIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQTJCLENBQUM7UUFDMUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDakMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBCLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFkYWJsZSwgUGFzc1Rocm91Z2gsIFdyaXRhYmxlIH0gZnJvbSAnc3RyZWFtJztcclxuaW1wb3J0IHtJQXNzZXRVcGxvYWRTdHJlYW19IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGYWxsYmFja1JlYWRhYmxlKFxyXG4gICAgcHJpbWFyeTogUmVhZGFibGUsXHJcbiAgICBmYWxsYmFja0ZhY3Rvcnk6ICgpID0+IFJlYWRhYmxlXHJcbik6IFJlYWRhYmxlIHtcclxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFBhc3NUaHJvdWdoKCk7XHJcbiAgICBsZXQgaGFzU3dpdGNoZWQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBzd2l0Y2hUb0ZhbGxiYWNrID0gKCkgPT4ge1xyXG4gICAgICAgIGlmIChoYXNTd2l0Y2hlZCkgcmV0dXJuO1xyXG4gICAgICAgIGhhc1N3aXRjaGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gMS4gQ2xlYW51cCB0aGUgZmFpbGluZyBwcmltYXJ5XHJcbiAgICAgICAgcHJpbWFyeS51bnBpcGUocHJveHkpO1xyXG4gICAgICAgIHByaW1hcnkuZGVzdHJveSgpO1xyXG5cclxuICAgICAgICAvLyAyLiBJbml0aWFsaXplIGFuZCBwaXBlIHRoZSBmYWxsYmFja1xyXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrID0gZmFsbGJhY2tGYWN0b3J5KCk7XHJcblxyXG4gICAgICAgIC8vIE9uIHRoZSBmYWxsYmFjaywgd2UgYWxsb3cgaXQgdG8gZW5kIHRoZSBwcm94eSBuYXR1cmFsbHlcclxuICAgICAgICBmYWxsYmFjay5waXBlKHByb3h5KTtcclxuXHJcbiAgICAgICAgZmFsbGJhY2sub24oJ2Vycm9yJywgKGVycikgPT4ge1xyXG4gICAgICAgICAgICBwcm94eS5lbWl0KCdlcnJvcicsIGVycik7IC8vIElmIGZhbGxiYWNrIGZhaWxzIHRvbywgaXQncyBhIGhhcmQgZXJyb3JcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUGlwZSBwcmltYXJ5IGJ1dCBwcmV2ZW50IGl0IGZyb20gY2xvc2luZyB0aGUgcHJveHkgYXV0b21hdGljYWxseVxyXG4gICAgcHJpbWFyeS5waXBlKHByb3h5LCB7IGVuZDogZmFsc2UgfSk7XHJcblxyXG4gICAgcHJpbWFyeS5vbignZXJyb3InLCAoKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoVG9GYWxsYmFjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gSGFuZGxlIHRoZSBcIkVhcmx5IEVuZFwiIGNhc2UgKGUuZy4sIHN0cmVhbSBjbG9zZWQgYmVmb3JlIGRhdGEgZmluaXNoZWQpXHJcbiAgICBwcmltYXJ5Lm9uKCdlbmQnLCAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFoYXNTd2l0Y2hlZCkge1xyXG4gICAgICAgICAgICAvLyBJZiB3ZSBmaW5pc2hlZCBzdWNjZXNzZnVsbHkgd2l0aG91dCBlcnJvcmluZywgY2xvc2UgdGhlIHByb3h5XHJcbiAgICAgICAgICAgIHByb3h5LmVuZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBwcm94eTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBXcml0YWJsZSBwcm94eSB0aGF0IHN3aXRjaGVzIHRvIGEgZmFsbGJhY2sgZGVzdGluYXRpb24gb24gZXJyb3IuXHJcbiAqIEBwYXJhbSBwcmltYXJ5IFRoZSBpbml0aWFsIFdyaXRhYmxlIGRlc3RpbmF0aW9uLlxyXG4gKiBAcGFyYW0gZmFsbGJhY2tGYWN0b3J5IEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbmV3IFdyaXRhYmxlIGRlc3RpbmF0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZhbGxiYWNrV3JpdGFibGUoXHJcbiAgICBwcmltYXJ5OiBJQXNzZXRVcGxvYWRTdHJlYW0sXHJcbiAgICBmYWxsYmFja0ZhY3Rvcnk6ICgpID0+IElBc3NldFVwbG9hZFN0cmVhbVxyXG4pOiBXcml0YWJsZSB7XHJcbiAgICAvLyAxLiBUaGUgUHJveHkgYWN0cyBhcyB0aGUgc3RhYmxlIFwiZW50cnkgcG9pbnRcIiBmb3IgeW91ciBkYXRhXHJcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQYXNzVGhyb3VnaCgpO1xyXG5cclxuICAgIGxldCBjdXJyZW50RGVzdGluYXRpb24gPSBwcmltYXJ5O1xyXG4gICAgbGV0IGhhc1N3aXRjaGVkID0gZmFsc2U7XHJcblxyXG4gICAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBzd2FwXHJcbiAgICBjb25zdCBoYW5kbGVTd2l0Y2ggPSAoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIGlmIChoYXNTd2l0Y2hlZCkgcmV0dXJuOyAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3BzIGlmIGZhbGxiYWNrIGFsc28gZmFpbHNcclxuICAgICAgICBoYXNTd2l0Y2hlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIDIuIFVucGlwZSBmcm9tIHRoZSBmYWlsZWQgc3RyZWFtIGFuZCBkZXN0cm95IGl0XHJcbiAgICAgICAgcHJveHkudW5waXBlKGN1cnJlbnREZXN0aW5hdGlvbik7XHJcbiAgICAgICAgY3VycmVudERlc3RpbmF0aW9uLmRlc3Ryb3koKTtcclxuXHJcbiAgICAgICAgLy8gMy4gQ3JlYXRlIHRoZSBuZXcgZGVzdGluYXRpb24gYW5kIHBpcGUgdGhlIHJlbWFpbmluZyBkYXRhIHRvIGl0XHJcbiAgICAgICAgY29uc3QgZmFsbGJhY2sgPSBmYWxsYmFja0ZhY3RvcnkoKTtcclxuICAgICAgICBjdXJyZW50RGVzdGluYXRpb24gPSBmYWxsYmFjaztcclxuXHJcbiAgICAgICAgLy8gUGlwZSB0aGUgcHJveHkgaW50byB0aGUgZmFsbGJhY2tcclxuICAgICAgICBwcm94eS5waXBlKGZhbGxiYWNrKTtcclxuXHJcbiAgICAgICAgLy8gRW5zdXJlIGVycm9ycyBvbiB0aGUgZmFsbGJhY2sgYXJlIGJ1YmJsZWQgdXBcclxuICAgICAgICBmYWxsYmFjay5vbignZXJyb3InLCAoZmFsbGJhY2tFcnIpID0+IHtcclxuICAgICAgICAgICAgcHJveHkuZW1pdCgnZXJyb3InLCBmYWxsYmFja0Vycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEluaXRpYWwgc2V0dXBcclxuICAgIHByaW1hcnkub24oJ2Vycm9yJywgaGFuZGxlU3dpdGNoKTtcclxuICAgIHByb3h5Lm9uKCdmaW5pc2gnLCAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmluYWwgPSBwcm94eSBhcyBJQXNzZXRVcGxvYWRTdHJlYW07XHJcbiAgICAgICAgZmluYWwuaWQgPSBjdXJyZW50RGVzdGluYXRpb24uaWQ7XHJcbiAgICAgICAgZmluYWwuZG9uZSA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHByb3h5LnBpcGUocHJpbWFyeSk7XHJcblxyXG4gICAgcmV0dXJuIHByb3h5O1xyXG59XHJcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stc3RyZWFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9kcml2ZXJzL2ZhbGxiYWNrLXN0cmVhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBVyxNQUFNLFFBQVEsQ0FBQztBQUU3QyxNQUFNLFVBQVUsc0JBQXNCLENBQ2xDLE9BQWlCLEVBQ2pCLGVBQStCO0lBRS9CLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDaEMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRXhCLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxFQUFFO1FBQzFCLElBQUksV0FBVztZQUFFLE9BQU87UUFDeEIsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQixpQ0FBaUM7UUFDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbEIsc0NBQXNDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBRW5DLDBEQUEwRDtRQUMxRCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7UUFDekUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRixtRUFBbUU7SUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUVwQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDckIsZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILHlFQUF5RTtJQUN6RSxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsZ0VBQWdFO1lBQ2hFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQYXNzVGhyb3VnaCwgUmVhZGFibGV9IGZyb20gJ3N0cmVhbSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmFsbGJhY2tSZWFkYWJsZShcclxuICAgIHByaW1hcnk6IFJlYWRhYmxlLFxyXG4gICAgZmFsbGJhY2tGYWN0b3J5OiAoKSA9PiBSZWFkYWJsZVxyXG4pOiBSZWFkYWJsZSB7XHJcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQYXNzVGhyb3VnaCgpO1xyXG4gICAgbGV0IGhhc1N3aXRjaGVkID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3Qgc3dpdGNoVG9GYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgICBpZiAoaGFzU3dpdGNoZWQpIHJldHVybjtcclxuICAgICAgICBoYXNTd2l0Y2hlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIDEuIENsZWFudXAgdGhlIGZhaWxpbmcgcHJpbWFyeVxyXG4gICAgICAgIHByaW1hcnkudW5waXBlKHByb3h5KTtcclxuICAgICAgICBwcmltYXJ5LmRlc3Ryb3koKTtcclxuXHJcbiAgICAgICAgLy8gMi4gSW5pdGlhbGl6ZSBhbmQgcGlwZSB0aGUgZmFsbGJhY2tcclxuICAgICAgICBjb25zdCBmYWxsYmFjayA9IGZhbGxiYWNrRmFjdG9yeSgpO1xyXG5cclxuICAgICAgICAvLyBPbiB0aGUgZmFsbGJhY2ssIHdlIGFsbG93IGl0IHRvIGVuZCB0aGUgcHJveHkgbmF0dXJhbGx5XHJcbiAgICAgICAgZmFsbGJhY2sucGlwZShwcm94eSk7XHJcblxyXG4gICAgICAgIGZhbGxiYWNrLm9uKCdlcnJvcicsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcHJveHkuZW1pdCgnZXJyb3InLCBlcnIpOyAvLyBJZiBmYWxsYmFjayBmYWlscyB0b28sIGl0J3MgYSBoYXJkIGVycm9yXHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFBpcGUgcHJpbWFyeSBidXQgcHJldmVudCBpdCBmcm9tIGNsb3NpbmcgdGhlIHByb3h5IGF1dG9tYXRpY2FsbHlcclxuICAgIHByaW1hcnkucGlwZShwcm94eSwgeyBlbmQ6IGZhbHNlIH0pO1xyXG5cclxuICAgIHByaW1hcnkub24oJ2Vycm9yJywgKCkgPT4ge1xyXG4gICAgICAgIHN3aXRjaFRvRmFsbGJhY2soKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEhhbmRsZSB0aGUgXCJFYXJseSBFbmRcIiBjYXNlIChlLmcuLCBzdHJlYW0gY2xvc2VkIGJlZm9yZSBkYXRhIGZpbmlzaGVkKVxyXG4gICAgcHJpbWFyeS5vbignZW5kJywgKCkgPT4ge1xyXG4gICAgICAgIGlmICghaGFzU3dpdGNoZWQpIHtcclxuICAgICAgICAgICAgLy8gSWYgd2UgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IHdpdGhvdXQgZXJyb3JpbmcsIGNsb3NlIHRoZSBwcm94eVxyXG4gICAgICAgICAgICBwcm94eS5lbmQoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcHJveHk7XHJcbn1cclxuIl19
@@ -1,10 +1,19 @@
1
1
  import { streamToBuffer, toImage } from "../../utils";
2
2
  import { BaseEntity } from "./base-entity";
3
3
  export class Asset extends BaseEntity {
4
- driver;
4
+ drivers;
5
5
  get filename() {
6
6
  return this.data.filename;
7
7
  }
8
+ get streamId() {
9
+ return this.data.streamId || this.oid;
10
+ }
11
+ get driverId() {
12
+ return this.data.driverId;
13
+ }
14
+ get driver() {
15
+ return this.drivers.getDriver(this.driverId || this.drivers.missingDriver);
16
+ }
8
17
  get contentType() {
9
18
  return this.data.contentType;
10
19
  }
@@ -12,15 +21,15 @@ export class Asset extends BaseEntity {
12
21
  return this.data.metadata;
13
22
  }
14
23
  get stream() {
15
- return this.driver.openDownloadStream(this.oid);
24
+ return this.driver.openDownloadStream(this);
16
25
  }
17
- constructor(id, data, collection, driver) {
26
+ constructor(id, data, collection, drivers) {
18
27
  super(id, data, collection);
19
- this.driver = driver;
28
+ this.drivers = drivers;
20
29
  }
21
30
  async unlink() {
22
31
  try {
23
- await this.driver.delete(this.oid);
32
+ await this.driver.delete(this);
24
33
  }
25
34
  catch (error) {
26
35
  console.log("Failed to unlink", error?.message);
@@ -35,6 +44,38 @@ export class Asset extends BaseEntity {
35
44
  getBuffer() {
36
45
  return streamToBuffer(this.stream);
37
46
  }
47
+ async move(driverId) {
48
+ const oldDriver = this.driver;
49
+ const targetDriver = this.drivers.getDriver(driverId);
50
+ if (targetDriver === oldDriver)
51
+ return this;
52
+ const oldAsset = new Asset(this.oid, this.data, this.collection, this.drivers);
53
+ const streamId = await this.uploadTo(targetDriver);
54
+ this.data = {
55
+ ...this.data,
56
+ streamId,
57
+ driverId,
58
+ };
59
+ await this.save();
60
+ await oldDriver.delete(oldAsset);
61
+ }
62
+ uploadTo(driver) {
63
+ return new Promise((resolve, reject) => {
64
+ const uploaderStream = driver.openUploadStream(this.filename, {
65
+ chunkSizeBytes: 1048576,
66
+ contentType: this.contentType,
67
+ extension: this.metadata.extension,
68
+ metadata: this.metadata,
69
+ });
70
+ this.stream.pipe(uploaderStream)
71
+ .on("error", error => {
72
+ reject(error.message || error);
73
+ })
74
+ .on("finish", async () => {
75
+ resolve(uploaderStream.id);
76
+ });
77
+ });
78
+ }
38
79
  async download(metadata) {
39
80
  metadata = Object.assign(this.metadata, metadata || {});
40
81
  metadata.downloadCount = isNaN(metadata.downloadCount) || !metadata.firstDownload
@@ -52,4 +93,4 @@ export class Asset extends BaseEntity {
52
93
  return toImage(await this.download(metadata), params, this.metadata);
53
94
  }
54
95
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZW50aXRpZXMvYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFXLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8sS0FBTSxTQUFRLFVBQWtCO0lBcUJuQjtJQW5CdEIsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWSxFQUFZLEVBQ1osSUFBcUIsRUFDckIsVUFBc0IsRUFDWixNQUFvQjtRQUN0QyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQURWLFdBQU0sR0FBTixNQUFNLENBQWM7SUFFMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNO1FBQ1IsSUFBSSxDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBNkI7UUFDdkMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUMsRUFBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBcUI7UUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7WUFDN0UsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUQsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUMsUUFBUSxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUE0QixJQUFJO1FBQzNDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUEwQixFQUFFLFFBQXFCO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhZGFibGV9IGZyb20gXCJzdHJlYW1cIjtcclxuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xyXG5cclxuaW1wb3J0IHtJQXNzZXQsIElBc3NldERyaXZlciwgSUFzc2V0SW1hZ2VQYXJhbXMsIElBc3NldE1ldGF9IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtpc1N0cmluZywgc3RyZWFtVG9CdWZmZXIsIHRvSW1hZ2V9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQge0Jhc2VFbnRpdHl9IGZyb20gXCIuL2Jhc2UtZW50aXR5XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXNzZXQgZXh0ZW5kcyBCYXNlRW50aXR5PElBc3NldD4gaW1wbGVtZW50cyBJQXNzZXQge1xyXG5cclxuICAgIGdldCBmaWxlbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmlsZW5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbnRlbnRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5jb250ZW50VHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWV0YWRhdGEoKTogSUFzc2V0TWV0YSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5tZXRhZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc3RyZWFtKCk6IFJlYWRhYmxlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kcml2ZXIub3BlbkRvd25sb2FkU3RyZWFtKHRoaXMub2lkKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZDogT2JqZWN0SWQsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBQYXJ0aWFsPElBc3NldD4sXHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIGRyaXZlcjogSUFzc2V0RHJpdmVyKSB7XHJcbiAgICAgICAgc3VwZXIoaWQsIGRhdGEsIGNvbGxlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVubGluaygpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLmRlbGV0ZSh0aGlzLm9pZCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gdW5saW5rXCIsIGVycm9yPy5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLmRlbGV0ZU9uZSh7X2lkOiB0aGlzLm9pZH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNldE1ldGEobWV0YWRhdGE6IFBhcnRpYWw8SUFzc2V0TWV0YT4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIG1ldGFkYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLm1ldGFkYXRhLCBtZXRhZGF0YSB8fCB7fSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb2xsZWN0aW9uLnVwZGF0ZU9uZSh7X2lkOiB0aGlzLm9pZH0sIHskc2V0OiB7bWV0YWRhdGF9fSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnVmZmVyKCk6IFByb21pc2U8QnVmZmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIHN0cmVhbVRvQnVmZmVyKHRoaXMuc3RyZWFtKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgbWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGFkYXRhIHx8IHt9KTtcclxuICAgICAgICBtZXRhZGF0YS5kb3dubG9hZENvdW50ID0gaXNOYU4obWV0YWRhdGEuZG93bmxvYWRDb3VudCkgfHwgIW1ldGFkYXRhLmZpcnN0RG93bmxvYWRcclxuICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgIDogbWV0YWRhdGEuZG93bmxvYWRDb3VudCArIDE7XHJcbiAgICAgICAgbWV0YWRhdGEuZmlyc3REb3dubG9hZCA9IG1ldGFkYXRhLmZpcnN0RG93bmxvYWQgfHwgbmV3IERhdGUoKTtcclxuICAgICAgICBtZXRhZGF0YS5sYXN0RG93bmxvYWQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi51cGRhdGVPbmUoe19pZDogdGhpcy5vaWR9LCB7JHNldDoge21ldGFkYXRhfX0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRJbWFnZShwYXJhbXM6IElBc3NldEltYWdlUGFyYW1zID0gbnVsbCk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICByZXR1cm4gdG9JbWFnZSh0aGlzLnN0cmVhbSwgcGFyYW1zLCB0aGlzLm1ldGFkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zLCBtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRvSW1hZ2UoYXdhaXQgdGhpcy5kb3dubG9hZChtZXRhZGF0YSksIHBhcmFtcywgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvZW50aXRpZXMvYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFXLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxNQUFNLE9BQU8sS0FBTSxTQUFRLFVBQWtCO0lBaUNuQjtJQS9CdEIsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxZQUFZLEVBQVksRUFDWixJQUFxQixFQUNyQixVQUFzQixFQUNaLE9BQXNCO1FBQ3hDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVB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QztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBcUI7UUFDaEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7WUFDN0UsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUQsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsSUFBSSxFQUFFLEVBQUMsUUFBUSxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUE0QixJQUFJO1FBQzNDLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUEwQixFQUFFLFFBQXFCO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhZGFibGV9IGZyb20gXCJzdHJlYW1cIjtcclxuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tIFwibW9uZ29kYlwiO1xyXG5pbXBvcnQge09iamVjdElkfSBmcm9tIFwiYnNvblwiO1xyXG5cclxuaW1wb3J0IHtJQXNzZXQsIElBc3NldERyaXZlciwgSUFzc2V0RHJpdmVycywgSUFzc2V0SW1hZ2VQYXJhbXMsIElBc3NldE1ldGF9IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtpc1N0cmluZywgc3RyZWFtVG9CdWZmZXIsIHRvSW1hZ2V9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQge0Jhc2VFbnRpdHl9IGZyb20gXCIuL2Jhc2UtZW50aXR5XCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXNzZXQgZXh0ZW5kcyBCYXNlRW50aXR5PElBc3NldD4gaW1wbGVtZW50cyBJQXNzZXQge1xyXG5cclxuICAgIGdldCBmaWxlbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmlsZW5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0cmVhbUlkKCk6IE9iamVjdElkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLnN0cmVhbUlkIHx8IHRoaXMub2lkO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkcml2ZXJJZCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZHJpdmVySWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRyaXZlcigpOiBJQXNzZXREcml2ZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRyaXZlcnMuZ2V0RHJpdmVyKHRoaXMuZHJpdmVySWQgfHwgdGhpcy5kcml2ZXJzLm1pc3NpbmdEcml2ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250ZW50VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuY29udGVudFR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1ldGFkYXRhKCk6IElBc3NldE1ldGEge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEubWV0YWRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0cmVhbSgpOiBSZWFkYWJsZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJpdmVyLm9wZW5Eb3dubG9hZFN0cmVhbSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpZDogT2JqZWN0SWQsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBQYXJ0aWFsPElBc3NldD4sXHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIGRyaXZlcnM6IElBc3NldERyaXZlcnMpIHtcclxuICAgICAgICBzdXBlcihpZCwgZGF0YSwgY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuZGVsZXRlKHRoaXMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRmFpbGVkIHRvIHVubGlua1wiLCBlcnJvcj8ubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi5kZWxldGVPbmUoe19pZDogdGhpcy5vaWR9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5pZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZXRNZXRhKG1ldGFkYXRhOiBQYXJ0aWFsPElBc3NldE1ldGE+KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBtZXRhZGF0YSA9IE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YSwgbWV0YWRhdGEgfHwge30pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi51cGRhdGVPbmUoe19pZDogdGhpcy5vaWR9LCB7JHNldDoge21ldGFkYXRhfX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiBzdHJlYW1Ub0J1ZmZlcih0aGlzLnN0cmVhbSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbW92ZShkcml2ZXJJZDogc3RyaW5nKTogUHJvbWlzZTxJQXNzZXQ+IHtcclxuICAgICAgICBjb25zdCBvbGREcml2ZXIgPSB0aGlzLmRyaXZlcjtcclxuICAgICAgICBjb25zdCB0YXJnZXREcml2ZXIgPSB0aGlzLmRyaXZlcnMuZ2V0RHJpdmVyKGRyaXZlcklkKTtcclxuICAgICAgICBpZiAodGFyZ2V0RHJpdmVyID09PSBvbGREcml2ZXIpIHJldHVybiB0aGlzO1xyXG4gICAgICAgIGNvbnN0IG9sZEFzc2V0ID0gbmV3IEFzc2V0KHRoaXMub2lkLCB0aGlzLmRhdGEsIHRoaXMuY29sbGVjdGlvbiwgdGhpcy5kcml2ZXJzKTtcclxuICAgICAgICBjb25zdCBzdHJlYW1JZCA9IGF3YWl0IHRoaXMudXBsb2FkVG8odGFyZ2V0RHJpdmVyKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0YSxcclxuICAgICAgICAgICAgc3RyZWFtSWQsXHJcbiAgICAgICAgICAgIGRyaXZlcklkLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlKCk7XHJcbiAgICAgICAgYXdhaXQgb2xkRHJpdmVyLmRlbGV0ZShvbGRBc3NldCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwbG9hZFRvKGRyaXZlcjogSUFzc2V0RHJpdmVyKTogUHJvbWlzZTxPYmplY3RJZD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVyU3RyZWFtID0gZHJpdmVyLm9wZW5VcGxvYWRTdHJlYW0odGhpcy5maWxlbmFtZSwge1xyXG4gICAgICAgICAgICAgICAgY2h1bmtTaXplQnl0ZXM6IDEwNDg1NzYsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTogdGhpcy5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogdGhpcy5tZXRhZGF0YS5leHRlbnNpb24sXHJcbiAgICAgICAgICAgICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RyZWFtLnBpcGUodXBsb2FkZXJTdHJlYW0pXHJcbiAgICAgICAgICAgICAgICAub24oXCJlcnJvclwiLCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5vbihcImZpbmlzaFwiLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh1cGxvYWRlclN0cmVhbS5pZCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgbWV0YWRhdGEgPSBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGFkYXRhIHx8IHt9KTtcclxuICAgICAgICBtZXRhZGF0YS5kb3dubG9hZENvdW50ID0gaXNOYU4obWV0YWRhdGEuZG93bmxvYWRDb3VudCkgfHwgIW1ldGFkYXRhLmZpcnN0RG93bmxvYWRcclxuICAgICAgICAgICAgPyAxXHJcbiAgICAgICAgICAgIDogbWV0YWRhdGEuZG93bmxvYWRDb3VudCArIDE7XHJcbiAgICAgICAgbWV0YWRhdGEuZmlyc3REb3dubG9hZCA9IG1ldGFkYXRhLmZpcnN0RG93bmxvYWQgfHwgbmV3IERhdGUoKTtcclxuICAgICAgICBtZXRhZGF0YS5sYXN0RG93bmxvYWQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdGlvbi51cGRhdGVPbmUoe19pZDogdGhpcy5vaWR9LCB7JHNldDoge21ldGFkYXRhfX0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRJbWFnZShwYXJhbXM6IElBc3NldEltYWdlUGFyYW1zID0gbnVsbCk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICByZXR1cm4gdG9JbWFnZSh0aGlzLnN0cmVhbSwgcGFyYW1zLCB0aGlzLm1ldGFkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zLCBtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRvSW1hZ2UoYXdhaXQgdGhpcy5kb3dubG9hZChtZXRhZGF0YSksIHBhcmFtcywgdGhpcy5tZXRhZGF0YSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -5,16 +5,25 @@ export class TempAsset {
5
5
  filename;
6
6
  contentType;
7
7
  metadata;
8
- id;
8
+ get id() {
9
+ return this.oid.toHexString();
10
+ }
11
+ get streamId() {
12
+ return this.oid;
13
+ }
14
+ get driverId() {
15
+ return "temp";
16
+ }
9
17
  get stream() {
10
18
  return bufferToStream(this.buffer);
11
19
  }
20
+ oid;
12
21
  constructor(buffer, filename, contentType, metadata) {
13
22
  this.buffer = buffer;
14
23
  this.filename = filename;
15
24
  this.contentType = contentType;
16
25
  this.metadata = metadata;
17
- this.id = new ObjectId().toHexString();
26
+ this.oid = new ObjectId();
18
27
  }
19
28
  async unlink() {
20
29
  throw new Error(`Temp asset '${this.id}' can not be removed!`);
@@ -25,6 +34,9 @@ export class TempAsset {
25
34
  async getBuffer() {
26
35
  return this.buffer;
27
36
  }
37
+ async move() {
38
+ throw new Error(`Temp asset '${this.id}' can not be moved!`);
39
+ }
28
40
  async download(metadata) {
29
41
  return this.stream;
30
42
  }
@@ -50,4 +62,4 @@ export class TempAsset {
50
62
  };
51
63
  }
52
64
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGllcy90ZW1wLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFOUIsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFcEQsTUFBTSxPQUFPLFNBQVM7SUFRSTtJQUF5QjtJQUEyQjtJQUE4QjtJQU4vRixFQUFFLENBQVM7SUFFcEIsSUFBSSxNQUFNO1FBQ04sT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUFzQixNQUFjLEVBQVcsUUFBZ0IsRUFBVyxXQUFtQixFQUFXLFFBQW9CO1FBQXRHLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVcsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQ3hILElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUF5QjtRQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFxQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUEwQixFQUFFLFFBQXFCO1FBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTztZQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQzFCLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWRhYmxlfSBmcm9tIFwic3RyZWFtXCI7XHJcbmltcG9ydCB7T2JqZWN0SWR9IGZyb20gXCJic29uXCI7XHJcbmltcG9ydCB7SUFzc2V0LCBJQXNzZXRJbWFnZVBhcmFtcywgSUFzc2V0TWV0YX0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge2J1ZmZlclRvU3RyZWFtLCB0b0ltYWdlfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUZW1wQXNzZXQgaW1wbGVtZW50cyBJQXNzZXQge1xyXG5cclxuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XHJcblxyXG4gICAgZ2V0IHN0cmVhbSgpOiBSZWFkYWJsZSB7XHJcbiAgICAgICAgcmV0dXJuIGJ1ZmZlclRvU3RyZWFtKHRoaXMuYnVmZmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYnVmZmVyOiBCdWZmZXIsIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmcsIHJlYWRvbmx5IGNvbnRlbnRUeXBlOiBzdHJpbmcsIHJlYWRvbmx5IG1ldGFkYXRhOiBJQXNzZXRNZXRhKSB7XHJcbiAgICAgICAgdGhpcy5pZCA9IG5ldyBPYmplY3RJZCgpLnRvSGV4U3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUZW1wIGFzc2V0ICcke3RoaXMuaWR9JyBjYW4gbm90IGJlIHJlbW92ZWQhYCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0TWV0YShtZXRhOiBQYXJ0aWFsPElBc3NldE1ldGE+KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGEgfHwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkSW1hZ2UocGFyYW1zPzogSUFzc2V0SW1hZ2VQYXJhbXMsIG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGFkYXRhIHx8IHt9KTtcclxuICAgICAgICByZXR1cm4gdG9JbWFnZSh0aGlzLnN0cmVhbSwgcGFyYW1zLCB0aGlzLm1ldGFkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcyk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kb3dubG9hZEltYWdlKHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdG9KU09OKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgIGZpbGVuYW1lOiB0aGlzLmZpbGVuYW1lLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTogdGhpcy5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IHRoaXMubWV0YWRhdGFcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGllcy90ZW1wLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFOUIsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFcEQsTUFBTSxPQUFPLFNBQVM7SUFvQkk7SUFBeUI7SUFBMkI7SUFBOEI7SUFsQnhHLElBQUksRUFBRTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFa0IsR0FBRyxDQUFXO0lBRWpDLFlBQXNCLE1BQWMsRUFBVyxRQUFnQixFQUFXLFdBQW1CLEVBQVcsUUFBb0I7UUFBdEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDeEgsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQXlCO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQTBCLEVBQUUsUUFBcUI7UUFDM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUEwQjtRQUMvQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPO1lBQ0gsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhZGFibGV9IGZyb20gXCJzdHJlYW1cIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtJQXNzZXQsIElBc3NldEltYWdlUGFyYW1zLCBJQXNzZXRNZXRhfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7YnVmZmVyVG9TdHJlYW0sIHRvSW1hZ2V9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBBc3NldCBpbXBsZW1lbnRzIElBc3NldCB7XHJcblxyXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2lkLnRvSGV4U3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0cmVhbUlkKCk6IE9iamVjdElkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRyaXZlcklkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFwidGVtcFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzdHJlYW0oKTogUmVhZGFibGUge1xyXG4gICAgICAgIHJldHVybiBidWZmZXJUb1N0cmVhbSh0aGlzLmJ1ZmZlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9pZDogT2JqZWN0SWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJ1ZmZlcjogQnVmZmVyLCByZWFkb25seSBmaWxlbmFtZTogc3RyaW5nLCByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nLCByZWFkb25seSBtZXRhZGF0YTogSUFzc2V0TWV0YSkge1xyXG4gICAgICAgIHRoaXMub2lkID0gbmV3IE9iamVjdElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUZW1wIGFzc2V0ICcke3RoaXMuaWR9JyBjYW4gbm90IGJlIHJlbW92ZWQhYCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0TWV0YShtZXRhOiBQYXJ0aWFsPElBc3NldE1ldGE+KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGEgfHwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb3ZlKCk6IFByb21pc2U8SUFzc2V0PiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUZW1wIGFzc2V0ICcke3RoaXMuaWR9JyBjYW4gbm90IGJlIG1vdmVkIWApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRvd25sb2FkKG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdHJlYW07XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcywgbWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YSwgbWV0YWRhdGEgfHwge30pO1xyXG4gICAgICAgIHJldHVybiB0b0ltYWdlKHRoaXMuc3RyZWFtLCBwYXJhbXMsIHRoaXMubWV0YWRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkSW1hZ2UocGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzYXZlKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHRoaXM+IHtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0b0pTT04oKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiB0aGlzLmNvbnRlbnRUeXBlLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19