@fluid-experimental/property-common 2.0.0-internal.7.0.0 → 2.0.0-internal.7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @fluid-experimental/property-common
2
2
 
3
+ ## 2.0.0-internal.7.2.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.0.0-internal.7.1.0
8
+
9
+ Dependency updates only.
10
+
3
11
  ## 2.0.0-internal.7.0.0
4
12
 
5
13
  ### Major Changes
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "@fluidframework/build-common/api-extractor-common.json"
3
+ "extends": "@fluidframework/build-common/api-extractor-base.json"
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chronometer.d.ts","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqIH;;GAEG;AACH,qBAAa,WAAW;;IAKvB;;OAEG;IACH,KAAK;IAIL;;;;;;;;OAQG;IACH,IAAI,IAAI,WAAW;IAKnB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;;;OAQG;WACU,WAAW,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC;CAM9C"}
1
+ {"version":3,"file":"chronometer.d.ts","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiIH;;GAEG;AACH,qBAAa,WAAW;;IAKvB;;OAEG;IACH,KAAK;IAIL;;;;;;;;OAQG;IACH,IAAI,IAAI,WAAW;IAKnB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;;;OAQG;WACU,WAAW,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC;CAM9C"}
@@ -112,9 +112,7 @@ let impl;
112
112
  if (typeof process !== "undefined" && typeof process.hrtime !== "undefined") {
113
113
  impl = implementations.node;
114
114
  }
115
- else if (typeof window !== "undefined" &&
116
- typeof window.performance !== "undefined" &&
117
- typeof window.performance.now !== "undefined") {
115
+ else if (typeof window?.performance?.now !== "undefined") {
118
116
  impl = implementations.performance;
119
117
  }
120
118
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"chronometer.js","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview A chronometer implementation backed by a high resolution timer.\n * The implementation falls back to milliseconds precision when high resolution timers are not supported.\n */\n\ndeclare let process: any;\n\n/**\n * All the chronometer implementations (hrtime, window.performance, and date:\n */\nconst implementations = {\n\t// Node implementation uses hrtime\n\tnode: {\n\t\tname: \"hrtime\",\n\t\t_startTime: 0,\n\t\t_stopTime: undefined as any[] | undefined,\n\t\tstop: () => {},\n\n\t\t_start() {\n\t\t\tthis._startTime = process.hrtime();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = process.hrtime(this._startTime);\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn (this._stopTime![0] as number) + (this._stopTime![1] as number) / 1000000000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000 + this._stopTime![1] / 1000000;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000000 + this._stopTime![1] / 1000;\n\t\t},\n\t},\n\t// Browser implementation uses window.performance (if available):\n\tperformance: {\n\t\tname: \"window.performance\",\n\t\t_startTime: 0,\n\t\t_stopTime: 0,\n\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = window.performance.now();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = window.performance.now();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this._stopTime - this._startTime;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n\t// Fallback is Date implementation if none of the above is supported:\n\tdate: {\n\t\tname: \"date\",\n\t\t_startTime: new Date(),\n\t\t_stopTime: undefined as Date | undefined,\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = new Date();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = new Date();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn (this._stopTime as Date).getTime() - this._startTime.getTime();\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n};\n\nlet impl:\n\t| typeof implementations.date\n\t| typeof implementations.node\n\t| typeof implementations.performance;\nif (typeof process !== \"undefined\" && typeof process.hrtime !== \"undefined\") {\n\timpl = implementations.node;\n} else if (\n\ttypeof window !== \"undefined\" &&\n\ttypeof window.performance !== \"undefined\" &&\n\ttypeof window.performance.now !== \"undefined\"\n) {\n\timpl = implementations.performance;\n} else {\n\timpl = implementations.date;\n}\n\n/**\n * Creates and starts a new Chronometer.\n */\nexport class Chronometer {\n\tconstructor() {\n\t\tthis.start();\n\t}\n\n\t/**\n\t * Sets the chronometer start time.\n\t */\n\tstart() {\n\t\treturn impl._start.call(this);\n\t}\n\n\t/**\n\t * Stops the chronometer. Stopped chronometers can be reused by calling {@link Chronometer.start} again.\n\t *\n\t * @returns The chronometer instance, so that callers can do this:\n\t *\n\t * ```javascript\n\t * let elapsedMS = chrono.stop().elapsedMS();\n\t * ```\n\t */\n\tstop(): Chronometer {\n\t\timpl._stop.call(this);\n\t\treturn this;\n\t}\n\n\t/**\n\t * @returns How many microseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Implementations that are not precise\n\t * enough may return \"elapsedMilliSec() * 1000\". Measuring elapsed time causes the chronometer\n\t * to be stopped if required (if the chrono is not stopped when this method is called).\n\t */\n\telapsedMicroSec(): number {\n\t\treturn impl._elapsedMicroSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many milliseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedMilliSec(): number {\n\t\treturn impl._elapsedMilliSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many seconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedSec(): number {\n\t\treturn impl._elapsedSec.call(this);\n\t}\n\n\t/**\n\t * A utility function to measure promise execution time.\n\t * @param promiseFn - A function that returns a promise whose execution time is to be measured.\n\t * @returns A Promise that resolves with an object with properties:\n\t *\n\t * - `chrono`: A stopped chronometer instance from which to get the elapsed time,\n\t *\n\t * - `result`: The resolved result of the promise returned by promiseFn\n\t */\n\tstatic async timePromise<T>(\n\t\tpromiseFn: () => Promise<T>,\n\t): Promise<{ chrono: Chronometer; result: T }> {\n\t\tconst chrono = new Chronometer();\n\t\tconst result = await promiseFn();\n\t\tchrono.stop();\n\t\treturn { chrono, result };\n\t}\n}\n"]}
1
+ {"version":3,"file":"chronometer.js","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview A chronometer implementation backed by a high resolution timer.\n * The implementation falls back to milliseconds precision when high resolution timers are not supported.\n */\n\ndeclare let process: any;\n\n/**\n * All the chronometer implementations (hrtime, window.performance, and date:\n */\nconst implementations = {\n\t// Node implementation uses hrtime\n\tnode: {\n\t\tname: \"hrtime\",\n\t\t_startTime: 0,\n\t\t_stopTime: undefined as any[] | undefined,\n\t\tstop: () => {},\n\n\t\t_start() {\n\t\t\tthis._startTime = process.hrtime();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = process.hrtime(this._startTime);\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn (this._stopTime![0] as number) + (this._stopTime![1] as number) / 1000000000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000 + this._stopTime![1] / 1000000;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000000 + this._stopTime![1] / 1000;\n\t\t},\n\t},\n\t// Browser implementation uses window.performance (if available):\n\tperformance: {\n\t\tname: \"window.performance\",\n\t\t_startTime: 0,\n\t\t_stopTime: 0,\n\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = window.performance.now();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = window.performance.now();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this._stopTime - this._startTime;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n\t// Fallback is Date implementation if none of the above is supported:\n\tdate: {\n\t\tname: \"date\",\n\t\t_startTime: new Date(),\n\t\t_stopTime: undefined as Date | undefined,\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = new Date();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = new Date();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn (this._stopTime as Date).getTime() - this._startTime.getTime();\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n};\n\nlet impl:\n\t| typeof implementations.date\n\t| typeof implementations.node\n\t| typeof implementations.performance;\nif (typeof process !== \"undefined\" && typeof process.hrtime !== \"undefined\") {\n\timpl = implementations.node;\n} else if (typeof window?.performance?.now !== \"undefined\") {\n\timpl = implementations.performance;\n} else {\n\timpl = implementations.date;\n}\n\n/**\n * Creates and starts a new Chronometer.\n */\nexport class Chronometer {\n\tconstructor() {\n\t\tthis.start();\n\t}\n\n\t/**\n\t * Sets the chronometer start time.\n\t */\n\tstart() {\n\t\treturn impl._start.call(this);\n\t}\n\n\t/**\n\t * Stops the chronometer. Stopped chronometers can be reused by calling {@link Chronometer.start} again.\n\t *\n\t * @returns The chronometer instance, so that callers can do this:\n\t *\n\t * ```javascript\n\t * let elapsedMS = chrono.stop().elapsedMS();\n\t * ```\n\t */\n\tstop(): Chronometer {\n\t\timpl._stop.call(this);\n\t\treturn this;\n\t}\n\n\t/**\n\t * @returns How many microseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Implementations that are not precise\n\t * enough may return \"elapsedMilliSec() * 1000\". Measuring elapsed time causes the chronometer\n\t * to be stopped if required (if the chrono is not stopped when this method is called).\n\t */\n\telapsedMicroSec(): number {\n\t\treturn impl._elapsedMicroSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many milliseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedMilliSec(): number {\n\t\treturn impl._elapsedMilliSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many seconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedSec(): number {\n\t\treturn impl._elapsedSec.call(this);\n\t}\n\n\t/**\n\t * A utility function to measure promise execution time.\n\t * @param promiseFn - A function that returns a promise whose execution time is to be measured.\n\t * @returns A Promise that resolves with an object with properties:\n\t *\n\t * - `chrono`: A stopped chronometer instance from which to get the elapsed time,\n\t *\n\t * - `result`: The resolved result of the promise returned by promiseFn\n\t */\n\tstatic async timePromise<T>(\n\t\tpromiseFn: () => Promise<T>,\n\t): Promise<{ chrono: Chronometer; result: T }> {\n\t\tconst chrono = new Chronometer();\n\t\tconst result = await promiseFn();\n\t\tchrono.stop();\n\t\treturn { chrono, result };\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"AAmBA,qBAAa,UAAU,CAAC,CAAC;IAUZ,SAAS,CAAC,KAAK;IAA0B,SAAS,CAAC,KAAK,CAAC,aAAY,GAAG;IATpF,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,CAAM;IAC5C,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAE3C;;;;;OAKG;gBACmB,KAAK,SAAwB,EAAY,KAAK,CAAC,aAAY,GAAG,aAAA;IAGpF,KAAK,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACtB,QAAQ,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACzB,OAAO,CAAC,QAAQ,KAAA;IAEhB,IAAW,KAAK;;MAEf;IAED,IAAW,IAAI,aAEd;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAY5C;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAOtC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAQzC;;;SAGK;IACL,OAAO;IAIP;;;SAGK;IACL,YAAY,IAAI,CAAC,GAAG,SAAS;IAK7B;;;SAGK;IACL,WAAW,IAAI,CAAC,GAAG,SAAS;IAK5B;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAe3E;;;;;;OAMG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IAoB3D;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAc/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAgBxC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,UAAU;IAUV;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAQ/B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,KAAA;IASnB;;;;;OAKG;IACH,eAAe,CAAC,WAAW,KAAA;IAY3B;;OAEG;IACH,QAAQ,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAUhC;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,IAAI;;;;IAOJ;;;OAGG;IACH,KAAK;IAiBL;;;;;OAKG;IACH,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;IAMtB;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IASjC,IAAI,MAAM,QAET;CACD"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"AAmBA,qBAAa,UAAU,CAAC,CAAC;IAWvB,SAAS,CAAC,KAAK;IACf,SAAS,CAAC,KAAK,CAAC,aAAY,GAAG;IAXhC,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,CAAM;IAC5C,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAE3C;;;;;OAKG;gBAEQ,KAAK,SAAwB,EAC7B,KAAK,CAAC,aAAY,GAAG,aAAA;IAIhC,KAAK,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACtB,QAAQ,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACzB,OAAO,CAAC,QAAQ,KAAA;IAEhB,IAAW,KAAK;;MAEf;IAED,IAAW,IAAI,aAEd;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAY5C;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAOtC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAQzC;;;SAGK;IACL,OAAO;IAIP;;;SAGK;IACL,YAAY,IAAI,CAAC,GAAG,SAAS;IAK7B;;;SAGK;IACL,WAAW,IAAI,CAAC,GAAG,SAAS;IAK5B;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAe3E;;;;;;OAMG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IAoB3D;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAc/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAgBxC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,UAAU;IAUV;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAQ/B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,KAAA;IASnB;;;;;OAKG;IACH,eAAe,CAAC,WAAW,KAAA;IAY3B;;OAEG;IACH,QAAQ,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAUhC;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,IAAI;;;;IAOJ;;;OAGG;IACH,KAAK;IAiBL;;;;;OAKG;IACH,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;IAMtB;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IASjC,IAAI,MAAM,QAET;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint accessor-pairs: [2, { \"getWithoutSet\": false }] */\n/**\n * @fileoverview Collection class definition\n */\nimport _ from \"lodash\";\n\nconst MSGS = {\n\tTYPE_MISMATCH: \"Type does not match this collection type\",\n\tKEY_ALREADY_EXISTS: \"Collection key already exists. \",\n\tKEY_DOES_NOT_EXIST: \"Collection key does not exist in this collection.\",\n\tMUST_GIVE_KEY: \"Collection missing key.\",\n\tMUST_GIVE_VALUE: \"Collection missing value.\",\n\tKEY_NOT_VALID: \"Key must be of type String or Number\",\n};\n\nexport class Collection<T> {\n\tprotected _items: { [key: string]: T } = {};\n\tprotected _order: (string | number)[] = [];\n\n\t/**\n\t * @param _name - a friendly name to describe this collection. If undefined\n\t * the collection will have a default \"Untitled Collection\" assigned to its name.\n\t * @param _type - optional parameter pointing to the constructor\n\t * of a type this Collection will host.\n\t */\n\tconstructor(protected _name = \"Untitled Collection\", protected _type?: new () => any) {}\n\n\t// Pass-thru binding handles\n\tonAdd(in_key, in_value) {}\n\tonRemove(in_key, in_value) {}\n\tonClear(in_items) {}\n\n\tpublic get items() {\n\t\treturn this._items;\n\t}\n\n\tpublic get keys() {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * @param in_key - Key to store the value under\n\t * @param in_value - Value to store in the collection\n\t * @returns Return the value passed in\n\t */\n\tadd(in_key: number | string, in_value: T): T {\n\t\tthis._checkType(in_value);\n\t\tthis._checkIsNewKey(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\t\tthis._order.push(in_key);\n\n\t\tthis.onAdd(in_key, in_value);\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Checks if in_value's type is equal to this Collection type. If this collection\n\t * has no type set, the check will pass.\n\t *\n\t * @param in_value - A value that is equal to the type managed by this collection.\n\t * @returns Return true if the type is a valid type for this\n\t * collection, throw otherwise.\n\t */\n\tprivate _checkType(in_value: T) {\n\t\tif (this._type && !(in_value instanceof this._type)) {\n\t\t\tthrow new Error(MSGS.TYPE_MISMATCH);\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Bulk add items.\n\t * @param in_items - List of key-value pairs to be stored in the collection\n\t * @returns this collection after add\n\t */\n\tbulkAdd(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bulk remove items.\n\t * @param in_items - List of key-value items to be removed\n\t * @returns this collection after add\n\t */\n\tbulkRemove(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Test if this collection is empty\n\t * @returns true if empty, false otherwise\n\t * */\n\tisEmpty() {\n\t\treturn _.isEmpty(this._items);\n\t}\n\n\t/**\n\t * Return the first item in the collection, null if empty\n\t * @returns first item, or undefined if empty\n\t * */\n\tgetFirstItem(): T | undefined {\n\t\tconst index = _.first(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * Return the last item in the collection, undefined if empty\n\t * @returns The last item, or undefined if empty\n\t * */\n\tgetLastItem(): T | undefined {\n\t\tconst index = _.last(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * @returns Returns the type of collection (Array, etc.)\n\t */\n\tgetType() {\n\t\treturn this._type;\n\t}\n\n\t/**\n\t * @returns Returns the name of the collection\n\t */\n\tgetName(): string {\n\t\treturn this._name;\n\t}\n\n\t/**\n\t * Filter out by function\n\t * @param in_filterFunction - with arguments key and item\n\t * @returns A new filtered collection\n\t */\n\tfilter(in_filterFunction: (key: string, item: T) => boolean): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tconst keeper = in_filterFunction(in_key, in_item);\n\t\t\tif (keeper) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterKey\n\t * @param in_filterKey - a single key or an array of keys, if the\n\t * item matches any of the keys it will be filtered in.\n\t * @returns New filtered collection with all the items\n\t * matching at least one key.\n\t */\n\tfilterByKey(in_filterKey: string | string[]): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = _.isArray(in_filterKey)\n\t\t\t? function (in_key, in_item) {\n\t\t\t\t\tif (in_filterKey.includes(in_key)) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: function (in_key, in_item) {\n\t\t\t\t\tif (in_key === in_filterKey) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t };\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterValue\n\t * @param in_filterValue - Value to filter on\n\t * @returns Return a filtered collection\n\t */\n\tfilterByValue(in_filterValue: T): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tif (in_item === in_filterValue) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Remove an item from this Collection. This method returns a Boolean indicating\n\t * the success or failure of the removal. This is practical because if we were\n\t * to throw an error when the key doesn't exist, it would require additional\n\t * checks by the caller to make sure this key exists prior to removal. Which\n\t * would make the attempt of removal more verbose and also costly because the\n\t * caller would have to keep a list – somewhere else – of the things he can\n\t * and cannot remove.\n\t *\n\t * @param in_key - the key we wish to remove\n\t * @returns true if the key exists and was removed, false otherwise.\n\t */\n\tremove(in_key: number | string): boolean {\n\t\tif (!this.has(in_key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst remember = this._items[in_key];\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this._items[in_key];\n\t\tthis._order.splice(this._order.indexOf(in_key), 1);\n\n\t\tthis.onRemove(in_key, remember);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return the number of items in this Collection\n\t * @returns the number of items in the collection\n\t */\n\tgetCount(): number {\n\t\treturn this._order.length;\n\t}\n\n\t/**\n\t * Returns this collection as an ordered Array\n\t * @returns Array including the values\n\t */\n\tgetAsArray() {\n\t\tconst rtnArr: T[] = new Array(this.getCount());\n\n\t\tfor (let i = 0; i < this._order.length; i++) {\n\t\t\trtnArr[i] = this._items[this._order[i]];\n\t\t}\n\n\t\treturn rtnArr;\n\t}\n\n\t/**\n\t * @param in_key - the key we are looking for\n\t * @returns true if the item exists\n\t */\n\thas(in_key: string | number): boolean {\n\t\treturn Object.prototype.hasOwnProperty.call(this._items, in_key);\n\t}\n\n\t/**\n\t * Return an item associated with the given key\n\t * @param in_key - the key for the item in this\n\t * Collection\n\t * @returns The item\n\t */\n\titem(in_key: number | string) {\n\t\treturn this._items[in_key];\n\t}\n\n\t/**\n\t * Checks if this is a new key in the collection. Throw if already exists.\n\t * @param in_key - The key to check against\n\t * @returns true if key is new\n\t */\n\tprivate _checkIsNewKey(in_key: number | string) {\n\t\tif (this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_ALREADY_EXISTS} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if the key exists in the collection. Throw if not.\n\t * @param in_key - the key to check against\n\t * @returns true if key exists\n\t */\n\tprivate _checkKeyExists(in_key: number | string) {\n\t\tif (!this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_DOES_NOT_EXIST} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Set an existing key to a value. If key doesn't exist this call will throw\n\t * an error.\n\t * @param in_key - The key we want to modify\n\t * @param in_value - The value we are to set at this key\n\t * @returns The value passed in\n\t */\n\tset(in_key: string, in_value: T) {\n\t\tthis._checkKeyExists(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Iterate over this collection and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - A function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerate(in_callback) {\n\t\tfor (const key of this._order) {\n\t\t\tconst continu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Iterate over this collection starting from the tail and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - a function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerateFromTail(in_callback) {\n\t\tlet key;\n\t\tlet continu;\n\t\tfor (let i = this._order.length - 1; i >= 0; i--) {\n\t\t\tkey = this._order[i];\n\t\t\tcontinu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns Return an object containing the items of this collection\n\t */\n\tgetItems(): { [key: string]: T } {\n\t\tconst result = {};\n\n\t\t_.each(this._items, function (item, key) {\n\t\t\tresult[key] = item;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Return the list of keys\n\t * @returns List of keys\n\t */\n\tgetKeys(): string[] {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * Method used to get the first element in the collection along with its key.\n\t */\n\tpeak() {\n\t\treturn {\n\t\t\titem: this._items[this._order[0]],\n\t\t\tkey: this._order[0],\n\t\t};\n\t}\n\n\t/**\n\t * Clear this collection\n\t * @returns this collection\n\t */\n\tclear() {\n\t\tif (_.isEmpty(this._items)) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.onClear(this._items);\n\n\t\t// Best to just iterate through and remove everything, so that OnRemove\n\t\t// handlers are called.\n\n\t\t_.each(this.getKeys(), (key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t * @returns new Collection\n\t */\n\tclone(): Collection<T> {\n\t\tconst newCol = new Collection<T>(this._name, this._type);\n\t\tnewCol.bulkAdd(this._items);\n\t\treturn newCol;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t */\n\tcopy(in_collection: Collection<T>) {\n\t\tthis.clear();\n\t\tconst its = in_collection.items;\n\n\t\t_.each(its, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t}\n\n\tget values() {\n\t\treturn this.getAsArray();\n\t}\n}\n"]}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint accessor-pairs: [2, { \"getWithoutSet\": false }] */\n/**\n * @fileoverview Collection class definition\n */\nimport _ from \"lodash\";\n\nconst MSGS = {\n\tTYPE_MISMATCH: \"Type does not match this collection type\",\n\tKEY_ALREADY_EXISTS: \"Collection key already exists. \",\n\tKEY_DOES_NOT_EXIST: \"Collection key does not exist in this collection.\",\n\tMUST_GIVE_KEY: \"Collection missing key.\",\n\tMUST_GIVE_VALUE: \"Collection missing value.\",\n\tKEY_NOT_VALID: \"Key must be of type String or Number\",\n};\n\nexport class Collection<T> {\n\tprotected _items: { [key: string]: T } = {};\n\tprotected _order: (string | number)[] = [];\n\n\t/**\n\t * @param _name - a friendly name to describe this collection. If undefined\n\t * the collection will have a default \"Untitled Collection\" assigned to its name.\n\t * @param _type - optional parameter pointing to the constructor\n\t * of a type this Collection will host.\n\t */\n\tconstructor(\n\t\tprotected _name = \"Untitled Collection\",\n\t\tprotected _type?: new () => any,\n\t) {}\n\n\t// Pass-thru binding handles\n\tonAdd(in_key, in_value) {}\n\tonRemove(in_key, in_value) {}\n\tonClear(in_items) {}\n\n\tpublic get items() {\n\t\treturn this._items;\n\t}\n\n\tpublic get keys() {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * @param in_key - Key to store the value under\n\t * @param in_value - Value to store in the collection\n\t * @returns Return the value passed in\n\t */\n\tadd(in_key: number | string, in_value: T): T {\n\t\tthis._checkType(in_value);\n\t\tthis._checkIsNewKey(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\t\tthis._order.push(in_key);\n\n\t\tthis.onAdd(in_key, in_value);\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Checks if in_value's type is equal to this Collection type. If this collection\n\t * has no type set, the check will pass.\n\t *\n\t * @param in_value - A value that is equal to the type managed by this collection.\n\t * @returns Return true if the type is a valid type for this\n\t * collection, throw otherwise.\n\t */\n\tprivate _checkType(in_value: T) {\n\t\tif (this._type && !(in_value instanceof this._type)) {\n\t\t\tthrow new Error(MSGS.TYPE_MISMATCH);\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Bulk add items.\n\t * @param in_items - List of key-value pairs to be stored in the collection\n\t * @returns this collection after add\n\t */\n\tbulkAdd(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bulk remove items.\n\t * @param in_items - List of key-value items to be removed\n\t * @returns this collection after add\n\t */\n\tbulkRemove(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Test if this collection is empty\n\t * @returns true if empty, false otherwise\n\t * */\n\tisEmpty() {\n\t\treturn _.isEmpty(this._items);\n\t}\n\n\t/**\n\t * Return the first item in the collection, null if empty\n\t * @returns first item, or undefined if empty\n\t * */\n\tgetFirstItem(): T | undefined {\n\t\tconst index = _.first(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * Return the last item in the collection, undefined if empty\n\t * @returns The last item, or undefined if empty\n\t * */\n\tgetLastItem(): T | undefined {\n\t\tconst index = _.last(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * @returns Returns the type of collection (Array, etc.)\n\t */\n\tgetType() {\n\t\treturn this._type;\n\t}\n\n\t/**\n\t * @returns Returns the name of the collection\n\t */\n\tgetName(): string {\n\t\treturn this._name;\n\t}\n\n\t/**\n\t * Filter out by function\n\t * @param in_filterFunction - with arguments key and item\n\t * @returns A new filtered collection\n\t */\n\tfilter(in_filterFunction: (key: string, item: T) => boolean): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tconst keeper = in_filterFunction(in_key, in_item);\n\t\t\tif (keeper) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterKey\n\t * @param in_filterKey - a single key or an array of keys, if the\n\t * item matches any of the keys it will be filtered in.\n\t * @returns New filtered collection with all the items\n\t * matching at least one key.\n\t */\n\tfilterByKey(in_filterKey: string | string[]): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = _.isArray(in_filterKey)\n\t\t\t? function (in_key, in_item) {\n\t\t\t\t\tif (in_filterKey.includes(in_key)) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: function (in_key, in_item) {\n\t\t\t\t\tif (in_key === in_filterKey) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t };\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterValue\n\t * @param in_filterValue - Value to filter on\n\t * @returns Return a filtered collection\n\t */\n\tfilterByValue(in_filterValue: T): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tif (in_item === in_filterValue) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Remove an item from this Collection. This method returns a Boolean indicating\n\t * the success or failure of the removal. This is practical because if we were\n\t * to throw an error when the key doesn't exist, it would require additional\n\t * checks by the caller to make sure this key exists prior to removal. Which\n\t * would make the attempt of removal more verbose and also costly because the\n\t * caller would have to keep a list – somewhere else – of the things he can\n\t * and cannot remove.\n\t *\n\t * @param in_key - the key we wish to remove\n\t * @returns true if the key exists and was removed, false otherwise.\n\t */\n\tremove(in_key: number | string): boolean {\n\t\tif (!this.has(in_key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst remember = this._items[in_key];\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this._items[in_key];\n\t\tthis._order.splice(this._order.indexOf(in_key), 1);\n\n\t\tthis.onRemove(in_key, remember);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return the number of items in this Collection\n\t * @returns the number of items in the collection\n\t */\n\tgetCount(): number {\n\t\treturn this._order.length;\n\t}\n\n\t/**\n\t * Returns this collection as an ordered Array\n\t * @returns Array including the values\n\t */\n\tgetAsArray() {\n\t\tconst rtnArr: T[] = new Array(this.getCount());\n\n\t\tfor (let i = 0; i < this._order.length; i++) {\n\t\t\trtnArr[i] = this._items[this._order[i]];\n\t\t}\n\n\t\treturn rtnArr;\n\t}\n\n\t/**\n\t * @param in_key - the key we are looking for\n\t * @returns true if the item exists\n\t */\n\thas(in_key: string | number): boolean {\n\t\treturn Object.prototype.hasOwnProperty.call(this._items, in_key);\n\t}\n\n\t/**\n\t * Return an item associated with the given key\n\t * @param in_key - the key for the item in this\n\t * Collection\n\t * @returns The item\n\t */\n\titem(in_key: number | string) {\n\t\treturn this._items[in_key];\n\t}\n\n\t/**\n\t * Checks if this is a new key in the collection. Throw if already exists.\n\t * @param in_key - The key to check against\n\t * @returns true if key is new\n\t */\n\tprivate _checkIsNewKey(in_key: number | string) {\n\t\tif (this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_ALREADY_EXISTS} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if the key exists in the collection. Throw if not.\n\t * @param in_key - the key to check against\n\t * @returns true if key exists\n\t */\n\tprivate _checkKeyExists(in_key: number | string) {\n\t\tif (!this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_DOES_NOT_EXIST} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Set an existing key to a value. If key doesn't exist this call will throw\n\t * an error.\n\t * @param in_key - The key we want to modify\n\t * @param in_value - The value we are to set at this key\n\t * @returns The value passed in\n\t */\n\tset(in_key: string, in_value: T) {\n\t\tthis._checkKeyExists(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Iterate over this collection and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - A function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerate(in_callback) {\n\t\tfor (const key of this._order) {\n\t\t\tconst continu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Iterate over this collection starting from the tail and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - a function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerateFromTail(in_callback) {\n\t\tlet key;\n\t\tlet continu;\n\t\tfor (let i = this._order.length - 1; i >= 0; i--) {\n\t\t\tkey = this._order[i];\n\t\t\tcontinu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns Return an object containing the items of this collection\n\t */\n\tgetItems(): { [key: string]: T } {\n\t\tconst result = {};\n\n\t\t_.each(this._items, function (item, key) {\n\t\t\tresult[key] = item;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Return the list of keys\n\t * @returns List of keys\n\t */\n\tgetKeys(): string[] {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * Method used to get the first element in the collection along with its key.\n\t */\n\tpeak() {\n\t\treturn {\n\t\t\titem: this._items[this._order[0]],\n\t\t\tkey: this._order[0],\n\t\t};\n\t}\n\n\t/**\n\t * Clear this collection\n\t * @returns this collection\n\t */\n\tclear() {\n\t\tif (_.isEmpty(this._items)) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.onClear(this._items);\n\n\t\t// Best to just iterate through and remove everything, so that OnRemove\n\t\t// handlers are called.\n\n\t\t_.each(this.getKeys(), (key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t * @returns new Collection\n\t */\n\tclone(): Collection<T> {\n\t\tconst newCol = new Collection<T>(this._name, this._type);\n\t\tnewCol.bulkAdd(this._items);\n\t\treturn newCol;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t */\n\tcopy(in_collection: Collection<T>) {\n\t\tthis.clear();\n\t\tconst its = in_collection.items;\n\n\t\t_.each(its, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t}\n\n\tget values() {\n\t\treturn this.getAsArray();\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"integer64.d.ts","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IACT,SAAS,CAAC,GAAG;IAAM,SAAS,CAAC,IAAI;gBAAvB,GAAG,SAAI,EAAY,IAAI,SAAI;IAEjD;;OAEG;IACH,YAAY;IAIZ;;OAEG;IACH,WAAW;IAIX,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,MAAM;CAwBlE;AA0DD;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAS;IACnC,MAAM,CAAC,UAAU,cAAwB,MAAM,2BAG7C;IAEF,KAAK;IAIL,QAAQ,CAAC,KAAK,SAAK;CAGnB;AAED;;GAEG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAK;IAKlD,KAAK;IAIL,QAAQ,CAAC,KAAK,KAAA;CAGd"}
1
+ {"version":3,"file":"integer64.d.ts","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IAEpB,SAAS,CAAC,GAAG;IACb,SAAS,CAAC,IAAI;gBADJ,GAAG,SAAI,EACP,IAAI,SAAI;IAGnB;;OAEG;IACH,YAAY;IAIZ;;OAEG;IACH,WAAW;IAIX,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,MAAM;CAwBlE;AA0DD;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAS;IACnC,MAAM,CAAC,UAAU,cAAwB,MAAM,2BAG7C;IAEF,KAAK;IAIL,QAAQ,CAAC,KAAK,SAAK;CAGnB;AAED;;GAEG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAK;IAKlD,KAAK;IAIL,QAAQ,CAAC,KAAK,KAAA;CAGd"}
@@ -1 +1 @@
1
- {"version":3,"file":"integer64.js","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview implements (U)Int64 Datastructures\n */\n\nimport _ from \"lodash\";\nimport { ConsoleUtils } from \"../consoleUtils\";\nimport { constants } from \"../constants\";\n\nconst BIT32 = 4294967296;\nconst { MSG } = constants;\n\n/**\n * A data representation class for 64 bit integer types.\n *\n * @remarks This is necessary since js doesn't support 64bit integers natively yet.\n *\n * Please note this class is immutable.\n * There are and there won't be set functions! (see javascript String class)\n *\n * @param low - Lower 32 bit\n * @param high - Higher 32 bit\n */\nexport class Integer64 {\n\tconstructor(protected low = 0, protected high = 0) {}\n\n\t/**\n\t * @returns The higher 32 bit integer part\n\t */\n\tgetValueHigh() {\n\t\treturn this.high;\n\t}\n\n\t/**\n\t * @returns The lower 32 bit integer part\n\t */\n\tgetValueLow() {\n\t\treturn this.low;\n\t}\n\n\tprotected _int64toString(isSigned: boolean, in_radix = 10): string {\n\t\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_MUST_BE_NUMBER} ${in_radix}`);\n\t\tConsoleUtils.assert(\n\t\t\tin_radix >= 2 && 36 >= in_radix,\n\t\t\t`${MSG.BASE_OUT_OF_RANGE} ${in_radix}`,\n\t\t);\n\n\t\tlet high = this.getValueHigh();\n\t\tlet low = this.getValueLow();\n\t\tlet result = \"\";\n\t\tconst sign = !!(isSigned && high & 0x80000000); // eslint-disable-line no-bitwise\n\t\tif (sign) {\n\t\t\thigh = ~high; // eslint-disable-line no-bitwise\n\t\t\tlow = BIT32 - low;\n\t\t}\n\t\tdo {\n\t\t\tconst mod = (high % in_radix) * BIT32 + low;\n\t\t\thigh = Math.floor(high / in_radix);\n\t\t\tlow = Math.floor(mod / in_radix);\n\t\t\tresult = (mod % in_radix).toString(in_radix) + result;\n\t\t} while (high || low);\n\n\t\treturn sign ? `-${result}` : result;\n\t}\n}\n\n/**\n * stringToInt function parses a string argument updates object's lower and higher 32 bit integer parts.\n *\n * @param in_signed - If the expect response should be signed or unsigned.\n * @param in_string - The value to parse. Leading whitespace in the string argument is ignored.\n * @param in_radix - An integer between 2 and 36 that represents the\n * radix (the base in mathematical numeral systems) of the above mentioned string.\n *\n * @throws If `in_string` is not a string.\n * @throws If `in_radix` is entered but is not a number between 2 and 36.\n * @throws If the property is a `Uint64` property and `in_string` is a negative number.\n * @throws If `in_string` contains characters other than numbers.\n *\n * @returns Low and high bits of `Int64`.\n */\nfunction _stringToInt64(in_signed: boolean, in_string: string, in_radix = 10): number[] {\n\tConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n\tconst string = in_string.trim();\n\n\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_BETWEEN_2_36} ${in_radix}`);\n\tConsoleUtils.assert(in_radix >= 2 && 36 >= in_radix, `${MSG.BASE_OUT_OF_RANGE} ${in_radix}`);\n\n\tlet position = 0;\n\tlet negative = false;\n\tlet high = 0;\n\tlet low = 0;\n\tif (string.startsWith(\"-\")) {\n\t\tnegative = true;\n\t\tposition += 1;\n\t}\n\n\tConsoleUtils.assert(!negative || in_signed, MSG.CANNOT_UPDATE_TO_NEGATIVE + string);\n\n\twhile (position < string.length) {\n\t\tconst digit = parseInt(string[position++], in_radix);\n\t\tif (isNaN(digit)) {\n\t\t\tthrow new TypeError(MSG.CANNOT_PARSE_INVALID_CHARACTERS + string);\n\t\t}\n\t\tlow = low * in_radix + digit;\n\t\thigh = high * in_radix + Math.floor(low / BIT32);\n\t\tlow %= BIT32;\n\t}\n\n\tif (negative) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\thigh = ~high;\n\t\tif (low) {\n\t\t\tlow = BIT32 - low;\n\t\t} else {\n\t\t\thigh += 1;\n\t\t}\n\t}\n\n\treturn [low, high];\n}\n\n/**\n * A data representation class for the signed 64 bit integer type\n */\nexport class Int64 extends Integer64 {\n\tstatic fromString = function (in_string: string, radix = 10) {\n\t\tconst [low, high] = _stringToInt64(true, in_string, radix);\n\t\treturn new Int64(low, high);\n\t};\n\n\tclone() {\n\t\treturn new Int64(this.low, this.high);\n\t}\n\n\ttoString(radix = 10) {\n\t\treturn this._int64toString(true, radix);\n\t}\n}\n\n/**\n * A data representation class for the unsigned 64 bit integer type\n */\nexport class Uint64 extends Integer64 {\n\tstatic fromString(in_string: string, in_radix = 10) {\n\t\tconst [low, high] = _stringToInt64.call(this, false, in_string, in_radix);\n\t\treturn new Uint64(low, high);\n\t}\n\n\tclone() {\n\t\treturn new Uint64(this.low, this.high);\n\t}\n\n\ttoString(radix) {\n\t\treturn this._int64toString(false, radix);\n\t}\n}\n"]}
1
+ {"version":3,"file":"integer64.js","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview implements (U)Int64 Datastructures\n */\n\nimport _ from \"lodash\";\nimport { ConsoleUtils } from \"../consoleUtils\";\nimport { constants } from \"../constants\";\n\nconst BIT32 = 4294967296;\nconst { MSG } = constants;\n\n/**\n * A data representation class for 64 bit integer types.\n *\n * @remarks This is necessary since js doesn't support 64bit integers natively yet.\n *\n * Please note this class is immutable.\n * There are and there won't be set functions! (see javascript String class)\n *\n * @param low - Lower 32 bit\n * @param high - Higher 32 bit\n */\nexport class Integer64 {\n\tconstructor(\n\t\tprotected low = 0,\n\t\tprotected high = 0,\n\t) {}\n\n\t/**\n\t * @returns The higher 32 bit integer part\n\t */\n\tgetValueHigh() {\n\t\treturn this.high;\n\t}\n\n\t/**\n\t * @returns The lower 32 bit integer part\n\t */\n\tgetValueLow() {\n\t\treturn this.low;\n\t}\n\n\tprotected _int64toString(isSigned: boolean, in_radix = 10): string {\n\t\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_MUST_BE_NUMBER} ${in_radix}`);\n\t\tConsoleUtils.assert(\n\t\t\tin_radix >= 2 && 36 >= in_radix,\n\t\t\t`${MSG.BASE_OUT_OF_RANGE} ${in_radix}`,\n\t\t);\n\n\t\tlet high = this.getValueHigh();\n\t\tlet low = this.getValueLow();\n\t\tlet result = \"\";\n\t\tconst sign = !!(isSigned && high & 0x80000000); // eslint-disable-line no-bitwise\n\t\tif (sign) {\n\t\t\thigh = ~high; // eslint-disable-line no-bitwise\n\t\t\tlow = BIT32 - low;\n\t\t}\n\t\tdo {\n\t\t\tconst mod = (high % in_radix) * BIT32 + low;\n\t\t\thigh = Math.floor(high / in_radix);\n\t\t\tlow = Math.floor(mod / in_radix);\n\t\t\tresult = (mod % in_radix).toString(in_radix) + result;\n\t\t} while (high || low);\n\n\t\treturn sign ? `-${result}` : result;\n\t}\n}\n\n/**\n * stringToInt function parses a string argument updates object's lower and higher 32 bit integer parts.\n *\n * @param in_signed - If the expect response should be signed or unsigned.\n * @param in_string - The value to parse. Leading whitespace in the string argument is ignored.\n * @param in_radix - An integer between 2 and 36 that represents the\n * radix (the base in mathematical numeral systems) of the above mentioned string.\n *\n * @throws If `in_string` is not a string.\n * @throws If `in_radix` is entered but is not a number between 2 and 36.\n * @throws If the property is a `Uint64` property and `in_string` is a negative number.\n * @throws If `in_string` contains characters other than numbers.\n *\n * @returns Low and high bits of `Int64`.\n */\nfunction _stringToInt64(in_signed: boolean, in_string: string, in_radix = 10): number[] {\n\tConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n\tconst string = in_string.trim();\n\n\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_BETWEEN_2_36} ${in_radix}`);\n\tConsoleUtils.assert(in_radix >= 2 && 36 >= in_radix, `${MSG.BASE_OUT_OF_RANGE} ${in_radix}`);\n\n\tlet position = 0;\n\tlet negative = false;\n\tlet high = 0;\n\tlet low = 0;\n\tif (string.startsWith(\"-\")) {\n\t\tnegative = true;\n\t\tposition += 1;\n\t}\n\n\tConsoleUtils.assert(!negative || in_signed, MSG.CANNOT_UPDATE_TO_NEGATIVE + string);\n\n\twhile (position < string.length) {\n\t\tconst digit = parseInt(string[position++], in_radix);\n\t\tif (isNaN(digit)) {\n\t\t\tthrow new TypeError(MSG.CANNOT_PARSE_INVALID_CHARACTERS + string);\n\t\t}\n\t\tlow = low * in_radix + digit;\n\t\thigh = high * in_radix + Math.floor(low / BIT32);\n\t\tlow %= BIT32;\n\t}\n\n\tif (negative) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\thigh = ~high;\n\t\tif (low) {\n\t\t\tlow = BIT32 - low;\n\t\t} else {\n\t\t\thigh += 1;\n\t\t}\n\t}\n\n\treturn [low, high];\n}\n\n/**\n * A data representation class for the signed 64 bit integer type\n */\nexport class Int64 extends Integer64 {\n\tstatic fromString = function (in_string: string, radix = 10) {\n\t\tconst [low, high] = _stringToInt64(true, in_string, radix);\n\t\treturn new Int64(low, high);\n\t};\n\n\tclone() {\n\t\treturn new Int64(this.low, this.high);\n\t}\n\n\ttoString(radix = 10) {\n\t\treturn this._int64toString(true, radix);\n\t}\n}\n\n/**\n * A data representation class for the unsigned 64 bit integer type\n */\nexport class Uint64 extends Integer64 {\n\tstatic fromString(in_string: string, in_radix = 10) {\n\t\tconst [low, high] = _stringToInt64.call(this, false, in_string, in_radix);\n\t\treturn new Uint64(low, high);\n\t}\n\n\tclone() {\n\t\treturn new Uint64(this.low, this.high);\n\t}\n\n\ttoString(radix) {\n\t\treturn this._int64toString(false, radix);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAE3B,KAAK,CAAC;IACN,UAAU,CAAC;IACX,aAAa,CAAC;IACd,MAAM,CAAC;IACP,GAAG,CAAC;IACJ,KAAK;gBALL,KAAK,CAAC,oBAAQ,EACd,UAAU,CAAC,oBAAQ,EACnB,aAAa,CAAC,oBAAQ,EACtB,MAAM,CAAC,oBAAQ,EACf,GAAG,CAAC,oBAAQ,EACZ,KAAK,SAAI;IASjB,MAAM,CAAC,KAAK;;;MAAsB;IAElC,OAAO,IAAI,OAAO;IAIlB,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,QAAQ,IAAI,MAAM;CAWlB"}
1
+ {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAE3B,KAAK,CAAC;IACN,UAAU,CAAC;IACX,aAAa,CAAC;IACd,MAAM,CAAC;IACP,GAAG,CAAC;IACJ,KAAK;gBALL,KAAK,CAAC,oBAAQ,EACd,UAAU,CAAC,oBAAQ,EACnB,aAAa,CAAC,oBAAQ,EACtB,MAAM,CAAC,oBAAQ,EACf,GAAG,CAAC,oBAAQ,EACZ,KAAK,SAAI;IASjB,MAAM,CAAC,KAAK;;;MAAsB;IAElC,OAAO,IAAI,OAAO;IAIlB,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,QAAQ,IAAI,MAAM;CAYlB"}
@@ -50,7 +50,9 @@ class HTTPError extends Error {
50
50
  */
51
51
  toString() {
52
52
  const stack = this.stack === undefined ? "" : String(this.stack);
53
- const isFirefox = typeof window !== "undefined" &&
53
+ const isFirefox =
54
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- optional chain causes a test failure
55
+ typeof window !== "undefined" &&
54
56
  typeof window.navigator !== "undefined" &&
55
57
  typeof window.navigator.userAgent !== "undefined" &&
56
58
  window.navigator.userAgent.toLowerCase().includes("firefox");
@@ -1 +1 @@
1
- {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,iDAA8C;AAE9C;;;;;;;;GAQG;AACH,MAAa,SAAU,SAAQ,KAAK;IACnC,YACQ,KAAc,EACd,UAAmB,EACnB,aAAsB,EACtB,MAAe,EACf,GAAY,EACZ,QAAQ,CAAC;QAEhB,KAAK,EAAE,CAAC;QAPD,UAAK,GAAL,KAAK,CAAS;QACd,eAAU,GAAV,UAAU,CAAS;QACnB,kBAAa,GAAb,aAAa,CAAS;QACtB,WAAM,GAAN,MAAM,CAAS;QACf,QAAG,GAAH,GAAG,CAAS;QACZ,UAAK,GAAL,KAAK,CAAI;QAGhB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAID,OAAO;QACN,OAAO,2BAAY,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW;QACV,OAAO,2BAAY,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG;QACrE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpD,OAAO,CACN,cAAc,QAAQ,gBAAgB,aAAa,IAAI;YACvD,iBAAiB,gBAAgB,YAAY,SAAS,SAAS,MAAM,EAAE,CACvE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,MAAM,SAAS,GACd,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW;YACvC,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW;YACjD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE9D,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC;IACzE,CAAC;;AArDF,8BAsDC;AAtCO,eAAK,GAAG,2BAAY,CAAC,KAAK,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FlaggedError } from \"./flaggedError\";\n\n/**\n * Class extending Error with HTTP-specific error information like statusCode and statusMessage\n * @param title - The error title\n * @param statusCode - A numeric HTTP status code\n * @param statusMessage - A string message representing the response status message\n * @param method - The HTTP method used in the request\n * @param url - The URL that the request was sent to\n * @param flags - Flags that characterize the error. See {@link FlaggedError.FLAGS}.\n */\nexport class HTTPError extends Error {\n\tconstructor(\n\t\tpublic title?: string,\n\t\tpublic statusCode?: number,\n\t\tpublic statusMessage?: string,\n\t\tpublic method?: string,\n\t\tpublic url?: string,\n\t\tpublic flags = 0,\n\t) {\n\t\tsuper();\n\t\tObject.setPrototypeOf(this, HTTPError.prototype);\n\t\tthis.name = \"HTTPError\";\n\t\tthis.message = this._generateMessage(title, statusCode, statusMessage, method, url);\n\t\tthis.stack = new Error(this.message).stack;\n\t}\n\n\tstatic FLAGS = FlaggedError.FLAGS;\n\n\tisQuiet(): boolean {\n\t\treturn FlaggedError.prototype.isQuiet.call(this);\n\t}\n\n\tisTransient(): boolean {\n\t\treturn FlaggedError.prototype.isTransient.call(this);\n\t}\n\n\tprivate _generateMessage(title, statusCode, statusMessage, method, url) {\n\t\tconst titleStr = title === undefined ? \"\" : String(title);\n\t\tconst statusCodeStr = statusCode === undefined ? \"\" : String(statusCode);\n\t\tconst statusMessageStr = statusMessage === undefined ? \"\" : String(statusMessage);\n\t\tconst methodStr = method === undefined ? \"\" : String(method);\n\t\tconst urlStr = url === undefined ? \"\" : String(url);\n\n\t\treturn (\n\t\t\t`HTTPError: ${titleStr}, statusCode:${statusCodeStr}, ` +\n\t\t\t`statusMessage:${statusMessageStr}, method:${methodStr}, url:${urlStr}`\n\t\t);\n\t}\n\n\t/**\n\t * Returns a string representing the HTTPError object\n\t * @returns a string representing the HTTPError object\n\t */\n\ttoString(): string {\n\t\tconst stack = this.stack === undefined ? \"\" : String(this.stack);\n\n\t\tconst isFirefox =\n\t\t\ttypeof window !== \"undefined\" &&\n\t\t\ttypeof window.navigator !== \"undefined\" &&\n\t\t\ttypeof window.navigator.userAgent !== \"undefined\" &&\n\t\t\twindow.navigator.userAgent.toLowerCase().includes(\"firefox\");\n\n\t\treturn isFirefox ? `${this.message}, stack:${stack}` : `stack:${stack}`;\n\t}\n}\n"]}
1
+ {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,iDAA8C;AAE9C;;;;;;;;GAQG;AACH,MAAa,SAAU,SAAQ,KAAK;IACnC,YACQ,KAAc,EACd,UAAmB,EACnB,aAAsB,EACtB,MAAe,EACf,GAAY,EACZ,QAAQ,CAAC;QAEhB,KAAK,EAAE,CAAC;QAPD,UAAK,GAAL,KAAK,CAAS;QACd,eAAU,GAAV,UAAU,CAAS;QACnB,kBAAa,GAAb,aAAa,CAAS;QACtB,WAAM,GAAN,MAAM,CAAS;QACf,QAAG,GAAH,GAAG,CAAS;QACZ,UAAK,GAAL,KAAK,CAAI;QAGhB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAID,OAAO;QACN,OAAO,2BAAY,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW;QACV,OAAO,2BAAY,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG;QACrE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpD,OAAO,CACN,cAAc,QAAQ,gBAAgB,aAAa,IAAI;YACvD,iBAAiB,gBAAgB,YAAY,SAAS,SAAS,MAAM,EAAE,CACvE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,MAAM,SAAS;QACd,4GAA4G;QAC5G,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW;YACvC,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW;YACjD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE9D,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC;IACzE,CAAC;;AAtDF,8BAuDC;AAvCO,eAAK,GAAG,2BAAY,CAAC,KAAK,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FlaggedError } from \"./flaggedError\";\n\n/**\n * Class extending Error with HTTP-specific error information like statusCode and statusMessage\n * @param title - The error title\n * @param statusCode - A numeric HTTP status code\n * @param statusMessage - A string message representing the response status message\n * @param method - The HTTP method used in the request\n * @param url - The URL that the request was sent to\n * @param flags - Flags that characterize the error. See {@link FlaggedError.FLAGS}.\n */\nexport class HTTPError extends Error {\n\tconstructor(\n\t\tpublic title?: string,\n\t\tpublic statusCode?: number,\n\t\tpublic statusMessage?: string,\n\t\tpublic method?: string,\n\t\tpublic url?: string,\n\t\tpublic flags = 0,\n\t) {\n\t\tsuper();\n\t\tObject.setPrototypeOf(this, HTTPError.prototype);\n\t\tthis.name = \"HTTPError\";\n\t\tthis.message = this._generateMessage(title, statusCode, statusMessage, method, url);\n\t\tthis.stack = new Error(this.message).stack;\n\t}\n\n\tstatic FLAGS = FlaggedError.FLAGS;\n\n\tisQuiet(): boolean {\n\t\treturn FlaggedError.prototype.isQuiet.call(this);\n\t}\n\n\tisTransient(): boolean {\n\t\treturn FlaggedError.prototype.isTransient.call(this);\n\t}\n\n\tprivate _generateMessage(title, statusCode, statusMessage, method, url) {\n\t\tconst titleStr = title === undefined ? \"\" : String(title);\n\t\tconst statusCodeStr = statusCode === undefined ? \"\" : String(statusCode);\n\t\tconst statusMessageStr = statusMessage === undefined ? \"\" : String(statusMessage);\n\t\tconst methodStr = method === undefined ? \"\" : String(method);\n\t\tconst urlStr = url === undefined ? \"\" : String(url);\n\n\t\treturn (\n\t\t\t`HTTPError: ${titleStr}, statusCode:${statusCodeStr}, ` +\n\t\t\t`statusMessage:${statusMessageStr}, method:${methodStr}, url:${urlStr}`\n\t\t);\n\t}\n\n\t/**\n\t * Returns a string representing the HTTPError object\n\t * @returns a string representing the HTTPError object\n\t */\n\ttoString(): string {\n\t\tconst stack = this.stack === undefined ? \"\" : String(this.stack);\n\n\t\tconst isFirefox =\n\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- optional chain causes a test failure\n\t\t\ttypeof window !== \"undefined\" &&\n\t\t\ttypeof window.navigator !== \"undefined\" &&\n\t\t\ttypeof window.navigator.userAgent !== \"undefined\" &&\n\t\t\twindow.navigator.userAgent.toLowerCase().includes(\"firefox\");\n\n\t\treturn isFirefox ? `${this.message}, stack:${stack}` : `stack:${stack}`;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"chronometer.d.ts","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqIH;;GAEG;AACH,qBAAa,WAAW;;IAKvB;;OAEG;IACH,KAAK;IAIL;;;;;;;;OAQG;IACH,IAAI,IAAI,WAAW;IAKnB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;;;OAQG;WACU,WAAW,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC;CAM9C"}
1
+ {"version":3,"file":"chronometer.d.ts","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiIH;;GAEG;AACH,qBAAa,WAAW;;IAKvB;;OAEG;IACH,KAAK;IAIL;;;;;;;;OAQG;IACH,IAAI,IAAI,WAAW;IAKnB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;OAKG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;;;;;OAQG;WACU,WAAW,CAAC,CAAC,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,CAAC;CAM9C"}
@@ -109,9 +109,7 @@ let impl;
109
109
  if (typeof process !== "undefined" && typeof process.hrtime !== "undefined") {
110
110
  impl = implementations.node;
111
111
  }
112
- else if (typeof window !== "undefined" &&
113
- typeof window.performance !== "undefined" &&
114
- typeof window.performance.now !== "undefined") {
112
+ else if (typeof window?.performance?.now !== "undefined") {
115
113
  impl = implementations.performance;
116
114
  }
117
115
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"chronometer.js","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview A chronometer implementation backed by a high resolution timer.\n * The implementation falls back to milliseconds precision when high resolution timers are not supported.\n */\n\ndeclare let process: any;\n\n/**\n * All the chronometer implementations (hrtime, window.performance, and date:\n */\nconst implementations = {\n\t// Node implementation uses hrtime\n\tnode: {\n\t\tname: \"hrtime\",\n\t\t_startTime: 0,\n\t\t_stopTime: undefined as any[] | undefined,\n\t\tstop: () => {},\n\n\t\t_start() {\n\t\t\tthis._startTime = process.hrtime();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = process.hrtime(this._startTime);\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn (this._stopTime![0] as number) + (this._stopTime![1] as number) / 1000000000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000 + this._stopTime![1] / 1000000;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000000 + this._stopTime![1] / 1000;\n\t\t},\n\t},\n\t// Browser implementation uses window.performance (if available):\n\tperformance: {\n\t\tname: \"window.performance\",\n\t\t_startTime: 0,\n\t\t_stopTime: 0,\n\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = window.performance.now();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = window.performance.now();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this._stopTime - this._startTime;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n\t// Fallback is Date implementation if none of the above is supported:\n\tdate: {\n\t\tname: \"date\",\n\t\t_startTime: new Date(),\n\t\t_stopTime: undefined as Date | undefined,\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = new Date();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = new Date();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn (this._stopTime as Date).getTime() - this._startTime.getTime();\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n};\n\nlet impl:\n\t| typeof implementations.date\n\t| typeof implementations.node\n\t| typeof implementations.performance;\nif (typeof process !== \"undefined\" && typeof process.hrtime !== \"undefined\") {\n\timpl = implementations.node;\n} else if (\n\ttypeof window !== \"undefined\" &&\n\ttypeof window.performance !== \"undefined\" &&\n\ttypeof window.performance.now !== \"undefined\"\n) {\n\timpl = implementations.performance;\n} else {\n\timpl = implementations.date;\n}\n\n/**\n * Creates and starts a new Chronometer.\n */\nexport class Chronometer {\n\tconstructor() {\n\t\tthis.start();\n\t}\n\n\t/**\n\t * Sets the chronometer start time.\n\t */\n\tstart() {\n\t\treturn impl._start.call(this);\n\t}\n\n\t/**\n\t * Stops the chronometer. Stopped chronometers can be reused by calling {@link Chronometer.start} again.\n\t *\n\t * @returns The chronometer instance, so that callers can do this:\n\t *\n\t * ```javascript\n\t * let elapsedMS = chrono.stop().elapsedMS();\n\t * ```\n\t */\n\tstop(): Chronometer {\n\t\timpl._stop.call(this);\n\t\treturn this;\n\t}\n\n\t/**\n\t * @returns How many microseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Implementations that are not precise\n\t * enough may return \"elapsedMilliSec() * 1000\". Measuring elapsed time causes the chronometer\n\t * to be stopped if required (if the chrono is not stopped when this method is called).\n\t */\n\telapsedMicroSec(): number {\n\t\treturn impl._elapsedMicroSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many milliseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedMilliSec(): number {\n\t\treturn impl._elapsedMilliSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many seconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedSec(): number {\n\t\treturn impl._elapsedSec.call(this);\n\t}\n\n\t/**\n\t * A utility function to measure promise execution time.\n\t * @param promiseFn - A function that returns a promise whose execution time is to be measured.\n\t * @returns A Promise that resolves with an object with properties:\n\t *\n\t * - `chrono`: A stopped chronometer instance from which to get the elapsed time,\n\t *\n\t * - `result`: The resolved result of the promise returned by promiseFn\n\t */\n\tstatic async timePromise<T>(\n\t\tpromiseFn: () => Promise<T>,\n\t): Promise<{ chrono: Chronometer; result: T }> {\n\t\tconst chrono = new Chronometer();\n\t\tconst result = await promiseFn();\n\t\tchrono.stop();\n\t\treturn { chrono, result };\n\t}\n}\n"]}
1
+ {"version":3,"file":"chronometer.js","sourceRoot":"","sources":["../src/chronometer.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview A chronometer implementation backed by a high resolution timer.\n * The implementation falls back to milliseconds precision when high resolution timers are not supported.\n */\n\ndeclare let process: any;\n\n/**\n * All the chronometer implementations (hrtime, window.performance, and date:\n */\nconst implementations = {\n\t// Node implementation uses hrtime\n\tnode: {\n\t\tname: \"hrtime\",\n\t\t_startTime: 0,\n\t\t_stopTime: undefined as any[] | undefined,\n\t\tstop: () => {},\n\n\t\t_start() {\n\t\t\tthis._startTime = process.hrtime();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = process.hrtime(this._startTime);\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn (this._stopTime![0] as number) + (this._stopTime![1] as number) / 1000000000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000 + this._stopTime![1] / 1000000;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (this._stopTime === undefined) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\treturn this._stopTime![0] * 1000000 + this._stopTime![1] / 1000;\n\t\t},\n\t},\n\t// Browser implementation uses window.performance (if available):\n\tperformance: {\n\t\tname: \"window.performance\",\n\t\t_startTime: 0,\n\t\t_stopTime: 0,\n\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = window.performance.now();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = window.performance.now();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this._stopTime - this._startTime;\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n\t// Fallback is Date implementation if none of the above is supported:\n\tdate: {\n\t\tname: \"date\",\n\t\t_startTime: new Date(),\n\t\t_stopTime: undefined as Date | undefined,\n\t\tstop: () => {},\n\t\telapsedMilliSec: () => 0,\n\n\t\t_start() {\n\t\t\tthis._startTime = new Date();\n\t\t},\n\t\t_stop() {\n\t\t\tthis._stopTime = new Date();\n\t\t},\n\t\t_elapsedSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() / 1000;\n\t\t},\n\t\t_elapsedMilliSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn (this._stopTime as Date).getTime() - this._startTime.getTime();\n\t\t},\n\t\t_elapsedMicroSec(): number {\n\t\t\tif (!this._stopTime) {\n\t\t\t\tthis.stop();\n\t\t\t}\n\t\t\treturn this.elapsedMilliSec() * 1000;\n\t\t},\n\t},\n};\n\nlet impl:\n\t| typeof implementations.date\n\t| typeof implementations.node\n\t| typeof implementations.performance;\nif (typeof process !== \"undefined\" && typeof process.hrtime !== \"undefined\") {\n\timpl = implementations.node;\n} else if (typeof window?.performance?.now !== \"undefined\") {\n\timpl = implementations.performance;\n} else {\n\timpl = implementations.date;\n}\n\n/**\n * Creates and starts a new Chronometer.\n */\nexport class Chronometer {\n\tconstructor() {\n\t\tthis.start();\n\t}\n\n\t/**\n\t * Sets the chronometer start time.\n\t */\n\tstart() {\n\t\treturn impl._start.call(this);\n\t}\n\n\t/**\n\t * Stops the chronometer. Stopped chronometers can be reused by calling {@link Chronometer.start} again.\n\t *\n\t * @returns The chronometer instance, so that callers can do this:\n\t *\n\t * ```javascript\n\t * let elapsedMS = chrono.stop().elapsedMS();\n\t * ```\n\t */\n\tstop(): Chronometer {\n\t\timpl._stop.call(this);\n\t\treturn this;\n\t}\n\n\t/**\n\t * @returns How many microseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Implementations that are not precise\n\t * enough may return \"elapsedMilliSec() * 1000\". Measuring elapsed time causes the chronometer\n\t * to be stopped if required (if the chrono is not stopped when this method is called).\n\t */\n\telapsedMicroSec(): number {\n\t\treturn impl._elapsedMicroSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many milliseconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedMilliSec(): number {\n\t\treturn impl._elapsedMilliSec.call(this);\n\t}\n\n\t/**\n\t * @returns How many seconds have elapsed between the last call to {@link Chronometer.start}\n\t * (or the chronometer creation), and {@link Chronometer.stop}. Measuring elapsed time causes the\n\t * chronometer to be stopped if required (if the chrono is not stopped when this method is\n\t * called).\n\t */\n\telapsedSec(): number {\n\t\treturn impl._elapsedSec.call(this);\n\t}\n\n\t/**\n\t * A utility function to measure promise execution time.\n\t * @param promiseFn - A function that returns a promise whose execution time is to be measured.\n\t * @returns A Promise that resolves with an object with properties:\n\t *\n\t * - `chrono`: A stopped chronometer instance from which to get the elapsed time,\n\t *\n\t * - `result`: The resolved result of the promise returned by promiseFn\n\t */\n\tstatic async timePromise<T>(\n\t\tpromiseFn: () => Promise<T>,\n\t): Promise<{ chrono: Chronometer; result: T }> {\n\t\tconst chrono = new Chronometer();\n\t\tconst result = await promiseFn();\n\t\tchrono.stop();\n\t\treturn { chrono, result };\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"AAmBA,qBAAa,UAAU,CAAC,CAAC;IAUZ,SAAS,CAAC,KAAK;IAA0B,SAAS,CAAC,KAAK,CAAC,aAAY,GAAG;IATpF,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,CAAM;IAC5C,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAE3C;;;;;OAKG;gBACmB,KAAK,SAAwB,EAAY,KAAK,CAAC,aAAY,GAAG,aAAA;IAGpF,KAAK,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACtB,QAAQ,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACzB,OAAO,CAAC,QAAQ,KAAA;IAEhB,IAAW,KAAK;;MAEf;IAED,IAAW,IAAI,aAEd;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAY5C;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAOtC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAQzC;;;SAGK;IACL,OAAO;IAIP;;;SAGK;IACL,YAAY,IAAI,CAAC,GAAG,SAAS;IAK7B;;;SAGK;IACL,WAAW,IAAI,CAAC,GAAG,SAAS;IAK5B;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAe3E;;;;;;OAMG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IAoB3D;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAc/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAgBxC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,UAAU;IAUV;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAQ/B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,KAAA;IASnB;;;;;OAKG;IACH,eAAe,CAAC,WAAW,KAAA;IAY3B;;OAEG;IACH,QAAQ,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAUhC;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,IAAI;;;;IAOJ;;;OAGG;IACH,KAAK;IAiBL;;;;;OAKG;IACH,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;IAMtB;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IASjC,IAAI,MAAM,QAET;CACD"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"AAmBA,qBAAa,UAAU,CAAC,CAAC;IAWvB,SAAS,CAAC,KAAK;IACf,SAAS,CAAC,KAAK,CAAC,aAAY,GAAG;IAXhC,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,CAAM;IAC5C,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAE3C;;;;;OAKG;gBAEQ,KAAK,SAAwB,EAC7B,KAAK,CAAC,aAAY,GAAG,aAAA;IAIhC,KAAK,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACtB,QAAQ,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA;IACzB,OAAO,CAAC,QAAQ,KAAA;IAEhB,IAAW,KAAK;;MAEf;IAED,IAAW,IAAI,aAEd;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAY5C;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAOtC;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAQzC;;;SAGK;IACL,OAAO;IAIP;;;SAGK;IACL,YAAY,IAAI,CAAC,GAAG,SAAS;IAK7B;;;SAGK;IACL,WAAW,IAAI,CAAC,GAAG,SAAS;IAK5B;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;IAe3E;;;;;;OAMG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;IAoB3D;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAc/C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAgBxC;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,UAAU;IAUV;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAQtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAQ/B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,KAAA;IASnB;;;;;OAKG;IACH,eAAe,CAAC,WAAW,KAAA;IAY3B;;OAEG;IACH,QAAQ,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE;IAUhC;;;OAGG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,IAAI;;;;IAOJ;;;OAGG;IACH,KAAK;IAiBL;;;;;OAKG;IACH,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC;IAMtB;;;;OAIG;IACH,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IASjC,IAAI,MAAM,QAET;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint accessor-pairs: [2, { \"getWithoutSet\": false }] */\n/**\n * @fileoverview Collection class definition\n */\nimport _ from \"lodash\";\n\nconst MSGS = {\n\tTYPE_MISMATCH: \"Type does not match this collection type\",\n\tKEY_ALREADY_EXISTS: \"Collection key already exists. \",\n\tKEY_DOES_NOT_EXIST: \"Collection key does not exist in this collection.\",\n\tMUST_GIVE_KEY: \"Collection missing key.\",\n\tMUST_GIVE_VALUE: \"Collection missing value.\",\n\tKEY_NOT_VALID: \"Key must be of type String or Number\",\n};\n\nexport class Collection<T> {\n\tprotected _items: { [key: string]: T } = {};\n\tprotected _order: (string | number)[] = [];\n\n\t/**\n\t * @param _name - a friendly name to describe this collection. If undefined\n\t * the collection will have a default \"Untitled Collection\" assigned to its name.\n\t * @param _type - optional parameter pointing to the constructor\n\t * of a type this Collection will host.\n\t */\n\tconstructor(protected _name = \"Untitled Collection\", protected _type?: new () => any) {}\n\n\t// Pass-thru binding handles\n\tonAdd(in_key, in_value) {}\n\tonRemove(in_key, in_value) {}\n\tonClear(in_items) {}\n\n\tpublic get items() {\n\t\treturn this._items;\n\t}\n\n\tpublic get keys() {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * @param in_key - Key to store the value under\n\t * @param in_value - Value to store in the collection\n\t * @returns Return the value passed in\n\t */\n\tadd(in_key: number | string, in_value: T): T {\n\t\tthis._checkType(in_value);\n\t\tthis._checkIsNewKey(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\t\tthis._order.push(in_key);\n\n\t\tthis.onAdd(in_key, in_value);\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Checks if in_value's type is equal to this Collection type. If this collection\n\t * has no type set, the check will pass.\n\t *\n\t * @param in_value - A value that is equal to the type managed by this collection.\n\t * @returns Return true if the type is a valid type for this\n\t * collection, throw otherwise.\n\t */\n\tprivate _checkType(in_value: T) {\n\t\tif (this._type && !(in_value instanceof this._type)) {\n\t\t\tthrow new Error(MSGS.TYPE_MISMATCH);\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Bulk add items.\n\t * @param in_items - List of key-value pairs to be stored in the collection\n\t * @returns this collection after add\n\t */\n\tbulkAdd(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bulk remove items.\n\t * @param in_items - List of key-value items to be removed\n\t * @returns this collection after add\n\t */\n\tbulkRemove(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Test if this collection is empty\n\t * @returns true if empty, false otherwise\n\t * */\n\tisEmpty() {\n\t\treturn _.isEmpty(this._items);\n\t}\n\n\t/**\n\t * Return the first item in the collection, null if empty\n\t * @returns first item, or undefined if empty\n\t * */\n\tgetFirstItem(): T | undefined {\n\t\tconst index = _.first(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * Return the last item in the collection, undefined if empty\n\t * @returns The last item, or undefined if empty\n\t * */\n\tgetLastItem(): T | undefined {\n\t\tconst index = _.last(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * @returns Returns the type of collection (Array, etc.)\n\t */\n\tgetType() {\n\t\treturn this._type;\n\t}\n\n\t/**\n\t * @returns Returns the name of the collection\n\t */\n\tgetName(): string {\n\t\treturn this._name;\n\t}\n\n\t/**\n\t * Filter out by function\n\t * @param in_filterFunction - with arguments key and item\n\t * @returns A new filtered collection\n\t */\n\tfilter(in_filterFunction: (key: string, item: T) => boolean): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tconst keeper = in_filterFunction(in_key, in_item);\n\t\t\tif (keeper) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterKey\n\t * @param in_filterKey - a single key or an array of keys, if the\n\t * item matches any of the keys it will be filtered in.\n\t * @returns New filtered collection with all the items\n\t * matching at least one key.\n\t */\n\tfilterByKey(in_filterKey: string | string[]): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = _.isArray(in_filterKey)\n\t\t\t? function (in_key, in_item) {\n\t\t\t\t\tif (in_filterKey.includes(in_key)) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: function (in_key, in_item) {\n\t\t\t\t\tif (in_key === in_filterKey) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t };\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterValue\n\t * @param in_filterValue - Value to filter on\n\t * @returns Return a filtered collection\n\t */\n\tfilterByValue(in_filterValue: T): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tif (in_item === in_filterValue) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Remove an item from this Collection. This method returns a Boolean indicating\n\t * the success or failure of the removal. This is practical because if we were\n\t * to throw an error when the key doesn't exist, it would require additional\n\t * checks by the caller to make sure this key exists prior to removal. Which\n\t * would make the attempt of removal more verbose and also costly because the\n\t * caller would have to keep a list – somewhere else – of the things he can\n\t * and cannot remove.\n\t *\n\t * @param in_key - the key we wish to remove\n\t * @returns true if the key exists and was removed, false otherwise.\n\t */\n\tremove(in_key: number | string): boolean {\n\t\tif (!this.has(in_key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst remember = this._items[in_key];\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this._items[in_key];\n\t\tthis._order.splice(this._order.indexOf(in_key), 1);\n\n\t\tthis.onRemove(in_key, remember);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return the number of items in this Collection\n\t * @returns the number of items in the collection\n\t */\n\tgetCount(): number {\n\t\treturn this._order.length;\n\t}\n\n\t/**\n\t * Returns this collection as an ordered Array\n\t * @returns Array including the values\n\t */\n\tgetAsArray() {\n\t\tconst rtnArr: T[] = new Array(this.getCount());\n\n\t\tfor (let i = 0; i < this._order.length; i++) {\n\t\t\trtnArr[i] = this._items[this._order[i]];\n\t\t}\n\n\t\treturn rtnArr;\n\t}\n\n\t/**\n\t * @param in_key - the key we are looking for\n\t * @returns true if the item exists\n\t */\n\thas(in_key: string | number): boolean {\n\t\treturn Object.prototype.hasOwnProperty.call(this._items, in_key);\n\t}\n\n\t/**\n\t * Return an item associated with the given key\n\t * @param in_key - the key for the item in this\n\t * Collection\n\t * @returns The item\n\t */\n\titem(in_key: number | string) {\n\t\treturn this._items[in_key];\n\t}\n\n\t/**\n\t * Checks if this is a new key in the collection. Throw if already exists.\n\t * @param in_key - The key to check against\n\t * @returns true if key is new\n\t */\n\tprivate _checkIsNewKey(in_key: number | string) {\n\t\tif (this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_ALREADY_EXISTS} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if the key exists in the collection. Throw if not.\n\t * @param in_key - the key to check against\n\t * @returns true if key exists\n\t */\n\tprivate _checkKeyExists(in_key: number | string) {\n\t\tif (!this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_DOES_NOT_EXIST} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Set an existing key to a value. If key doesn't exist this call will throw\n\t * an error.\n\t * @param in_key - The key we want to modify\n\t * @param in_value - The value we are to set at this key\n\t * @returns The value passed in\n\t */\n\tset(in_key: string, in_value: T) {\n\t\tthis._checkKeyExists(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Iterate over this collection and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - A function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerate(in_callback) {\n\t\tfor (const key of this._order) {\n\t\t\tconst continu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Iterate over this collection starting from the tail and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - a function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerateFromTail(in_callback) {\n\t\tlet key;\n\t\tlet continu;\n\t\tfor (let i = this._order.length - 1; i >= 0; i--) {\n\t\t\tkey = this._order[i];\n\t\t\tcontinu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns Return an object containing the items of this collection\n\t */\n\tgetItems(): { [key: string]: T } {\n\t\tconst result = {};\n\n\t\t_.each(this._items, function (item, key) {\n\t\t\tresult[key] = item;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Return the list of keys\n\t * @returns List of keys\n\t */\n\tgetKeys(): string[] {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * Method used to get the first element in the collection along with its key.\n\t */\n\tpeak() {\n\t\treturn {\n\t\t\titem: this._items[this._order[0]],\n\t\t\tkey: this._order[0],\n\t\t};\n\t}\n\n\t/**\n\t * Clear this collection\n\t * @returns this collection\n\t */\n\tclear() {\n\t\tif (_.isEmpty(this._items)) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.onClear(this._items);\n\n\t\t// Best to just iterate through and remove everything, so that OnRemove\n\t\t// handlers are called.\n\n\t\t_.each(this.getKeys(), (key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t * @returns new Collection\n\t */\n\tclone(): Collection<T> {\n\t\tconst newCol = new Collection<T>(this._name, this._type);\n\t\tnewCol.bulkAdd(this._items);\n\t\treturn newCol;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t */\n\tcopy(in_collection: Collection<T>) {\n\t\tthis.clear();\n\t\tconst its = in_collection.items;\n\n\t\t_.each(its, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t}\n\n\tget values() {\n\t\treturn this.getAsArray();\n\t}\n}\n"]}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/datastructures/collection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,4DAA4D;AAC5D;;GAEG;AACH,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,MAAM,IAAI,GAAG;IACZ,aAAa,EAAE,0CAA0C;IACzD,kBAAkB,EAAE,iCAAiC;IACrD,kBAAkB,EAAE,mDAAmD;IACvE,aAAa,EAAE,yBAAyB;IACxC,eAAe,EAAE,2BAA2B;IAC5C,aAAa,EAAE,sCAAsC;CACrD,CAAC;AAEF,MAAM,OAAO,UAAU;IAItB;;;;;OAKG;IACH,YACW,QAAQ,qBAAqB,EAC7B,KAAqB;QADrB,UAAK,GAAL,KAAK,CAAwB;QAC7B,UAAK,GAAL,KAAK,CAAgB;QAXtB,WAAM,GAAyB,EAAE,CAAC;QAClC,WAAM,GAAwB,EAAE,CAAC;IAWxC,CAAC;IAEJ,4BAA4B;IAC5B,KAAK,CAAC,MAAM,EAAE,QAAQ,IAAG,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAG,CAAC;IAC7B,OAAO,CAAC,QAAQ,IAAG,CAAC;IAEpB,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAW,IAAI;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAuB,EAAE,QAAW;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE7B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACK,UAAU,CAAC,QAAW;QAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE;YACpD,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACpC;aAAM;YACN,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,QAA8B;QACrC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAA8B;QACxC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;SAGK;IACL,OAAO;QACN,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;;SAGK;IACL,YAAY;QACX,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED;;;SAGK;IACL,WAAW;QACV,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,OAAO;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,OAAO;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,iBAAoD;QAC1D,MAAM,GAAG,GAAG,IAAI,UAAU,EAAK,CAAC;QAEhC,MAAM,QAAQ,GAAG,UAAU,MAAM,EAAE,OAAO;YACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE;gBACX,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACzB;QACF,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvB,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,YAA+B;QAC1C,MAAM,GAAG,GAAG,IAAI,UAAU,EAAK,CAAC;QAEhC,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,UAAU,MAAM,EAAE,OAAO;gBACzB,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAClC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBACzB;YACD,CAAC;YACH,CAAC,CAAC,UAAU,MAAM,EAAE,OAAO;gBACzB,IAAI,MAAM,KAAK,YAAY,EAAE;oBAC5B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBACzB;YACD,CAAC,CAAC;QAEL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvB,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,cAAiB;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,EAAK,CAAC;QAEhC,MAAM,QAAQ,GAAG,UAAU,MAAM,EAAE,OAAO;YACzC,IAAI,OAAO,KAAK,cAAc,EAAE;gBAC/B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACzB;QACF,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvB,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC;SACb;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErC,gEAAgE;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,UAAU;QACT,MAAM,MAAM,GAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,MAAuB;QAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,MAAuB;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,MAAuB;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC,CAAC;SACxD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,MAAuB;QAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC,CAAC;SACxD;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,MAAc,EAAE,QAAW;QAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QAE/B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;QAClB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,OAAO,KAAK,KAAK,EAAE;gBACtB,MAAM;aACN;SACD;IACF,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,WAAW;QAC1B,IAAI,GAAG,CAAC;QACR,IAAI,OAAO,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,EAAE;gBACtB,MAAM;aACN;SACD;IACF,CAAC;IAED;;OAEG;IACH,QAAQ;QACP,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,GAAG;YACtC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,OAAO;QACN,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACH,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;SACnB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK;QACJ,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1B,uEAAuE;QACvE,uBAAuB;QAEvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACJ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,aAA4B;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC;QAEhC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;CACD","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* eslint accessor-pairs: [2, { \"getWithoutSet\": false }] */\n/**\n * @fileoverview Collection class definition\n */\nimport _ from \"lodash\";\n\nconst MSGS = {\n\tTYPE_MISMATCH: \"Type does not match this collection type\",\n\tKEY_ALREADY_EXISTS: \"Collection key already exists. \",\n\tKEY_DOES_NOT_EXIST: \"Collection key does not exist in this collection.\",\n\tMUST_GIVE_KEY: \"Collection missing key.\",\n\tMUST_GIVE_VALUE: \"Collection missing value.\",\n\tKEY_NOT_VALID: \"Key must be of type String or Number\",\n};\n\nexport class Collection<T> {\n\tprotected _items: { [key: string]: T } = {};\n\tprotected _order: (string | number)[] = [];\n\n\t/**\n\t * @param _name - a friendly name to describe this collection. If undefined\n\t * the collection will have a default \"Untitled Collection\" assigned to its name.\n\t * @param _type - optional parameter pointing to the constructor\n\t * of a type this Collection will host.\n\t */\n\tconstructor(\n\t\tprotected _name = \"Untitled Collection\",\n\t\tprotected _type?: new () => any,\n\t) {}\n\n\t// Pass-thru binding handles\n\tonAdd(in_key, in_value) {}\n\tonRemove(in_key, in_value) {}\n\tonClear(in_items) {}\n\n\tpublic get items() {\n\t\treturn this._items;\n\t}\n\n\tpublic get keys() {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * @param in_key - Key to store the value under\n\t * @param in_value - Value to store in the collection\n\t * @returns Return the value passed in\n\t */\n\tadd(in_key: number | string, in_value: T): T {\n\t\tthis._checkType(in_value);\n\t\tthis._checkIsNewKey(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\t\tthis._order.push(in_key);\n\n\t\tthis.onAdd(in_key, in_value);\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Checks if in_value's type is equal to this Collection type. If this collection\n\t * has no type set, the check will pass.\n\t *\n\t * @param in_value - A value that is equal to the type managed by this collection.\n\t * @returns Return true if the type is a valid type for this\n\t * collection, throw otherwise.\n\t */\n\tprivate _checkType(in_value: T) {\n\t\tif (this._type && !(in_value instanceof this._type)) {\n\t\t\tthrow new Error(MSGS.TYPE_MISMATCH);\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Bulk add items.\n\t * @param in_items - List of key-value pairs to be stored in the collection\n\t * @returns this collection after add\n\t */\n\tbulkAdd(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bulk remove items.\n\t * @param in_items - List of key-value items to be removed\n\t * @returns this collection after add\n\t */\n\tbulkRemove(in_items: { [key: string]: T }) {\n\t\t_.each(in_items, (item, key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Test if this collection is empty\n\t * @returns true if empty, false otherwise\n\t * */\n\tisEmpty() {\n\t\treturn _.isEmpty(this._items);\n\t}\n\n\t/**\n\t * Return the first item in the collection, null if empty\n\t * @returns first item, or undefined if empty\n\t * */\n\tgetFirstItem(): T | undefined {\n\t\tconst index = _.first(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * Return the last item in the collection, undefined if empty\n\t * @returns The last item, or undefined if empty\n\t * */\n\tgetLastItem(): T | undefined {\n\t\tconst index = _.last(this._order);\n\t\treturn index === undefined ? index : this._items[index];\n\t}\n\n\t/**\n\t * @returns Returns the type of collection (Array, etc.)\n\t */\n\tgetType() {\n\t\treturn this._type;\n\t}\n\n\t/**\n\t * @returns Returns the name of the collection\n\t */\n\tgetName(): string {\n\t\treturn this._name;\n\t}\n\n\t/**\n\t * Filter out by function\n\t * @param in_filterFunction - with arguments key and item\n\t * @returns A new filtered collection\n\t */\n\tfilter(in_filterFunction: (key: string, item: T) => boolean): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tconst keeper = in_filterFunction(in_key, in_item);\n\t\t\tif (keeper) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterKey\n\t * @param in_filterKey - a single key or an array of keys, if the\n\t * item matches any of the keys it will be filtered in.\n\t * @returns New filtered collection with all the items\n\t * matching at least one key.\n\t */\n\tfilterByKey(in_filterKey: string | string[]): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = _.isArray(in_filterKey)\n\t\t\t? function (in_key, in_item) {\n\t\t\t\t\tif (in_filterKey.includes(in_key)) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t }\n\t\t\t: function (in_key, in_item) {\n\t\t\t\t\tif (in_key === in_filterKey) {\n\t\t\t\t\t\trtn.add(in_key, in_item);\n\t\t\t\t\t}\n\t\t\t };\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Filter out all keys NOT matching the in_filterValue\n\t * @param in_filterValue - Value to filter on\n\t * @returns Return a filtered collection\n\t */\n\tfilterByValue(in_filterValue: T): Collection<T> {\n\t\tconst rtn = new Collection<T>();\n\n\t\tconst filterCb = function (in_key, in_item) {\n\t\t\tif (in_item === in_filterValue) {\n\t\t\t\trtn.add(in_key, in_item);\n\t\t\t}\n\t\t};\n\n\t\tthis.iterate(filterCb);\n\n\t\treturn rtn;\n\t}\n\n\t/**\n\t * Remove an item from this Collection. This method returns a Boolean indicating\n\t * the success or failure of the removal. This is practical because if we were\n\t * to throw an error when the key doesn't exist, it would require additional\n\t * checks by the caller to make sure this key exists prior to removal. Which\n\t * would make the attempt of removal more verbose and also costly because the\n\t * caller would have to keep a list – somewhere else – of the things he can\n\t * and cannot remove.\n\t *\n\t * @param in_key - the key we wish to remove\n\t * @returns true if the key exists and was removed, false otherwise.\n\t */\n\tremove(in_key: number | string): boolean {\n\t\tif (!this.has(in_key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst remember = this._items[in_key];\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this._items[in_key];\n\t\tthis._order.splice(this._order.indexOf(in_key), 1);\n\n\t\tthis.onRemove(in_key, remember);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return the number of items in this Collection\n\t * @returns the number of items in the collection\n\t */\n\tgetCount(): number {\n\t\treturn this._order.length;\n\t}\n\n\t/**\n\t * Returns this collection as an ordered Array\n\t * @returns Array including the values\n\t */\n\tgetAsArray() {\n\t\tconst rtnArr: T[] = new Array(this.getCount());\n\n\t\tfor (let i = 0; i < this._order.length; i++) {\n\t\t\trtnArr[i] = this._items[this._order[i]];\n\t\t}\n\n\t\treturn rtnArr;\n\t}\n\n\t/**\n\t * @param in_key - the key we are looking for\n\t * @returns true if the item exists\n\t */\n\thas(in_key: string | number): boolean {\n\t\treturn Object.prototype.hasOwnProperty.call(this._items, in_key);\n\t}\n\n\t/**\n\t * Return an item associated with the given key\n\t * @param in_key - the key for the item in this\n\t * Collection\n\t * @returns The item\n\t */\n\titem(in_key: number | string) {\n\t\treturn this._items[in_key];\n\t}\n\n\t/**\n\t * Checks if this is a new key in the collection. Throw if already exists.\n\t * @param in_key - The key to check against\n\t * @returns true if key is new\n\t */\n\tprivate _checkIsNewKey(in_key: number | string) {\n\t\tif (this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_ALREADY_EXISTS} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if the key exists in the collection. Throw if not.\n\t * @param in_key - the key to check against\n\t * @returns true if key exists\n\t */\n\tprivate _checkKeyExists(in_key: number | string) {\n\t\tif (!this.has(in_key)) {\n\t\t\tthrow new Error(`${MSGS.KEY_DOES_NOT_EXIST} ${in_key}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Set an existing key to a value. If key doesn't exist this call will throw\n\t * an error.\n\t * @param in_key - The key we want to modify\n\t * @param in_value - The value we are to set at this key\n\t * @returns The value passed in\n\t */\n\tset(in_key: string, in_value: T) {\n\t\tthis._checkKeyExists(in_key);\n\n\t\tthis._items[in_key] = in_value;\n\n\t\treturn in_value;\n\t}\n\n\t/**\n\t * Iterate over this collection and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - A function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerate(in_callback) {\n\t\tfor (const key of this._order) {\n\t\t\tconst continu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Iterate over this collection starting from the tail and run the callback with passing the key and\n\t * item in the iteration loop.\n\t * @param in_callback - a function that we will call on each item\n\t * of this collection. If the callback returns false then the iteration will exit early.\n\t */\n\titerateFromTail(in_callback) {\n\t\tlet key;\n\t\tlet continu;\n\t\tfor (let i = this._order.length - 1; i >= 0; i--) {\n\t\t\tkey = this._order[i];\n\t\t\tcontinu = in_callback(key, this._items[key]);\n\t\t\tif (continu === false) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns Return an object containing the items of this collection\n\t */\n\tgetItems(): { [key: string]: T } {\n\t\tconst result = {};\n\n\t\t_.each(this._items, function (item, key) {\n\t\t\tresult[key] = item;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Return the list of keys\n\t * @returns List of keys\n\t */\n\tgetKeys(): string[] {\n\t\treturn Object.keys(this._items);\n\t}\n\n\t/**\n\t * Method used to get the first element in the collection along with its key.\n\t */\n\tpeak() {\n\t\treturn {\n\t\t\titem: this._items[this._order[0]],\n\t\t\tkey: this._order[0],\n\t\t};\n\t}\n\n\t/**\n\t * Clear this collection\n\t * @returns this collection\n\t */\n\tclear() {\n\t\tif (_.isEmpty(this._items)) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.onClear(this._items);\n\n\t\t// Best to just iterate through and remove everything, so that OnRemove\n\t\t// handlers are called.\n\n\t\t_.each(this.getKeys(), (key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t * @returns new Collection\n\t */\n\tclone(): Collection<T> {\n\t\tconst newCol = new Collection<T>(this._name, this._type);\n\t\tnewCol.bulkAdd(this._items);\n\t\treturn newCol;\n\t}\n\n\t/**\n\t * Copy the items of in_collection to this collection.\n\t * @param in_collection - the collection we want to\n\t * copy from.\n\t */\n\tcopy(in_collection: Collection<T>) {\n\t\tthis.clear();\n\t\tconst its = in_collection.items;\n\n\t\t_.each(its, (item, key) => {\n\t\t\tthis.add(key, item);\n\t\t});\n\t}\n\n\tget values() {\n\t\treturn this.getAsArray();\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"integer64.d.ts","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IACT,SAAS,CAAC,GAAG;IAAM,SAAS,CAAC,IAAI;gBAAvB,GAAG,SAAI,EAAY,IAAI,SAAI;IAEjD;;OAEG;IACH,YAAY;IAIZ;;OAEG;IACH,WAAW;IAIX,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,MAAM;CAwBlE;AA0DD;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAS;IACnC,MAAM,CAAC,UAAU,cAAwB,MAAM,2BAG7C;IAEF,KAAK;IAIL,QAAQ,CAAC,KAAK,SAAK;CAGnB;AAED;;GAEG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAK;IAKlD,KAAK;IAIL,QAAQ,CAAC,KAAK,KAAA;CAGd"}
1
+ {"version":3,"file":"integer64.d.ts","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IAEpB,SAAS,CAAC,GAAG;IACb,SAAS,CAAC,IAAI;gBADJ,GAAG,SAAI,EACP,IAAI,SAAI;IAGnB;;OAEG;IACH,YAAY;IAIZ;;OAEG;IACH,WAAW;IAIX,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,MAAM;CAwBlE;AA0DD;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAS;IACnC,MAAM,CAAC,UAAU,cAAwB,MAAM,2BAG7C;IAEF,KAAK;IAIL,QAAQ,CAAC,KAAK,SAAK;CAGnB;AAED;;GAEG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAK;IAKlD,KAAK;IAIL,QAAQ,CAAC,KAAK,KAAA;CAGd"}
@@ -1 +1 @@
1
- {"version":3,"file":"integer64.js","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview implements (U)Int64 Datastructures\n */\n\nimport _ from \"lodash\";\nimport { ConsoleUtils } from \"../consoleUtils\";\nimport { constants } from \"../constants\";\n\nconst BIT32 = 4294967296;\nconst { MSG } = constants;\n\n/**\n * A data representation class for 64 bit integer types.\n *\n * @remarks This is necessary since js doesn't support 64bit integers natively yet.\n *\n * Please note this class is immutable.\n * There are and there won't be set functions! (see javascript String class)\n *\n * @param low - Lower 32 bit\n * @param high - Higher 32 bit\n */\nexport class Integer64 {\n\tconstructor(protected low = 0, protected high = 0) {}\n\n\t/**\n\t * @returns The higher 32 bit integer part\n\t */\n\tgetValueHigh() {\n\t\treturn this.high;\n\t}\n\n\t/**\n\t * @returns The lower 32 bit integer part\n\t */\n\tgetValueLow() {\n\t\treturn this.low;\n\t}\n\n\tprotected _int64toString(isSigned: boolean, in_radix = 10): string {\n\t\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_MUST_BE_NUMBER} ${in_radix}`);\n\t\tConsoleUtils.assert(\n\t\t\tin_radix >= 2 && 36 >= in_radix,\n\t\t\t`${MSG.BASE_OUT_OF_RANGE} ${in_radix}`,\n\t\t);\n\n\t\tlet high = this.getValueHigh();\n\t\tlet low = this.getValueLow();\n\t\tlet result = \"\";\n\t\tconst sign = !!(isSigned && high & 0x80000000); // eslint-disable-line no-bitwise\n\t\tif (sign) {\n\t\t\thigh = ~high; // eslint-disable-line no-bitwise\n\t\t\tlow = BIT32 - low;\n\t\t}\n\t\tdo {\n\t\t\tconst mod = (high % in_radix) * BIT32 + low;\n\t\t\thigh = Math.floor(high / in_radix);\n\t\t\tlow = Math.floor(mod / in_radix);\n\t\t\tresult = (mod % in_radix).toString(in_radix) + result;\n\t\t} while (high || low);\n\n\t\treturn sign ? `-${result}` : result;\n\t}\n}\n\n/**\n * stringToInt function parses a string argument updates object's lower and higher 32 bit integer parts.\n *\n * @param in_signed - If the expect response should be signed or unsigned.\n * @param in_string - The value to parse. Leading whitespace in the string argument is ignored.\n * @param in_radix - An integer between 2 and 36 that represents the\n * radix (the base in mathematical numeral systems) of the above mentioned string.\n *\n * @throws If `in_string` is not a string.\n * @throws If `in_radix` is entered but is not a number between 2 and 36.\n * @throws If the property is a `Uint64` property and `in_string` is a negative number.\n * @throws If `in_string` contains characters other than numbers.\n *\n * @returns Low and high bits of `Int64`.\n */\nfunction _stringToInt64(in_signed: boolean, in_string: string, in_radix = 10): number[] {\n\tConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n\tconst string = in_string.trim();\n\n\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_BETWEEN_2_36} ${in_radix}`);\n\tConsoleUtils.assert(in_radix >= 2 && 36 >= in_radix, `${MSG.BASE_OUT_OF_RANGE} ${in_radix}`);\n\n\tlet position = 0;\n\tlet negative = false;\n\tlet high = 0;\n\tlet low = 0;\n\tif (string.startsWith(\"-\")) {\n\t\tnegative = true;\n\t\tposition += 1;\n\t}\n\n\tConsoleUtils.assert(!negative || in_signed, MSG.CANNOT_UPDATE_TO_NEGATIVE + string);\n\n\twhile (position < string.length) {\n\t\tconst digit = parseInt(string[position++], in_radix);\n\t\tif (isNaN(digit)) {\n\t\t\tthrow new TypeError(MSG.CANNOT_PARSE_INVALID_CHARACTERS + string);\n\t\t}\n\t\tlow = low * in_radix + digit;\n\t\thigh = high * in_radix + Math.floor(low / BIT32);\n\t\tlow %= BIT32;\n\t}\n\n\tif (negative) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\thigh = ~high;\n\t\tif (low) {\n\t\t\tlow = BIT32 - low;\n\t\t} else {\n\t\t\thigh += 1;\n\t\t}\n\t}\n\n\treturn [low, high];\n}\n\n/**\n * A data representation class for the signed 64 bit integer type\n */\nexport class Int64 extends Integer64 {\n\tstatic fromString = function (in_string: string, radix = 10) {\n\t\tconst [low, high] = _stringToInt64(true, in_string, radix);\n\t\treturn new Int64(low, high);\n\t};\n\n\tclone() {\n\t\treturn new Int64(this.low, this.high);\n\t}\n\n\ttoString(radix = 10) {\n\t\treturn this._int64toString(true, radix);\n\t}\n}\n\n/**\n * A data representation class for the unsigned 64 bit integer type\n */\nexport class Uint64 extends Integer64 {\n\tstatic fromString(in_string: string, in_radix = 10) {\n\t\tconst [low, high] = _stringToInt64.call(this, false, in_string, in_radix);\n\t\treturn new Uint64(low, high);\n\t}\n\n\tclone() {\n\t\treturn new Uint64(this.low, this.high);\n\t}\n\n\ttoString(radix) {\n\t\treturn this._int64toString(false, radix);\n\t}\n}\n"]}
1
+ {"version":3,"file":"integer64.js","sourceRoot":"","sources":["../../src/datastructures/integer64.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview implements (U)Int64 Datastructures\n */\n\nimport _ from \"lodash\";\nimport { ConsoleUtils } from \"../consoleUtils\";\nimport { constants } from \"../constants\";\n\nconst BIT32 = 4294967296;\nconst { MSG } = constants;\n\n/**\n * A data representation class for 64 bit integer types.\n *\n * @remarks This is necessary since js doesn't support 64bit integers natively yet.\n *\n * Please note this class is immutable.\n * There are and there won't be set functions! (see javascript String class)\n *\n * @param low - Lower 32 bit\n * @param high - Higher 32 bit\n */\nexport class Integer64 {\n\tconstructor(\n\t\tprotected low = 0,\n\t\tprotected high = 0,\n\t) {}\n\n\t/**\n\t * @returns The higher 32 bit integer part\n\t */\n\tgetValueHigh() {\n\t\treturn this.high;\n\t}\n\n\t/**\n\t * @returns The lower 32 bit integer part\n\t */\n\tgetValueLow() {\n\t\treturn this.low;\n\t}\n\n\tprotected _int64toString(isSigned: boolean, in_radix = 10): string {\n\t\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_MUST_BE_NUMBER} ${in_radix}`);\n\t\tConsoleUtils.assert(\n\t\t\tin_radix >= 2 && 36 >= in_radix,\n\t\t\t`${MSG.BASE_OUT_OF_RANGE} ${in_radix}`,\n\t\t);\n\n\t\tlet high = this.getValueHigh();\n\t\tlet low = this.getValueLow();\n\t\tlet result = \"\";\n\t\tconst sign = !!(isSigned && high & 0x80000000); // eslint-disable-line no-bitwise\n\t\tif (sign) {\n\t\t\thigh = ~high; // eslint-disable-line no-bitwise\n\t\t\tlow = BIT32 - low;\n\t\t}\n\t\tdo {\n\t\t\tconst mod = (high % in_radix) * BIT32 + low;\n\t\t\thigh = Math.floor(high / in_radix);\n\t\t\tlow = Math.floor(mod / in_radix);\n\t\t\tresult = (mod % in_radix).toString(in_radix) + result;\n\t\t} while (high || low);\n\n\t\treturn sign ? `-${result}` : result;\n\t}\n}\n\n/**\n * stringToInt function parses a string argument updates object's lower and higher 32 bit integer parts.\n *\n * @param in_signed - If the expect response should be signed or unsigned.\n * @param in_string - The value to parse. Leading whitespace in the string argument is ignored.\n * @param in_radix - An integer between 2 and 36 that represents the\n * radix (the base in mathematical numeral systems) of the above mentioned string.\n *\n * @throws If `in_string` is not a string.\n * @throws If `in_radix` is entered but is not a number between 2 and 36.\n * @throws If the property is a `Uint64` property and `in_string` is a negative number.\n * @throws If `in_string` contains characters other than numbers.\n *\n * @returns Low and high bits of `Int64`.\n */\nfunction _stringToInt64(in_signed: boolean, in_string: string, in_radix = 10): number[] {\n\tConsoleUtils.assert(_.isString(in_string), MSG.IN_STRING_MUST_BE_STRING + in_string);\n\tconst string = in_string.trim();\n\n\tConsoleUtils.assert(_.isNumber(in_radix), `${MSG.IN_RADIX_BETWEEN_2_36} ${in_radix}`);\n\tConsoleUtils.assert(in_radix >= 2 && 36 >= in_radix, `${MSG.BASE_OUT_OF_RANGE} ${in_radix}`);\n\n\tlet position = 0;\n\tlet negative = false;\n\tlet high = 0;\n\tlet low = 0;\n\tif (string.startsWith(\"-\")) {\n\t\tnegative = true;\n\t\tposition += 1;\n\t}\n\n\tConsoleUtils.assert(!negative || in_signed, MSG.CANNOT_UPDATE_TO_NEGATIVE + string);\n\n\twhile (position < string.length) {\n\t\tconst digit = parseInt(string[position++], in_radix);\n\t\tif (isNaN(digit)) {\n\t\t\tthrow new TypeError(MSG.CANNOT_PARSE_INVALID_CHARACTERS + string);\n\t\t}\n\t\tlow = low * in_radix + digit;\n\t\thigh = high * in_radix + Math.floor(low / BIT32);\n\t\tlow %= BIT32;\n\t}\n\n\tif (negative) {\n\t\t// eslint-disable-next-line no-bitwise\n\t\thigh = ~high;\n\t\tif (low) {\n\t\t\tlow = BIT32 - low;\n\t\t} else {\n\t\t\thigh += 1;\n\t\t}\n\t}\n\n\treturn [low, high];\n}\n\n/**\n * A data representation class for the signed 64 bit integer type\n */\nexport class Int64 extends Integer64 {\n\tstatic fromString = function (in_string: string, radix = 10) {\n\t\tconst [low, high] = _stringToInt64(true, in_string, radix);\n\t\treturn new Int64(low, high);\n\t};\n\n\tclone() {\n\t\treturn new Int64(this.low, this.high);\n\t}\n\n\ttoString(radix = 10) {\n\t\treturn this._int64toString(true, radix);\n\t}\n}\n\n/**\n * A data representation class for the unsigned 64 bit integer type\n */\nexport class Uint64 extends Integer64 {\n\tstatic fromString(in_string: string, in_radix = 10) {\n\t\tconst [low, high] = _stringToInt64.call(this, false, in_string, in_radix);\n\t\treturn new Uint64(low, high);\n\t}\n\n\tclone() {\n\t\treturn new Uint64(this.low, this.high);\n\t}\n\n\ttoString(radix) {\n\t\treturn this._int64toString(false, radix);\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAE3B,KAAK,CAAC;IACN,UAAU,CAAC;IACX,aAAa,CAAC;IACd,MAAM,CAAC;IACP,GAAG,CAAC;IACJ,KAAK;gBALL,KAAK,CAAC,oBAAQ,EACd,UAAU,CAAC,oBAAQ,EACnB,aAAa,CAAC,oBAAQ,EACtB,MAAM,CAAC,oBAAQ,EACf,GAAG,CAAC,oBAAQ,EACZ,KAAK,SAAI;IASjB,MAAM,CAAC,KAAK;;;MAAsB;IAElC,OAAO,IAAI,OAAO;IAIlB,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,QAAQ,IAAI,MAAM;CAWlB"}
1
+ {"version":3,"file":"httpError.d.ts","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAE3B,KAAK,CAAC;IACN,UAAU,CAAC;IACX,aAAa,CAAC;IACd,MAAM,CAAC;IACP,GAAG,CAAC;IACJ,KAAK;gBALL,KAAK,CAAC,oBAAQ,EACd,UAAU,CAAC,oBAAQ,EACnB,aAAa,CAAC,oBAAQ,EACtB,MAAM,CAAC,oBAAQ,EACf,GAAG,CAAC,oBAAQ,EACZ,KAAK,SAAI;IASjB,MAAM,CAAC,KAAK;;;MAAsB;IAElC,OAAO,IAAI,OAAO;IAIlB,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,QAAQ,IAAI,MAAM;CAYlB"}
@@ -47,7 +47,9 @@ export class HTTPError extends Error {
47
47
  */
48
48
  toString() {
49
49
  const stack = this.stack === undefined ? "" : String(this.stack);
50
- const isFirefox = typeof window !== "undefined" &&
50
+ const isFirefox =
51
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- optional chain causes a test failure
52
+ typeof window !== "undefined" &&
51
53
  typeof window.navigator !== "undefined" &&
52
54
  typeof window.navigator.userAgent !== "undefined" &&
53
55
  window.navigator.userAgent.toLowerCase().includes("firefox");
@@ -1 +1 @@
1
- {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IACnC,YACQ,KAAc,EACd,UAAmB,EACnB,aAAsB,EACtB,MAAe,EACf,GAAY,EACZ,QAAQ,CAAC;QAEhB,KAAK,EAAE,CAAC;QAPD,UAAK,GAAL,KAAK,CAAS;QACd,eAAU,GAAV,UAAU,CAAS;QACnB,kBAAa,GAAb,aAAa,CAAS;QACtB,WAAM,GAAN,MAAM,CAAS;QACf,QAAG,GAAH,GAAG,CAAS;QACZ,UAAK,GAAL,KAAK,CAAI;QAGhB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAID,OAAO;QACN,OAAO,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW;QACV,OAAO,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG;QACrE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpD,OAAO,CACN,cAAc,QAAQ,gBAAgB,aAAa,IAAI;YACvD,iBAAiB,gBAAgB,YAAY,SAAS,SAAS,MAAM,EAAE,CACvE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,MAAM,SAAS,GACd,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW;YACvC,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW;YACjD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE9D,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC;IACzE,CAAC;;AArCM,eAAK,GAAG,YAAY,CAAC,KAAK,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FlaggedError } from \"./flaggedError\";\n\n/**\n * Class extending Error with HTTP-specific error information like statusCode and statusMessage\n * @param title - The error title\n * @param statusCode - A numeric HTTP status code\n * @param statusMessage - A string message representing the response status message\n * @param method - The HTTP method used in the request\n * @param url - The URL that the request was sent to\n * @param flags - Flags that characterize the error. See {@link FlaggedError.FLAGS}.\n */\nexport class HTTPError extends Error {\n\tconstructor(\n\t\tpublic title?: string,\n\t\tpublic statusCode?: number,\n\t\tpublic statusMessage?: string,\n\t\tpublic method?: string,\n\t\tpublic url?: string,\n\t\tpublic flags = 0,\n\t) {\n\t\tsuper();\n\t\tObject.setPrototypeOf(this, HTTPError.prototype);\n\t\tthis.name = \"HTTPError\";\n\t\tthis.message = this._generateMessage(title, statusCode, statusMessage, method, url);\n\t\tthis.stack = new Error(this.message).stack;\n\t}\n\n\tstatic FLAGS = FlaggedError.FLAGS;\n\n\tisQuiet(): boolean {\n\t\treturn FlaggedError.prototype.isQuiet.call(this);\n\t}\n\n\tisTransient(): boolean {\n\t\treturn FlaggedError.prototype.isTransient.call(this);\n\t}\n\n\tprivate _generateMessage(title, statusCode, statusMessage, method, url) {\n\t\tconst titleStr = title === undefined ? \"\" : String(title);\n\t\tconst statusCodeStr = statusCode === undefined ? \"\" : String(statusCode);\n\t\tconst statusMessageStr = statusMessage === undefined ? \"\" : String(statusMessage);\n\t\tconst methodStr = method === undefined ? \"\" : String(method);\n\t\tconst urlStr = url === undefined ? \"\" : String(url);\n\n\t\treturn (\n\t\t\t`HTTPError: ${titleStr}, statusCode:${statusCodeStr}, ` +\n\t\t\t`statusMessage:${statusMessageStr}, method:${methodStr}, url:${urlStr}`\n\t\t);\n\t}\n\n\t/**\n\t * Returns a string representing the HTTPError object\n\t * @returns a string representing the HTTPError object\n\t */\n\ttoString(): string {\n\t\tconst stack = this.stack === undefined ? \"\" : String(this.stack);\n\n\t\tconst isFirefox =\n\t\t\ttypeof window !== \"undefined\" &&\n\t\t\ttypeof window.navigator !== \"undefined\" &&\n\t\t\ttypeof window.navigator.userAgent !== \"undefined\" &&\n\t\t\twindow.navigator.userAgent.toLowerCase().includes(\"firefox\");\n\n\t\treturn isFirefox ? `${this.message}, stack:${stack}` : `stack:${stack}`;\n\t}\n}\n"]}
1
+ {"version":3,"file":"httpError.js","sourceRoot":"","sources":["../../src/error_objects/httpError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IACnC,YACQ,KAAc,EACd,UAAmB,EACnB,aAAsB,EACtB,MAAe,EACf,GAAY,EACZ,QAAQ,CAAC;QAEhB,KAAK,EAAE,CAAC;QAPD,UAAK,GAAL,KAAK,CAAS;QACd,eAAU,GAAV,UAAU,CAAS;QACnB,kBAAa,GAAb,aAAa,CAAS;QACtB,WAAM,GAAN,MAAM,CAAS;QACf,QAAG,GAAH,GAAG,CAAS;QACZ,UAAK,GAAL,KAAK,CAAI;QAGhB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAID,OAAO;QACN,OAAO,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,WAAW;QACV,OAAO,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG;QACrE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,gBAAgB,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpD,OAAO,CACN,cAAc,QAAQ,gBAAgB,aAAa,IAAI;YACvD,iBAAiB,gBAAgB,YAAY,SAAS,SAAS,MAAM,EAAE,CACvE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjE,MAAM,SAAS;QACd,4GAA4G;QAC5G,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW;YACvC,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,KAAK,WAAW;YACjD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE9D,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC;IACzE,CAAC;;AAtCM,eAAK,GAAG,YAAY,CAAC,KAAK,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\nimport { FlaggedError } from \"./flaggedError\";\n\n/**\n * Class extending Error with HTTP-specific error information like statusCode and statusMessage\n * @param title - The error title\n * @param statusCode - A numeric HTTP status code\n * @param statusMessage - A string message representing the response status message\n * @param method - The HTTP method used in the request\n * @param url - The URL that the request was sent to\n * @param flags - Flags that characterize the error. See {@link FlaggedError.FLAGS}.\n */\nexport class HTTPError extends Error {\n\tconstructor(\n\t\tpublic title?: string,\n\t\tpublic statusCode?: number,\n\t\tpublic statusMessage?: string,\n\t\tpublic method?: string,\n\t\tpublic url?: string,\n\t\tpublic flags = 0,\n\t) {\n\t\tsuper();\n\t\tObject.setPrototypeOf(this, HTTPError.prototype);\n\t\tthis.name = \"HTTPError\";\n\t\tthis.message = this._generateMessage(title, statusCode, statusMessage, method, url);\n\t\tthis.stack = new Error(this.message).stack;\n\t}\n\n\tstatic FLAGS = FlaggedError.FLAGS;\n\n\tisQuiet(): boolean {\n\t\treturn FlaggedError.prototype.isQuiet.call(this);\n\t}\n\n\tisTransient(): boolean {\n\t\treturn FlaggedError.prototype.isTransient.call(this);\n\t}\n\n\tprivate _generateMessage(title, statusCode, statusMessage, method, url) {\n\t\tconst titleStr = title === undefined ? \"\" : String(title);\n\t\tconst statusCodeStr = statusCode === undefined ? \"\" : String(statusCode);\n\t\tconst statusMessageStr = statusMessage === undefined ? \"\" : String(statusMessage);\n\t\tconst methodStr = method === undefined ? \"\" : String(method);\n\t\tconst urlStr = url === undefined ? \"\" : String(url);\n\n\t\treturn (\n\t\t\t`HTTPError: ${titleStr}, statusCode:${statusCodeStr}, ` +\n\t\t\t`statusMessage:${statusMessageStr}, method:${methodStr}, url:${urlStr}`\n\t\t);\n\t}\n\n\t/**\n\t * Returns a string representing the HTTPError object\n\t * @returns a string representing the HTTPError object\n\t */\n\ttoString(): string {\n\t\tconst stack = this.stack === undefined ? \"\" : String(this.stack);\n\n\t\tconst isFirefox =\n\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- optional chain causes a test failure\n\t\t\ttypeof window !== \"undefined\" &&\n\t\t\ttypeof window.navigator !== \"undefined\" &&\n\t\t\ttypeof window.navigator.userAgent !== \"undefined\" &&\n\t\t\twindow.navigator.userAgent.toLowerCase().includes(\"firefox\");\n\n\t\treturn isFirefox ? `${this.message}, stack:${stack}` : `stack:${stack}`;\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-experimental/property-common",
3
- "version": "2.0.0-internal.7.0.0",
3
+ "version": "2.0.0-internal.7.2.0",
4
4
  "description": "common functions used in properties",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -45,10 +45,10 @@
45
45
  "traverse": "0.6.6"
46
46
  },
47
47
  "devDependencies": {
48
- "@fluidframework/build-common": "^2.0.0",
49
- "@fluidframework/build-tools": "^0.24.0",
50
- "@fluidframework/eslint-config-fluid": "^2.1.0",
51
- "@fluidframework/mocha-test-setup": ">=2.0.0-internal.7.0.0 <2.0.0-internal.7.1.0",
48
+ "@fluidframework/build-common": "^2.0.3",
49
+ "@fluidframework/build-tools": "^0.26.1",
50
+ "@fluidframework/eslint-config-fluid": "^3.0.0",
51
+ "@fluidframework/mocha-test-setup": ">=2.0.0-internal.7.2.0 <2.0.0-internal.7.3.0",
52
52
  "@microsoft/api-extractor": "^7.37.0",
53
53
  "@types/chai": "^4.0.0",
54
54
  "@types/debug": "^4.1.5",
@@ -58,15 +58,14 @@
58
58
  "@types/semver": "^7.5.0",
59
59
  "c8": "^7.7.1",
60
60
  "chai": "^4.2.0",
61
- "copyfiles": "^2.4.1",
62
61
  "cross-env": "^7.0.3",
63
- "eslint": "~8.6.0",
62
+ "eslint": "~8.50.0",
64
63
  "mocha": "^10.2.0",
65
64
  "mocha-json-output-reporter": "^2.0.1",
66
65
  "mocha-multi-reporters": "^1.5.1",
67
66
  "moment": "^2.21.0",
68
67
  "nock": "^13.3.3",
69
- "prettier": "~2.6.2",
68
+ "prettier": "~3.0.3",
70
69
  "rimraf": "^4.4.0",
71
70
  "sinon": "^7.4.2",
72
71
  "typescript": "~5.1.6"
@@ -81,7 +80,7 @@
81
80
  "build:compile": "fluid-build . --task compile",
82
81
  "build:esnext": "tsc --project ./tsconfig.esnext.json",
83
82
  "build:test": "tsc --project ./src/test/tsconfig.json",
84
- "clean": "rimraf --glob 'dist' 'lib' '*.tsbuildinfo' '*.build.log' 'nyc'",
83
+ "clean": "rimraf --glob dist lib \"*.tsbuildinfo\" \"*.build.log\" nyc",
85
84
  "eslint": "eslint --format stylish src",
86
85
  "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
87
86
  "format": "npm run prettier:fix",
@@ -1,5 +1,13 @@
1
1
  # @fluid-internal/platform-dependent
2
2
 
3
+ ## 2.0.0-internal.7.2.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.0.0-internal.7.1.0
8
+
9
+ Dependency updates only.
10
+
3
11
  ## 2.0.0-internal.7.0.0
4
12
 
5
13
  Dependency updates only.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-internal/platform-dependent",
3
- "version": "2.0.0-internal.7.0.0",
3
+ "version": "2.0.0-internal.7.2.0",
4
4
  "private": true,
5
5
  "description": "Helper package that separates code for browser and server.",
6
6
  "homepage": "https://fluidframework.com",
@@ -124,11 +124,7 @@ let impl:
124
124
  | typeof implementations.performance;
125
125
  if (typeof process !== "undefined" && typeof process.hrtime !== "undefined") {
126
126
  impl = implementations.node;
127
- } else if (
128
- typeof window !== "undefined" &&
129
- typeof window.performance !== "undefined" &&
130
- typeof window.performance.now !== "undefined"
131
- ) {
127
+ } else if (typeof window?.performance?.now !== "undefined") {
132
128
  impl = implementations.performance;
133
129
  } else {
134
130
  impl = implementations.date;
@@ -27,7 +27,10 @@ export class Collection<T> {
27
27
  * @param _type - optional parameter pointing to the constructor
28
28
  * of a type this Collection will host.
29
29
  */
30
- constructor(protected _name = "Untitled Collection", protected _type?: new () => any) {}
30
+ constructor(
31
+ protected _name = "Untitled Collection",
32
+ protected _type?: new () => any,
33
+ ) {}
31
34
 
32
35
  // Pass-thru binding handles
33
36
  onAdd(in_key, in_value) {}
@@ -26,7 +26,10 @@ const { MSG } = constants;
26
26
  * @param high - Higher 32 bit
27
27
  */
28
28
  export class Integer64 {
29
- constructor(protected low = 0, protected high = 0) {}
29
+ constructor(
30
+ protected low = 0,
31
+ protected high = 0,
32
+ ) {}
30
33
 
31
34
  /**
32
35
  * @returns The higher 32 bit integer part
@@ -60,6 +60,7 @@ export class HTTPError extends Error {
60
60
  const stack = this.stack === undefined ? "" : String(this.stack);
61
61
 
62
62
  const isFirefox =
63
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- optional chain causes a test failure
63
64
  typeof window !== "undefined" &&
64
65
  typeof window.navigator !== "undefined" &&
65
66
  typeof window.navigator.userAgent !== "undefined" &&