@fgv/ts-utils 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +4 -0
  3. package/brand.d.ts +8 -0
  4. package/brand.d.ts.map +1 -0
  5. package/brand.js +24 -0
  6. package/converter.d.ts +149 -105
  7. package/converter.d.ts.map +1 -0
  8. package/converter.js +46 -59
  9. package/converters.d.ts +432 -194
  10. package/converters.d.ts.map +1 -0
  11. package/converters.js +262 -151
  12. package/csvHelpers.d.ts +7 -0
  13. package/csvHelpers.d.ts.map +1 -0
  14. package/csvHelpers.js +12 -2
  15. package/extendedArray.d.ts +46 -0
  16. package/extendedArray.d.ts.map +1 -0
  17. package/extendedArray.js +46 -1
  18. package/formatter.d.ts +53 -0
  19. package/formatter.d.ts.map +1 -0
  20. package/formatter.js +24 -1
  21. package/hash.d.ts +31 -3
  22. package/hash.d.ts.map +1 -0
  23. package/hash.js +36 -5
  24. package/index.d.ts +7 -3
  25. package/index.d.ts.map +1 -0
  26. package/index.js +16 -6
  27. package/logger.d.ts +3 -2
  28. package/logger.d.ts.map +1 -0
  29. package/logger.js +1 -1
  30. package/package.json +13 -9
  31. package/rangeOf.d.ts +96 -0
  32. package/rangeOf.d.ts.map +1 -0
  33. package/rangeOf.js +80 -1
  34. package/result.d.ts +393 -39
  35. package/result.d.ts.map +1 -0
  36. package/result.js +259 -49
  37. package/ts-utils.d.ts +2451 -0
  38. package/tsdoc-metadata.json +11 -0
  39. package/utils.d.ts +49 -27
  40. package/utils.d.ts.map +1 -0
  41. package/utils.js +45 -28
  42. package/validation/boolean.d.ts +27 -0
  43. package/validation/boolean.d.ts.map +1 -0
  44. package/validation/boolean.js +59 -0
  45. package/validation/classes.d.ts +5 -0
  46. package/validation/classes.d.ts.map +1 -0
  47. package/validation/classes.js +34 -0
  48. package/validation/field.d.ts +43 -0
  49. package/validation/field.d.ts.map +1 -0
  50. package/validation/field.js +72 -0
  51. package/validation/genericValidator.d.ts +84 -0
  52. package/validation/genericValidator.d.ts.map +1 -0
  53. package/validation/genericValidator.js +138 -0
  54. package/validation/index.d.ts +7 -0
  55. package/validation/index.d.ts.map +1 -0
  56. package/validation/index.js +59 -0
  57. package/validation/number.d.ts +27 -0
  58. package/validation/number.d.ts.map +1 -0
  59. package/validation/number.js +57 -0
  60. package/validation/object.d.ts +115 -0
  61. package/validation/object.d.ts.map +1 -0
  62. package/validation/object.js +143 -0
  63. package/validation/string.d.ts +27 -0
  64. package/validation/string.d.ts.map +1 -0
  65. package/validation/string.js +57 -0
  66. package/validation/traits.d.ts +68 -0
  67. package/validation/traits.d.ts.map +1 -0
  68. package/validation/traits.js +58 -0
  69. package/validation/validator.d.ts +82 -0
  70. package/validation/validator.d.ts.map +1 -0
  71. package/validation/validator.js +24 -0
  72. package/validation/validatorBase.d.ts +25 -0
  73. package/validation/validatorBase.d.ts.map +1 -0
  74. package/validation/validatorBase.js +44 -0
  75. package/validation/validators.d.ts +32 -0
  76. package/validation/validators.d.ts.map +1 -0
  77. package/validation/validators.js +59 -0
package/csvHelpers.d.ts CHANGED
@@ -1,2 +1,9 @@
1
1
  import { Result } from './result';
2
+ /**
3
+ * Reads a CSV file from a supplied path.
4
+ * @param srcPath - Source path from which the file is read.
5
+ * @returns The contents of the file.
6
+ * @beta
7
+ */
2
8
  export declare function readCsvFileSync(srcPath: string): Result<unknown>;
9
+ //# sourceMappingURL=csvHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csvHelpers.d.ts","sourceRoot":"","sources":["../src/csvHelpers.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,MAAM,EAAiB,MAAM,UAAU,CAAC;AAGjD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAOhE"}
package/csvHelpers.js CHANGED
@@ -22,7 +22,11 @@
22
22
  */
23
23
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
24
  if (k2 === undefined) k2 = k;
25
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
26
30
  }) : (function(o, m, k, k2) {
27
31
  if (k2 === undefined) k2 = k;
28
32
  o[k2] = m[k];
@@ -48,6 +52,12 @@ const fs = __importStar(require("fs"));
48
52
  const path = __importStar(require("path"));
49
53
  const result_1 = require("./result");
50
54
  const sync_1 = __importDefault(require("csv-parse/lib/sync"));
55
+ /**
56
+ * Reads a CSV file from a supplied path.
57
+ * @param srcPath - Source path from which the file is read.
58
+ * @returns The contents of the file.
59
+ * @beta
60
+ */
51
61
  function readCsvFileSync(srcPath) {
52
62
  return (0, result_1.captureResult)(() => {
53
63
  const fullPath = path.resolve(srcPath);
@@ -57,4 +67,4 @@ function readCsvFileSync(srcPath) {
57
67
  });
58
68
  }
59
69
  exports.readCsvFileSync = readCsvFileSync;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2SGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jc3ZIZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHFDQUFpRDtBQUNqRCw4REFBc0M7QUFFdEMsU0FBZ0IsZUFBZSxDQUFDLE9BQWU7SUFDM0MsT0FBTyxJQUFBLHNCQUFhLEVBQUMsR0FBRyxFQUFFO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUQsMkJBQTJCO1FBQzNCLE9BQU8sSUFBQSxjQUFJLEVBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFQRCwwQ0FPQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0IH0gZnJvbSAnLi9yZXN1bHQnO1xuaW1wb3J0IHN5bmMgZnJvbSAnY3N2LXBhcnNlL2xpYi9zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDc3ZGaWxlU3luYyhzcmNQYXRoOiBzdHJpbmcpOiBSZXN1bHQ8dW5rbm93bj4ge1xuICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUoc3JjUGF0aCk7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsICd1dGY4JykudG9TdHJpbmcoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHJldHVybiBzeW5jKGJvZHksIHsgdHJpbTogdHJ1ZSwgZnJvbV9saW5lOiAyfSk7XG4gICAgfSk7XG59XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2SGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jc3ZIZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixxQ0FBaUQ7QUFDakQsOERBQXNDO0FBRXRDOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE9BQWU7SUFDM0MsT0FBTyxJQUFBLHNCQUFhLEVBQUMsR0FBRyxFQUFFO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUQsMkJBQTJCO1FBQzNCLE9BQU8sSUFBQSxjQUFJLEVBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFQRCwwQ0FPQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0IH0gZnJvbSAnLi9yZXN1bHQnO1xuaW1wb3J0IHN5bmMgZnJvbSAnY3N2LXBhcnNlL2xpYi9zeW5jJztcblxuLyoqXG4gKiBSZWFkcyBhIENTViBmaWxlIGZyb20gYSBzdXBwbGllZCBwYXRoLlxuICogQHBhcmFtIHNyY1BhdGggLSBTb3VyY2UgcGF0aCBmcm9tIHdoaWNoIHRoZSBmaWxlIGlzIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUuXG4gKiBAYmV0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZENzdkZpbGVTeW5jKHNyY1BhdGg6IHN0cmluZyk6IFJlc3VsdDx1bmtub3duPiB7XG4gICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShzcmNQYXRoKTtcbiAgICAgICAgY29uc3QgYm9keSA9IGZzLnJlYWRGaWxlU3luYyhmdWxsUGF0aCwgJ3V0ZjgnKS50b1N0cmluZygpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgcmV0dXJuIHN5bmMoYm9keSwgeyB0cmltOiB0cnVlLCBmcm9tX2xpbmU6IDJ9KTtcbiAgICB9KTtcbn1cbiJdfQ==
@@ -1,10 +1,56 @@
1
1
  import { Result } from './result';
2
+ /**
3
+ * An experimental array template which extend built-in `Array` to include a handful
4
+ * of predicates which return {@link Result | Result<T>}.
5
+ * @beta
6
+ */
2
7
  export declare class ExtendedArray<T> extends Array<T> {
3
8
  readonly itemDescription: string;
9
+ /**
10
+ * Constructs an {@link ExtendedArray}.
11
+ * @param itemDescription - Brief description of the type of each item in this array.
12
+ * @param items - The initial contents of the array.
13
+ */
4
14
  constructor(itemDescription: string, ...items: T[]);
15
+ /**
16
+ * Type guard to determine if some arbitrary array is an
17
+ * {@link ExtendedArray}
18
+ * @param a - The `Array` to be tested.
19
+ * @returns Returns `true` if `a` is an {@link ExtendedArray},
20
+ * `false` otherwise.
21
+ */
5
22
  static isExtendedArray<T>(a?: T[]): a is ExtendedArray<T>;
23
+ /**
24
+ * Determines if this array contains exactly one element which matches
25
+ * a supplied predicate.
26
+ * @param predicate - The predicate function to be applied.
27
+ * @returns Returns {@link Success | Success<T>} with the single matching
28
+ * result if exactly one item matches `predicate`. Returns {@link Failure}
29
+ * with an error message if there are no matches or more than one match.
30
+ */
6
31
  single(predicate?: (item: T) => boolean): Result<T>;
32
+ /**
33
+ * Returns the first element of an {@link ExtendedArray}. Fails with an
34
+ * error message if the array is empty.
35
+ * @param failMessage - Optional message to be displayed in the event of failure.
36
+ * @returns Returns {@link Success | Success<T>} with the value of the first element
37
+ * in the array, or {@link Failure} with an error message if the array is empty.
38
+ */
7
39
  first(failMessage?: string): Result<T>;
40
+ /**
41
+ * Returns an array containing all elements of an {@link ExtendedArray}. Fails with
42
+ * an error message if the array is empty.
43
+ * @param failMessage - Optional message to be displayed in the event of failure.
44
+ * @returns Returns {@link Success | Success<T[]>} with a new (non-extended) `Array`
45
+ * containing the elements of this array, or {@link Failure} with an error message
46
+ * if the array is empty.
47
+ */
8
48
  atLeastOne(failMessage?: string): Result<T[]>;
49
+ /**
50
+ * Gets a new (non-extended) `Array` containing all of the elements from this
51
+ * {@link ExtendedArray}.
52
+ * @returns A new (non-extended) `Array<T>`.
53
+ */
9
54
  all(): T[];
10
55
  }
56
+ //# sourceMappingURL=extendedArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendedArray.d.ts","sourceRoot":"","sources":["../src/extendedArray.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAiB,MAAM,UAAU,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,aAAa,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC1C,SAAgB,eAAe,EAAE,MAAM,CAAC;IAExC;;;;OAIG;gBACgB,eAAe,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE;IAKzD;;;;;;OAMG;WACW,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;IAIhE;;;;;;;OAOG;IACI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;IAW1D;;;;;;OAMG;IACI,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAO7C;;;;;;;OAOG;IACI,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC;IAOpD;;;;OAIG;IACI,GAAG,IAAI,CAAC,EAAE;CAGpB"}
package/extendedArray.js CHANGED
@@ -23,14 +23,39 @@
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.ExtendedArray = void 0;
25
25
  const result_1 = require("./result");
26
+ /**
27
+ * An experimental array template which extend built-in `Array` to include a handful
28
+ * of predicates which return {@link Result | Result<T>}.
29
+ * @beta
30
+ */
26
31
  class ExtendedArray extends Array {
32
+ /**
33
+ * Constructs an {@link ExtendedArray}.
34
+ * @param itemDescription - Brief description of the type of each item in this array.
35
+ * @param items - The initial contents of the array.
36
+ */
27
37
  constructor(itemDescription, ...items) {
28
38
  super(...items);
29
39
  this.itemDescription = itemDescription;
30
40
  }
41
+ /**
42
+ * Type guard to determine if some arbitrary array is an
43
+ * {@link ExtendedArray}
44
+ * @param a - The `Array` to be tested.
45
+ * @returns Returns `true` if `a` is an {@link ExtendedArray},
46
+ * `false` otherwise.
47
+ */
31
48
  static isExtendedArray(a) {
32
49
  return a instanceof ExtendedArray;
33
50
  }
51
+ /**
52
+ * Determines if this array contains exactly one element which matches
53
+ * a supplied predicate.
54
+ * @param predicate - The predicate function to be applied.
55
+ * @returns Returns {@link Success | Success<T>} with the single matching
56
+ * result if exactly one item matches `predicate`. Returns {@link Failure}
57
+ * with an error message if there are no matches or more than one match.
58
+ */
34
59
  single(predicate) {
35
60
  const match = (predicate ? this.filter(predicate) : this);
36
61
  if (match.length === 1) {
@@ -41,21 +66,41 @@ class ExtendedArray extends Array {
41
66
  }
42
67
  return (0, result_1.fail)(`${this.itemDescription} matches ${match.length} items`);
43
68
  }
69
+ /**
70
+ * Returns the first element of an {@link ExtendedArray}. Fails with an
71
+ * error message if the array is empty.
72
+ * @param failMessage - Optional message to be displayed in the event of failure.
73
+ * @returns Returns {@link Success | Success<T>} with the value of the first element
74
+ * in the array, or {@link Failure} with an error message if the array is empty.
75
+ */
44
76
  first(failMessage) {
45
77
  if (this.length > 0) {
46
78
  return (0, result_1.succeed)(this[0]);
47
79
  }
48
80
  return (0, result_1.fail)(failMessage !== null && failMessage !== void 0 ? failMessage : `${this.itemDescription} not found`);
49
81
  }
82
+ /**
83
+ * Returns an array containing all elements of an {@link ExtendedArray}. Fails with
84
+ * an error message if the array is empty.
85
+ * @param failMessage - Optional message to be displayed in the event of failure.
86
+ * @returns Returns {@link Success | Success<T[]>} with a new (non-extended) `Array`
87
+ * containing the elements of this array, or {@link Failure} with an error message
88
+ * if the array is empty.
89
+ */
50
90
  atLeastOne(failMessage) {
51
91
  if (this.length > 0) {
52
92
  return (0, result_1.succeed)(Array.from(this));
53
93
  }
54
94
  return (0, result_1.fail)(failMessage !== null && failMessage !== void 0 ? failMessage : `${this.itemDescription} not found`);
55
95
  }
96
+ /**
97
+ * Gets a new (non-extended) `Array` containing all of the elements from this
98
+ * {@link ExtendedArray}.
99
+ * @returns A new (non-extended) `Array<T>`.
100
+ */
56
101
  all() {
57
102
  return Array.from(this);
58
103
  }
59
104
  }
60
105
  exports.ExtendedArray = ExtendedArray;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWRBcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlbmRlZEFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILHFDQUFpRDtBQUVqRCxNQUFhLGFBQWlCLFNBQVEsS0FBUTtJQUcxQyxZQUFtQixlQUF1QixFQUFFLEdBQUcsS0FBVTtRQUNyRCxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBSSxDQUFPO1FBQ3BDLE9BQU8sQ0FBQyxZQUFZLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQWdDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sSUFBQSxnQkFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNwQixPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxDQUFDLENBQUM7U0FDcEQ7UUFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQW9CO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxJQUFBLGdCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLFdBQVcsYUFBWCxXQUFXLGNBQVgsV0FBVyxHQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLFVBQVUsQ0FBQyxXQUFvQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sSUFBQSxnQkFBTyxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sSUFBQSxhQUFJLEVBQUMsV0FBVyxhQUFYLFdBQVcsY0FBWCxXQUFXLEdBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxZQUFZLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sR0FBRztRQUNOLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0o7QUF4Q0Qsc0NBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxyXG4gKlxyXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XHJcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcclxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xyXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXHJcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xyXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxyXG4gKlxyXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcclxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cclxuICpcclxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxyXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcclxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXHJcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcclxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcclxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcclxuICogU09GVFdBUkUuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgUmVzdWx0LCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnLi9yZXN1bHQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEV4dGVuZGVkQXJyYXk8VD4gZXh0ZW5kcyBBcnJheTxUPiB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXRlbURlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGl0ZW1EZXNjcmlwdGlvbjogc3RyaW5nLCAuLi5pdGVtczogVFtdKSB7XHJcbiAgICAgICAgc3VwZXIoLi4uaXRlbXMpO1xyXG4gICAgICAgIHRoaXMuaXRlbURlc2NyaXB0aW9uID0gaXRlbURlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNFeHRlbmRlZEFycmF5PFQ+KGE/OiBUW10pOiBhIGlzIEV4dGVuZGVkQXJyYXk8VD4ge1xyXG4gICAgICAgIHJldHVybiBhIGluc3RhbmNlb2YgRXh0ZW5kZWRBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2luZ2xlKHByZWRpY2F0ZT86IChpdGVtOiBUKSA9PiBib29sZWFuKTogUmVzdWx0PFQ+IHtcclxuICAgICAgICBjb25zdCBtYXRjaCA9IChwcmVkaWNhdGUgPyB0aGlzLmZpbHRlcihwcmVkaWNhdGUpIDogdGhpcyk7XHJcbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChtYXRjaFswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtYXRjaC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7dGhpcy5pdGVtRGVzY3JpcHRpb259IG5vdCBmb3VuZGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFpbChgJHt0aGlzLml0ZW1EZXNjcmlwdGlvbn0gbWF0Y2hlcyAke21hdGNoLmxlbmd0aH0gaXRlbXNgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZmlyc3QoZmFpbE1lc3NhZ2U/OiBzdHJpbmcpOiBSZXN1bHQ8VD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpc1swXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWlsKGZhaWxNZXNzYWdlID8/IGAke3RoaXMuaXRlbURlc2NyaXB0aW9ufSBub3QgZm91bmRgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXRMZWFzdE9uZShmYWlsTWVzc2FnZT86IHN0cmluZyk6IFJlc3VsdDxUW10+IHtcclxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKEFycmF5LmZyb20odGhpcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFpbChmYWlsTWVzc2FnZSA/PyBgJHt0aGlzLml0ZW1EZXNjcmlwdGlvbn0gbm90IGZvdW5kYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFsbCgpOiBUW10ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWRBcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlbmRlZEFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILHFDQUFpRDtBQUVqRDs7OztHQUlHO0FBQ0gsTUFBYSxhQUFpQixTQUFRLEtBQVE7SUFHMUM7Ozs7T0FJRztJQUNILFlBQW1CLGVBQXVCLEVBQUUsR0FBRyxLQUFVO1FBQ3JELEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUFJLENBQU87UUFDcEMsT0FBTyxDQUFDLFlBQVksYUFBYSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFNBQWdDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sSUFBQSxnQkFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNwQixPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxDQUFDLENBQUM7U0FDcEQ7UUFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFdBQW9CO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxJQUFBLGdCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0I7UUFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLFdBQVcsYUFBWCxXQUFXLGNBQVgsV0FBVyxHQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxVQUFVLENBQUMsV0FBb0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqQixPQUFPLElBQUEsZ0JBQU8sRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLElBQUEsYUFBSSxFQUFDLFdBQVcsYUFBWCxXQUFXLGNBQVgsV0FBVyxHQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsWUFBWSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHO1FBQ04sT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDSjtBQWhGRCxzQ0FnRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXHJcbiAqXHJcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcclxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxyXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXHJcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcclxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXHJcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XHJcbiAqXHJcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxyXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxyXG4gKlxyXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXHJcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxyXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcclxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxyXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxyXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxyXG4gKiBTT0ZUV0FSRS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBSZXN1bHQsIGZhaWwsIHN1Y2NlZWQgfSBmcm9tICcuL3Jlc3VsdCc7XHJcblxyXG4vKipcclxuICogQW4gZXhwZXJpbWVudGFsIGFycmF5IHRlbXBsYXRlIHdoaWNoIGV4dGVuZCBidWlsdC1pbiBgQXJyYXlgIHRvIGluY2x1ZGUgYSBoYW5kZnVsXHJcbiAqIG9mIHByZWRpY2F0ZXMgd2hpY2ggcmV0dXJuIHtAbGluayBSZXN1bHQgfCBSZXN1bHQ8VD59LlxyXG4gKiBAYmV0YVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEV4dGVuZGVkQXJyYXk8VD4gZXh0ZW5kcyBBcnJheTxUPiB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaXRlbURlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGFuIHtAbGluayBFeHRlbmRlZEFycmF5fS5cclxuICAgICAqIEBwYXJhbSBpdGVtRGVzY3JpcHRpb24gLSBCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgdHlwZSBvZiBlYWNoIGl0ZW0gaW4gdGhpcyBhcnJheS5cclxuICAgICAqIEBwYXJhbSBpdGVtcyAtIFRoZSBpbml0aWFsIGNvbnRlbnRzIG9mIHRoZSBhcnJheS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGl0ZW1EZXNjcmlwdGlvbjogc3RyaW5nLCAuLi5pdGVtczogVFtdKSB7XHJcbiAgICAgICAgc3VwZXIoLi4uaXRlbXMpO1xyXG4gICAgICAgIHRoaXMuaXRlbURlc2NyaXB0aW9uID0gaXRlbURlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZSBndWFyZCB0byBkZXRlcm1pbmUgaWYgc29tZSBhcmJpdHJhcnkgYXJyYXkgaXMgYW5cclxuICAgICAqIHtAbGluayBFeHRlbmRlZEFycmF5fVxyXG4gICAgICogQHBhcmFtIGEgLSBUaGUgYEFycmF5YCB0byBiZSB0ZXN0ZWQuXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIGB0cnVlYCBpZiBgYWAgaXMgYW4ge0BsaW5rIEV4dGVuZGVkQXJyYXl9LFxyXG4gICAgICogYGZhbHNlYCBvdGhlcndpc2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNFeHRlbmRlZEFycmF5PFQ+KGE/OiBUW10pOiBhIGlzIEV4dGVuZGVkQXJyYXk8VD4ge1xyXG4gICAgICAgIHJldHVybiBhIGluc3RhbmNlb2YgRXh0ZW5kZWRBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZXMgaWYgdGhpcyBhcnJheSBjb250YWlucyBleGFjdGx5IG9uZSBlbGVtZW50IHdoaWNoIG1hdGNoZXNcclxuICAgICAqIGEgc3VwcGxpZWQgcHJlZGljYXRlLlxyXG4gICAgICogQHBhcmFtIHByZWRpY2F0ZSAtIFRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gYmUgYXBwbGllZC5cclxuICAgICAqIEByZXR1cm5zIFJldHVybnMge0BsaW5rIFN1Y2Nlc3MgfCBTdWNjZXNzPFQ+fSB3aXRoIHRoZSBzaW5nbGUgbWF0Y2hpbmdcclxuICAgICAqIHJlc3VsdCBpZiBleGFjdGx5IG9uZSBpdGVtIG1hdGNoZXMgYHByZWRpY2F0ZWAuICBSZXR1cm5zIHtAbGluayBGYWlsdXJlfVxyXG4gICAgICogd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzIG9yIG1vcmUgdGhhbiBvbmUgbWF0Y2guXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaW5nbGUocHJlZGljYXRlPzogKGl0ZW06IFQpID0+IGJvb2xlYW4pOiBSZXN1bHQ8VD4ge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gKHByZWRpY2F0ZSA/IHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkgOiB0aGlzKTtcclxuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKG1hdGNoWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFpbChgJHt0aGlzLml0ZW1EZXNjcmlwdGlvbn0gbm90IGZvdW5kYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWlsKGAke3RoaXMuaXRlbURlc2NyaXB0aW9ufSBtYXRjaGVzICR7bWF0Y2gubGVuZ3RofSBpdGVtc2ApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiB7QGxpbmsgRXh0ZW5kZWRBcnJheX0uIEZhaWxzIHdpdGggYW5cclxuICAgICAqIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGFycmF5IGlzIGVtcHR5LlxyXG4gICAgICogQHBhcmFtIGZhaWxNZXNzYWdlIC0gT3B0aW9uYWwgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV2ZW50IG9mIGZhaWx1cmUuXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHtAbGluayBTdWNjZXNzIHwgU3VjY2VzczxUPn0gd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnRcclxuICAgICAqIGluIHRoZSBhcnJheSwgb3Ige0BsaW5rIEZhaWx1cmV9IHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgYXJyYXkgaXMgZW1wdHkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaXJzdChmYWlsTWVzc2FnZT86IHN0cmluZyk6IFJlc3VsdDxUPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhaWwoZmFpbE1lc3NhZ2UgPz8gYCR7dGhpcy5pdGVtRGVzY3JpcHRpb259IG5vdCBmb3VuZGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIGFsbCBlbGVtZW50cyBvZiBhbiB7QGxpbmsgRXh0ZW5kZWRBcnJheX0uIEZhaWxzIHdpdGhcclxuICAgICAqIGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlIGFycmF5IGlzIGVtcHR5LlxyXG4gICAgICogQHBhcmFtIGZhaWxNZXNzYWdlIC0gT3B0aW9uYWwgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGV2ZW50IG9mIGZhaWx1cmUuXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHtAbGluayBTdWNjZXNzIHwgU3VjY2VzczxUW10+fSB3aXRoIGEgbmV3IChub24tZXh0ZW5kZWQpIGBBcnJheWBcclxuICAgICAqIGNvbnRhaW5pbmcgdGhlIGVsZW1lbnRzIG9mIHRoaXMgYXJyYXksIG9yIHtAbGluayBGYWlsdXJlfSB3aXRoIGFuIGVycm9yIG1lc3NhZ2VcclxuICAgICAqIGlmIHRoZSBhcnJheSBpcyBlbXB0eS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGF0TGVhc3RPbmUoZmFpbE1lc3NhZ2U/OiBzdHJpbmcpOiBSZXN1bHQ8VFtdPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChBcnJheS5mcm9tKHRoaXMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhaWwoZmFpbE1lc3NhZ2UgPz8gYCR7dGhpcy5pdGVtRGVzY3JpcHRpb259IG5vdCBmb3VuZGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhIG5ldyAobm9uLWV4dGVuZGVkKSBgQXJyYXlgIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSBlbGVtZW50cyBmcm9tIHRoaXNcclxuICAgICAqIHtAbGluayBFeHRlbmRlZEFycmF5fS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IChub24tZXh0ZW5kZWQpIGBBcnJheTxUPmAuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhbGwoKTogVFtdIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcclxuICAgIH1cclxufVxyXG4iXX0=
package/formatter.d.ts CHANGED
@@ -1,13 +1,66 @@
1
1
  import { Result } from './result';
2
+ /**
3
+ * Destination format for some formatted string.
4
+ * @beta
5
+ */
2
6
  export declare type FormatTargets = 'text' | 'markdown' | 'embed';
7
+ /**
8
+ * Interface for an object that can be formatted.
9
+ * @beta
10
+ */
3
11
  export interface Formattable {
12
+ /**
13
+ * Formats an object using the supplied mustache template.
14
+ * @param format - A mustache template used to format the object.
15
+ * @returns {@link Success} with the resulting string, or {@link Failure}
16
+ * with an error message if an error occurs.
17
+ */
4
18
  format(format: string): Result<string>;
5
19
  }
20
+ /**
21
+ * Base class which adds common formatting.
22
+ * @beta
23
+ */
6
24
  export declare class FormattableBase {
25
+ /**
26
+ * Helper enables derived classes to add named details to a formatted presentation.
27
+ * @param details - An array of detail description strings.
28
+ * @param label - Label to use for the new detail.
29
+ * @param value - Value to use for the new detail.
30
+ * @internal
31
+ */
7
32
  protected static _tryAddDetail(details: string[], label: string, value: string | undefined): void;
33
+ /**
34
+ * {@inheritdoc Formattable.format}
35
+ */
8
36
  format(template: string): Result<string>;
9
37
  }
38
+ /**
39
+ * Type definition for a formatting function, which takes a `string` and an
40
+ * item and returns {@link Result | Result<string>}.
41
+ * @beta
42
+ */
10
43
  export declare type Formatter<T> = (format: string, item: T) => Result<string>;
44
+ /**
45
+ * A collection of {@link Formatter | formatters} indexed by target name, to enable
46
+ * different format methods per output target.
47
+ * @beta
48
+ */
11
49
  export declare type FormattersByExtendedTarget<TFT extends FormatTargets, T> = Record<TFT, Formatter<T>>;
50
+ /**
51
+ * A collection of {@link Formatter | formatters} indexed by the {@link FormatTargets | default supported
52
+ * target formats}.
53
+ * @beta
54
+ */
12
55
  export declare type FormattersByTarget<T> = FormattersByExtendedTarget<FormatTargets, T>;
56
+ /**
57
+ * Formats a list of items using the supplied template and formatter, one result
58
+ * per output line.
59
+ * @param format - A mustache template used to format each item.
60
+ * @param items - The items to be formatted.
61
+ * @param itemFormatter - The {@link Formatter | Formatter<T>} used to format each item.
62
+ * @returns The resulting string.
63
+ * @beta
64
+ */
13
65
  export declare function formatList<T>(format: string, items: T[], itemFormatter: Formatter<T>): Result<string>;
66
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAsC,MAAM,UAAU,CAAC;AAKtE;;;GAGG;AACH,oBAAY,aAAa,GAAG,MAAM,GAAC,UAAU,GAAC,OAAO,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,qBAAa,eAAe;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAC,SAAS,GAAG,IAAI;IAO/F;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAGlD;AAED;;;;GAIG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;AAEvE;;;;GAIG;AACH,oBAAY,0BAA0B,CAAC,GAAG,SAAS,aAAa,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG;;;;GAIG;AACH,oBAAY,kBAAkB,CAAC,CAAC,IAAI,0BAA0B,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAEjF;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAOrG"}
package/formatter.js CHANGED
@@ -28,18 +28,41 @@ exports.formatList = exports.FormattableBase = void 0;
28
28
  const result_1 = require("./result");
29
29
  const mustache_1 = __importDefault(require("mustache"));
30
30
  mustache_1.default.escape = (s) => s;
31
+ /**
32
+ * Base class which adds common formatting.
33
+ * @beta
34
+ */
31
35
  class FormattableBase {
36
+ /**
37
+ * Helper enables derived classes to add named details to a formatted presentation.
38
+ * @param details - An array of detail description strings.
39
+ * @param label - Label to use for the new detail.
40
+ * @param value - Value to use for the new detail.
41
+ * @internal
42
+ */
32
43
  static _tryAddDetail(details, label, value) {
33
44
  if (value !== undefined) {
34
45
  const padded = ` ${label}:`.padEnd(20, ' ');
35
46
  details.push(`${padded} ${value}`);
36
47
  }
37
48
  }
49
+ /**
50
+ * {@inheritdoc Formattable.format}
51
+ */
38
52
  format(template) {
39
53
  return (0, result_1.captureResult)(() => mustache_1.default.render(template, this));
40
54
  }
41
55
  }
42
56
  exports.FormattableBase = FormattableBase;
57
+ /**
58
+ * Formats a list of items using the supplied template and formatter, one result
59
+ * per output line.
60
+ * @param format - A mustache template used to format each item.
61
+ * @param items - The items to be formatted.
62
+ * @param itemFormatter - The {@link Formatter | Formatter<T>} used to format each item.
63
+ * @returns The resulting string.
64
+ * @beta
65
+ */
43
66
  function formatList(format, items, itemFormatter) {
44
67
  return (0, result_1.mapResults)(items.map((item) => {
45
68
  return itemFormatter(format, item);
@@ -49,4 +72,4 @@ function formatList(format, items, itemFormatter) {
49
72
  });
50
73
  }
51
74
  exports.formatList = formatList;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7QUFFSCxxQ0FBc0U7QUFDdEUsd0RBQWdDO0FBRWhDLGtCQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFRbkMsTUFBYSxlQUFlO0lBQ2QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFpQixFQUFFLEtBQWEsRUFBRSxLQUF1QjtRQUNwRixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDckIsTUFBTSxNQUFNLEdBQUcsS0FBSyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBZ0I7UUFDMUIsT0FBTyxJQUFBLHNCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsa0JBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBWEQsMENBV0M7QUFNRCxTQUFnQixVQUFVLENBQUksTUFBYyxFQUFFLEtBQVUsRUFBRSxhQUEyQjtJQUNqRixPQUFPLElBQUEsbUJBQVUsRUFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDakMsT0FBTyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBaUIsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFBLGdCQUFPLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVBELGdDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJy4vcmVzdWx0JztcbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5cbk11c3RhY2hlLmVzY2FwZSA9IChzOiBzdHJpbmcpID0+IHM7XG5cbmV4cG9ydCB0eXBlIEZvcm1hdFRhcmdldHMgPSAndGV4dCd8J21hcmtkb3duJ3wnZW1iZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRhYmxlIHtcbiAgICBmb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiBSZXN1bHQ8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1hdHRhYmxlQmFzZSB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdHJ5QWRkRGV0YWlsKGRldGFpbHM6IHN0cmluZ1tdLCBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgcGFkZGVkID0gYCAgJHtsYWJlbH06YC5wYWRFbmQoMjAsICcgJyk7XG4gICAgICAgICAgICBkZXRhaWxzLnB1c2goYCR7cGFkZGVkfSAke3ZhbHVlfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdCh0ZW1wbGF0ZTogc3RyaW5nKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBNdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsIHRoaXMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIEZvcm1hdHRlcjxUPiA9IChmb3JtYXQ6IHN0cmluZywgaXRlbTogVCkgPT4gUmVzdWx0PHN0cmluZz47XG5leHBvcnQgdHlwZSBGb3JtYXR0ZXJzQnlFeHRlbmRlZFRhcmdldDxURlQgZXh0ZW5kcyBGb3JtYXRUYXJnZXRzLCBUPiA9IFJlY29yZDxURlQsIEZvcm1hdHRlcjxUPj47XG5leHBvcnQgdHlwZSBGb3JtYXR0ZXJzQnlUYXJnZXQ8VD4gPSBGb3JtYXR0ZXJzQnlFeHRlbmRlZFRhcmdldDxGb3JtYXRUYXJnZXRzLCBUPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExpc3Q8VD4oZm9ybWF0OiBzdHJpbmcsIGl0ZW1zOiBUW10sIGl0ZW1Gb3JtYXR0ZXI6IEZvcm1hdHRlcjxUPik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gbWFwUmVzdWx0cyhpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW1Gb3JtYXR0ZXIoZm9ybWF0LCBpdGVtKTtcbiAgICB9KSkub25TdWNjZXNzKChyZXN1bHRzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHJlc3VsdHMuZmlsdGVyKChzKSA9PiAocyAhPT0gJycpKTtcbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoZmlsdGVyZWQuam9pbignXFxuJykpO1xuICAgIH0pO1xufVxuXG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7QUFFSCxxQ0FBc0U7QUFDdEUsd0RBQWdDO0FBRWhDLGtCQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFzQm5DOzs7R0FHRztBQUNILE1BQWEsZUFBZTtJQUN4Qjs7Ozs7O09BTUc7SUFDTyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWlCLEVBQUUsS0FBYSxFQUFFLEtBQXVCO1FBQ3BGLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUNyQixNQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQWdCO1FBQzFCLE9BQU8sSUFBQSxzQkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDSjtBQXJCRCwwQ0FxQkM7QUFzQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixVQUFVLENBQUksTUFBYyxFQUFFLEtBQVUsRUFBRSxhQUEyQjtJQUNqRixPQUFPLElBQUEsbUJBQVUsRUFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDakMsT0FBTyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBaUIsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFBLGdCQUFPLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVBELGdDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJy4vcmVzdWx0JztcbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5cbk11c3RhY2hlLmVzY2FwZSA9IChzOiBzdHJpbmcpID0+IHM7XG5cbi8qKlxuICogRGVzdGluYXRpb24gZm9ybWF0IGZvciBzb21lIGZvcm1hdHRlZCBzdHJpbmcuXG4gKiBAYmV0YVxuICovXG5leHBvcnQgdHlwZSBGb3JtYXRUYXJnZXRzID0gJ3RleHQnfCdtYXJrZG93bid8J2VtYmVkJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGFuIG9iamVjdCB0aGF0IGNhbiBiZSBmb3JtYXR0ZWQuXG4gKiBAYmV0YVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRhYmxlIHtcbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGFuIG9iamVjdCB1c2luZyB0aGUgc3VwcGxpZWQgbXVzdGFjaGUgdGVtcGxhdGUuXG4gICAgICogQHBhcmFtIGZvcm1hdCAtIEEgbXVzdGFjaGUgdGVtcGxhdGUgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7QGxpbmsgU3VjY2Vzc30gd2l0aCB0aGUgcmVzdWx0aW5nIHN0cmluZywgb3Ige0BsaW5rIEZhaWx1cmV9XG4gICAgICogd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBmb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiBSZXN1bHQ8c3RyaW5nPjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIHdoaWNoIGFkZHMgY29tbW9uIGZvcm1hdHRpbmcuXG4gKiBAYmV0YVxuICovXG5leHBvcnQgY2xhc3MgRm9ybWF0dGFibGVCYXNlIHtcbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZW5hYmxlcyBkZXJpdmVkIGNsYXNzZXMgdG8gYWRkIG5hbWVkIGRldGFpbHMgdG8gYSBmb3JtYXR0ZWQgcHJlc2VudGF0aW9uLlxuICAgICAqIEBwYXJhbSBkZXRhaWxzIC0gQW4gYXJyYXkgb2YgZGV0YWlsIGRlc2NyaXB0aW9uIHN0cmluZ3MuXG4gICAgICogQHBhcmFtIGxhYmVsIC0gTGFiZWwgdG8gdXNlIGZvciB0aGUgbmV3IGRldGFpbC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byB1c2UgZm9yIHRoZSBuZXcgZGV0YWlsLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RyeUFkZERldGFpbChkZXRhaWxzOiBzdHJpbmdbXSwgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZ3x1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZGRlZCA9IGAgICR7bGFiZWx9OmAucGFkRW5kKDIwLCAnICcpO1xuICAgICAgICAgICAgZGV0YWlscy5wdXNoKGAke3BhZGRlZH0gJHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHtAaW5oZXJpdGRvYyBGb3JtYXR0YWJsZS5mb3JtYXR9XG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdCh0ZW1wbGF0ZTogc3RyaW5nKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBNdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsIHRoaXMpKTtcbiAgICB9XG59XG5cbi8qKlxuICogVHlwZSBkZWZpbml0aW9uIGZvciBhIGZvcm1hdHRpbmcgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEgYHN0cmluZ2AgYW5kIGFuXG4gKiBpdGVtIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQgfCBSZXN1bHQ8c3RyaW5nPn0uXG4gKiBAYmV0YVxuICovXG5leHBvcnQgdHlwZSBGb3JtYXR0ZXI8VD4gPSAoZm9ybWF0OiBzdHJpbmcsIGl0ZW06IFQpID0+IFJlc3VsdDxzdHJpbmc+O1xuXG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRm9ybWF0dGVyIHwgZm9ybWF0dGVyc30gaW5kZXhlZCBieSB0YXJnZXQgbmFtZSwgdG8gZW5hYmxlXG4gKiBkaWZmZXJlbnQgZm9ybWF0IG1ldGhvZHMgcGVyIG91dHB1dCB0YXJnZXQuXG4gKiBAYmV0YVxuICovXG5leHBvcnQgdHlwZSBGb3JtYXR0ZXJzQnlFeHRlbmRlZFRhcmdldDxURlQgZXh0ZW5kcyBGb3JtYXRUYXJnZXRzLCBUPiA9IFJlY29yZDxURlQsIEZvcm1hdHRlcjxUPj47XG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRm9ybWF0dGVyIHwgZm9ybWF0dGVyc30gaW5kZXhlZCBieSB0aGUge0BsaW5rIEZvcm1hdFRhcmdldHMgfCBkZWZhdWx0IHN1cHBvcnRlZFxuICogdGFyZ2V0IGZvcm1hdHN9LlxuICogQGJldGFcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybWF0dGVyc0J5VGFyZ2V0PFQ+ID0gRm9ybWF0dGVyc0J5RXh0ZW5kZWRUYXJnZXQ8Rm9ybWF0VGFyZ2V0cywgVD47XG5cbi8qKlxuICogRm9ybWF0cyBhIGxpc3Qgb2YgaXRlbXMgdXNpbmcgdGhlIHN1cHBsaWVkIHRlbXBsYXRlIGFuZCBmb3JtYXR0ZXIsIG9uZSByZXN1bHRcbiAqIHBlciBvdXRwdXQgbGluZS5cbiAqIEBwYXJhbSBmb3JtYXQgLSBBIG11c3RhY2hlIHRlbXBsYXRlIHVzZWQgdG8gZm9ybWF0IGVhY2ggaXRlbS5cbiAqIEBwYXJhbSBpdGVtcyAtIFRoZSBpdGVtcyB0byBiZSBmb3JtYXR0ZWQuXG4gKiBAcGFyYW0gaXRlbUZvcm1hdHRlciAtIFRoZSB7QGxpbmsgRm9ybWF0dGVyIHwgRm9ybWF0dGVyPFQ+fSB1c2VkIHRvIGZvcm1hdCBlYWNoIGl0ZW0uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0aW5nIHN0cmluZy5cbiAqIEBiZXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMaXN0PFQ+KGZvcm1hdDogc3RyaW5nLCBpdGVtczogVFtdLCBpdGVtRm9ybWF0dGVyOiBGb3JtYXR0ZXI8VD4pOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG1hcFJlc3VsdHMoaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtRm9ybWF0dGVyKGZvcm1hdCwgaXRlbSk7XG4gICAgfSkpLm9uU3VjY2VzcygocmVzdWx0czogc3RyaW5nW10pID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSByZXN1bHRzLmZpbHRlcigocykgPT4gKHMgIT09ICcnKSk7XG4gICAgICAgIHJldHVybiBzdWNjZWVkKGZpbHRlcmVkLmpvaW4oJ1xcbicpKTtcbiAgICB9KTtcbn1cblxuIl19
package/hash.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  import { Result } from './result';
2
2
  /**
3
3
  * Computes an md5 hash from an array of strings. Not secure and not intended to be secure.
4
- * @param parts The strings to be hashed
4
+ * @param parts - The strings to be hashed
5
5
  * @returns An md5 hash of the parts
6
+ * @public
6
7
  */
7
8
  export declare function computeHash(parts: string[]): string;
9
+ /**
10
+ * Computes a normalized hash for an arbitrary javascript value.
11
+ * @public
12
+ */
8
13
  export declare class Normalizer {
9
14
  /**
10
15
  * Computes a normalized md5 hash from an arbitrary supplied object. Not secure and not
@@ -13,11 +18,34 @@ export declare class Normalizer {
13
18
  * Normalization just sorts Maps, Sets and object keys by hash so that differences in order
14
19
  * do not affect the hash.
15
20
  *
16
- * @param from The arbitrary unknown to be hashed
17
- * @returns An md5 hash
21
+ * @param from - The arbitrary `unknown` to be hashed.
22
+ * @returns A normalized md5 hash for the supplied value.
18
23
  */
19
24
  computeHash(from: unknown): Result<string>;
25
+ /**
26
+ * Compares two property names from some object being normalized.
27
+ * @param k1 - First key to be compared.
28
+ * @param k2 - Second key to be compared.
29
+ * @returns `1` if `k1` is greater, `-1` if `k2` is greater and
30
+ * `0` if they are equal.
31
+ * @internal
32
+ */
20
33
  protected _compareKeys(k1: unknown, k2: unknown): number;
34
+ /**
35
+ * Normalizes an array of object property entries (e.g. as returned by `Object.entries()`).
36
+ * @remarks
37
+ * Converts property names (entry key) to string and then sorts as string.
38
+ * @param entries - The entries to be normalized.
39
+ * @returns A normalized sorted array of entries.
40
+ * @internal
41
+ */
21
42
  protected _normalizeEntries(entries: Iterable<[unknown, unknown]>): [unknown, unknown][];
43
+ /**
44
+ * Constructs a normalized string representation of some literal value.
45
+ * @param from - The literal value to be normalized.
46
+ * @returns A normalized string representation of the literal.
47
+ * @internal
48
+ */
22
49
  protected _normalizeLiteral(from: string | number | bigint | boolean | symbol | undefined | Date | RegExp | null): Result<string>;
23
50
  }
51
+ //# sourceMappingURL=hash.d.ts.map
package/hash.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,MAAM,EAA4C,MAAM,UAAU,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAED;;;GAGG;AACH,qBAAa,UAAU;IACnB;;;;;;;;;OASG;IACI,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IA8BjD;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM;IAexD;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;IAIxF;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,MAAM,GAAC,SAAS,GAAC,IAAI,GAAC,MAAM,GAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;CAwBpH"}
package/hash.js CHANGED
@@ -22,7 +22,11 @@
22
22
  */
23
23
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
24
  if (k2 === undefined) k2 = k;
25
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
26
30
  }) : (function(o, m, k, k2) {
27
31
  if (k2 === undefined) k2 = k;
28
32
  o[k2] = m[k];
@@ -45,13 +49,18 @@ const crypto = __importStar(require("crypto"));
45
49
  const result_1 = require("./result");
46
50
  /**
47
51
  * Computes an md5 hash from an array of strings. Not secure and not intended to be secure.
48
- * @param parts The strings to be hashed
52
+ * @param parts - The strings to be hashed
49
53
  * @returns An md5 hash of the parts
54
+ * @public
50
55
  */
51
56
  function computeHash(parts) {
52
57
  return crypto.createHash('md5').update(parts.join('|'), 'utf8').digest('hex');
53
58
  }
54
59
  exports.computeHash = computeHash;
60
+ /**
61
+ * Computes a normalized hash for an arbitrary javascript value.
62
+ * @public
63
+ */
55
64
  class Normalizer {
56
65
  /**
57
66
  * Computes a normalized md5 hash from an arbitrary supplied object. Not secure and not
@@ -60,8 +69,8 @@ class Normalizer {
60
69
  * Normalization just sorts Maps, Sets and object keys by hash so that differences in order
61
70
  * do not affect the hash.
62
71
  *
63
- * @param from The arbitrary unknown to be hashed
64
- * @returns An md5 hash
72
+ * @param from - The arbitrary `unknown` to be hashed.
73
+ * @returns A normalized md5 hash for the supplied value.
65
74
  */
66
75
  computeHash(from) {
67
76
  switch (typeof from) {
@@ -92,6 +101,14 @@ class Normalizer {
92
101
  }
93
102
  return (0, result_1.fail)(`computeHash: Unexpected type - cannot hash '${typeof from}'`);
94
103
  }
104
+ /**
105
+ * Compares two property names from some object being normalized.
106
+ * @param k1 - First key to be compared.
107
+ * @param k2 - Second key to be compared.
108
+ * @returns `1` if `k1` is greater, `-1` if `k2` is greater and
109
+ * `0` if they are equal.
110
+ * @internal
111
+ */
95
112
  _compareKeys(k1, k2) {
96
113
  const cs1 = String(k1);
97
114
  const cs2 = String(k2);
@@ -105,9 +122,23 @@ class Normalizer {
105
122
  // istanbul ignore next
106
123
  return 0;
107
124
  }
125
+ /**
126
+ * Normalizes an array of object property entries (e.g. as returned by `Object.entries()`).
127
+ * @remarks
128
+ * Converts property names (entry key) to string and then sorts as string.
129
+ * @param entries - The entries to be normalized.
130
+ * @returns A normalized sorted array of entries.
131
+ * @internal
132
+ */
108
133
  _normalizeEntries(entries) {
109
134
  return Array.from(entries).sort((e1, e2) => this._compareKeys(e1[0], e2[0]));
110
135
  }
136
+ /**
137
+ * Constructs a normalized string representation of some literal value.
138
+ * @param from - The literal value to be normalized.
139
+ * @returns A normalized string representation of the literal.
140
+ * @internal
141
+ */
111
142
  _normalizeLiteral(from) {
112
143
  switch (typeof from) {
113
144
  case 'string':
@@ -134,4 +165,4 @@ class Normalizer {
134
165
  }
135
166
  }
136
167
  exports.Normalizer = Normalizer;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwrQ0FBaUM7QUFDakMscUNBQTRFO0FBRTVFOzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBZTtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFGRCxrQ0FFQztBQUVELE1BQWEsVUFBVTtJQUNuQjs7Ozs7Ozs7O09BU0c7SUFDSSxXQUFXLENBQUMsSUFBYTtRQUM1QixRQUFRLE9BQU8sSUFBSSxFQUFFO1lBQ2pCLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFdBQVc7Z0JBQ1osT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2hELE9BQU8sSUFBQSxzQkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUM7WUFDUCxLQUFLLFFBQVE7Z0JBQ1QsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxNQUFNLENBQUMsRUFBRTtvQkFDdkUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ2hELE9BQU8sSUFBQSxzQkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakQsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQ0ksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMxQixPQUFPLElBQUEsbUJBQVUsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDcEUsT0FBTyxJQUFBLHNCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxDQUFDO2lCQUNOO3FCQUNJLElBQUksQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUU7b0JBQ3JELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDbkU7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RTtRQUNELE9BQU8sSUFBQSxhQUFJLEVBQUMsK0NBQStDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRVMsWUFBWSxDQUFDLEVBQVcsRUFBRSxFQUFXO1FBQzNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ1gsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2I7UUFFRCx1QkFBdUI7UUFDdkIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRVMsaUJBQWlCLENBQUMsT0FBcUM7UUFDN0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQW9FO1FBQzVGLFFBQVEsT0FBTyxJQUFJLEVBQUU7WUFDakIsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBQSxnQkFBTyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxXQUFXO2dCQUNaLE9BQU8sSUFBQSxnQkFBTyxFQUFDLEdBQUcsT0FBTyxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNmLE9BQU8sSUFBQSxnQkFBTyxFQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7WUFDdEIsT0FBTyxJQUFBLGdCQUFPLEVBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsdUJBQXVCO1FBQ3ZCLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtZQUN4QixPQUFPLElBQUEsZ0JBQU8sRUFBQyxhQUFhLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDckQ7UUFDRCx1QkFBdUI7UUFDdkIsT0FBTyxJQUFBLGFBQUksRUFBQyxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNKO0FBcEZELGdDQW9GQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJy4vcmVzdWx0JztcblxuLyoqXG4gKiBDb21wdXRlcyBhbiBtZDUgaGFzaCBmcm9tIGFuIGFycmF5IG9mIHN0cmluZ3MuIE5vdCBzZWN1cmUgYW5kIG5vdCBpbnRlbmRlZCB0byBiZSBzZWN1cmUuXG4gKiBAcGFyYW0gcGFydHMgVGhlIHN0cmluZ3MgdG8gYmUgaGFzaGVkXG4gKiBAcmV0dXJucyBBbiBtZDUgaGFzaCBvZiB0aGUgcGFydHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVIYXNoKHBhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUocGFydHMuam9pbignfCcpLCAndXRmOCcpLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbmV4cG9ydCBjbGFzcyBOb3JtYWxpemVyIHtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIG5vcm1hbGl6ZWQgbWQ1IGhhc2ggZnJvbSBhbiBhcmJpdHJhcnkgc3VwcGxpZWQgb2JqZWN0LiAgTm90IHNlY3VyZSBhbmQgbm90XG4gICAgICogaW50ZW5kZWQgdG8gYmUgc2VjdXJlLiAgQWxzbyBub3QgZmFzdCBhbmQgbm90IGludGVuZGVkIHRvIGJlIGZhc3QuXG4gICAgICpcbiAgICAgKiBOb3JtYWxpemF0aW9uIGp1c3Qgc29ydHMgTWFwcywgU2V0cyBhbmQgb2JqZWN0IGtleXMgYnkgaGFzaCBzbyB0aGF0IGRpZmZlcmVuY2VzIGluIG9yZGVyXG4gICAgICogZG8gbm90IGFmZmVjdCB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmcm9tIFRoZSBhcmJpdHJhcnkgdW5rbm93biB0byBiZSBoYXNoZWRcbiAgICAgKiBAcmV0dXJucyBBbiBtZDUgaGFzaFxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlSGFzaChmcm9tOiB1bmtub3duKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICBzd2l0Y2ggKHR5cGVvZiBmcm9tKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVMaXRlcmFsKGZyb20pLm9uU3VjY2VzcygodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBjb21wdXRlSGFzaChbdl0pKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgaWYgKChmcm9tID09PSBudWxsKSB8fCAoZnJvbSBpbnN0YW5jZW9mIERhdGUpIHx8IChmcm9tIGluc3RhbmNlb2YgUmVnRXhwKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplTGl0ZXJhbChmcm9tKS5vblN1Y2Nlc3MoKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IGNvbXB1dGVIYXNoKFt2XSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmcm9tKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhmcm9tLm1hcCgoZSkgPT4gdGhpcy5jb21wdXRlSGFzaChlKSkpLm9uU3VjY2VzcygoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gY29tcHV0ZUhhc2goYSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZyb20gaW5zdGFuY2VvZiBNYXApIHx8IChmcm9tIGluc3RhbmNlb2YgU2V0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlSGFzaCh0aGlzLl9ub3JtYWxpemVFbnRyaWVzKGZyb20uZW50cmllcygpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVIYXNoKHRoaXMuX25vcm1hbGl6ZUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZnJvbSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgY29tcHV0ZUhhc2g6IFVuZXhwZWN0ZWQgdHlwZSAtIGNhbm5vdCBoYXNoICcke3R5cGVvZiBmcm9tfSdgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NvbXBhcmVLZXlzKGsxOiB1bmtub3duLCBrMjogdW5rbm93bik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGNzMSA9IFN0cmluZyhrMSk7XG4gICAgICAgIGNvbnN0IGNzMiA9IFN0cmluZyhrMik7XG4gICAgICAgIGlmIChjczEgPiBjczIpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgICAgIGlmIChjczIgPiBjczEpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbm9ybWFsaXplRW50cmllcyhlbnRyaWVzOiBJdGVyYWJsZTxbdW5rbm93biwgdW5rbm93bl0+KTogW3Vua25vd24sIHVua25vd25dW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShlbnRyaWVzKS5zb3J0KChlMSwgZTIpID0+IHRoaXMuX2NvbXBhcmVLZXlzKGUxWzBdLCBlMlswXSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfbm9ybWFsaXplTGl0ZXJhbChmcm9tOiBzdHJpbmd8bnVtYmVyfGJpZ2ludHxib29sZWFufHN5bWJvbHx1bmRlZmluZWR8RGF0ZXxSZWdFeHB8bnVsbCk6IFJlc3VsdDxzdHJpbmc+IHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgZnJvbSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChmcm9tKTtcbiAgICAgICAgICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0eXBlb2YgZnJvbX06W1tbJHtTdHJpbmcoZnJvbSl9XV1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZyb20gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKCdvYmplY3Q6W1tbbnVsbF1dJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZyb20gaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgRGF0ZTpbW1ske1N0cmluZyhmcm9tLnZhbHVlT2YoKSl9XV1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgICAgaWYgKGZyb20gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGBSZWdFeHA6W1tbJHtmcm9tLnRvU3RyaW5nKCl9XV1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgcmV0dXJuIGZhaWwoYGNhbm5vdCBub3JtYWxpemUgJHtKU09OLnN0cmluZ2lmeShmcm9tKX1gKTtcbiAgICB9XG59XG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsK0NBQWlDO0FBQ2pDLHFDQUE0RTtBQUU1RTs7Ozs7R0FLRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFlO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUZELGtDQUVDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxVQUFVO0lBQ25COzs7Ozs7Ozs7T0FTRztJQUNJLFdBQVcsQ0FBQyxJQUFhO1FBQzVCLFFBQVEsT0FBTyxJQUFJLEVBQUU7WUFDakIsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssV0FBVztnQkFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsT0FBTyxJQUFBLHNCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNQLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLE1BQU0sQ0FBQyxFQUFFO29CQUN2RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDaEQsT0FBTyxJQUFBLHNCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxDQUFDLENBQUMsQ0FBQztpQkFDTjtxQkFDSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFCLE9BQU8sSUFBQSxtQkFBVSxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUNwRSxPQUFPLElBQUEsc0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0MsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQ0ksSUFBSSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsRUFBRTtvQkFDckQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNuRTtnQkFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsT0FBTyxJQUFBLGFBQUksRUFBQywrQ0FBK0MsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sWUFBWSxDQUFDLEVBQVcsRUFBRSxFQUFXO1FBQzNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ1gsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2I7UUFFRCx1QkFBdUI7UUFDdkIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNPLGlCQUFpQixDQUFDLE9BQXFDO1FBQzdELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLGlCQUFpQixDQUFDLElBQW9FO1FBQzVGLFFBQVEsT0FBTyxJQUFJLEVBQUU7WUFDakIsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBQSxnQkFBTyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxXQUFXO2dCQUNaLE9BQU8sSUFBQSxnQkFBTyxFQUFDLEdBQUcsT0FBTyxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNmLE9BQU8sSUFBQSxnQkFBTyxFQUFDLGtCQUFrQixDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7WUFDdEIsT0FBTyxJQUFBLGdCQUFPLEVBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsdUJBQXVCO1FBQ3ZCLElBQUksSUFBSSxZQUFZLE1BQU0sRUFBRTtZQUN4QixPQUFPLElBQUEsZ0JBQU8sRUFBQyxhQUFhLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDckQ7UUFDRCx1QkFBdUI7UUFDdkIsT0FBTyxJQUFBLGFBQUksRUFBQyxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNKO0FBMUdELGdDQTBHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbCwgbWFwUmVzdWx0cywgc3VjY2VlZCB9IGZyb20gJy4vcmVzdWx0JztcblxuLyoqXG4gKiBDb21wdXRlcyBhbiBtZDUgaGFzaCBmcm9tIGFuIGFycmF5IG9mIHN0cmluZ3MuIE5vdCBzZWN1cmUgYW5kIG5vdCBpbnRlbmRlZCB0byBiZSBzZWN1cmUuXG4gKiBAcGFyYW0gcGFydHMgLSBUaGUgc3RyaW5ncyB0byBiZSBoYXNoZWRcbiAqIEByZXR1cm5zIEFuIG1kNSBoYXNoIG9mIHRoZSBwYXJ0c1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUhhc2gocGFydHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goJ21kNScpLnVwZGF0ZShwYXJ0cy5qb2luKCd8JyksICd1dGY4JykuZGlnZXN0KCdoZXgnKTtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyBhIG5vcm1hbGl6ZWQgaGFzaCBmb3IgYW4gYXJiaXRyYXJ5IGphdmFzY3JpcHQgdmFsdWUuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBOb3JtYWxpemVyIHtcbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIG5vcm1hbGl6ZWQgbWQ1IGhhc2ggZnJvbSBhbiBhcmJpdHJhcnkgc3VwcGxpZWQgb2JqZWN0LiAgTm90IHNlY3VyZSBhbmQgbm90XG4gICAgICogaW50ZW5kZWQgdG8gYmUgc2VjdXJlLiAgQWxzbyBub3QgZmFzdCBhbmQgbm90IGludGVuZGVkIHRvIGJlIGZhc3QuXG4gICAgICpcbiAgICAgKiBOb3JtYWxpemF0aW9uIGp1c3Qgc29ydHMgTWFwcywgU2V0cyBhbmQgb2JqZWN0IGtleXMgYnkgaGFzaCBzbyB0aGF0IGRpZmZlcmVuY2VzIGluIG9yZGVyXG4gICAgICogZG8gbm90IGFmZmVjdCB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmcm9tIC0gVGhlIGFyYml0cmFyeSBgdW5rbm93bmAgdG8gYmUgaGFzaGVkLlxuICAgICAqIEByZXR1cm5zIEEgbm9ybWFsaXplZCBtZDUgaGFzaCBmb3IgdGhlIHN1cHBsaWVkIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlSGFzaChmcm9tOiB1bmtub3duKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICBzd2l0Y2ggKHR5cGVvZiBmcm9tKSB7XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub3JtYWxpemVMaXRlcmFsKGZyb20pLm9uU3VjY2VzcygodikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBjb21wdXRlSGFzaChbdl0pKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgaWYgKChmcm9tID09PSBudWxsKSB8fCAoZnJvbSBpbnN0YW5jZW9mIERhdGUpIHx8IChmcm9tIGluc3RhbmNlb2YgUmVnRXhwKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplTGl0ZXJhbChmcm9tKS5vblN1Y2Nlc3MoKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IGNvbXB1dGVIYXNoKFt2XSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmcm9tKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwUmVzdWx0cyhmcm9tLm1hcCgoZSkgPT4gdGhpcy5jb21wdXRlSGFzaChlKSkpLm9uU3VjY2VzcygoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gY29tcHV0ZUhhc2goYSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoKGZyb20gaW5zdGFuY2VvZiBNYXApIHx8IChmcm9tIGluc3RhbmNlb2YgU2V0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlSGFzaCh0aGlzLl9ub3JtYWxpemVFbnRyaWVzKGZyb20uZW50cmllcygpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVIYXNoKHRoaXMuX25vcm1hbGl6ZUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZnJvbSkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgY29tcHV0ZUhhc2g6IFVuZXhwZWN0ZWQgdHlwZSAtIGNhbm5vdCBoYXNoICcke3R5cGVvZiBmcm9tfSdgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0d28gcHJvcGVydHkgbmFtZXMgZnJvbSBzb21lIG9iamVjdCBiZWluZyBub3JtYWxpemVkLlxuICAgICAqIEBwYXJhbSBrMSAtIEZpcnN0IGtleSB0byBiZSBjb21wYXJlZC5cbiAgICAgKiBAcGFyYW0gazIgLSBTZWNvbmQga2V5IHRvIGJlIGNvbXBhcmVkLlxuICAgICAqIEByZXR1cm5zIGAxYCBpZiBgazFgIGlzIGdyZWF0ZXIsIGAtMWAgaWYgYGsyYCBpcyBncmVhdGVyIGFuZFxuICAgICAqIGAwYCBpZiB0aGV5IGFyZSBlcXVhbC5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbXBhcmVLZXlzKGsxOiB1bmtub3duLCBrMjogdW5rbm93bik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGNzMSA9IFN0cmluZyhrMSk7XG4gICAgICAgIGNvbnN0IGNzMiA9IFN0cmluZyhrMik7XG4gICAgICAgIGlmIChjczEgPiBjczIpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgICAgIGlmIChjczIgPiBjczEpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZXMgYW4gYXJyYXkgb2Ygb2JqZWN0IHByb3BlcnR5IGVudHJpZXMgKGUuZy4gYXMgcmV0dXJuZWQgYnkgYE9iamVjdC5lbnRyaWVzKClgKS5cbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIENvbnZlcnRzIHByb3BlcnR5IG5hbWVzIChlbnRyeSBrZXkpIHRvIHN0cmluZyBhbmQgdGhlbiBzb3J0cyBhcyBzdHJpbmcuXG4gICAgICogQHBhcmFtIGVudHJpZXMgLSBUaGUgZW50cmllcyB0byBiZSBub3JtYWxpemVkLlxuICAgICAqIEByZXR1cm5zIEEgbm9ybWFsaXplZCBzb3J0ZWQgYXJyYXkgb2YgZW50cmllcy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX25vcm1hbGl6ZUVudHJpZXMoZW50cmllczogSXRlcmFibGU8W3Vua25vd24sIHVua25vd25dPik6IFt1bmtub3duLCB1bmtub3duXVtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZW50cmllcykuc29ydCgoZTEsIGUyKSA9PiB0aGlzLl9jb21wYXJlS2V5cyhlMVswXSwgZTJbMF0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbm9ybWFsaXplZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygc29tZSBsaXRlcmFsIHZhbHVlLlxuICAgICAqIEBwYXJhbSBmcm9tIC0gVGhlIGxpdGVyYWwgdmFsdWUgdG8gYmUgbm9ybWFsaXplZC5cbiAgICAgKiBAcmV0dXJucyBBIG5vcm1hbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBsaXRlcmFsLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfbm9ybWFsaXplTGl0ZXJhbChmcm9tOiBzdHJpbmd8bnVtYmVyfGJpZ2ludHxib29sZWFufHN5bWJvbHx1bmRlZmluZWR8RGF0ZXxSZWdFeHB8bnVsbCk6IFJlc3VsdDxzdHJpbmc+IHtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgZnJvbSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChmcm9tKTtcbiAgICAgICAgICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0eXBlb2YgZnJvbX06W1tbJHtTdHJpbmcoZnJvbSl9XV1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZyb20gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKCdvYmplY3Q6W1tbbnVsbF1dJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZyb20gaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgRGF0ZTpbW1ske1N0cmluZyhmcm9tLnZhbHVlT2YoKSl9XV1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgICAgaWYgKGZyb20gaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGBSZWdFeHA6W1tbJHtmcm9tLnRvU3RyaW5nKCl9XV1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgcmV0dXJuIGZhaWwoYGNhbm5vdCBub3JtYWxpemUgJHtKU09OLnN0cmluZ2lmeShmcm9tKX1gKTtcbiAgICB9XG59XG4iXX0=
package/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
+ export * from './brand';
1
2
  export * from './converter';
2
- export * as Converters from './converters';
3
- export * as Csv from './csvHelpers';
4
3
  export * from './extendedArray';
5
4
  export * from './formatter';
6
- export * as Hash from './hash';
7
5
  export * from './rangeOf';
8
6
  export * from './result';
9
7
  export * from './utils';
8
+ import * as Converters from './converters';
9
+ import * as Csv from './csvHelpers';
10
+ import * as Hash from './hash';
11
+ import * as Validation from './validation';
12
+ export { Converters, Csv, Hash, Validation };
13
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC"}