velocious 1.0.365 → 1.0.366

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.
@@ -13,21 +13,6 @@ function escapeRegExp(value) {
13
13
  * @property {number} lineNumber - Source line number.
14
14
  * @property {number | undefined} columnNumber - Source column number.
15
15
  */
16
- /**
17
- * @returns {string | undefined} - The framework source directory.
18
- */
19
- function frameworkSourceDirectory() {
20
- try {
21
- const sourceUrl = new URL("../", import.meta.url);
22
- if (sourceUrl.protocol !== "file:")
23
- return undefined;
24
- return normalizePath(sourceUrl.pathname);
25
- }
26
- catch {
27
- return undefined;
28
- }
29
- }
30
- const FRAMEWORK_SOURCE_DIRECTORY = frameworkSourceDirectory();
31
16
  /**
32
17
  * @param {string | undefined} value - Path or file URL.
33
18
  * @returns {string | undefined} - Normalized path.
@@ -101,29 +86,36 @@ function relativeApplicationPath(sourcePath, applicationDirectory) {
101
86
  return sourcePath;
102
87
  }
103
88
  export default class BacktraceCleaner {
89
+ /** @type {string | undefined} */
90
+ frameworkSourceDirectory = undefined;
104
91
  /**
105
92
  * @param {Error} error - Error instance.
106
93
  * @param {object} [args] - Options object.
94
+ * @param {string | undefined} [args.frameworkSourceDirectory] - Directory for Velocious internals to skip.
107
95
  * @param {boolean} [args.includeErrorHeader] - Whether to include the `Error: ...` header line.
108
96
  * @returns {string | undefined} - The cleaned stack.
109
97
  */
110
98
  static getCleanedStack(error, args) {
111
- return new BacktraceCleaner(error).getCleanedStack(args);
99
+ return new BacktraceCleaner(error, args).getCleanedStack(args);
112
100
  }
113
101
  /**
114
102
  * @param {Error} error - Error instance.
115
103
  * @param {object} args - Options object.
116
104
  * @param {string} args.applicationDirectory - Application directory.
105
+ * @param {string | undefined} [args.frameworkSourceDirectory] - Directory for Velocious internals to skip.
117
106
  * @returns {string | undefined} - Source line for the first application frame.
118
107
  */
119
108
  static getApplicationSourceLine(error, args) {
120
- return new BacktraceCleaner(error).getApplicationSourceLine(args);
109
+ return new BacktraceCleaner(error, args).getApplicationSourceLine(args);
121
110
  }
122
111
  /**
123
112
  * @param {Error} error - Error instance.
113
+ * @param {object} [args] - Options object.
114
+ * @param {string | undefined} [args.frameworkSourceDirectory] - Directory for Velocious internals to skip.
124
115
  */
125
- constructor(error) {
116
+ constructor(error, { frameworkSourceDirectory } = {}) {
126
117
  this.error = error;
118
+ this.frameworkSourceDirectory = normalizeDirectory(frameworkSourceDirectory);
127
119
  }
128
120
  /**
129
121
  * @param {object} [args] - Options object.
@@ -205,9 +197,9 @@ export default class BacktraceCleaner {
205
197
  * @returns {boolean} - Whether the path belongs to Velocious internals.
206
198
  */
207
199
  _frameworkSourcePath(sourcePath) {
208
- if (!FRAMEWORK_SOURCE_DIRECTORY)
200
+ if (!this.frameworkSourceDirectory)
209
201
  return false;
210
- return sourcePath.startsWith(FRAMEWORK_SOURCE_DIRECTORY);
202
+ return sourcePath.startsWith(this.frameworkSourceDirectory);
211
203
  }
212
204
  /**
213
205
  * @param {string} line - Stack line.
@@ -225,4 +217,4 @@ export default class BacktraceCleaner {
225
217
  return true;
226
218
  }
227
219
  }
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3RyYWNlLWNsZWFuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYmFja3RyYWNlLWNsZWFuZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLEtBQUs7SUFDekIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ3JELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFFSDs7R0FFRztBQUNILFNBQVMsd0JBQXdCO0lBQy9CLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRWpELElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxPQUFPO1lBQUUsT0FBTyxTQUFTLENBQUE7UUFFcEQsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sMEJBQTBCLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQTtBQUU3RDs7O0dBR0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxLQUFLO0lBQzFCLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFNUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFBO0lBRXRCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQztZQUNILFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUE7UUFDM0MsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDhDQUE4QztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUks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QyxVQUFVLENBQUMsbUJBQW1CLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUU3RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRXNjYXBlZCB2YWx1ZSBmb3IgYSBSZWdFeHAgcGF0dGVybi5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIilcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQYXJzZWRTdGFja0ZyYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gbWV0aG9kTmFtZSAtIE1ldGhvZC9mdW5jdGlvbiBuYW1lIGZyb20gdGhlIHN0YWNrIGZyYW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNvdXJjZVBhdGggLSBGaWxlIG9yIFVSTCBwYXRoIGZyb20gdGhlIHN0YWNrIGZyYW1lLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxpbmVOdW1iZXIgLSBTb3VyY2UgbGluZSBudW1iZXIuXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gY29sdW1uTnVtYmVyIC0gU291cmNlIGNvbHVtbiBudW1iZXIuXG4gKi9cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFRoZSBmcmFtZXdvcmsgc291cmNlIGRpcmVjdG9yeS5cbiAqL1xuZnVuY3Rpb24gZnJhbWV3b3JrU291cmNlRGlyZWN0b3J5KCkge1xuICB0cnkge1xuICAgIGNvbnN0IHNvdXJjZVVybCA9IG5ldyBVUkwoXCIuLi9cIiwgaW1wb3J0Lm1ldGEudXJsKVxuXG4gICAgaWYgKHNvdXJjZVVybC5wcm90b2NvbCAhPT0gXCJmaWxlOlwiKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICByZXR1cm4gbm9ybWFsaXplUGF0aChzb3VyY2VVcmwucGF0aG5hbWUpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5jb25zdCBGUkFNRVdPUktfU09VUkNFX0RJUkVDVE9SWSA9IGZyYW1ld29ya1NvdXJjZURpcmVjdG9yeSgpXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHZhbHVlIC0gUGF0aCBvciBmaWxlIFVSTC5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gTm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWRcblxuICBsZXQgbm9ybWFsaXplZCA9IHZhbHVlXG5cbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChcImZpbGU6Ly9cIikpIHtcbiAgICB0cnkge1xuICAgICAgbm9ybWFsaXplZCA9IG5ldyBVUkwobm9ybWFsaXplZCkucGF0aG5hbWVcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEtlZXAgb3JpZ2luYWwgdmFsdWUgd2hlbiBVUkwgcGFyc2luZyBmYWlscy5cbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIG5vcm1hbGl6ZWQgPSBkZWNvZGVVUklDb21wb25lbnQobm9ybWFsaXplZClcbiAgfSBjYXRjaCB7XG4gICAgLy8gS2VlcCBlbmNvZGVkIHZhbHVlIHdoZW4gZGVjb2RpbmcgZmFpbHMuXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB2YWx1ZSAtIERpcmVjdG9yeSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gLSBOb3JtYWxpemVkIGRpcmVjdG9yeSBwYXRoIGVuZGluZyB3aXRoIHNsYXNoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RvcnkodmFsdWUpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgodmFsdWUpXG5cbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWQuZW5kc1dpdGgoXCIvXCIpID8gbm9ybWFsaXplZCA6IGAke25vcm1hbGl6ZWR9L2Bcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbGluZSAtIFN0YWNrIGxpbmUuXG4gKiBAcmV0dXJucyB7UGFyc2VkU3RhY2tGcmFtZSB8IHVuZGVmaW5lZH0gLSBQYXJzZWQgZnJhbWUgd2hlbiBwb3NzaWJsZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VTdGFja0ZyYW1lKGxpbmUpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpXG5cbiAgaWYgKCF0cmltbWVkLnN0YXJ0c1dpdGgoXCJhdCBcIikpIHJldHVybiB1bmRlZmluZWRcblxuICBjb25zdCBmcmFtZSA9IHRyaW1tZWQuc2xpY2UoMylcbiAgY29uc3QgZnJhbWVXaXRoTWV0aG9kTWF0Y2ggPSBmcmFtZS5tYXRjaCgvXiguKj8pIFxcKCguKilcXCkkLylcbiAgY29uc3QgbWV0aG9kTmFtZSA9IGZyYW1lV2l0aE1ldGhvZE1hdGNoID8gZnJhbWVXaXRoTWV0aG9kTWF0Y2hbMV0gOiB1bmRlZmluZWRcbiAgY29uc3QgbG9jYXRpb24gPSBmcmFtZVdpdGhNZXRob2RNYXRjaCA/IGZyYW1lV2l0aE1ldGhvZE1hdGNoWzJdIDogZnJhbWVcbiAgY29uc3QgbG9jYXRpb25NYXRjaCA9IGxvY2F0aW9uLm1hdGNoKC9eKC4qKTooXFxkKyk6KFxcZCspJC8pIHx8IGxvY2F0aW9uLm1hdGNoKC9eKC4qKTooXFxkKykkLylcblxuICBpZiAoIWxvY2F0aW9uTWF0Y2gpIHJldHVybiB1bmRlZmluZWRcblxuICBjb25zdCBzb3VyY2VQYXRoID0gbm9ybWFsaXplUGF0aChsb2NhdGlvbk1hdGNoWzFdKVxuICBjb25zdCBsaW5lTnVtYmVyID0gTnVtYmVyKGxvY2F0aW9uTWF0Y2hbMl0pXG4gIGNvbnN0IGNvbHVtbk51bWJlciA9IGxvY2F0aW9uTWF0Y2hbM10gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IE51bWJlcihsb2NhdGlvbk1hdGNoWzNdKVxuXG4gIGlmICghc291cmNlUGF0aCB8fCAhTnVtYmVyLmlzRmluaXRlKGxpbmVOdW1iZXIpKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHtcbiAgICBjb2x1bW5OdW1iZXI6IE51bWJlci5pc0Zpbml0ZShjb2x1bW5OdW1iZXIpID8gY29sdW1uTnVtYmVyIDogdW5kZWZpbmVkLFxuICAgIGxpbmVOdW1iZXIsXG4gICAgbWV0aG9kTmFtZSxcbiAgICBzb3VyY2VQYXRoXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUGF0aCAtIFNvdXJjZSBwYXRoLlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcGxpY2F0aW9uRGlyZWN0b3J5IC0gQXBwbGljYXRpb24gZGlyZWN0b3J5LlxuICogQHJldHVybnMge3N0cmluZ30gLSBQYXRoIHJlbGF0aXZlIHRvIHRoZSBhcHBsaWNhdGlvbiBkaXJlY3Rvcnkgd2hlbiBwb3NzaWJsZS5cbiAqL1xuZnVuY3Rpb24gcmVsYXRpdmVBcHBsaWNhdGlvblBhdGgoc291cmNlUGF0aCwgYXBwbGljYXRpb25EaXJlY3RvcnkpIHtcbiAgaWYgKHNvdXJjZVBhdGguc3RhcnRzV2l0aChhcHBsaWNhdGlvbkRpcmVjdG9yeSkpIHtcbiAgICByZXR1cm4gc291cmNlUGF0aC5zbGljZShhcHBsaWNhdGlvbkRpcmVjdG9yeS5sZW5ndGgpXG4gIH1cblxuICByZXR1cm4gc291cmNlUGF0aFxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrdHJhY2VDbGVhbmVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIC0gRXJyb3IgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbmNsdWRlRXJyb3JIZWFkZXJdIC0gV2hldGhlciB0byBpbmNsdWRlIHRoZSBgRXJyb3I6IC4uLmAgaGVhZGVyIGxpbmUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIGNsZWFuZWQgc3RhY2suXG4gICAqL1xuICBzdGF0aWMgZ2V0Q2xlYW5lZFN0YWNrKGVycm9yLCBhcmdzKSB7XG4gICAgcmV0dXJuIG5ldyBCYWNrdHJhY2VDbGVhbmVyKGVycm9yKS5nZXRDbGVhbmVkU3RhY2soYXJncylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hcHBsaWNhdGlvbkRpcmVjdG9yeSAtIEFwcGxpY2F0aW9uIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gLSBTb3VyY2UgbGluZSBmb3IgdGhlIGZpcnN0IGFwcGxpY2F0aW9uIGZyYW1lLlxuICAgKi9cbiAgc3RhdGljIGdldEFwcGxpY2F0aW9uU291cmNlTGluZShlcnJvciwgYXJncykge1xuICAgIHJldHVybiBuZXcgQmFja3RyYWNlQ2xlYW5lcihlcnJvcikuZ2V0QXBwbGljYXRpb25Tb3VyY2VMaW5lKGFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVycm9yKSB7XG4gICAgdGhpcy5lcnJvciA9IGVycm9yXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IFthcmdzXSAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmluY2x1ZGVFcnJvckhlYWRlcl0gLSBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGBFcnJvcjogLi4uYCBoZWFkZXIgbGluZS5cbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gLSBUaGUgY2xlYW5lZCBzdGFjay5cbiAgICovXG4gIGdldENsZWFuZWRTdGFjayh7aW5jbHVkZUVycm9ySGVhZGVyID0gdHJ1ZX0gPSB7fSkge1xuICAgIGNvbnN0IGJhY2t0cmFjZSA9IHRoaXMuZ2V0Q2xlYW5lZFN0YWNrTGluZXMoKVxuXG4gICAgaWYgKCFiYWNrdHJhY2UgfHwgYmFja3RyYWNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgaWYgKGluY2x1ZGVFcnJvckhlYWRlcikgcmV0dXJuIGJhY2t0cmFjZS5qb2luKFwiXFxuXCIpXG5cbiAgICBjb25zdCBmaXJzdExpbmUgPSBiYWNrdHJhY2VbMF1cbiAgICBjb25zdCByZW1haW5pbmdMaW5lcyA9IHRoaXMuaXNFcnJvckhlYWRlckxpbmUoZmlyc3RMaW5lKSA/IGJhY2t0cmFjZS5zbGljZSgxKSA6IGJhY2t0cmFjZVxuXG4gICAgaWYgKHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcmV0dXJuIHJlbWFpbmluZ0xpbmVzLmpvaW4oXCJcXG5cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW10gfCB1bmRlZmluZWR9IC0gRmlsdGVyZWQgc3RhY2sgbGluZXMuXG4gICAqL1xuICBnZXRDbGVhbmVkU3RhY2tMaW5lcygpIHtcbiAgICBjb25zdCBiYWNrdHJhY2UgPSB0aGlzLmVycm9yPy5zdGFjaz8uc3BsaXQoXCJcXG5cIilcblxuICAgIHJldHVybiBiYWNrdHJhY2U/LmZpbHRlcigobGluZSkgPT4gdGhpcy5fc2hvdWxkS2VlcFN0YWNrTGluZShsaW5lKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hcHBsaWNhdGlvbkRpcmVjdG9yeSAtIEFwcGxpY2F0aW9uIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gLSBTb3VyY2UgbGluZSBmb3IgdGhlIGZpcnN0IGFwcGxpY2F0aW9uIGZyYW1lLlxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25Tb3VyY2VMaW5lKHthcHBsaWNhdGlvbkRpcmVjdG9yeX0pIHtcbiAgICBjb25zdCBub3JtYWxpemVkQXBwbGljYXRpb25EaXJlY3RvcnkgPSBub3JtYWxpemVEaXJlY3RvcnkoYXBwbGljYXRpb25EaXJlY3RvcnkpXG5cbiAgICBpZiAoIW5vcm1hbGl6ZWRBcHBsaWNhdGlvbkRpcmVjdG9yeSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgZnJhbWUgPSB0aGlzLl9maXJzdEFwcGxpY2F0aW9uRnJhbWUobm9ybWFsaXplZEFwcGxpY2F0aW9uRGlyZWN0b3J5KVxuXG4gICAgaWYgKCFmcmFtZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVBcHBsaWNhdGlvblBhdGgoZnJhbWUuc291cmNlUGF0aCwgbm9ybWFsaXplZEFwcGxpY2F0aW9uRGlyZWN0b3J5KVxuICAgIGNvbnN0IG1ldGhvZFN1ZmZpeCA9IGZyYW1lLm1ldGhvZE5hbWUgPyBgOmluICR7ZnJhbWUubWV0aG9kTmFtZS5yZXBsYWNlKC9eYXN5bmMgLywgXCJcIil9YCA6IFwiXCJcblxuICAgIHJldHVybiBgJHtyZWxhdGl2ZVBhdGh9OiR7ZnJhbWUubGluZU51bWJlcn0ke21ldGhvZFN1ZmZpeH1gXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IGxpbmUgLSBCYWNrdHJhY2UgbGluZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSB3aGVuIHRoZSBsaW5lIGlzIGFuIGVycm9yIGhlYWRlci5cbiAgICovXG4gIGlzRXJyb3JIZWFkZXJMaW5lKGxpbmUpIHtcbiAgICBpZiAoIWxpbmUpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgdHJpbW1lZExpbmUgPSBsaW5lLnRyaW0oKVxuXG4gICAgaWYgKCF0cmltbWVkTGluZSkgcmV0dXJuIGZhbHNlXG5cbiAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aChcIkVycm9yOlwiKSkgcmV0dXJuIHRydWVcblxuICAgIGNvbnN0IGVycm9yTmFtZVBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeJHtlc2NhcGVSZWdFeHAodGhpcy5lcnJvci5uYW1lKX0oPzpcXFxccypcXFxcW1teXFxcXF1dK1xcXFxdKT86YClcblxuICAgIHJldHVybiBlcnJvck5hbWVQYXR0ZXJuLnRlc3QodHJpbW1lZExpbmUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwcGxpY2F0aW9uRGlyZWN0b3J5IC0gTm9ybWFsaXplZCBhcHBsaWNhdGlvbiBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQYXJzZWRTdGFja0ZyYW1lIHwgdW5kZWZpbmVkfSAtIEZpcnN0IGFwcC1vd25lZCBmcmFtZS5cbiAgICovXG4gIF9maXJzdEFwcGxpY2F0aW9uRnJhbWUoYXBwbGljYXRpb25EaXJlY3RvcnkpIHtcbiAgICBjb25zdCBiYWNrdHJhY2UgPSB0aGlzLmdldENsZWFuZWRTdGFja0xpbmVzKClcblxuICAgIGlmICghYmFja3RyYWNlKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgYmFja3RyYWNlKSB7XG4gICAgICBjb25zdCBmcmFtZSA9IHBhcnNlU3RhY2tGcmFtZShsaW5lKVxuXG4gICAgICBpZiAoIWZyYW1lKSBjb250aW51ZVxuICAgICAgaWYgKCFmcmFtZS5zb3VyY2VQYXRoLnN0YXJ0c1dpdGgoYXBwbGljYXRpb25EaXJlY3RvcnkpKSBjb250aW51ZVxuICAgICAgaWYgKHRoaXMuX2ZyYW1ld29ya1NvdXJjZVBhdGgoZnJhbWUuc291cmNlUGF0aCkpIGNvbnRpbnVlXG5cbiAgICAgIHJldHVybiBmcmFtZVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUGF0aCAtIFNvdXJjZSBwYXRoLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBwYXRoIGJlbG9uZ3MgdG8gVmVsb2Npb3VzIGludGVybmFscy5cbiAgICovXG4gIF9mcmFtZXdvcmtTb3VyY2VQYXRoKHNvdXJjZVBhdGgpIHtcbiAgICBpZiAoIUZSQU1FV09SS19TT1VSQ0VfRElSRUNUT1JZKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiBzb3VyY2VQYXRoLnN0YXJ0c1dpdGgoRlJBTUVXT1JLX1NPVVJDRV9ESVJFQ1RPUlkpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxpbmUgLSBTdGFjayBsaW5lLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRvIGtlZXAgdGhlIHN0YWNrIGxpbmUuXG4gICAqL1xuICBfc2hvdWxkS2VlcFN0YWNrTGluZShsaW5lKSB7XG4gICAgaWYgKGxpbmUuaW5jbHVkZXMoXCJub2RlX21vZHVsZXNcIikpIHJldHVybiBmYWxzZVxuICAgIGlmIChsaW5lLmluY2x1ZGVzKFwiKG5vZGU6aW50ZXJuYWwvXCIpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAobGluZS5pbmNsdWRlcyhcIihub2RlOmludGVybmFsL3Byb2Nlc3MvXCIpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAobGluZS50cmltKCkuc3RhcnRzV2l0aChcImF0IG5vZGU6aW50ZXJuYWwvXCIpKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiB0cnVlXG4gIH1cbn1cbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3RyYWNlLWNsZWFuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvYmFja3RyYWNlLWNsZWFuZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLEtBQUs7SUFDekIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ3JELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxLQUFLO0lBQzFCLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFNUIsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFBO0lBRXRCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQztZQUNILFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUE7UUFDM0MsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDhDQUE4QztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsMENBQTBDO0lBQzVDLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGtCQUFrQixDQUFDLEtBQUs7SUFDL0IsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXZDLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFakMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFD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RSxPQUFPLFNBQVMsQ0FBQTtRQUVoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUVuQyxJQUFJLENBQUMsS0FBSztnQkFBRSxTQUFRO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFBRSxTQUFRO1lBQ2hFLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQUUsU0FBUTtZQUV6RCxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CLENBQUMsVUFBVTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QjtZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRWhELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CLENBQUMsSUFBSTtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDMUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFN0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBWYWx1ZSB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIEVzY2FwZWQgdmFsdWUgZm9yIGEgUmVnRXhwIHBhdHRlcm4uXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpXG59XG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUGFyc2VkU3RhY2tGcmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IG1ldGhvZE5hbWUgLSBNZXRob2QvZnVuY3Rpb24gbmFtZSBmcm9tIHRoZSBzdGFjayBmcmFtZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzb3VyY2VQYXRoIC0gRmlsZSBvciBVUkwgcGF0aCBmcm9tIHRoZSBzdGFjayBmcmFtZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lTnVtYmVyIC0gU291cmNlIGxpbmUgbnVtYmVyLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCB1bmRlZmluZWR9IGNvbHVtbk51bWJlciAtIFNvdXJjZSBjb2x1bW4gbnVtYmVyLlxuICovXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHZhbHVlIC0gUGF0aCBvciBmaWxlIFVSTC5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gTm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWRcblxuICBsZXQgbm9ybWFsaXplZCA9IHZhbHVlXG5cbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChcImZpbGU6Ly9cIikpIHtcbiAgICB0cnkge1xuICAgICAgbm9ybWFsaXplZCA9IG5ldyBVUkwobm9ybWFsaXplZCkucGF0aG5hbWVcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEtlZXAgb3JpZ2luYWwgdmFsdWUgd2hlbiBVUkwgcGFyc2luZyBmYWlscy5cbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIG5vcm1hbGl6ZWQgPSBkZWNvZGVVUklDb21wb25lbnQobm9ybWFsaXplZClcbiAgfSBjYXRjaCB7XG4gICAgLy8gS2VlcCBlbmNvZGVkIHZhbHVlIHdoZW4gZGVjb2RpbmcgZmFpbHMuXG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB2YWx1ZSAtIERpcmVjdG9yeSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gLSBOb3JtYWxpemVkIGRpcmVjdG9yeSBwYXRoIGVuZGluZyB3aXRoIHNsYXNoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RvcnkodmFsdWUpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgodmFsdWUpXG5cbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWQuZW5kc1dpdGgoXCIvXCIpID8gbm9ybWFsaXplZCA6IGAke25vcm1hbGl6ZWR9L2Bcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbGluZSAtIFN0YWNrIGxpbmUuXG4gKiBAcmV0dXJucyB7UGFyc2VkU3RhY2tGcmFtZSB8IHVuZGVmaW5lZH0gLSBQYXJzZWQgZnJhbWUgd2hlbiBwb3NzaWJsZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VTdGFja0ZyYW1lKGxpbmUpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpXG5cbiAgaWYgKCF0cmltbWVkLnN0YXJ0c1dpdGgoXCJhdCBcIikpIHJldHVybiB1bmRlZmluZWRcblxuICBjb25zdCBmcmFtZSA9IHRyaW1tZWQuc2xpY2UoMylcbiAgY29uc3QgZnJhbWVXaXRoTWV0aG9kTWF0Y2ggPSBmcmFtZS5tYXRjaCgvXiguKj8pIFxcKCguKilcXCkkLylcbiAgY29uc3QgbWV0aG9kTmFtZSA9IGZyYW1lV2l0aE1ldGhvZE1hdGNoID8gZnJhbWVXaXRoTWV0aG9kTWF0Y2hbMV0gOiB1bmRlZmluZWRcbiAgY29uc3QgbG9jYXRpb24gPSBmcmFtZVdpdGhNZXRob2RNYXRjaCA/IGZyYW1lV2l0aE1ldGhvZE1hdGNoWzJdIDogZnJhbWVcbiAgY29uc3QgbG9jYXRpb25NYXRjaCA9IGxvY2F0aW9uLm1hdGNoKC9eKC4qKTooXFxkKyk6KFxcZCspJC8pIHx8IGxvY2F0aW9uLm1hdGNoKC9eKC4qKTooXFxkKykkLylcblxuICBpZiAoIWxvY2F0aW9uTWF0Y2gpIHJldHVybiB1bmRlZmluZWRcblxuICBjb25zdCBzb3VyY2VQYXRoID0gbm9ybWFsaXplUGF0aChsb2NhdGlvbk1hdGNoWzFdKVxuICBjb25zdCBsaW5lTnVtYmVyID0gTnVtYmVyKGxvY2F0aW9uTWF0Y2hbMl0pXG4gIGNvbnN0IGNvbHVtbk51bWJlciA9IGxvY2F0aW9uTWF0Y2hbM10gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IE51bWJlcihsb2NhdGlvbk1hdGNoWzNdKVxuXG4gIGlmICghc291cmNlUGF0aCB8fCAhTnVtYmVyLmlzRmluaXRlKGxpbmVOdW1iZXIpKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHtcbiAgICBjb2x1bW5OdW1iZXI6IE51bWJlci5pc0Zpbml0ZShjb2x1bW5OdW1iZXIpID8gY29sdW1uTnVtYmVyIDogdW5kZWZpbmVkLFxuICAgIGxpbmVOdW1iZXIsXG4gICAgbWV0aG9kTmFtZSxcbiAgICBzb3VyY2VQYXRoXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUGF0aCAtIFNvdXJjZSBwYXRoLlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcGxpY2F0aW9uRGlyZWN0b3J5IC0gQXBwbGljYXRpb24gZGlyZWN0b3J5LlxuICogQHJldHVybnMge3N0cmluZ30gLSBQYXRoIHJlbGF0aXZlIHRvIHRoZSBhcHBsaWNhdGlvbiBkaXJlY3Rvcnkgd2hlbiBwb3NzaWJsZS5cbiAqL1xuZnVuY3Rpb24gcmVsYXRpdmVBcHBsaWNhdGlvblBhdGgoc291cmNlUGF0aCwgYXBwbGljYXRpb25EaXJlY3RvcnkpIHtcbiAgaWYgKHNvdXJjZVBhdGguc3RhcnRzV2l0aChhcHBsaWNhdGlvbkRpcmVjdG9yeSkpIHtcbiAgICByZXR1cm4gc291cmNlUGF0aC5zbGljZShhcHBsaWNhdGlvbkRpcmVjdG9yeS5sZW5ndGgpXG4gIH1cblxuICByZXR1cm4gc291cmNlUGF0aFxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYWNrdHJhY2VDbGVhbmVyIHtcbiAgLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIGZyYW1ld29ya1NvdXJjZURpcmVjdG9yeSA9IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIEVycm9yIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBbYXJncy5mcmFtZXdvcmtTb3VyY2VEaXJlY3RvcnldIC0gRGlyZWN0b3J5IGZvciBWZWxvY2lvdXMgaW50ZXJuYWxzIHRvIHNraXAuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuaW5jbHVkZUVycm9ySGVhZGVyXSAtIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgYEVycm9yOiAuLi5gIGhlYWRlciBsaW5lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFRoZSBjbGVhbmVkIHN0YWNrLlxuICAgKi9cbiAgc3RhdGljIGdldENsZWFuZWRTdGFjayhlcnJvciwgYXJncykge1xuICAgIHJldHVybiBuZXcgQmFja3RyYWNlQ2xlYW5lcihlcnJvciwgYXJncykuZ2V0Q2xlYW5lZFN0YWNrKGFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXBwbGljYXRpb25EaXJlY3RvcnkgLSBBcHBsaWNhdGlvbiBkaXJlY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBbYXJncy5mcmFtZXdvcmtTb3VyY2VEaXJlY3RvcnldIC0gRGlyZWN0b3J5IGZvciBWZWxvY2lvdXMgaW50ZXJuYWxzIHRvIHNraXAuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gU291cmNlIGxpbmUgZm9yIHRoZSBmaXJzdCBhcHBsaWNhdGlvbiBmcmFtZS5cbiAgICovXG4gIHN0YXRpYyBnZXRBcHBsaWNhdGlvblNvdXJjZUxpbmUoZXJyb3IsIGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IEJhY2t0cmFjZUNsZWFuZXIoZXJyb3IsIGFyZ3MpLmdldEFwcGxpY2F0aW9uU291cmNlTGluZShhcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIC0gRXJyb3IgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IFthcmdzLmZyYW1ld29ya1NvdXJjZURpcmVjdG9yeV0gLSBEaXJlY3RvcnkgZm9yIFZlbG9jaW91cyBpbnRlcm5hbHMgdG8gc2tpcC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGVycm9yLCB7ZnJhbWV3b3JrU291cmNlRGlyZWN0b3J5fSA9IHt9KSB7XG4gICAgdGhpcy5lcnJvciA9IGVycm9yXG4gICAgdGhpcy5mcmFtZXdvcmtTb3VyY2VEaXJlY3RvcnkgPSBub3JtYWxpemVEaXJlY3RvcnkoZnJhbWV3b3JrU291cmNlRGlyZWN0b3J5KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbmNsdWRlRXJyb3JIZWFkZXJdIC0gV2hldGhlciB0byBpbmNsdWRlIHRoZSBgRXJyb3I6IC4uLmAgaGVhZGVyIGxpbmUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIGNsZWFuZWQgc3RhY2suXG4gICAqL1xuICBnZXRDbGVhbmVkU3RhY2soe2luY2x1ZGVFcnJvckhlYWRlciA9IHRydWV9ID0ge30pIHtcbiAgICBjb25zdCBiYWNrdHJhY2UgPSB0aGlzLmdldENsZWFuZWRTdGFja0xpbmVzKClcblxuICAgIGlmICghYmFja3RyYWNlIHx8IGJhY2t0cmFjZS5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWRcblxuICAgIGlmIChpbmNsdWRlRXJyb3JIZWFkZXIpIHJldHVybiBiYWNrdHJhY2Uuam9pbihcIlxcblwiKVxuXG4gICAgY29uc3QgZmlyc3RMaW5lID0gYmFja3RyYWNlWzBdXG4gICAgY29uc3QgcmVtYWluaW5nTGluZXMgPSB0aGlzLmlzRXJyb3JIZWFkZXJMaW5lKGZpcnN0TGluZSkgPyBiYWNrdHJhY2Uuc2xpY2UoMSkgOiBiYWNrdHJhY2VcblxuICAgIGlmIChyZW1haW5pbmdMaW5lcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJldHVybiByZW1haW5pbmdMaW5lcy5qb2luKFwiXFxuXCIpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSAtIEZpbHRlcmVkIHN0YWNrIGxpbmVzLlxuICAgKi9cbiAgZ2V0Q2xlYW5lZFN0YWNrTGluZXMoKSB7XG4gICAgY29uc3QgYmFja3RyYWNlID0gdGhpcy5lcnJvcj8uc3RhY2s/LnNwbGl0KFwiXFxuXCIpXG5cbiAgICByZXR1cm4gYmFja3RyYWNlPy5maWx0ZXIoKGxpbmUpID0+IHRoaXMuX3Nob3VsZEtlZXBTdGFja0xpbmUobGluZSkpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXBwbGljYXRpb25EaXJlY3RvcnkgLSBBcHBsaWNhdGlvbiBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gU291cmNlIGxpbmUgZm9yIHRoZSBmaXJzdCBhcHBsaWNhdGlvbiBmcmFtZS5cbiAgICovXG4gIGdldEFwcGxpY2F0aW9uU291cmNlTGluZSh7YXBwbGljYXRpb25EaXJlY3Rvcnl9KSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEFwcGxpY2F0aW9uRGlyZWN0b3J5ID0gbm9ybWFsaXplRGlyZWN0b3J5KGFwcGxpY2F0aW9uRGlyZWN0b3J5KVxuXG4gICAgaWYgKCFub3JtYWxpemVkQXBwbGljYXRpb25EaXJlY3RvcnkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGZyYW1lID0gdGhpcy5fZmlyc3RBcHBsaWNhdGlvbkZyYW1lKG5vcm1hbGl6ZWRBcHBsaWNhdGlvbkRpcmVjdG9yeSlcblxuICAgIGlmICghZnJhbWUpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlQXBwbGljYXRpb25QYXRoKGZyYW1lLnNvdXJjZVBhdGgsIG5vcm1hbGl6ZWRBcHBsaWNhdGlvbkRpcmVjdG9yeSlcbiAgICBjb25zdCBtZXRob2RTdWZmaXggPSBmcmFtZS5tZXRob2ROYW1lID8gYDppbiAke2ZyYW1lLm1ldGhvZE5hbWUucmVwbGFjZSgvXmFzeW5jIC8sIFwiXCIpfWAgOiBcIlwiXG5cbiAgICByZXR1cm4gYCR7cmVsYXRpdmVQYXRofToke2ZyYW1lLmxpbmVOdW1iZXJ9JHttZXRob2RTdWZmaXh9YFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBsaW5lIC0gQmFja3RyYWNlIGxpbmUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFRydWUgd2hlbiB0aGUgbGluZSBpcyBhbiBlcnJvciBoZWFkZXIuXG4gICAqL1xuICBpc0Vycm9ySGVhZGVyTGluZShsaW5lKSB7XG4gICAgaWYgKCFsaW5lKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IHRyaW1tZWRMaW5lID0gbGluZS50cmltKClcblxuICAgIGlmICghdHJpbW1lZExpbmUpIHJldHVybiBmYWxzZVxuXG4gICAgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoXCJFcnJvcjpcIikpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBlcnJvck5hbWVQYXR0ZXJuID0gbmV3IFJlZ0V4cChgXiR7ZXNjYXBlUmVnRXhwKHRoaXMuZXJyb3IubmFtZSl9KD86XFxcXHMqXFxcXFtbXlxcXFxdXStcXFxcXSk/OmApXG5cbiAgICByZXR1cm4gZXJyb3JOYW1lUGF0dGVybi50ZXN0KHRyaW1tZWRMaW5lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBsaWNhdGlvbkRpcmVjdG9yeSAtIE5vcm1hbGl6ZWQgYXBwbGljYXRpb24gZGlyZWN0b3J5LlxuICAgKiBAcmV0dXJucyB7UGFyc2VkU3RhY2tGcmFtZSB8IHVuZGVmaW5lZH0gLSBGaXJzdCBhcHAtb3duZWQgZnJhbWUuXG4gICAqL1xuICBfZmlyc3RBcHBsaWNhdGlvbkZyYW1lKGFwcGxpY2F0aW9uRGlyZWN0b3J5KSB7XG4gICAgY29uc3QgYmFja3RyYWNlID0gdGhpcy5nZXRDbGVhbmVkU3RhY2tMaW5lcygpXG5cbiAgICBpZiAoIWJhY2t0cmFjZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGJhY2t0cmFjZSkge1xuICAgICAgY29uc3QgZnJhbWUgPSBwYXJzZVN0YWNrRnJhbWUobGluZSlcblxuICAgICAgaWYgKCFmcmFtZSkgY29udGludWVcbiAgICAgIGlmICghZnJhbWUuc291cmNlUGF0aC5zdGFydHNXaXRoKGFwcGxpY2F0aW9uRGlyZWN0b3J5KSkgY29udGludWVcbiAgICAgIGlmICh0aGlzLl9mcmFtZXdvcmtTb3VyY2VQYXRoKGZyYW1lLnNvdXJjZVBhdGgpKSBjb250aW51ZVxuXG4gICAgICByZXR1cm4gZnJhbWVcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVBhdGggLSBTb3VyY2UgcGF0aC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgcGF0aCBiZWxvbmdzIHRvIFZlbG9jaW91cyBpbnRlcm5hbHMuXG4gICAqL1xuICBfZnJhbWV3b3JrU291cmNlUGF0aChzb3VyY2VQYXRoKSB7XG4gICAgaWYgKCF0aGlzLmZyYW1ld29ya1NvdXJjZURpcmVjdG9yeSkgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gc291cmNlUGF0aC5zdGFydHNXaXRoKHRoaXMuZnJhbWV3b3JrU291cmNlRGlyZWN0b3J5KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lIC0gU3RhY2sgbGluZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0byBrZWVwIHRoZSBzdGFjayBsaW5lLlxuICAgKi9cbiAgX3Nob3VsZEtlZXBTdGFja0xpbmUobGluZSkge1xuICAgIGlmIChsaW5lLmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAobGluZS5pbmNsdWRlcyhcIihub2RlOmludGVybmFsL1wiKSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGxpbmUuaW5jbHVkZXMoXCIobm9kZTppbnRlcm5hbC9wcm9jZXNzL1wiKSkgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGxpbmUudHJpbSgpLnN0YXJ0c1dpdGgoXCJhdCBub2RlOmludGVybmFsL1wiKSkgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"root":["../index.js","../bin/velocious.js","../src/application.js","../src/configuration-resolver.js","../src/configuration-types.js","../src/configuration.js","../src/controller.js","../src/current.js","../src/error-logger.js","../src/frontend-model-controller.js","../src/initializer.js","../src/logger.js","../src/mailer.js","../src/velocious-error.js","../src/authorization/ability.js","../src/authorization/base-resource.js","../src/background-jobs/client.js","../src/background-jobs/cron-expression.js","../src/background-jobs/job-record.js","../src/background-jobs/job-registry.js","../src/background-jobs/job-runner.js","../src/background-jobs/job.js","../src/background-jobs/json-socket.js","../src/background-jobs/main.js","../src/background-jobs/scheduler.js","../src/background-jobs/status-reporter.js","../src/background-jobs/store.js","../src/background-jobs/types.js","../src/background-jobs/worker.js","../src/beacon/client.js","../src/beacon/in-process-broker.js","../src/beacon/in-process-client.js","../src/beacon/server.js","../src/beacon/types.js","../src/cli/base-command.js","../src/cli/browser-cli.js","../src/cli/index.js","../src/cli/use-browser-cli.js","../src/cli/commands/background-jobs-main.js","../src/cli/commands/background-jobs-runner.js","../src/cli/commands/background-jobs-worker.js","../src/cli/commands/beacon.js","../src/cli/commands/console.js","../src/cli/commands/init.js","../src/cli/commands/routes.js","../src/cli/commands/run-script.js","../src/cli/commands/runner.js","../src/cli/commands/server.js","../src/cli/commands/test.js","../src/cli/commands/db/create.js","../src/cli/commands/db/drop.js","../src/cli/commands/db/migrate.js","../src/cli/commands/db/reset.js","../src/cli/commands/db/rollback.js","../src/cli/commands/db/seed.js","../src/cli/commands/db/schema/dump.js","../src/cli/commands/db/schema/load.js","../src/cli/commands/destroy/migration.js","../src/cli/commands/generate/base-models.js","../src/cli/commands/generate/frontend-models.js","../src/cli/commands/generate/migration.js","../src/cli/commands/generate/model.js","../src/database/handler.js","../src/database/initializer-from-require-context.js","../src/database/migrator.js","../src/database/use-database.js","../src/database/drivers/base-column.js","../src/database/drivers/base-columns-index.js","../src/database/drivers/base-foreign-key.js","../src/database/drivers/base-table.js","../src/database/drivers/base.js","../src/database/drivers/mssql/column.js","../src/database/drivers/mssql/columns-index.js","../src/database/drivers/mssql/connect-connection.js","../src/database/drivers/mssql/foreign-key.js","../src/database/drivers/mssql/index.js","../src/database/drivers/mssql/options.js","../src/database/drivers/mssql/query-parser.js","../src/database/drivers/mssql/structure-sql.js","../src/database/drivers/mssql/table.js","../src/database/drivers/mssql/sql/alter-table.js","../src/database/drivers/mssql/sql/create-database.js","../src/database/drivers/mssql/sql/create-index.js","../src/database/drivers/mssql/sql/create-table.js","../src/database/drivers/mssql/sql/delete.js","../src/database/drivers/mssql/sql/drop-database.js","../src/database/drivers/mssql/sql/drop-table.js","../src/database/drivers/mssql/sql/insert.js","../src/database/drivers/mssql/sql/update.js","../src/database/drivers/mssql/sql/upsert.js","../src/database/drivers/mysql/column.js","../src/database/drivers/mysql/columns-index.js","../src/database/drivers/mysql/foreign-key.js","../src/database/drivers/mysql/index.js","../src/database/drivers/mysql/options.js","../src/database/drivers/mysql/query-parser.js","../src/database/drivers/mysql/query.js","../src/database/drivers/mysql/structure-sql.js","../src/database/drivers/mysql/table.js","../src/database/drivers/mysql/sql/alter-table.js","../src/database/drivers/mysql/sql/create-database.js","../src/database/drivers/mysql/sql/create-index.js","../src/database/drivers/mysql/sql/create-table.js","../src/database/drivers/mysql/sql/delete.js","../src/database/drivers/mysql/sql/drop-database.js","../src/database/drivers/mysql/sql/drop-table.js","../src/database/drivers/mysql/sql/insert.js","../src/database/drivers/mysql/sql/update.js","../src/database/drivers/mysql/sql/upsert.js","../src/database/drivers/pgsql/column.js","../src/database/drivers/pgsql/columns-index.js","../src/database/drivers/pgsql/foreign-key.js","../src/database/drivers/pgsql/index.js","../src/database/drivers/pgsql/options.js","../src/database/drivers/pgsql/query-parser.js","../src/database/drivers/pgsql/structure-sql.js","../src/database/drivers/pgsql/table.js","../src/database/drivers/pgsql/sql/alter-table.js","../src/database/drivers/pgsql/sql/create-database.js","../src/database/drivers/pgsql/sql/create-index.js","../src/database/drivers/pgsql/sql/create-table.js","../src/database/drivers/pgsql/sql/delete.js","../src/database/drivers/pgsql/sql/drop-database.js","../src/database/drivers/pgsql/sql/drop-table.js","../src/database/drivers/pgsql/sql/insert.js","../src/database/drivers/pgsql/sql/update.js","../src/database/drivers/pgsql/sql/upsert.js","../src/database/drivers/sqlite/base.js","../src/database/drivers/sqlite/column.js","../src/database/drivers/sqlite/columns-index.js","../src/database/drivers/sqlite/connection-sql-js.js","../src/database/drivers/sqlite/foreign-key.js","../src/database/drivers/sqlite/index.js","../src/database/drivers/sqlite/index.native.js","../src/database/drivers/sqlite/index.web.js","../src/database/drivers/sqlite/options.js","../src/database/drivers/sqlite/query-parser.js","../src/database/drivers/sqlite/query.js","../src/database/drivers/sqlite/query.native.js","../src/database/drivers/sqlite/query.web.js","../src/database/drivers/sqlite/structure-sql.js","../src/database/drivers/sqlite/table-rebuilder.js","../src/database/drivers/sqlite/table.js","../src/database/drivers/sqlite/sql/alter-table.js","../src/database/drivers/sqlite/sql/create-index.js","../src/database/drivers/sqlite/sql/create-table.js","../src/database/drivers/sqlite/sql/delete.js","../src/database/drivers/sqlite/sql/drop-table.js","../src/database/drivers/sqlite/sql/insert.js","../src/database/drivers/sqlite/sql/update.js","../src/database/drivers/sqlite/sql/upsert.js","../src/database/drivers/structure-sql/utils.js","../src/database/migration/index.js","../src/database/migrator/files-finder.js","../src/database/migrator/types.js","../src/database/pool/async-tracked-multi-connection.js","../src/database/pool/base-methods-forward.js","../src/database/pool/base.js","../src/database/pool/single-multi-use.js","../src/database/query/alter-table-base.js","../src/database/query/base.js","../src/database/query/create-database-base.js","../src/database/query/create-index-base.js","../src/database/query/create-table-base.js","../src/database/query/delete-base.js","../src/database/query/drop-database-base.js","../src/database/query/drop-table-base.js","../src/database/query/from-base.js","../src/database/query/from-plain.js","../src/database/query/from-table.js","../src/database/query/index.js","../src/database/query/insert-base.js","../src/database/query/join-base.js","../src/database/query/join-object.js","../src/database/query/join-plain.js","../src/database/query/join-tracker.js","../src/database/query/model-class-query.js","../src/database/query/order-base.js","../src/database/query/order-plain.js","../src/database/query/preloader.js","../src/database/query/query-data.js","../src/database/query/select-base.js","../src/database/query/select-plain.js","../src/database/query/select-table-and-column.js","../src/database/query/update-base.js","../src/database/query/upsert-base.js","../src/database/query/where-base.js","../src/database/query/where-hash.js","../src/database/query/where-model-class-hash.js","../src/database/query/where-not.js","../src/database/query/where-plain.js","../src/database/query/with-count.js","../src/database/query/preloader/belongs-to.js","../src/database/query/preloader/has-many.js","../src/database/query/preloader/has-one.js","../src/database/query-parser/base-query-parser.js","../src/database/query-parser/from-parser.js","../src/database/query-parser/group-parser.js","../src/database/query-parser/joins-parser.js","../src/database/query-parser/limit-parser.js","../src/database/query-parser/options.js","../src/database/query-parser/order-parser.js","../src/database/query-parser/select-parser.js","../src/database/query-parser/where-parser.js","../src/database/record/index.js","../src/database/record/record-not-found-error.js","../src/database/record/state-machine.js","../src/database/record/user-module.js","../src/database/record/attachments/download.js","../src/database/record/attachments/handle.js","../src/database/record/attachments/normalize-input.js","../src/database/record/attachments/store.js","../src/database/record/attachments/storage-drivers/filesystem.js","../src/database/record/attachments/storage-drivers/native.js","../src/database/record/attachments/storage-drivers/s3.js","../src/database/record/instance-relationships/base.js","../src/database/record/instance-relationships/belongs-to.js","../src/database/record/instance-relationships/has-many.js","../src/database/record/instance-relationships/has-one.js","../src/database/record/relationships/base.js","../src/database/record/relationships/belongs-to.js","../src/database/record/relationships/has-many.js","../src/database/record/relationships/has-one.js","../src/database/record/validators/base.js","../src/database/record/validators/format.js","../src/database/record/validators/presence.js","../src/database/record/validators/uniqueness.js","../src/database/table-data/index.js","../src/database/table-data/table-column.js","../src/database/table-data/table-foreign-key.js","../src/database/table-data/table-index.js","../src/database/table-data/table-reference.js","../src/environment-handlers/base.js","../src/environment-handlers/browser.js","../src/environment-handlers/node.js","../src/environment-handlers/node/cli/commands/background-jobs-main.js","../src/environment-handlers/node/cli/commands/background-jobs-runner.js","../src/environment-handlers/node/cli/commands/background-jobs-worker.js","../src/environment-handlers/node/cli/commands/beacon.js","../src/environment-handlers/node/cli/commands/console.js","../src/environment-handlers/node/cli/commands/init.js","../src/environment-handlers/node/cli/commands/routes.js","../src/environment-handlers/node/cli/commands/run-script.js","../src/environment-handlers/node/cli/commands/runner.js","../src/environment-handlers/node/cli/commands/server.js","../src/environment-handlers/node/cli/commands/test.js","../src/environment-handlers/node/cli/commands/db/seed.js","../src/environment-handlers/node/cli/commands/db/schema/dump.js","../src/environment-handlers/node/cli/commands/db/schema/load.js","../src/environment-handlers/node/cli/commands/destroy/migration.js","../src/environment-handlers/node/cli/commands/generate/base-models.js","../src/environment-handlers/node/cli/commands/generate/frontend-models.js","../src/environment-handlers/node/cli/commands/generate/migration.js","../src/environment-handlers/node/cli/commands/generate/model.js","../src/frontend-model-resource/base-resource.js","../src/frontend-models/base.js","../src/frontend-models/model-registry.js","../src/frontend-models/outgoing-event-buffer.js","../src/frontend-models/query.js","../src/frontend-models/resource-config-validation.js","../src/frontend-models/resource-definition.js","../src/frontend-models/transport-serialization.js","../src/frontend-models/websocket-channel.js","../src/frontend-models/websocket-publishers.js","../src/http-client/header.js","../src/http-client/index.js","../src/http-client/request.js","../src/http-client/response.js","../src/http-client/websocket-channel.js","../src/http-client/websocket-client.js","../src/http-client/websocket-connection.js","../src/http-server/cookie.js","../src/http-server/development-reloader.js","../src/http-server/index.js","../src/http-server/server-client.js","../src/http-server/websocket-channel-subscribers.js","../src/http-server/websocket-channel.js","../src/http-server/websocket-connection.js","../src/http-server/websocket-event-log-store.js","../src/http-server/websocket-events-host.js","../src/http-server/websocket-events.js","../src/http-server/client/index.js","../src/http-server/client/params-to-object.js","../src/http-server/client/request-parser.js","../src/http-server/client/request-runner.js","../src/http-server/client/request-timing.js","../src/http-server/client/request.js","../src/http-server/client/response.js","../src/http-server/client/websocket-request.js","../src/http-server/client/websocket-session.js","../src/http-server/client/request-buffer/form-data-part.js","../src/http-server/client/request-buffer/header.js","../src/http-server/client/request-buffer/index.js","../src/http-server/client/uploaded-file/memory-uploaded-file.js","../src/http-server/client/uploaded-file/temporary-uploaded-file.js","../src/http-server/client/uploaded-file/uploaded-file.js","../src/http-server/worker-handler/in-process.js","../src/http-server/worker-handler/index.js","../src/http-server/worker-handler/worker-script.js","../src/http-server/worker-handler/worker-thread.js","../src/jobs/mail-delivery.js","../src/logger/base-logger.js","../src/logger/console-logger.js","../src/logger/file-logger.js","../src/logger/outputs/array-output.js","../src/logger/outputs/console-output.js","../src/logger/outputs/file-output.js","../src/logger/outputs/stdout-output.js","../src/mailer/base.js","../src/mailer/delivery.js","../src/mailer/index.js","../src/mailer/backends/smtp.js","../src/plugins/sqljs-wasm-route-controller.js","../src/plugins/sqljs-wasm-route.js","../src/routes/app-routes.js","../src/routes/base-route.js","../src/routes/basic-route.js","../src/routes/get-route.js","../src/routes/index.js","../src/routes/namespace-route.js","../src/routes/plugin-routes.js","../src/routes/post-route.js","../src/routes/resolver.js","../src/routes/resource-route.js","../src/routes/root-route.js","../src/routes/built-in/errors/controller.js","../src/routes/hooks/frontend-model-command-route-hook.js","../src/testing/base-expect.js","../src/testing/browser-test-app.js","../src/testing/expect-to-change.js","../src/testing/expect-utils.js","../src/testing/expect.js","../src/testing/request-client.js","../src/testing/test-files-finder.js","../src/testing/test-filter-parser.js","../src/testing/test-runner.js","../src/testing/test-suite-splitter.js","../src/testing/test.js","../src/types/external-modules.d.ts","../src/utils/backtrace-cleaner.js","../src/utils/ensure-error.js","../src/utils/event-emitter.js","../src/utils/file-exists.js","../src/utils/format-value.js","../src/utils/model-scope.js","../src/utils/nest-callbacks.js","../src/utils/ransack.js","../src/utils/rest-args-error.js","../src/utils/singularize-model-name.js","../src/utils/split-sql-statements.js","../src/utils/to-import-specifier.js","../src/utils/with-tracked-stack-async-hooks.js","../src/utils/with-tracked-stack.js"],"version":"6.0.3"}
1
+ {"root":["../index.js","../bin/velocious.js","../src/application.js","../src/configuration-resolver.js","../src/configuration-types.js","../src/configuration.js","../src/controller.js","../src/current.js","../src/error-logger.js","../src/frontend-model-controller.js","../src/initializer.js","../src/logger.js","../src/mailer.js","../src/velocious-error.js","../src/authorization/ability.js","../src/authorization/base-resource.js","../src/background-jobs/client.js","../src/background-jobs/cron-expression.js","../src/background-jobs/job-record.js","../src/background-jobs/job-registry.js","../src/background-jobs/job-runner.js","../src/background-jobs/job.js","../src/background-jobs/json-socket.js","../src/background-jobs/main.js","../src/background-jobs/scheduler.js","../src/background-jobs/status-reporter.js","../src/background-jobs/store.js","../src/background-jobs/types.js","../src/background-jobs/worker.js","../src/beacon/client.js","../src/beacon/in-process-broker.js","../src/beacon/in-process-client.js","../src/beacon/server.js","../src/beacon/types.js","../src/cli/base-command.js","../src/cli/browser-cli.js","../src/cli/index.js","../src/cli/use-browser-cli.js","../src/cli/commands/background-jobs-main.js","../src/cli/commands/background-jobs-runner.js","../src/cli/commands/background-jobs-worker.js","../src/cli/commands/beacon.js","../src/cli/commands/console.js","../src/cli/commands/init.js","../src/cli/commands/routes.js","../src/cli/commands/run-script.js","../src/cli/commands/runner.js","../src/cli/commands/server.js","../src/cli/commands/test.js","../src/cli/commands/db/create.js","../src/cli/commands/db/drop.js","../src/cli/commands/db/migrate.js","../src/cli/commands/db/reset.js","../src/cli/commands/db/rollback.js","../src/cli/commands/db/seed.js","../src/cli/commands/db/schema/dump.js","../src/cli/commands/db/schema/load.js","../src/cli/commands/destroy/migration.js","../src/cli/commands/generate/base-models.js","../src/cli/commands/generate/frontend-models.js","../src/cli/commands/generate/migration.js","../src/cli/commands/generate/model.js","../src/database/handler.js","../src/database/initializer-from-require-context.js","../src/database/migrator.js","../src/database/use-database.js","../src/database/drivers/base-column.js","../src/database/drivers/base-columns-index.js","../src/database/drivers/base-foreign-key.js","../src/database/drivers/base-table.js","../src/database/drivers/base.js","../src/database/drivers/mssql/column.js","../src/database/drivers/mssql/columns-index.js","../src/database/drivers/mssql/connect-connection.js","../src/database/drivers/mssql/foreign-key.js","../src/database/drivers/mssql/index.js","../src/database/drivers/mssql/options.js","../src/database/drivers/mssql/query-parser.js","../src/database/drivers/mssql/structure-sql.js","../src/database/drivers/mssql/table.js","../src/database/drivers/mssql/sql/alter-table.js","../src/database/drivers/mssql/sql/create-database.js","../src/database/drivers/mssql/sql/create-index.js","../src/database/drivers/mssql/sql/create-table.js","../src/database/drivers/mssql/sql/delete.js","../src/database/drivers/mssql/sql/drop-database.js","../src/database/drivers/mssql/sql/drop-table.js","../src/database/drivers/mssql/sql/insert.js","../src/database/drivers/mssql/sql/update.js","../src/database/drivers/mssql/sql/upsert.js","../src/database/drivers/mysql/column.js","../src/database/drivers/mysql/columns-index.js","../src/database/drivers/mysql/foreign-key.js","../src/database/drivers/mysql/index.js","../src/database/drivers/mysql/options.js","../src/database/drivers/mysql/query-parser.js","../src/database/drivers/mysql/query.js","../src/database/drivers/mysql/structure-sql.js","../src/database/drivers/mysql/table.js","../src/database/drivers/mysql/sql/alter-table.js","../src/database/drivers/mysql/sql/create-database.js","../src/database/drivers/mysql/sql/create-index.js","../src/database/drivers/mysql/sql/create-table.js","../src/database/drivers/mysql/sql/delete.js","../src/database/drivers/mysql/sql/drop-database.js","../src/database/drivers/mysql/sql/drop-table.js","../src/database/drivers/mysql/sql/insert.js","../src/database/drivers/mysql/sql/update.js","../src/database/drivers/mysql/sql/upsert.js","../src/database/drivers/pgsql/column.js","../src/database/drivers/pgsql/columns-index.js","../src/database/drivers/pgsql/foreign-key.js","../src/database/drivers/pgsql/index.js","../src/database/drivers/pgsql/options.js","../src/database/drivers/pgsql/query-parser.js","../src/database/drivers/pgsql/structure-sql.js","../src/database/drivers/pgsql/table.js","../src/database/drivers/pgsql/sql/alter-table.js","../src/database/drivers/pgsql/sql/create-database.js","../src/database/drivers/pgsql/sql/create-index.js","../src/database/drivers/pgsql/sql/create-table.js","../src/database/drivers/pgsql/sql/delete.js","../src/database/drivers/pgsql/sql/drop-database.js","../src/database/drivers/pgsql/sql/drop-table.js","../src/database/drivers/pgsql/sql/insert.js","../src/database/drivers/pgsql/sql/update.js","../src/database/drivers/pgsql/sql/upsert.js","../src/database/drivers/sqlite/base.js","../src/database/drivers/sqlite/column.js","../src/database/drivers/sqlite/columns-index.js","../src/database/drivers/sqlite/connection-sql-js.js","../src/database/drivers/sqlite/foreign-key.js","../src/database/drivers/sqlite/index.js","../src/database/drivers/sqlite/index.native.js","../src/database/drivers/sqlite/index.web.js","../src/database/drivers/sqlite/options.js","../src/database/drivers/sqlite/query-parser.js","../src/database/drivers/sqlite/query.js","../src/database/drivers/sqlite/query.native.js","../src/database/drivers/sqlite/query.web.js","../src/database/drivers/sqlite/structure-sql.js","../src/database/drivers/sqlite/table-rebuilder.js","../src/database/drivers/sqlite/table.js","../src/database/drivers/sqlite/sql/alter-table.js","../src/database/drivers/sqlite/sql/create-index.js","../src/database/drivers/sqlite/sql/create-table.js","../src/database/drivers/sqlite/sql/delete.js","../src/database/drivers/sqlite/sql/drop-table.js","../src/database/drivers/sqlite/sql/insert.js","../src/database/drivers/sqlite/sql/update.js","../src/database/drivers/sqlite/sql/upsert.js","../src/database/drivers/structure-sql/utils.js","../src/database/migration/index.js","../src/database/migrator/files-finder.js","../src/database/migrator/types.js","../src/database/pool/async-tracked-multi-connection.js","../src/database/pool/base-methods-forward.js","../src/database/pool/base.js","../src/database/pool/single-multi-use.js","../src/database/query/alter-table-base.js","../src/database/query/base.js","../src/database/query/create-database-base.js","../src/database/query/create-index-base.js","../src/database/query/create-table-base.js","../src/database/query/delete-base.js","../src/database/query/drop-database-base.js","../src/database/query/drop-table-base.js","../src/database/query/from-base.js","../src/database/query/from-plain.js","../src/database/query/from-table.js","../src/database/query/index.js","../src/database/query/insert-base.js","../src/database/query/join-base.js","../src/database/query/join-object.js","../src/database/query/join-plain.js","../src/database/query/join-tracker.js","../src/database/query/model-class-query.js","../src/database/query/order-base.js","../src/database/query/order-plain.js","../src/database/query/preloader.js","../src/database/query/query-data.js","../src/database/query/select-base.js","../src/database/query/select-plain.js","../src/database/query/select-table-and-column.js","../src/database/query/update-base.js","../src/database/query/upsert-base.js","../src/database/query/where-base.js","../src/database/query/where-hash.js","../src/database/query/where-model-class-hash.js","../src/database/query/where-not.js","../src/database/query/where-plain.js","../src/database/query/with-count.js","../src/database/query/preloader/belongs-to.js","../src/database/query/preloader/has-many.js","../src/database/query/preloader/has-one.js","../src/database/query-parser/base-query-parser.js","../src/database/query-parser/from-parser.js","../src/database/query-parser/group-parser.js","../src/database/query-parser/joins-parser.js","../src/database/query-parser/limit-parser.js","../src/database/query-parser/options.js","../src/database/query-parser/order-parser.js","../src/database/query-parser/select-parser.js","../src/database/query-parser/where-parser.js","../src/database/record/index.js","../src/database/record/record-not-found-error.js","../src/database/record/state-machine.js","../src/database/record/user-module.js","../src/database/record/attachments/download.js","../src/database/record/attachments/handle.js","../src/database/record/attachments/normalize-input.js","../src/database/record/attachments/store.js","../src/database/record/attachments/storage-drivers/filesystem.js","../src/database/record/attachments/storage-drivers/native.js","../src/database/record/attachments/storage-drivers/s3.js","../src/database/record/instance-relationships/base.js","../src/database/record/instance-relationships/belongs-to.js","../src/database/record/instance-relationships/has-many.js","../src/database/record/instance-relationships/has-one.js","../src/database/record/relationships/base.js","../src/database/record/relationships/belongs-to.js","../src/database/record/relationships/has-many.js","../src/database/record/relationships/has-one.js","../src/database/record/validators/base.js","../src/database/record/validators/format.js","../src/database/record/validators/presence.js","../src/database/record/validators/uniqueness.js","../src/database/table-data/index.js","../src/database/table-data/table-column.js","../src/database/table-data/table-foreign-key.js","../src/database/table-data/table-index.js","../src/database/table-data/table-reference.js","../src/environment-handlers/base.js","../src/environment-handlers/browser.js","../src/environment-handlers/node.js","../src/environment-handlers/node/cli/commands/background-jobs-main.js","../src/environment-handlers/node/cli/commands/background-jobs-runner.js","../src/environment-handlers/node/cli/commands/background-jobs-worker.js","../src/environment-handlers/node/cli/commands/beacon.js","../src/environment-handlers/node/cli/commands/console.js","../src/environment-handlers/node/cli/commands/init.js","../src/environment-handlers/node/cli/commands/routes.js","../src/environment-handlers/node/cli/commands/run-script.js","../src/environment-handlers/node/cli/commands/runner.js","../src/environment-handlers/node/cli/commands/server.js","../src/environment-handlers/node/cli/commands/test.js","../src/environment-handlers/node/cli/commands/db/seed.js","../src/environment-handlers/node/cli/commands/db/schema/dump.js","../src/environment-handlers/node/cli/commands/db/schema/load.js","../src/environment-handlers/node/cli/commands/destroy/migration.js","../src/environment-handlers/node/cli/commands/generate/base-models.js","../src/environment-handlers/node/cli/commands/generate/frontend-models.js","../src/environment-handlers/node/cli/commands/generate/migration.js","../src/environment-handlers/node/cli/commands/generate/model.js","../src/frontend-model-resource/base-resource.js","../src/frontend-models/base.js","../src/frontend-models/model-registry.js","../src/frontend-models/outgoing-event-buffer.js","../src/frontend-models/query.js","../src/frontend-models/resource-config-validation.js","../src/frontend-models/resource-definition.js","../src/frontend-models/transport-serialization.js","../src/frontend-models/websocket-channel.js","../src/frontend-models/websocket-publishers.js","../src/http-client/header.js","../src/http-client/index.js","../src/http-client/request.js","../src/http-client/response.js","../src/http-client/websocket-channel.js","../src/http-client/websocket-client.js","../src/http-client/websocket-connection.js","../src/http-server/cookie.js","../src/http-server/development-reloader.js","../src/http-server/index.js","../src/http-server/server-client.js","../src/http-server/websocket-channel-subscribers.js","../src/http-server/websocket-channel.js","../src/http-server/websocket-connection.js","../src/http-server/websocket-event-log-store.js","../src/http-server/websocket-events-host.js","../src/http-server/websocket-events.js","../src/http-server/client/index.js","../src/http-server/client/params-to-object.js","../src/http-server/client/request-parser.js","../src/http-server/client/request-runner.js","../src/http-server/client/request-timing.js","../src/http-server/client/request.js","../src/http-server/client/response.js","../src/http-server/client/websocket-request.js","../src/http-server/client/websocket-session.js","../src/http-server/client/request-buffer/form-data-part.js","../src/http-server/client/request-buffer/header.js","../src/http-server/client/request-buffer/index.js","../src/http-server/client/uploaded-file/memory-uploaded-file.js","../src/http-server/client/uploaded-file/temporary-uploaded-file.js","../src/http-server/client/uploaded-file/uploaded-file.js","../src/http-server/worker-handler/in-process.js","../src/http-server/worker-handler/index.js","../src/http-server/worker-handler/worker-script.js","../src/http-server/worker-handler/worker-thread.js","../src/jobs/mail-delivery.js","../src/logger/base-logger.js","../src/logger/console-logger.js","../src/logger/file-logger.js","../src/logger/outputs/array-output.js","../src/logger/outputs/console-output.js","../src/logger/outputs/file-output.js","../src/logger/outputs/stdout-output.js","../src/mailer/base.js","../src/mailer/delivery.js","../src/mailer/index.js","../src/mailer/backends/smtp.js","../src/plugins/sqljs-wasm-route-controller.js","../src/plugins/sqljs-wasm-route.js","../src/routes/app-routes.js","../src/routes/base-route.js","../src/routes/basic-route.js","../src/routes/get-route.js","../src/routes/index.js","../src/routes/namespace-route.js","../src/routes/plugin-routes.js","../src/routes/post-route.js","../src/routes/resolver.js","../src/routes/resource-route.js","../src/routes/root-route.js","../src/routes/built-in/errors/controller.js","../src/routes/hooks/frontend-model-command-route-hook.js","../src/testing/base-expect.js","../src/testing/browser-test-app.js","../src/testing/expect-to-change.js","../src/testing/expect-utils.js","../src/testing/expect.js","../src/testing/request-client.js","../src/testing/test-files-finder.js","../src/testing/test-filter-parser.js","../src/testing/test-runner.js","../src/testing/test-suite-splitter.js","../src/testing/test.js","../src/types/external-modules.d.ts","../src/utils/backtrace-cleaner-node.js","../src/utils/backtrace-cleaner.js","../src/utils/ensure-error.js","../src/utils/event-emitter.js","../src/utils/file-exists.js","../src/utils/format-value.js","../src/utils/model-scope.js","../src/utils/nest-callbacks.js","../src/utils/ransack.js","../src/utils/rest-args-error.js","../src/utils/singularize-model-name.js","../src/utils/split-sql-statements.js","../src/utils/to-import-specifier.js","../src/utils/with-tracked-stack-async-hooks.js","../src/utils/with-tracked-stack.js"],"version":"6.0.3"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "velocious": "build/bin/velocious.js"
4
4
  },
5
5
  "name": "velocious",
6
- "version": "1.0.365",
6
+ "version": "1.0.366",
7
7
  "main": "build/index.js",
8
8
  "types": "build/index.d.ts",
9
9
  "files": [