@alanscodelog/utils
Advanced tools
Comparing version 1.0.1 to 1.1.0
@@ -73,2 +73,2 @@ "use strict"; | ||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0E7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUdBOzs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFHQTs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBR0E7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L2V4cG9ydCAqL1xuLyogTWFudWFsbHkgR2VuZXJhdGVkIEluZGV4ICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCJcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0ICogZnJvbSBcIi4vcmV0eXBlc1wiXG5leHBvcnQgKiBhcyByZXR5cGVzIGZyb20gXCIuL3JldHlwZXNcIlxuXG5leHBvcnQgKiBmcm9tIFwiLi90ZXN0aW5nXCJcbmV4cG9ydCAqIGFzIHRlc3RpbmcgZnJvbSBcIi4vdGVzdGluZ1wiXG5cbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCJcbmV4cG9ydCAqIGFzIHR5cGVzIGZyb20gXCIuL3R5cGVzXCJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRUE7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUdBOzs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFHQTs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBR0E7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogTWFudWFsbHkgR2VuZXJhdGVkIEluZGV4ICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCJcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0ICogZnJvbSBcIi4vcmV0eXBlc1wiXG5leHBvcnQgKiBhcyByZXR5cGVzIGZyb20gXCIuL3JldHlwZXNcIlxuXG5leHBvcnQgKiBmcm9tIFwiLi90ZXN0aW5nXCJcbmV4cG9ydCAqIGFzIHRlc3RpbmcgZnJvbSBcIi4vdGVzdGluZ1wiXG5cbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCJcbmV4cG9ydCAqIGFzIHR5cGVzIGZyb20gXCIuL3R5cGVzXCJcbiJdfQ== |
@@ -1,7 +0,3 @@ | ||
/** | ||
* @packageDocumentation | ||
* @module retypes | ||
* @preferred | ||
*/ | ||
/** @packageDocumentation @module retypes @preferred */ | ||
export { keys } from "./keys"; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -14,2 +14,2 @@ "use strict"; | ||
var _keys = require("./keys"); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXR5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgcmV0eXBlc1xuICogQHByZWZlcnJlZFxuICovXG5cbi8qIEF1dG9nZW5lcmF0ZWQgSW5kZXggKi9cblxuZXhwb3J0IHsga2V5cyB9IGZyb20gXCIuL2tleXNcIlxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXR5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUlBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBAbW9kdWxlIHJldHlwZXMgQHByZWZlcnJlZCAqL1xuXG4vKiBBdXRvZ2VuZXJhdGVkIEluZGV4ICovXG5cbmV4cG9ydCB7IGtleXMgfSBmcm9tIFwiLi9rZXlzXCJcbiJdfQ== |
/** @packageDocumentation @module retypes */ | ||
import type { Keys } from "@/types"; | ||
/** | ||
* Because 99.999999999999% of the time the default typescript behavior of typing the keys as string[] is annoying and useless. | ||
* Because 99.999999999999% of the time we *don't* want the default typescript behavior of typing the keys as string[]. | ||
* | ||
* #awaiting [Exact Types](https://github.com/microsoft/TypeScript/issues/12936) to save us from this pain. | ||
*/ | ||
export declare const keys: <T>(o: T) => Extract<keyof T, string>[]; | ||
export declare const keys: <T>(o: T) => Keys<T>; | ||
//# sourceMappingURL=keys.d.ts.map |
@@ -11,6 +11,8 @@ "use strict"; | ||
/** | ||
* Because 99.999999999999% of the time the default typescript behavior of typing the keys as string[] is annoying and useless. | ||
* Because 99.999999999999% of the time we *don't* want the default typescript behavior of typing the keys as string[]. | ||
* | ||
* #awaiting [Exact Types](https://github.com/microsoft/TypeScript/issues/12936) to save us from this pain. | ||
*/ | ||
const keys = Object.keys; | ||
exports.keys = keys; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXR5cGVzL2tleXMudHMiXSwibmFtZXMiOlsia2V5cyIsIk9iamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7QUFHTyxNQUFNQSxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBcEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEBtb2R1bGUgcmV0eXBlcyAqL1xuLyoqXG4gKiBCZWNhdXNlIDk5Ljk5OTk5OTk5OTk5OSUgb2YgdGhlIHRpbWUgdGhlIGRlZmF1bHQgdHlwZXNjcmlwdCBiZWhhdmlvciBvZiB0eXBpbmcgdGhlIGtleXMgYXMgc3RyaW5nW10gaXMgYW5ub3lpbmcgYW5kIHVzZWxlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMgYXMgPFQ+KG86IFQpID0+IChFeHRyYWN0PGtleW9mIFQsIHN0cmluZz4pW11cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXR5cGVzL2tleXMudHMiXSwibmFtZXMiOlsia2V5cyIsIk9iamVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUlBOzs7OztBQUtPLE1BQU1BLElBQUksR0FBR0MsTUFBTSxDQUFDRCxJQUFwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAcGFja2FnZURvY3VtZW50YXRpb24gQG1vZHVsZSByZXR5cGVzICovXG5cbmltcG9ydCB0eXBlIHsgS2V5cyB9IGZyb20gXCJAL3R5cGVzXCJcblxuLyoqXG4gKiBCZWNhdXNlIDk5Ljk5OTk5OTk5OTk5OSUgb2YgdGhlIHRpbWUgd2UgKmRvbid0KiB3YW50IHRoZSBkZWZhdWx0IHR5cGVzY3JpcHQgYmVoYXZpb3Igb2YgdHlwaW5nIHRoZSBrZXlzIGFzIHN0cmluZ1tdLlxuICpcbiAqICNhd2FpdGluZyBbRXhhY3QgVHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMTI5MzYpIHRvIHNhdmUgdXMgZnJvbSB0aGlzIHBhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMgYXMgPFQ+KG86IFQpID0+IEtleXM8VD5cbiJdfQ== |
@@ -1,8 +0,4 @@ | ||
/** | ||
* @packageDocumentation | ||
* @module testing | ||
* @preferred | ||
*/ | ||
/** @packageDocumentation @module testing @preferred */ | ||
export { inspect_error } from "./inspect_error"; | ||
export { test_name } from "./test_name"; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -22,2 +22,2 @@ "use strict"; | ||
var _test_name = require("./test_name"); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBOztBQUVBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdGVzdGluZ1xuICogQHByZWZlcnJlZFxuICovXG5cbi8qIEF1dG9nZW5lcmF0ZWQgSW5kZXggKi9cblxuZXhwb3J0IHsgaW5zcGVjdF9lcnJvciB9IGZyb20gXCIuL2luc3BlY3RfZXJyb3JcIlxuXG5leHBvcnQgeyB0ZXN0X25hbWUgfSBmcm9tIFwiLi90ZXN0X25hbWVcIlxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBOztBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBAbW9kdWxlIHRlc3RpbmcgQHByZWZlcnJlZCAqL1xuXG4vKiBBdXRvZ2VuZXJhdGVkIEluZGV4ICovXG5cbmV4cG9ydCB7IGluc3BlY3RfZXJyb3IgfSBmcm9tIFwiLi9pbnNwZWN0X2Vycm9yXCJcbmV4cG9ydCB7IHRlc3RfbmFtZSB9IGZyb20gXCIuL3Rlc3RfbmFtZVwiXG4iXX0= |
@@ -35,2 +35,2 @@ "use strict"; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2luc3BlY3RfZXJyb3IudHMiXSwibmFtZXMiOlsiaW5zcGVjdF9lcnJvciIsImZ1bmMiLCJpbnNwZWN0IiwiZSIsInByb2Nlc3MiLCJlbnYiLCJJTlNQRUNUX0VSUk9SUyIsInVuZGVmaW5lZCIsImNvbnNvbGUiLCJ3YXJuIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7OztBQVdPLFNBQVNBLGFBQVQsQ0FBdUJDLElBQXZCLEVBQXNEQyxPQUFnQixHQUFHLEtBQXpFLEVBQWdGO0FBQ3RGLFNBQU8sTUFBWTtBQUNsQixRQUFJO0FBQ0hELE1BQUFBLElBQUk7QUFDSixLQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVO0FBQ1gsVUFBSUQsT0FBTyxJQUFJRSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsY0FBWixLQUErQkMsU0FBOUMsRUFBeUQ7QUFDeEQ7QUFDQUMsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWFOLENBQUMsQ0FBQ08sT0FBZjtBQUNBOztBQUNELFlBQU1QLENBQU47QUFDQTtBQUNELEdBVkQ7QUFXQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAcGFja2FnZURvY3VtZW50YXRpb24gQG1vZHVsZSB0ZXN0aW5nICovXG4vKipcbiAqIFdyYXBwZXIgdG8gbG9nIHRoZSBlcnJvcnMgdGhyb3duIGJ5IGZ1bmN0aW9ucyBpbiB0ZXN0cyBiZWNhdXNlIHRlc3QgbGlicmFyaWVzIChlLmcuIGplc3QsIHRlc3QpIHdvbid0IGxvZyB0aHJvd24gZXJyb3IgbWVzc2FnZXMuIEFsbG93cyBpbnNwZWN0aW5nIHRoZSBlcnJvciBtZXNzYWdlIG1hbnVhbGx5IGlmL2FzIG5lZWRlZC5cbiAqXG4gKiBUaGUgYWN0dWFsIGxvZ2dpbmcgY2FuIGJlIHR1cm5lZCBvbi9vZmYgd2l0aCB0aGUgbGFzdCBwYXJhbWV0ZXIgb3IgeW91IGNhbiBmb3JjZSB0aGVtIGFsbCBvbiBieSBzZXR0aW5nIHRoZSBJTlNQRUNUX0VSUk9SUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqXG4gKiBgYGB0c1xuICogZXhwZWN0KGluc3BlY3RfZXJyb3IoKCkgPT4ge1xuICogXHR0aHJvdyBuZXcgRXJyb3IoXCJcIilcbiAqIH0sIHRydWUpKS50by50aHJvdygpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RfZXJyb3IoZnVuYzogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnksIGluc3BlY3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRyZXR1cm4gKCk6IHZvaWQgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRmdW5jKClcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRpZiAoaW5zcGVjdCB8fCBwcm9jZXNzLmVudi5JTlNQRUNUX0VSUk9SUyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cdFx0XHRcdGNvbnNvbGUud2FybihlLm1lc3NhZ2UpXG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBlXG5cdFx0fVxuXHR9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2luc3BlY3RfZXJyb3IudHMiXSwibmFtZXMiOlsiaW5zcGVjdF9lcnJvciIsImZ1bmMiLCJpbnNwZWN0IiwiZSIsInByb2Nlc3MiLCJlbnYiLCJJTlNQRUNUX0VSUk9SUyIsInVuZGVmaW5lZCIsImNvbnNvbGUiLCJ3YXJuIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOzs7Ozs7Ozs7OztBQVdPLFNBQVNBLGFBQVQsQ0FBdUJDLElBQXZCLEVBQXNEQyxPQUFnQixHQUFHLEtBQXpFLEVBQWdGO0FBQ3RGLFNBQU8sTUFBWTtBQUNsQixRQUFJO0FBQ0hELE1BQUFBLElBQUk7QUFDSixLQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFtQjtBQUNwQixVQUFJRCxPQUFPLElBQUlFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxjQUFaLEtBQStCQyxTQUE5QyxFQUF5RDtBQUN4RDtBQUNBQyxRQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBY04sQ0FBRCxDQUFhTyxPQUExQjtBQUNBOztBQUNELFlBQU1QLENBQU47QUFDQTtBQUNELEdBVkQ7QUFXQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAcGFja2FnZURvY3VtZW50YXRpb24gQG1vZHVsZSB0ZXN0aW5nICovXG5cbi8qKlxuICogV3JhcHBlciB0byBsb2cgdGhlIGVycm9ycyB0aHJvd24gYnkgZnVuY3Rpb25zIGluIHRlc3RzIGJlY2F1c2UgdGVzdCBsaWJyYXJpZXMgKGUuZy4gamVzdCwgdGVzdCkgd29uJ3QgbG9nIHRocm93biBlcnJvciBtZXNzYWdlcy4gQWxsb3dzIGluc3BlY3RpbmcgdGhlIGVycm9yIG1lc3NhZ2UgbWFudWFsbHkgaWYvYXMgbmVlZGVkLlxuICpcbiAqIFRoZSBhY3R1YWwgbG9nZ2luZyBjYW4gYmUgdHVybmVkIG9uL29mZiB3aXRoIHRoZSBsYXN0IHBhcmFtZXRlciBvciB5b3UgY2FuIGZvcmNlIHRoZW0gYWxsIG9uIGJ5IHNldHRpbmcgdGhlIElOU1BFQ1RfRVJST1JTIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIGBgYHRzXG4gKiBleHBlY3QoaW5zcGVjdF9lcnJvcigoKSA9PiB7XG4gKiBcdHRocm93IG5ldyBFcnJvcihcIlwiKVxuICogfSwgdHJ1ZSkpLnRvLnRocm93KClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdF9lcnJvcihmdW5jOiAoLi4uYXJnczogYW55W10pID0+IGFueSwgaW5zcGVjdDogYm9vbGVhbiA9IGZhbHNlKSB7XG5cdHJldHVybiAoKTogdm9pZCA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGZ1bmMoKVxuXHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdGlmIChpbnNwZWN0IHx8IHByb2Nlc3MuZW52LklOU1BFQ1RfRVJST1JTICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblx0XHRcdFx0Y29uc29sZS53YXJuKChlIGFzIEVycm9yKS5tZXNzYWdlKVxuXHRcdFx0fVxuXHRcdFx0dGhyb3cgZVxuXHRcdH1cblx0fVxufVxuIl19 |
@@ -0,1 +1,2 @@ | ||
/** @packageDocumentation @module testing */ | ||
/** | ||
@@ -5,3 +6,3 @@ * Used for getting the file name of a test spec (relative to the `tests/tests` folder) so it's one less thing we have to worry about when creating a new spec. Its name is just its filename (or if it's nested: folder/filename), making everything easier to find. | ||
* ```ts | ||
* // tests/folder/some_file.spec.ts | ||
* // tests/folder/some_file.spec.ts | ||
* describe(test_name(), () => {}) | ||
@@ -13,3 +14,3 @@ * // = folder/some_file | ||
* ```ts | ||
* // tests/folder/some_file.spec.ts | ||
* // tests/folder/some_file.spec.ts | ||
* describe(test_name({nest: false}), () => {}) | ||
@@ -25,2 +26,4 @@ * // = some_file | ||
* Note: This function assumes the test directory is called test/tests and is in `process.cwd()`. | ||
* | ||
* It will throw if it can't find a test name. | ||
*/ | ||
@@ -30,3 +33,3 @@ export declare function test_name({ nest, __filename }?: { | ||
__filename?: string; | ||
}): string; | ||
}, sep?: string): string; | ||
//# sourceMappingURL=test_name.d.ts.map |
"use strict"; | ||
require("core-js/modules/es.string.includes"); | ||
require("core-js/modules/es.string.replace"); | ||
require("core-js/modules/es.string.match"); | ||
require("core-js/modules/es.string.split"); | ||
Object.defineProperty(exports, "__esModule", { | ||
@@ -24,3 +20,3 @@ value: true | ||
* ```ts | ||
* // tests/folder/some_file.spec.ts | ||
* // tests/folder/some_file.spec.ts | ||
* describe(test_name(), () => {}) | ||
@@ -32,3 +28,3 @@ * // = folder/some_file | ||
* ```ts | ||
* // tests/folder/some_file.spec.ts | ||
* // tests/folder/some_file.spec.ts | ||
* describe(test_name({nest: false}), () => {}) | ||
@@ -44,2 +40,4 @@ * // = some_file | ||
* Note: This function assumes the test directory is called test/tests and is in `process.cwd()`. | ||
* | ||
* It will throw if it can't find a test name. | ||
*/ | ||
@@ -50,11 +48,14 @@ // eslint-disable-next-line @typescript-eslint/naming-convention | ||
__filename | ||
} = {}) { | ||
} = {}, sep = _path.default.sep) { | ||
var _Error$stack, _Error$stack$split$fi, _Error$stack$split$fi2; | ||
let filename = __filename !== null && __filename !== void 0 ? __filename : (_Error$stack = new Error().stack) === null || _Error$stack === void 0 ? void 0 : (_Error$stack$split$fi = _Error$stack.split("\n").find(line => line.includes(_path.default.join(process.cwd(), "test")))) === null || _Error$stack$split$fi === void 0 ? void 0 : (_Error$stack$split$fi2 = _Error$stack$split$fi.match(/\((.*?)\)/)) === null || _Error$stack$split$fi2 === void 0 ? void 0 : _Error$stack$split$fi2[1]; | ||
sep = _path.default.sep === "\\" ? "\\\\" : "/"; | ||
let regex = `${escape(_path.default.resolve(process.cwd()))}${sep}(test|tests)${sep}`; | ||
let regexp = new RegExp(regex, "i"); | ||
let filename = __filename !== null && __filename !== void 0 ? __filename : (_Error$stack = new Error().stack) === null || _Error$stack === void 0 ? void 0 : (_Error$stack$split$fi = _Error$stack.split("\n").find(line => line.match(regexp) !== null)) === null || _Error$stack$split$fi === void 0 ? void 0 : (_Error$stack$split$fi2 = _Error$stack$split$fi.match(/\((.*?)\)/)) === null || _Error$stack$split$fi2 === void 0 ? void 0 : _Error$stack$split$fi2[1]; | ||
if (filename === undefined) throw new Error("Could not find test file path."); | ||
let filepath = filename; | ||
let filepath = filename.replace(/(\\|\/)/g, _path.default.sep); | ||
let name = nest ? _path.default.relative(process.cwd(), filepath).match(/(?:test|tests)(?:\/|\\)(.*?(?:\/|\\)?.*?)\./)[1] : filepath.match(/.*(?:\/|\\)(.*?)\./)[1]; | ||
return name; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL3Rlc3RfbmFtZS50cyJdLCJuYW1lcyI6WyJ0ZXN0X25hbWUiLCJuZXN0IiwiX19maWxlbmFtZSIsImZpbGVuYW1lIiwiRXJyb3IiLCJzdGFjayIsInNwbGl0IiwiZmluZCIsImxpbmUiLCJpbmNsdWRlcyIsInBhdGgiLCJqb2luIiwicHJvY2VzcyIsImN3ZCIsIm1hdGNoIiwidW5kZWZpbmVkIiwiZmlsZXBhdGgiLCJuYW1lIiwicmVsYXRpdmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQTs7OztBQURBOztBQUlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNPLFNBQVNBLFNBQVQsQ0FBbUI7QUFBRUMsRUFBQUEsSUFBSSxHQUFHLElBQVQ7QUFBZUMsRUFBQUE7QUFBZixJQUF1RSxFQUExRixFQUFzRztBQUFBOztBQUM1RyxNQUFJQyxRQUFRLEdBQUdELFVBQUgsYUFBR0EsVUFBSCxjQUFHQSxVQUFILG1CQUFrQixJQUFJRSxLQUFKLEVBQUQsQ0FBY0MsS0FBL0IsMEVBQWlCLGFBQ3pCQyxLQUR5QixDQUNuQixJQURtQixFQUUxQkMsSUFGMEIsQ0FFckJDLElBQUksSUFBSUEsSUFBSSxDQUFDQyxRQUFMLENBQWNDLGNBQUtDLElBQUwsQ0FBVUMsT0FBTyxDQUFDQyxHQUFSLEVBQVYsRUFBeUIsTUFBekIsQ0FBZCxDQUZhLENBQWpCLG9GQUFpQixzQkFHekJDLEtBSHlCLENBR25CLFdBSG1CLENBQWpCLDJEQUFpQix1QkFHSixDQUhJLENBQTdCO0FBS0EsTUFBSVgsUUFBUSxLQUFLWSxTQUFqQixFQUE0QixNQUFNLElBQUlYLEtBQUosQ0FBVSxnQ0FBVixDQUFOO0FBQzVCLE1BQUlZLFFBQVEsR0FBR2IsUUFBZjtBQUVBLE1BQUljLElBQUksR0FBR2hCLElBQUksR0FDWlMsY0FBS1EsUUFBTCxDQUFjTixPQUFPLENBQUNDLEdBQVIsRUFBZCxFQUE2QkcsUUFBN0IsRUFBdUNGLEtBQXZDLENBQTZDLDZDQUE3QyxFQUE2RixDQUE3RixDQURZLEdBRVpFLFFBQVEsQ0FBQ0YsS0FBVCxDQUFlLG9CQUFmLEVBQXNDLENBQXRDLENBRkg7QUFHQSxTQUFPRyxJQUFQO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEBtb2R1bGUgdGVzdGluZyAqL1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5cbi8qKlxuICogVXNlZCBmb3IgZ2V0dGluZyB0aGUgZmlsZSBuYW1lIG9mIGEgdGVzdCBzcGVjIChyZWxhdGl2ZSB0byB0aGUgYHRlc3RzL3Rlc3RzYCBmb2xkZXIpIHNvIGl0J3Mgb25lIGxlc3MgdGhpbmcgd2UgaGF2ZSB0byB3b3JyeSBhYm91dCB3aGVuIGNyZWF0aW5nIGEgbmV3IHNwZWMuIEl0cyBuYW1lIGlzIGp1c3QgaXRzIGZpbGVuYW1lIChvciBpZiBpdCdzIG5lc3RlZDogZm9sZGVyL2ZpbGVuYW1lKSwgbWFraW5nIGV2ZXJ5dGhpbmcgZWFzaWVyIHRvIGZpbmQuXG4gKlxuICogYGBgdHNcbiAqXHQvLyB0ZXN0cy9mb2xkZXIvc29tZV9maWxlLnNwZWMudHNcbiAqIGRlc2NyaWJlKHRlc3RfbmFtZSgpLCAoKSA9PiB7fSlcbiAqIC8vID0gZm9sZGVyL3NvbWVfZmlsZVxuICogYGBgXG4gKlxuICogWW91IGNhbiBzZXQgbmVzdCB0byBmYWxzZSBzbyBpdCBvbmx5IHByaW50cyB0aGUgZmlsZW5hbWUgbm8gbWF0dGVyIGhvdyBkZWVwbHkgaXQncyBuZXN0ZWQ6XG4gKiBgYGB0c1xuICpcdC8vIHRlc3RzL2ZvbGRlci9zb21lX2ZpbGUuc3BlYy50c1xuICogZGVzY3JpYmUodGVzdF9uYW1lKHtuZXN0OiBmYWxzZX0pLCAoKSA9PiB7fSlcbiAqIC8vID0gc29tZV9maWxlXG4gKiBgYGBcbiAqXG4gKiBCeSBkZWZhdWx0IHdlIHRyeSB0byBncmFiIHRoZSBuYW1lIGZyb20gdGhlIGVycm9yIHN0YWNrLCBpZiB0aGF0J3MgZmFpbGluZyBmb3Igc29tZSByZWFzb24sIGBfX2ZpbGVuYW1lYCBjYW4gYmUgcGFzc2VkOlxuICogYGBgdHNcbiAqIGRlc2NyaWJlKHRlc3RfbmFtZSh7X19maWxlbmFtZX0pLCAoKSA9PiB7fSlcbiAqIGBgYFxuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgY2FsbGVkIHRlc3QvdGVzdHMgYW5kIGlzIGluIGBwcm9jZXNzLmN3ZCgpYC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RfbmFtZSh7IG5lc3QgPSB0cnVlLCBfX2ZpbGVuYW1lIH06IHsgbmVzdD86IGJvb2xlYW4sIF9fZmlsZW5hbWU/OiBzdHJpbmcgfSA9IHt9KTogc3RyaW5nIHtcblx0bGV0IGZpbGVuYW1lID0gX19maWxlbmFtZSA/PyAobmV3IEVycm9yKCkpLnN0YWNrXG5cdFx0XHQ/LnNwbGl0KFwiXFxuXCIpXG5cdFx0XHQuZmluZChsaW5lID0+IGxpbmUuaW5jbHVkZXMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwidGVzdFwiKSkpXG5cdFx0XHQ/Lm1hdGNoKC9cXCgoLio/KVxcKS8pPy5bMV1cblxuXHRpZiAoZmlsZW5hbWUgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGQgbm90IGZpbmQgdGVzdCBmaWxlIHBhdGguXCIpXG5cdGxldCBmaWxlcGF0aCA9IGZpbGVuYW1lXG5cblx0bGV0IG5hbWUgPSBuZXN0XG5cdFx0PyBwYXRoLnJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGZpbGVwYXRoKS5tYXRjaCgvKD86dGVzdHx0ZXN0cykoPzpcXC98XFxcXCkoLio/KD86XFwvfFxcXFwpPy4qPylcXC4vKSFbMV1cblx0XHQ6IGZpbGVwYXRoLm1hdGNoKC8uKig/OlxcL3xcXFxcKSguKj8pXFwuLykhWzFdXG5cdHJldHVybiBuYW1lXG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL3Rlc3RfbmFtZS50cyJdLCJuYW1lcyI6WyJ0ZXN0X25hbWUiLCJuZXN0IiwiX19maWxlbmFtZSIsInNlcCIsInBhdGgiLCJyZWdleCIsImVzY2FwZSIsInJlc29sdmUiLCJwcm9jZXNzIiwiY3dkIiwicmVnZXhwIiwiUmVnRXhwIiwiZmlsZW5hbWUiLCJFcnJvciIsInN0YWNrIiwic3BsaXQiLCJmaW5kIiwibGluZSIsIm1hdGNoIiwidW5kZWZpbmVkIiwiZmlsZXBhdGgiLCJyZXBsYWNlIiwibmFtZSIsInJlbGF0aXZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7OztBQUZBOztBQUlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO0FBQ08sU0FBU0EsU0FBVCxDQUFtQjtBQUFFQyxFQUFBQSxJQUFJLEdBQUcsSUFBVDtBQUFlQyxFQUFBQTtBQUFmLElBQXVFLEVBQTFGLEVBQThGQyxHQUFXLEdBQUdDLGNBQUtELEdBQWpILEVBQThIO0FBQUE7O0FBQ3BJQSxFQUFBQSxHQUFHLEdBQUdDLGNBQUtELEdBQUwsS0FBYSxJQUFiLEdBQW9CLE1BQXBCLEdBQTZCLEdBQW5DO0FBQ0EsTUFBSUUsS0FBSyxHQUFJLEdBQUVDLE1BQU0sQ0FBQ0YsY0FBS0csT0FBTCxDQUFhQyxPQUFPLENBQUNDLEdBQVIsRUFBYixDQUFELENBQThCLEdBQUVOLEdBQUksZUFBY0EsR0FBSSxFQUEzRTtBQUNBLE1BQUlPLE1BQU0sR0FBRyxJQUFJQyxNQUFKLENBQVdOLEtBQVgsRUFBa0IsR0FBbEIsQ0FBYjtBQUVBLE1BQUlPLFFBQVEsR0FBR1YsVUFBSCxhQUFHQSxVQUFILGNBQUdBLFVBQUgsbUJBQWtCLElBQUlXLEtBQUosRUFBRCxDQUFjQyxLQUEvQiwwRUFBaUIsYUFDMUJDLEtBRDBCLENBQ3BCLElBRG9CLEVBRTNCQyxJQUYyQixDQUV0QkMsSUFBSSxJQUFJQSxJQUFJLENBQUNDLEtBQUwsQ0FBV1IsTUFBWCxNQUF1QixJQUZULENBQWpCLG9GQUFpQixzQkFHMUJRLEtBSDBCLENBR3BCLFdBSG9CLENBQWpCLDJEQUFpQix1QkFHTCxDQUhLLENBQTdCO0FBTUEsTUFBSU4sUUFBUSxLQUFLTyxTQUFqQixFQUE0QixNQUFNLElBQUlOLEtBQUosQ0FBVSxnQ0FBVixDQUFOO0FBRTVCLE1BQUlPLFFBQVEsR0FBR1IsUUFBUSxDQUFDUyxPQUFULENBQWlCLFVBQWpCLEVBQTZCakIsY0FBS0QsR0FBbEMsQ0FBZjtBQUVBLE1BQUltQixJQUFJLEdBQUdyQixJQUFJLEdBQ1pHLGNBQUttQixRQUFMLENBQWNmLE9BQU8sQ0FBQ0MsR0FBUixFQUFkLEVBQTZCVyxRQUE3QixFQUF1Q0YsS0FBdkMsQ0FBNkMsNkNBQTdDLEVBQTZGLENBQTdGLENBRFksR0FFWkUsUUFBUSxDQUFDRixLQUFULENBQWUsb0JBQWYsRUFBc0MsQ0FBdEMsQ0FGSDtBQUdBLFNBQU9JLElBQVA7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAcGFja2FnZURvY3VtZW50YXRpb24gQG1vZHVsZSB0ZXN0aW5nICovXG5cbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuLyoqXG4gKiBVc2VkIGZvciBnZXR0aW5nIHRoZSBmaWxlIG5hbWUgb2YgYSB0ZXN0IHNwZWMgKHJlbGF0aXZlIHRvIHRoZSBgdGVzdHMvdGVzdHNgIGZvbGRlcikgc28gaXQncyBvbmUgbGVzcyB0aGluZyB3ZSBoYXZlIHRvIHdvcnJ5IGFib3V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgc3BlYy4gSXRzIG5hbWUgaXMganVzdCBpdHMgZmlsZW5hbWUgKG9yIGlmIGl0J3MgbmVzdGVkOiBmb2xkZXIvZmlsZW5hbWUpLCBtYWtpbmcgZXZlcnl0aGluZyBlYXNpZXIgdG8gZmluZC5cbiAqXG4gKiBgYGB0c1xuICogLy8gdGVzdHMvZm9sZGVyL3NvbWVfZmlsZS5zcGVjLnRzXG4gKiBkZXNjcmliZSh0ZXN0X25hbWUoKSwgKCkgPT4ge30pXG4gKiAvLyA9IGZvbGRlci9zb21lX2ZpbGVcbiAqIGBgYFxuICpcbiAqIFlvdSBjYW4gc2V0IG5lc3QgdG8gZmFsc2Ugc28gaXQgb25seSBwcmludHMgdGhlIGZpbGVuYW1lIG5vIG1hdHRlciBob3cgZGVlcGx5IGl0J3MgbmVzdGVkOlxuICogYGBgdHNcbiAqIC8vIHRlc3RzL2ZvbGRlci9zb21lX2ZpbGUuc3BlYy50c1xuICogZGVzY3JpYmUodGVzdF9uYW1lKHtuZXN0OiBmYWxzZX0pLCAoKSA9PiB7fSlcbiAqIC8vID0gc29tZV9maWxlXG4gKiBgYGBcbiAqXG4gKiBCeSBkZWZhdWx0IHdlIHRyeSB0byBncmFiIHRoZSBuYW1lIGZyb20gdGhlIGVycm9yIHN0YWNrLCBpZiB0aGF0J3MgZmFpbGluZyBmb3Igc29tZSByZWFzb24sIGBfX2ZpbGVuYW1lYCBjYW4gYmUgcGFzc2VkOlxuICogYGBgdHNcbiAqIGRlc2NyaWJlKHRlc3RfbmFtZSh7X19maWxlbmFtZX0pLCAoKSA9PiB7fSlcbiAqIGBgYFxuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgdGVzdCBkaXJlY3RvcnkgaXMgY2FsbGVkIHRlc3QvdGVzdHMgYW5kIGlzIGluIGBwcm9jZXNzLmN3ZCgpYC5cbiAqXG4gKiBJdCB3aWxsIHRocm93IGlmIGl0IGNhbid0IGZpbmQgYSB0ZXN0IG5hbWUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0X25hbWUoeyBuZXN0ID0gdHJ1ZSwgX19maWxlbmFtZSB9OiB7IG5lc3Q/OiBib29sZWFuLCBfX2ZpbGVuYW1lPzogc3RyaW5nIH0gPSB7fSwgc2VwOiBzdHJpbmcgPSBwYXRoLnNlcCk6IHN0cmluZyB7XG5cdHNlcCA9IHBhdGguc2VwID09PSBcIlxcXFxcIiA/IFwiXFxcXFxcXFxcIiA6IFwiL1wiXG5cdGxldCByZWdleCA9IGAke2VzY2FwZShwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSkpfSR7c2VwfSh0ZXN0fHRlc3RzKSR7c2VwfWBcblx0bGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAocmVnZXgsIFwiaVwiKVxuXG5cdGxldCBmaWxlbmFtZSA9IF9fZmlsZW5hbWUgPz8gKG5ldyBFcnJvcigpKS5zdGFja1xuXHRcdD8uc3BsaXQoXCJcXG5cIilcblx0XHQuZmluZChsaW5lID0+IGxpbmUubWF0Y2gocmVnZXhwKSAhPT0gbnVsbClcblx0XHQ/Lm1hdGNoKC9cXCgoLio/KVxcKS8pPy5bMV1cblxuXG5cdGlmIChmaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCB0ZXN0IGZpbGUgcGF0aC5cIilcblxuXHRsZXQgZmlsZXBhdGggPSBmaWxlbmFtZS5yZXBsYWNlKC8oXFxcXHxcXC8pL2csIHBhdGguc2VwKVxuXG5cdGxldCBuYW1lID0gbmVzdFxuXHRcdD8gcGF0aC5yZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlcGF0aCkubWF0Y2goLyg/OnRlc3R8dGVzdHMpKD86XFwvfFxcXFwpKC4qPyg/OlxcL3xcXFxcKT8uKj8pXFwuLykhWzFdXG5cdFx0OiBmaWxlcGF0aC5tYXRjaCgvLiooPzpcXC98XFxcXCkoLio/KVxcLi8pIVsxXVxuXHRyZXR1cm4gbmFtZVxufVxuIl19 |
/** @packageDocumentation @module types */ | ||
/** @packageDocumentation @module types */ | ||
/** Like `Partial<T>` but deep. */ | ||
@@ -4,0 +3,0 @@ export declare type DeepPartial<T> = { |
@@ -19,3 +19,3 @@ /** @packageDocumentation @module types */ | ||
* expanded.anything // no error | ||
* ```ts | ||
* ``` | ||
*/ | ||
@@ -22,0 +22,0 @@ export declare type ExpandClassRecord<TClass, TKey extends keyof TClass, TAdd extends string | number = keyof TClass[TKey] & string, TValue = TClass[TKey][keyof TClass[TKey]]> = TClass & { |
@@ -10,3 +10,4 @@ /** | ||
export * from "./ExpandRecord"; | ||
export * from "./Keys"; | ||
export * from "./RecordFromArray"; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -55,2 +55,14 @@ "use strict"; | ||
var _Keys = require("./Keys"); | ||
Object.keys(_Keys).forEach(function (key) { | ||
if (key === "default" || key === "__esModule") return; | ||
Object.defineProperty(exports, key, { | ||
enumerable: true, | ||
get: function () { | ||
return _Keys[key]; | ||
} | ||
}); | ||
}); | ||
var _RecordFromArray = require("./RecordFromArray"); | ||
@@ -67,2 +79,2 @@ | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFPQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdHlwZXNcbiAqIEBwcmVmZXJyZWRcbiAqL1xuLyogQXV0b2dlbmVyYXRlZCBJbmRleCBbVHlwZXNdICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL0FueUZ1bmN0aW9uXCJcbmV4cG9ydCAqIGZyb20gXCIuL0RlZXBQYXJ0aWFsXCJcbmV4cG9ydCAqIGZyb20gXCIuL0V4cGFuZENsYXNzUmVjb3JkXCJcbmV4cG9ydCAqIGZyb20gXCIuL0V4cGFuZFJlY29yZFwiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNvcmRGcm9tQXJyYXlcIlxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFPQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHR5cGVzXG4gKiBAcHJlZmVycmVkXG4gKi9cbi8qIEF1dG9nZW5lcmF0ZWQgSW5kZXggW1R5cGVzXSAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9BbnlGdW5jdGlvblwiXG5leHBvcnQgKiBmcm9tIFwiLi9EZWVwUGFydGlhbFwiXG5leHBvcnQgKiBmcm9tIFwiLi9FeHBhbmRDbGFzc1JlY29yZFwiXG5leHBvcnQgKiBmcm9tIFwiLi9FeHBhbmRSZWNvcmRcIlxuZXhwb3J0ICogZnJvbSBcIi4vS2V5c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9SZWNvcmRGcm9tQXJyYXlcIlxuIl19 |
/** @packageDocumentation @module types */ | ||
/** @packageDocumentation @module types */ | ||
/** | ||
@@ -7,17 +6,24 @@ * Creates a map from an array (of objects) T, keyed by it's object's TKey property value, with values of TValue. | ||
* This is a simplified example to get the point across. | ||
* It requires a `@ts-ignore` because the obj type needs to be passed otherwise `{prop: string}` in each record entry becomes a union of all the `arr` entries. | ||
* | ||
* | ||
* ```ts | ||
* type obj = { prop: string } | ||
* type arr = [{ prop: "a" }, { prop: "b" }, { prop: "c" }] | ||
* type arr = [{ prop: "a" }, { prop: "b" }] | ||
* // @ts-ignore | ||
* type record = RecordFromArray<arr, "prop", obj> | ||
* // record = { | ||
* // a: {prop: string}, | ||
* // b: {prop: string} | ||
* //} | ||
* // record now autocompletes properly, e.g. `record.` suggests `a` and `b`. | ||
* | ||
* ``` | ||
* Record now autocompletes properly, e.g. `record.` suggests `a` and `b` because it's type looks like this: | ||
* | ||
* It's intended for more complex situations like the following. Note that you always need the `entry`/`Entry` function/class. They serve to "capture" the property value, otherwise we'd just get `Record<string, Entry>`. That's why in the example above const is used (although it's not the same thing which is why the above requires `@ts-ignore`). | ||
* ```ts | ||
* type record = { | ||
* a: {prop: string}, | ||
* b: {prop: string} | ||
* } | ||
* ``` | ||
* | ||
* It requires a `@ts-ignore` in this case (normally it would not) because we need to override the value type with `{ prop: string }` otherwise the value becomes a union of *all* the values for *each* value (e.g. `a`, `b` for each `a`,`b`.). | ||
* | ||
* It's intended for more complex situations where you have some `entry`/`Entry` function/class with a generic for the key type that serves to "capture" it, otherwise we'd just get `Record<string, Entry>`. That's why in the example above a const array type is used (although it's not the same thing which is another reason why the above requires the `@ts-ignore`). | ||
* | ||
* Also note that if you want to pass a const array to `record`/`Record`, you need to make the function/class extend the readonly version of the array, e.g. `T extends Entry[] | readonly Entry[]`. | ||
@@ -27,2 +33,3 @@ * | ||
* ```ts | ||
* // The TName generic type "captures" the id. | ||
* class Entry<TName extends string = string> { | ||
@@ -37,11 +44,13 @@ * id: TName | ||
* let entries = new Record([new Entry("a"), new Entry("b")]).entries | ||
* // the type if hovered over it will just say: RecordFromArray<...bunch of confusing types...> | ||
* // but it's just this: | ||
* // entries = { | ||
* // a: {id: "a"} // <= Entry instance | ||
* // b: {id: "b"} // <= Entry instance | ||
* // } | ||
* ``` | ||
* The type if hovered over it will just say: `RecordFromArray<...bunch of confusing types...>` but it's just this: | ||
* ```ts | ||
* type entries = { | ||
* a: {id: "a"} // <= Entry instance | ||
* b: {id: "b"} // <= Entry instance | ||
* } | ||
* ``` | ||
* | ||
* Using function: | ||
* Using functions: | ||
* | ||
* ```ts | ||
@@ -51,11 +60,12 @@ * function entry<TName extends string = string>(id: TName): {id: TName} { } | ||
* let entries = record([entry("a")]) | ||
* // in this case the type is clearer when you hover over it: Record<"a" | "b", { id: string }> | ||
* // but it expands to the same thing as before (except the entries aren't instances of anything) | ||
* // entries = { | ||
* // a: {id: "a"} | ||
* // b: {id: "b"} | ||
* // } | ||
* ``` | ||
* In this case the type is clearer when you hover over it: `Record<"a" | "b", { id: string }>`, but it expands to the same thing as with classes (except the entries aren't instances of anything). | ||
* ```ts | ||
* type entries = { | ||
* a: {id: "a"} | ||
* b: {id: "b"} | ||
* } | ||
* ``` | ||
*/ | ||
export declare type RecordFromArray<T extends any[] | readonly any[], TKey extends string & keyof T[number], TValue extends T extends readonly any[] ? Readonly<T[number]> : T[number] = T extends readonly any[] ? Readonly<T[number]> : T[number]> = Record<T[number][TKey], TValue>; | ||
//# sourceMappingURL=RecordFromArray.d.ts.map |
@@ -5,2 +5,6 @@ /** @packageDocumentation @module utils */ | ||
declare type Debounced<T extends (...args: any) => any> = ((...args: Parameters<T>) => void); | ||
declare type DebounceQueue = Record<string, { | ||
leading?: boolean; | ||
timeout?: NodeJS.Timeout | number; | ||
}>; | ||
/** | ||
@@ -25,3 +29,4 @@ * Returns a debounced function. | ||
* | ||
* To use queues, either pass `{queues: true} or {queues: {}}`. You can also have multiple debounced functions share a queue (e.g. save and delete): | ||
* To use queues, either pass `{ queues: true }` or `{ queues: {} }`. You can also have multiple debounced functions share a queue (e.g. save and delete): | ||
* | ||
* ```ts | ||
@@ -50,2 +55,3 @@ * let my_shared_queue = {} | ||
* So the following would debounce the callback based on the id the function was called with: | ||
* | ||
* ```ts | ||
@@ -57,2 +63,3 @@ * function _save(id, some, other, arguments) { | ||
* // equivalent of debounce(_save, 1000, {index: 0}) | ||
* ``` | ||
* | ||
@@ -72,15 +79,17 @@ * If you need to debounce based on something more complicated (a property of an argument or multiple arguments) index can be a function that returns the key to use. | ||
* @param callback The function to debounce. | ||
* | ||
* @param wait How long to wait before calling the function after the last call. Defaults to 0 | ||
* | ||
* @param options optional | ||
* @param options.queues Whether to use queues, or queues object to use. | ||
* @param options.index The index number of the argument that will be used as the key to the queues if queues are enabled. | ||
* @param options.trailing Whether the call is delayed until the end of the timeout. Defaults to true. | ||
* @param options.leading Whether the first call is called immediately, and all subsequent calls ignored. Be sure to pass `trailing:false` if you only want a leading trigger. | ||
* @note If trailing and leading are both set to true, trailing will only fire if there were multiple calls before the wait period timed out. | ||
* | ||
* `options.queues` Whether to use queues, or queues object to use. | ||
* | ||
* `options.index` The index number of the argument that will be used as the key to the queues if queues are enabled. | ||
* | ||
* `options.trailing` Whether the call is delayed until the end of the timeout. Defaults to true. | ||
* | ||
* `options.leading` Whether the first call is called immediately, and all subsequent calls ignored, defaults to false. Note that if trailing and leading are both set to true, trailing will only fire if there were multiple calls before the wait period timed out. | ||
* | ||
* @returns {function} The debounced function. | ||
*/ | ||
declare type DebounceQueue = Record<string, { | ||
leading?: boolean; | ||
timeout?: NodeJS.Timeout; | ||
}>; | ||
export declare function debounce<T extends AnyFunction = AnyFunction, TQueued extends boolean | DebounceQueue = boolean | DebounceQueue>(callback: T, wait?: number, { queue, index, leading, trailing, }?: { | ||
@@ -87,0 +96,0 @@ queue?: TQueued | DebounceQueue; |
@@ -9,2 +9,4 @@ "use strict"; | ||
/** @packageDocumentation @module utils */ | ||
// #todo not sure why eslint is complaining??? env.node is set to true | ||
// eslint-disable-next-line no-undef | ||
@@ -30,3 +32,4 @@ /** | ||
* | ||
* To use queues, either pass `{queues: true} or {queues: {}}`. You can also have multiple debounced functions share a queue (e.g. save and delete): | ||
* To use queues, either pass `{ queues: true }` or `{ queues: {} }`. You can also have multiple debounced functions share a queue (e.g. save and delete): | ||
* | ||
* ```ts | ||
@@ -55,2 +58,3 @@ * let my_shared_queue = {} | ||
* So the following would debounce the callback based on the id the function was called with: | ||
* | ||
* ```ts | ||
@@ -62,2 +66,3 @@ * function _save(id, some, other, arguments) { | ||
* // equivalent of debounce(_save, 1000, {index: 0}) | ||
* ``` | ||
* | ||
@@ -77,19 +82,24 @@ * If you need to debounce based on something more complicated (a property of an argument or multiple arguments) index can be a function that returns the key to use. | ||
* @param callback The function to debounce. | ||
* | ||
* @param wait How long to wait before calling the function after the last call. Defaults to 0 | ||
* | ||
* @param options optional | ||
* @param options.queues Whether to use queues, or queues object to use. | ||
* @param options.index The index number of the argument that will be used as the key to the queues if queues are enabled. | ||
* @param options.trailing Whether the call is delayed until the end of the timeout. Defaults to true. | ||
* @param options.leading Whether the first call is called immediately, and all subsequent calls ignored. Be sure to pass `trailing:false` if you only want a leading trigger. | ||
* @note If trailing and leading are both set to true, trailing will only fire if there were multiple calls before the wait period timed out. | ||
* | ||
* `options.queues` Whether to use queues, or queues object to use. | ||
* | ||
* `options.index` The index number of the argument that will be used as the key to the queues if queues are enabled. | ||
* | ||
* `options.trailing` Whether the call is delayed until the end of the timeout. Defaults to true. | ||
* | ||
* `options.leading` Whether the first call is called immediately, and all subsequent calls ignored, defaults to false. Note that if trailing and leading are both set to true, trailing will only fire if there were multiple calls before the wait period timed out. | ||
* | ||
* @returns {function} The debounced function. | ||
*/ | ||
function debounce(callback, wait = 0, _ref = {}) { | ||
let { | ||
// @ts-expect-error | ||
queue = false, | ||
index = queue ? 0 : undefined, | ||
leading = false, | ||
trailing = true | ||
} = _ref; | ||
// #awaiting https://github.com/TypeStrong/typedoc/pull/621 + various variations of the same issue for vscode | ||
function debounce(callback, wait = 0, { | ||
queue = false, | ||
index = queue ? 0 : undefined, | ||
leading = false, | ||
trailing = true | ||
} = {}) { | ||
let queues = {}; | ||
@@ -152,2 +162,2 @@ if (typeof queue === "object") queues = queue; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWJvdW5jZS50cyJdLCJuYW1lcyI6WyJkZWJvdW5jZSIsImNhbGxiYWNrIiwid2FpdCIsInF1ZXVlIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJxdWV1ZXMiLCJ0eXBlIiwiYXJncyIsImNvbnRleHQiLCJrZXkiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0IiwiYXBwbHkiLCJzZXRUaW1lb3V0Iiwid2FzX2xlYWRpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFNQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUVPLFNBQVNBLFFBQVQsQ0FPTEMsUUFQSyxFQU9RQyxJQUFZLEdBQUcsQ0FQdkIsRUFRTixPQWFJLEVBckJFLEVBc0JTO0FBQUEsTUFkZjtBQUNDO0FBQ0FDLElBQUFBLEtBQUssR0FBRyxLQUZUO0FBR0NDLElBQUFBLEtBQUssR0FBR0QsS0FBSyxHQUFHLENBQUgsR0FBT0UsU0FIckI7QUFJQ0MsSUFBQUEsT0FBTyxHQUFHLEtBSlg7QUFLQ0MsSUFBQUEsUUFBUSxHQUFHO0FBTFosR0FjZTtBQUNmLE1BQUlDLE1BQXFCLEdBQUcsRUFBNUI7QUFDQSxNQUFJLE9BQU9MLEtBQVAsS0FBaUIsUUFBckIsRUFBK0JLLE1BQU0sR0FBR0wsS0FBVDtBQUUvQixNQUFJTSxJQUFJLEdBQUdOLEtBQUssR0FDYixPQUFPQyxLQURNLEdBRWJDLFNBRkgsQ0FKZSxDQVFmO0FBQ0E7O0FBQ0EsU0FBTyxVQUFvQixHQUFHSyxJQUF2QixFQUFvQztBQUMxQyxRQUFJQyxPQUFPLEdBQUcsSUFBZDtBQUVBLFFBQUlDLEdBQUo7O0FBQ0EsWUFBUUgsSUFBUjtBQUNDLFdBQUssVUFBTDtBQUNDRyxRQUFBQSxHQUFHLEdBQUlSLEtBQUQsQ0FBdUJNLElBQXZCLENBQU47QUFDQTs7QUFDRCxXQUFLLFFBQUw7QUFDQ0UsUUFBQUEsR0FBRyxHQUFHRixJQUFJLENBQUNOLEtBQUQsQ0FBVjtBQUNBOztBQUNELFdBQUssV0FBTDtBQUNDUSxRQUFBQSxHQUFHLEdBQUcsRUFBTixDQURELENBQ1U7O0FBQ1Q7O0FBQ0Q7QUFBUztBQVZWOztBQWFBLFFBQUlKLE1BQU0sQ0FBQ0ksR0FBRCxDQUFWLEVBQWlCO0FBQ2hCSixNQUFBQSxNQUFNLENBQUNJLEdBQUQsQ0FBTixDQUFZTixPQUFaLEdBQXNCLEtBQXRCO0FBQ0FPLE1BQUFBLFlBQVksQ0FBQ0wsTUFBTSxDQUFDSSxHQUFELENBQU4sQ0FBWUUsT0FBYixDQUFaO0FBQ0EsS0FIRCxNQUdPO0FBQ05OLE1BQUFBLE1BQU0sQ0FBQ0ksR0FBRCxDQUFOLEdBQWM7QUFBRU4sUUFBQUEsT0FBTyxFQUFFO0FBQVgsT0FBZDs7QUFDQSxVQUFJQSxPQUFKLEVBQWE7QUFDWkUsUUFBQUEsTUFBTSxDQUFDSSxHQUFELENBQU4sQ0FBWU4sT0FBWixHQUFzQixJQUF0QjtBQUNBTCxRQUFBQSxRQUFRLENBQUNjLEtBQVQsQ0FBZUosT0FBZixFQUF3QkQsSUFBeEI7QUFDQTtBQUNEOztBQUVERixJQUFBQSxNQUFNLENBQUNJLEdBQUQsQ0FBTixDQUFZRSxPQUFaLEdBQXNCRSxVQUFVLENBQUMsTUFBTTtBQUN0QyxVQUFJQyxXQUFXLEdBQUdULE1BQU0sQ0FBQ0ksR0FBRCxDQUFOLENBQWFOLE9BQS9CO0FBQ0EsYUFBT0UsTUFBTSxDQUFDSSxHQUFELENBQWI7O0FBQ0EsVUFBSUssV0FBSixFQUFpQjtBQUFFO0FBQVE7O0FBQzNCLFVBQUksQ0FBQ1YsUUFBTCxFQUFlO0FBQUU7QUFBUTs7QUFFekJOLE1BQUFBLFFBQVEsQ0FBQ2MsS0FBVCxDQUFlSixPQUFmLEVBQXdCRCxJQUF4QjtBQUNBLEtBUCtCLEVBTzdCUixJQVA2QixDQUFoQztBQVFBLEdBcENEO0FBcUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBAbW9kdWxlIHV0aWxzICovXG5cbmltcG9ydCB0eXBlIHsgQW55RnVuY3Rpb24gfSBmcm9tIFwiQC90eXBlc1wiXG5cblxudHlwZSBEZWJvdW5jZWQ8VCBleHRlbmRzICguLi5hcmdzOiBhbnkpID0+IGFueT4gPSAoKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHZvaWQpXG4vKipcbiAqIFJldHVybnMgYSBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gKlxuICogSGFzIGFsbCB0aGUgdHlwaWNhbCBvcHRpb25zIChlLmcuIHRyYWlsaW5nLCBsZWFkaW5nKSBmb3IgYSBkZWJvdW5jZSBmdW5jdGlvbiwgYnV0IGl0IGNhbiBhbHNvIGNyZWF0ZSBkZWJvdW5jZWQgcXVldWVzLlxuICpcbiAqICMgRGVib3VuY2VkIFF1ZXVlc1xuICpcbiAqICMjIFdoYXQgYXJlIHRoZXk/XG4gKlxuICogUXVldWVzIGFsbG93IHlvdSB0byBhdm9pZCBjcmVhdGluZyBhIGRlYm91bmNlIGZ1bmN0aW9uIGZvciBldmVyeSBpbnN0YW5jZSB0aGF0IG5lZWRzIHRvIGRlYm91bmNlIHRoZSBzYW1lIGZ1bmN0aW9uLlxuICpcbiAqIEZvciBleGFtcGxlLCBzYXkgeW91IHdhbnQgdG8gZGVib3VuY2UgdGhlIHNhdmluZyBvZiBub3RlcyB0byBhIGRhdGFiYXNlIHVudGlsIGFmdGVyIGEgdXNlciBzdG9wcyB0eXBpbmcuIEZvciBlYWNoIG5vdGUgb3BlbiB5b3Ugd291bGQgaGF2ZSB0byBjcmVhdGUgYSBkZWJvdW5jZWQgdmVyc2lvbiBvZiB0aGUgc2F2ZSBmdW5jdGlvbiwgYW5kIHVzdWFsbHksIHdoZW4gdXNpbmcgZnJhbWV3b3JrcywgdGhpcyB3b3VsZCBoYXBwZW4gYXQgdGhlIGNvbXBvbmVudCBsZXZlbCwgbm90IHRoZSBzdG9yZSBiZWNhdXNlIHRoZSBzdG9yZSBzYXZlIGZ1bmN0aW9uIGlzIHNoYXJlZC5cbiAqXG4gKiBRdWV1ZXMgd291bGQgYWxsb3cgeW91IHRvIGF2b2lkIGFsbCB0aGF0LCBhbmQga2VlcCBhbGwgdGhlIHNhdmluZyBsb2dpYyBhdCB0aGUgc3RvcmUgbGV2ZWwsIGFsbG93aW5nIGNvbXBvbmVudHMgdG8ganVzdCBjYWxsIHNhdmUgbm9ybWFsbHkuXG4gKlxuICogIyMgT3B0aW9uc1xuICpcbiAqICMjIyBRdWV1ZXNcbiAqXG4gKiBUbyB1c2UgcXVldWVzLCBlaXRoZXIgcGFzcyBge3F1ZXVlczogdHJ1ZX0gb3Ige3F1ZXVlczoge319YC4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgZGVib3VuY2VkIGZ1bmN0aW9ucyBzaGFyZSBhIHF1ZXVlIChlLmcuIHNhdmUgYW5kIGRlbGV0ZSk6XG4gKiBgYGB0c1xuICogbGV0IG15X3NoYXJlZF9xdWV1ZSA9IHt9XG4gKiBsZXQgc2F2ZSA9IGRlYm91bmNlKF9zYXZlLCAxMDAwLCB7XG4gKiBcdHF1ZXVlczogbXlfc2hhcmVkX3F1ZXVlXG4gKiB9KVxuICogbGV0IHJlbW92ZSA9IGRlYm91bmNlKF9yZW1vdmUsIDEwMDAsIHtcbiAqIFx0cXVldWVzOiBteV9zaGFyZWRfcXVldWVcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiAjIyMgSW5kZXhcbiAqXG4gKiBJbnRlcm5hbGx5IHRoZSBxdWV1ZXMgb2JqZWN0IGxvb2tzIGxpa2UgdGhpcywgd2hlcmUgYGtleWAgaXMgb25lIG9mIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiAoZS5nLiBhIG5vdGUncyBpZCksIGJ5IGRlZmF1bHQgdGhlIGZpcnN0LCBhbmQgaXQgZGVsZXRlcyB0aGUga2V5IGFmdGVyIGEgZnVuY3Rpb24gaXMgZmluYWxseSBjYWxsZWQ6XG4gKlxuICogYGBgdHNcbiAqIHF1ZXVlczoge1xuICogXHRba2V5XToge1xuICogXHRcdC8vIC4uLiBpbmZvIG5lZWRlZCBpbnRlcm5hbGx5XG4gKiBcdH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFNvIHRoZSBmb2xsb3dpbmcgd291bGQgZGVib3VuY2UgdGhlIGNhbGxiYWNrIGJhc2VkIG9uIHRoZSBpZCB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCB3aXRoOlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIF9zYXZlKGlkLCBzb21lLCBvdGhlciwgYXJndW1lbnRzKSB7XG4gKiBcdC8vLi4uXG4gKiB9XG4gKiBsZXQgc2F2ZSA9IGRlYm91bmNlKF9zYXZlLCAxMDAwKVxuICogLy8gZXF1aXZhbGVudCBvZiBkZWJvdW5jZShfc2F2ZSwgMTAwMCwge2luZGV4OiAwfSlcbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBkZWJvdW5jZSBiYXNlZCBvbiBzb21ldGhpbmcgbW9yZSBjb21wbGljYXRlZCAoYSBwcm9wZXJ0eSBvZiBhbiBhcmd1bWVudCBvciBtdWx0aXBsZSBhcmd1bWVudHMpIGluZGV4IGNhbiBiZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUga2V5IHRvIHVzZS5cbiAqIGBgYHRzXG4gKiBsZXQgc2F2ZSA9IGRlYm91bmNlKF9zYXZlLCAxMDAwLCB7XG4gKiBcdGluZGV4OiAoYXJndW1lbnRzKSA9PiB7XG4gKiBcdFx0Ly8gbXVsdGlwbGUgYXJndW1lbnRzXG4gKiBcdFx0cmV0dXJuIGFyZ3VtZW50c1swXSArIGFyZ3VtZW50c1syXVxuICogXHRcdC8vIHNvbWUga2V5IG9mIHRoZSBhcmd1bWVudHNcbiAqIFx0XHRyZXR1cm4gYXJndW1lbnRzWzBdLnNvbWVfcHJvcGVydHlcbiAqIFx0fVxuICogfSlcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0gd2FpdCBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBhZnRlciB0aGUgbGFzdCBjYWxsLiBEZWZhdWx0cyB0byAwXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25hbFxuICogQHBhcmFtIG9wdGlvbnMucXVldWVzIFdoZXRoZXIgdG8gdXNlIHF1ZXVlcywgb3IgcXVldWVzIG9iamVjdCB0byB1c2UuXG4gKiBAcGFyYW0gb3B0aW9ucy5pbmRleCBUaGUgaW5kZXggbnVtYmVyIG9mIHRoZSBhcmd1bWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUga2V5IHRvIHRoZSBxdWV1ZXMgaWYgcXVldWVzIGFyZSBlbmFibGVkLlxuICogQHBhcmFtIG9wdGlvbnMudHJhaWxpbmcgV2hldGhlciB0aGUgY2FsbCBpcyBkZWxheWVkIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRpbWVvdXQuIERlZmF1bHRzIHRvIHRydWUuXG4gKiBAcGFyYW0gb3B0aW9ucy5sZWFkaW5nIFdoZXRoZXIgdGhlIGZpcnN0IGNhbGwgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LCBhbmQgYWxsIHN1YnNlcXVlbnQgY2FsbHMgaWdub3JlZC4gQmUgc3VyZSB0byBwYXNzIGB0cmFpbGluZzpmYWxzZWAgaWYgeW91IG9ubHkgd2FudCBhIGxlYWRpbmcgdHJpZ2dlci5cbiAqIEBub3RlIElmIHRyYWlsaW5nIGFuZCBsZWFkaW5nIGFyZSBib3RoIHNldCB0byB0cnVlLCB0cmFpbGluZyB3aWxsIG9ubHkgZmlyZSBpZiB0aGVyZSB3ZXJlIG11bHRpcGxlIGNhbGxzIGJlZm9yZSB0aGUgd2FpdCBwZXJpb2QgdGltZWQgb3V0LlxuICogQHJldHVybnMge2Z1bmN0aW9ufSBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICovXG50eXBlIERlYm91bmNlUXVldWUgPSBSZWNvcmQ8c3RyaW5nLCB7IGxlYWRpbmc/OiBib29sZWFuLCB0aW1lb3V0PzogTm9kZUpTLlRpbWVvdXQgfT5cbmV4cG9ydCBmdW5jdGlvbiBkZWJvdW5jZTxcblx0VCBleHRlbmRzXG5cdFx0QW55RnVuY3Rpb24gPVxuXHRcdEFueUZ1bmN0aW9uLFxuXHRUUXVldWVkIGV4dGVuZHNcblx0XHRib29sZWFuIHwgRGVib3VuY2VRdWV1ZSA9XG5cdFx0Ym9vbGVhbiB8IERlYm91bmNlUXVldWVcbj4oY2FsbGJhY2s6IFQsIHdhaXQ6IG51bWJlciA9IDAsXG5cdHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yXG5cdFx0cXVldWUgPSBmYWxzZSxcblx0XHRpbmRleCA9IHF1ZXVlID8gMCA6IHVuZGVmaW5lZCxcblx0XHRsZWFkaW5nID0gZmFsc2UsXG5cdFx0dHJhaWxpbmcgPSB0cnVlLFxuXHR9OiB7XG5cdFx0cXVldWU/OiBUUXVldWVkIHwgRGVib3VuY2VRdWV1ZVxuXHRcdGluZGV4PzogVFF1ZXVlZCBleHRlbmRzIHRydWVcblx0XHRcdD8gbnVtYmVyIHwgKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiBudW1iZXIpXG5cdFx0XHQ6IHVuZGVmaW5lZFxuXHRcdGxlYWRpbmc/OiBib29sZWFuXG5cdFx0dHJhaWxpbmc/OiBib29sZWFuXG5cdH0gPSB7fVxuKTogRGVib3VuY2VkPFQ+IHtcblx0bGV0IHF1ZXVlczogRGVib3VuY2VRdWV1ZSA9IHt9XG5cdGlmICh0eXBlb2YgcXVldWUgPT09IFwib2JqZWN0XCIpIHF1ZXVlcyA9IHF1ZXVlIGFzIERlYm91bmNlUXVldWVcblxuXHRsZXQgdHlwZSA9IHF1ZXVlXG5cdFx0PyB0eXBlb2YgaW5kZXggYXMgXCJmdW5jdGlvblwiIHwgXCJudW1iZXJcIiB8IFwidW5kZWZpbmVkXCJcblx0XHQ6IHVuZGVmaW5lZFxuXG5cdC8vIHRoaXMgaXMgYSBcImZha2VcIiBwYXJhbWV0ZXIsIGFsbCB0aGUgYXJndW1lbnRzIGFyZSBzdGlsbCBpbiBhcmdzXG5cdC8vIHNlZSBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay9mdW5jdGlvbnMuaHRtbCN0aGlzLXBhcmFtZXRlcnNcblx0cmV0dXJuIGZ1bmN0aW9uKHRoaXM6IGFueSwgLi4uYXJnczogYW55W10pIHtcblx0XHRsZXQgY29udGV4dCA9IHRoaXNcblxuXHRcdGxldCBrZXkhOiBrZXlvZiBEZWJvdW5jZVF1ZXVlXG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIFwiZnVuY3Rpb25cIjpcblx0XHRcdFx0a2V5ID0gKGluZGV4IGFzIEFueUZ1bmN0aW9uKShhcmdzKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSBcIm51bWJlclwiOlxuXHRcdFx0XHRrZXkgPSBhcmdzW2luZGV4IGFzIG51bWJlcl1cblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgXCJ1bmRlZmluZWRcIjpcblx0XHRcdFx0a2V5ID0gXCJcIiAvLyBubyBrZXksIHNpbmd1bGFyIGRlYm91bmNlXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBicmVha1xuXHRcdH1cblxuXHRcdGlmIChxdWV1ZXNba2V5XSkge1xuXHRcdFx0cXVldWVzW2tleV0ubGVhZGluZyA9IGZhbHNlXG5cdFx0XHRjbGVhclRpbWVvdXQocXVldWVzW2tleV0udGltZW91dCEpXG5cdFx0fSBlbHNlIHtcblx0XHRcdHF1ZXVlc1trZXldID0geyBsZWFkaW5nOiBmYWxzZSB9XG5cdFx0XHRpZiAobGVhZGluZykge1xuXHRcdFx0XHRxdWV1ZXNba2V5XS5sZWFkaW5nID0gdHJ1ZVxuXHRcdFx0XHRjYWxsYmFjay5hcHBseShjb250ZXh0LCBhcmdzKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHF1ZXVlc1trZXldLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGxldCB3YXNfbGVhZGluZyA9IHF1ZXVlc1trZXldIS5sZWFkaW5nXG5cdFx0XHRkZWxldGUgcXVldWVzW2tleV1cblx0XHRcdGlmICh3YXNfbGVhZGluZykgeyByZXR1cm4gfVxuXHRcdFx0aWYgKCF0cmFpbGluZykgeyByZXR1cm4gfVxuXG5cdFx0XHRjYWxsYmFjay5hcHBseShjb250ZXh0LCBhcmdzKVxuXHRcdH0sIHdhaXQpXG5cdH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWJvdW5jZS50cyJdLCJuYW1lcyI6WyJkZWJvdW5jZSIsImNhbGxiYWNrIiwid2FpdCIsInF1ZXVlIiwiaW5kZXgiLCJ1bmRlZmluZWQiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJxdWV1ZXMiLCJ0eXBlIiwiYXJncyIsImNvbnRleHQiLCJrZXkiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0IiwiYXBwbHkiLCJzZXRUaW1lb3V0Iiwid2FzX2xlYWRpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQU1BO0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlGQTtBQUNPLFNBQVNBLFFBQVQsQ0FPTEMsUUFQSyxFQU9RQyxJQUFZLEdBQUcsQ0FQdkIsRUFRTjtBQUNDQyxFQUFBQSxLQUFLLEdBQUcsS0FEVDtBQUVDQyxFQUFBQSxLQUFLLEdBQUdELEtBQUssR0FBRyxDQUFILEdBQU9FLFNBRnJCO0FBR0NDLEVBQUFBLE9BQU8sR0FBRyxLQUhYO0FBSUNDLEVBQUFBLFFBQVEsR0FBRztBQUpaLElBWUksRUFwQkUsRUFxQlM7QUFDZixNQUFJQyxNQUFxQixHQUFHLEVBQTVCO0FBQ0EsTUFBSSxPQUFPTCxLQUFQLEtBQWlCLFFBQXJCLEVBQStCSyxNQUFNLEdBQUdMLEtBQVQ7QUFFL0IsTUFBSU0sSUFBSSxHQUFHTixLQUFLLEdBQ2IsT0FBT0MsS0FETSxHQUViQyxTQUZILENBSmUsQ0FRZjtBQUNBOztBQUNBLFNBQU8sVUFBb0IsR0FBR0ssSUFBdkIsRUFBb0M7QUFDMUMsUUFBSUMsT0FBTyxHQUFHLElBQWQ7QUFFQSxRQUFJQyxHQUFKOztBQUNBLFlBQVFILElBQVI7QUFDQyxXQUFLLFVBQUw7QUFDQ0csUUFBQUEsR0FBRyxHQUFJUixLQUFELENBQXVCTSxJQUF2QixDQUFOO0FBQ0E7O0FBQ0QsV0FBSyxRQUFMO0FBQ0NFLFFBQUFBLEdBQUcsR0FBR0YsSUFBSSxDQUFDTixLQUFELENBQVY7QUFDQTs7QUFDRCxXQUFLLFdBQUw7QUFDQ1EsUUFBQUEsR0FBRyxHQUFHLEVBQU4sQ0FERCxDQUNVOztBQUNUOztBQUNEO0FBQVM7QUFWVjs7QUFhQSxRQUFJSixNQUFNLENBQUNJLEdBQUQsQ0FBVixFQUFpQjtBQUNoQkosTUFBQUEsTUFBTSxDQUFDSSxHQUFELENBQU4sQ0FBWU4sT0FBWixHQUFzQixLQUF0QjtBQUNBTyxNQUFBQSxZQUFZLENBQUNMLE1BQU0sQ0FBQ0ksR0FBRCxDQUFOLENBQVlFLE9BQWIsQ0FBWjtBQUNBLEtBSEQsTUFHTztBQUNOTixNQUFBQSxNQUFNLENBQUNJLEdBQUQsQ0FBTixHQUFjO0FBQUVOLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQWQ7O0FBQ0EsVUFBSUEsT0FBSixFQUFhO0FBQ1pFLFFBQUFBLE1BQU0sQ0FBQ0ksR0FBRCxDQUFOLENBQVlOLE9BQVosR0FBc0IsSUFBdEI7QUFDQUwsUUFBQUEsUUFBUSxDQUFDYyxLQUFULENBQWVKLE9BQWYsRUFBd0JELElBQXhCO0FBQ0E7QUFDRDs7QUFFREYsSUFBQUEsTUFBTSxDQUFDSSxHQUFELENBQU4sQ0FBWUUsT0FBWixHQUFzQkUsVUFBVSxDQUFDLE1BQU07QUFDdEMsVUFBSUMsV0FBVyxHQUFHVCxNQUFNLENBQUNJLEdBQUQsQ0FBTixDQUFhTixPQUEvQjtBQUNBLGFBQU9FLE1BQU0sQ0FBQ0ksR0FBRCxDQUFiOztBQUNBLFVBQUlLLFdBQUosRUFBaUI7QUFBRTtBQUFROztBQUMzQixVQUFJLENBQUNWLFFBQUwsRUFBZTtBQUFFO0FBQVE7O0FBRXpCTixNQUFBQSxRQUFRLENBQUNjLEtBQVQsQ0FBZUosT0FBZixFQUF3QkQsSUFBeEI7QUFDQSxLQVArQixFQU83QlIsSUFQNkIsQ0FBaEM7QUFRQSxHQXBDRDtBQXFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAcGFja2FnZURvY3VtZW50YXRpb24gQG1vZHVsZSB1dGlscyAqL1xuXG5pbXBvcnQgdHlwZSB7IEFueUZ1bmN0aW9uIH0gZnJvbSBcIkAvdHlwZXNcIlxuXG5cbnR5cGUgRGVib3VuY2VkPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBhbnk+ID0gKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkKVxuLy8gI3RvZG8gbm90IHN1cmUgd2h5IGVzbGludCBpcyBjb21wbGFpbmluZz8/PyBlbnYubm9kZSBpcyBzZXQgdG8gdHJ1ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG50eXBlIERlYm91bmNlUXVldWUgPSBSZWNvcmQ8c3RyaW5nLCB7IGxlYWRpbmc/OiBib29sZWFuLCB0aW1lb3V0PzogTm9kZUpTLlRpbWVvdXQgfCBudW1iZXIgfT5cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICpcbiAqIEhhcyBhbGwgdGhlIHR5cGljYWwgb3B0aW9ucyAoZS5nLiB0cmFpbGluZywgbGVhZGluZykgZm9yIGEgZGVib3VuY2UgZnVuY3Rpb24sIGJ1dCBpdCBjYW4gYWxzbyBjcmVhdGUgZGVib3VuY2VkIHF1ZXVlcy5cbiAqXG4gKiAjIERlYm91bmNlZCBRdWV1ZXNcbiAqXG4gKiAjIyBXaGF0IGFyZSB0aGV5P1xuICpcbiAqIFF1ZXVlcyBhbGxvdyB5b3UgdG8gYXZvaWQgY3JlYXRpbmcgYSBkZWJvdW5jZSBmdW5jdGlvbiBmb3IgZXZlcnkgaW5zdGFuY2UgdGhhdCBuZWVkcyB0byBkZWJvdW5jZSB0aGUgc2FtZSBmdW5jdGlvbi5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgc2F5IHlvdSB3YW50IHRvIGRlYm91bmNlIHRoZSBzYXZpbmcgb2Ygbm90ZXMgdG8gYSBkYXRhYmFzZSB1bnRpbCBhZnRlciBhIHVzZXIgc3RvcHMgdHlwaW5nLiBGb3IgZWFjaCBub3RlIG9wZW4geW91IHdvdWxkIGhhdmUgdG8gY3JlYXRlIGEgZGVib3VuY2VkIHZlcnNpb24gb2YgdGhlIHNhdmUgZnVuY3Rpb24sIGFuZCB1c3VhbGx5LCB3aGVuIHVzaW5nIGZyYW1ld29ya3MsIHRoaXMgd291bGQgaGFwcGVuIGF0IHRoZSBjb21wb25lbnQgbGV2ZWwsIG5vdCB0aGUgc3RvcmUgYmVjYXVzZSB0aGUgc3RvcmUgc2F2ZSBmdW5jdGlvbiBpcyBzaGFyZWQuXG4gKlxuICogUXVldWVzIHdvdWxkIGFsbG93IHlvdSB0byBhdm9pZCBhbGwgdGhhdCwgYW5kIGtlZXAgYWxsIHRoZSBzYXZpbmcgbG9naWMgYXQgdGhlIHN0b3JlIGxldmVsLCBhbGxvd2luZyBjb21wb25lbnRzIHRvIGp1c3QgY2FsbCBzYXZlIG5vcm1hbGx5LlxuICpcbiAqICMjIE9wdGlvbnNcbiAqXG4gKiAjIyMgUXVldWVzXG4gKlxuICogVG8gdXNlIHF1ZXVlcywgZWl0aGVyIHBhc3MgYHsgcXVldWVzOiB0cnVlIH1gIG9yIGB7IHF1ZXVlczoge30gfWAuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIGRlYm91bmNlZCBmdW5jdGlvbnMgc2hhcmUgYSBxdWV1ZSAoZS5nLiBzYXZlIGFuZCBkZWxldGUpOlxuICpcbiAqIGBgYHRzXG4gKiBsZXQgbXlfc2hhcmVkX3F1ZXVlID0ge31cbiAqIGxldCBzYXZlID0gZGVib3VuY2UoX3NhdmUsIDEwMDAsIHtcbiAqIFx0cXVldWVzOiBteV9zaGFyZWRfcXVldWVcbiAqIH0pXG4gKiBsZXQgcmVtb3ZlID0gZGVib3VuY2UoX3JlbW92ZSwgMTAwMCwge1xuICogXHRxdWV1ZXM6IG15X3NoYXJlZF9xdWV1ZVxuICogfSlcbiAqIGBgYFxuICpcbiAqICMjIyBJbmRleFxuICpcbiAqIEludGVybmFsbHkgdGhlIHF1ZXVlcyBvYmplY3QgbG9va3MgbGlrZSB0aGlzLCB3aGVyZSBga2V5YCBpcyBvbmUgb2YgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIChlLmcuIGEgbm90ZSdzIGlkKSwgYnkgZGVmYXVsdCB0aGUgZmlyc3QsIGFuZCBpdCBkZWxldGVzIHRoZSBrZXkgYWZ0ZXIgYSBmdW5jdGlvbiBpcyBmaW5hbGx5IGNhbGxlZDpcbiAqXG4gKiBgYGB0c1xuICogcXVldWVzOiB7XG4gKiBcdFtrZXldOiB7XG4gKiBcdFx0Ly8gLi4uIGluZm8gbmVlZGVkIGludGVybmFsbHlcbiAqIFx0fVxuICogfVxuICogYGBgXG4gKlxuICogU28gdGhlIGZvbGxvd2luZyB3b3VsZCBkZWJvdW5jZSB0aGUgY2FsbGJhY2sgYmFzZWQgb24gdGhlIGlkIHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGg6XG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIF9zYXZlKGlkLCBzb21lLCBvdGhlciwgYXJndW1lbnRzKSB7XG4gKiBcdC8vLi4uXG4gKiB9XG4gKiBsZXQgc2F2ZSA9IGRlYm91bmNlKF9zYXZlLCAxMDAwKVxuICogLy8gZXF1aXZhbGVudCBvZiBkZWJvdW5jZShfc2F2ZSwgMTAwMCwge2luZGV4OiAwfSlcbiAqIGBgYFxuICpcbiAqIElmIHlvdSBuZWVkIHRvIGRlYm91bmNlIGJhc2VkIG9uIHNvbWV0aGluZyBtb3JlIGNvbXBsaWNhdGVkIChhIHByb3BlcnR5IG9mIGFuIGFyZ3VtZW50IG9yIG11bHRpcGxlIGFyZ3VtZW50cykgaW5kZXggY2FuIGJlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBrZXkgdG8gdXNlLlxuICogYGBgdHNcbiAqIGxldCBzYXZlID0gZGVib3VuY2UoX3NhdmUsIDEwMDAsIHtcbiAqIFx0aW5kZXg6IChhcmd1bWVudHMpID0+IHtcbiAqIFx0XHQvLyBtdWx0aXBsZSBhcmd1bWVudHNcbiAqIFx0XHRyZXR1cm4gYXJndW1lbnRzWzBdICsgYXJndW1lbnRzWzJdXG4gKiBcdFx0Ly8gc29tZSBrZXkgb2YgdGhlIGFyZ3VtZW50c1xuICogXHRcdHJldHVybiBhcmd1bWVudHNbMF0uc29tZV9wcm9wZXJ0eVxuICogXHR9XG4gKiB9KVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAqXG4gKiBAcGFyYW0gd2FpdCBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBhZnRlciB0aGUgbGFzdCBjYWxsLiBEZWZhdWx0cyB0byAwXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uYWxcbiAqXG4gKiBgb3B0aW9ucy5xdWV1ZXNgIFdoZXRoZXIgdG8gdXNlIHF1ZXVlcywgb3IgcXVldWVzIG9iamVjdCB0byB1c2UuXG4gKlxuICogYG9wdGlvbnMuaW5kZXhgIFRoZSBpbmRleCBudW1iZXIgb2YgdGhlIGFyZ3VtZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBrZXkgdG8gdGhlIHF1ZXVlcyBpZiBxdWV1ZXMgYXJlIGVuYWJsZWQuXG4gKlxuICogYG9wdGlvbnMudHJhaWxpbmdgIFdoZXRoZXIgdGhlIGNhbGwgaXMgZGVsYXllZCB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0aW1lb3V0LiBEZWZhdWx0cyB0byB0cnVlLlxuICpcbiAqIGBvcHRpb25zLmxlYWRpbmdgIFdoZXRoZXIgdGhlIGZpcnN0IGNhbGwgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LCBhbmQgYWxsIHN1YnNlcXVlbnQgY2FsbHMgaWdub3JlZCwgZGVmYXVsdHMgdG8gZmFsc2UuIE5vdGUgdGhhdCBpZiB0cmFpbGluZyBhbmQgbGVhZGluZyBhcmUgYm90aCBzZXQgdG8gdHJ1ZSwgdHJhaWxpbmcgd2lsbCBvbmx5IGZpcmUgaWYgdGhlcmUgd2VyZSBtdWx0aXBsZSBjYWxscyBiZWZvcmUgdGhlIHdhaXQgcGVyaW9kIHRpbWVkIG91dC5cbiAqXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gKi9cbi8vICNhd2FpdGluZyBodHRwczovL2dpdGh1Yi5jb20vVHlwZVN0cm9uZy90eXBlZG9jL3B1bGwvNjIxICsgdmFyaW91cyB2YXJpYXRpb25zIG9mIHRoZSBzYW1lIGlzc3VlIGZvciB2c2NvZGVcbmV4cG9ydCBmdW5jdGlvbiBkZWJvdW5jZTxcblx0VCBleHRlbmRzXG5cdFx0QW55RnVuY3Rpb24gPVxuXHRcdEFueUZ1bmN0aW9uLFxuXHRUUXVldWVkIGV4dGVuZHNcblx0XHRib29sZWFuIHwgRGVib3VuY2VRdWV1ZSA9XG5cdFx0Ym9vbGVhbiB8IERlYm91bmNlUXVldWVcbj4oY2FsbGJhY2s6IFQsIHdhaXQ6IG51bWJlciA9IDAsXG5cdHtcblx0XHRxdWV1ZSA9IGZhbHNlIGFzIFRRdWV1ZWQsXG5cdFx0aW5kZXggPSBxdWV1ZSA/IDAgOiB1bmRlZmluZWQsXG5cdFx0bGVhZGluZyA9IGZhbHNlLFxuXHRcdHRyYWlsaW5nID0gdHJ1ZSxcblx0fToge1xuXHRcdHF1ZXVlPzogVFF1ZXVlZCB8IERlYm91bmNlUXVldWVcblx0XHRpbmRleD86IFRRdWV1ZWQgZXh0ZW5kcyB0cnVlXG5cdFx0XHQ/IG51bWJlciB8ICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gbnVtYmVyKVxuXHRcdFx0OiB1bmRlZmluZWRcblx0XHRsZWFkaW5nPzogYm9vbGVhblxuXHRcdHRyYWlsaW5nPzogYm9vbGVhblxuXHR9ID0ge31cbik6IERlYm91bmNlZDxUPiB7XG5cdGxldCBxdWV1ZXM6IERlYm91bmNlUXVldWUgPSB7fVxuXHRpZiAodHlwZW9mIHF1ZXVlID09PSBcIm9iamVjdFwiKSBxdWV1ZXMgPSBxdWV1ZSBhcyBEZWJvdW5jZVF1ZXVlXG5cblx0bGV0IHR5cGUgPSBxdWV1ZVxuXHRcdD8gdHlwZW9mIGluZGV4IGFzIFwiZnVuY3Rpb25cIiB8IFwibnVtYmVyXCIgfCBcInVuZGVmaW5lZFwiXG5cdFx0OiB1bmRlZmluZWRcblxuXHQvLyB0aGlzIGlzIGEgXCJmYWtlXCIgcGFyYW1ldGVyLCBhbGwgdGhlIGFyZ3VtZW50cyBhcmUgc3RpbGwgaW4gYXJnc1xuXHQvLyBzZWUgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svZnVuY3Rpb25zLmh0bWwjdGhpcy1wYXJhbWV0ZXJzXG5cdHJldHVybiBmdW5jdGlvbih0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0bGV0IGNvbnRleHQgPSB0aGlzXG5cblx0XHRsZXQga2V5IToga2V5b2YgRGVib3VuY2VRdWV1ZVxuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSBcImZ1bmN0aW9uXCI6XG5cdFx0XHRcdGtleSA9IChpbmRleCBhcyBBbnlGdW5jdGlvbikoYXJncylcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdFx0a2V5ID0gYXJnc1tpbmRleCBhcyBudW1iZXJdXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlIFwidW5kZWZpbmVkXCI6XG5cdFx0XHRcdGtleSA9IFwiXCIgLy8gbm8ga2V5LCBzaW5ndWxhciBkZWJvdW5jZVxuXHRcdFx0XHRicmVha1xuXHRcdFx0ZGVmYXVsdDogYnJlYWtcblx0XHR9XG5cblx0XHRpZiAocXVldWVzW2tleV0pIHtcblx0XHRcdHF1ZXVlc1trZXldLmxlYWRpbmcgPSBmYWxzZVxuXHRcdFx0Y2xlYXJUaW1lb3V0KHF1ZXVlc1trZXldLnRpbWVvdXQgYXMgbnVtYmVyKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRxdWV1ZXNba2V5XSA9IHsgbGVhZGluZzogZmFsc2UgfVxuXHRcdFx0aWYgKGxlYWRpbmcpIHtcblx0XHRcdFx0cXVldWVzW2tleV0ubGVhZGluZyA9IHRydWVcblx0XHRcdFx0Y2FsbGJhY2suYXBwbHkoY29udGV4dCwgYXJncylcblx0XHRcdH1cblx0XHR9XG5cblx0XHRxdWV1ZXNba2V5XS50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRsZXQgd2FzX2xlYWRpbmcgPSBxdWV1ZXNba2V5XSEubGVhZGluZ1xuXHRcdFx0ZGVsZXRlIHF1ZXVlc1trZXldXG5cdFx0XHRpZiAod2FzX2xlYWRpbmcpIHsgcmV0dXJuIH1cblx0XHRcdGlmICghdHJhaWxpbmcpIHsgcmV0dXJuIH1cblxuXHRcdFx0Y2FsbGJhY2suYXBwbHkoY29udGV4dCwgYXJncylcblx0XHR9LCB3YWl0KVxuXHR9XG59XG4iXX0= |
@@ -7,2 +7,3 @@ /** | ||
export { debounce } from "./debounce"; | ||
export { inspect } from "./inspect"; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -12,4 +12,12 @@ "use strict"; | ||
}); | ||
Object.defineProperty(exports, "inspect", { | ||
enumerable: true, | ||
get: function () { | ||
return _inspect.inspect; | ||
} | ||
}); | ||
var _debounce = require("./debounce"); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFRQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHV0aWxzXG4gKiBAcHJlZmVycmVkXG4gKi9cblxuLyogQXV0b2dlbmVyYXRlZCBJbmRleCAqL1xuXG5leHBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCIuL2RlYm91bmNlXCJcbiJdfQ== | ||
var _inspect = require("./inspect"); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIHV0aWxzXG4gKiBAcHJlZmVycmVkXG4gKi9cblxuLyogQXV0b2dlbmVyYXRlZCBJbmRleCAqL1xuXG5leHBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCIuL2RlYm91bmNlXCJcbmV4cG9ydCB7IGluc3BlY3QgfSBmcm9tIFwiLi9pbnNwZWN0XCJcbiJdfQ== |
{ | ||
"name": "@alanscodelog/utils", | ||
"description": "My utility functions and typescript types.", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"main": "dist/index.js", | ||
@@ -23,3 +23,3 @@ "types": "dist/index.d.ts", | ||
"doc": "npx typedoc --options typedoc.config.js", | ||
"doc:dev": "npx http-server docs --port=5001 & onchange -i \"src/**/*.ts\" \"typedoc.config.js\" -- npm run doc", | ||
"doc:dev": "npx http-server docs --port=5001 & npx onchange -i \"src/**/*.ts\" \"typedoc.config.js\" -- npm run doc", | ||
"gen:exports": "npx indexit update", | ||
@@ -62,5 +62,5 @@ "audit:prod": "yarn audit --groups dependencies", | ||
"eslint-plugin-simple-import-sort": "^5.0.3", | ||
"@typescript-eslint/eslint-plugin": "^3.1.0", | ||
"@typescript-eslint/parser": "^3.1.0", | ||
"@alanscodelog/eslint-config": "^1.1.0", | ||
"@typescript-eslint/eslint-plugin": "^4.1.0", | ||
"@typescript-eslint/parser": "^4.1.0", | ||
"@alanscodelog/eslint-config": "^1.3.1", | ||
"chai": "^4.2.0", | ||
@@ -72,9 +72,11 @@ "jest": "^26.0.1", | ||
"@types/jest": "^25.2.3", | ||
"ts-expect": "^1.1.0", | ||
"typedoc": "^0.17.7", | ||
"typedoc-neo-theme": "^1.0.8", | ||
"typedoc-plugin-external-module-name": "^4.0.0", | ||
"typescript": "^3.9.3", | ||
"typedoc-plugin-param-names": "^1.0.2", | ||
"typescript": "^4.0.0", | ||
"@alanscodelog/tsconfigs": "^2.1.1", | ||
"husky": "^4.2.5", | ||
"indexit": "^1.1.0", | ||
"indexit": "^1.2.0-beta.3", | ||
"onchange": "^7.0.2", | ||
@@ -81,0 +83,0 @@ "http-server": "^0.12.0" |
@@ -5,2 +5,4 @@ ![Docs](https://github.com/alanscodelog/my-utils/workflows/Docs/badge.svg) | ||
A collection of my utility functions and types. Mostly intended for use within my own projects. | ||
# [Docs](https://alanscodelog.github.io/my-utils) | ||
@@ -20,2 +22,3 @@ | ||
- `utils` - the main utility functions | ||
- Within these, some are node/browser only, they are tagged accordingly (`@env node`/`@env browser`). | ||
- `testing` - functions that are only useful for testing purposes | ||
@@ -28,11 +31,7 @@ - `retypes` - existing functions typed as something else (e.g. Object.keys cast to a type that's useful for iterating, etc) | ||
import { keys, debounce, ... } from "@alanscodelog/utils" | ||
// keys({...}) | ||
``` | ||
You can also import an entire set, although this is not reccomended because it makes it so the imports can't be treeshaking. Still it's possible because it's ocassionally useful for prototyping. | ||
You can also import an entire set, although this is not recommended because it makes it so the imports can't be treeshaken. Still it's possible because it's occasionally useful for prototyping. | ||
```ts | ||
import {utils, testing, retypes, types} from "@alanscodelog/utils" | ||
// retypes.keys({...}) | ||
``` | ||
@@ -39,0 +38,0 @@ |
@@ -1,2 +0,1 @@ | ||
/* eslint-disable import/export */ | ||
/* Manually Generated Index */ | ||
@@ -3,0 +2,0 @@ |
@@ -1,6 +0,2 @@ | ||
/** | ||
* @packageDocumentation | ||
* @module retypes | ||
* @preferred | ||
*/ | ||
/** @packageDocumentation @module retypes @preferred */ | ||
@@ -7,0 +3,0 @@ /* Autogenerated Index */ |
/** @packageDocumentation @module retypes */ | ||
import type { Keys } from "@/types" | ||
/** | ||
* Because 99.999999999999% of the time the default typescript behavior of typing the keys as string[] is annoying and useless. | ||
* Because 99.999999999999% of the time we *don't* want the default typescript behavior of typing the keys as string[]. | ||
* | ||
* #awaiting [Exact Types](https://github.com/microsoft/TypeScript/issues/12936) to save us from this pain. | ||
*/ | ||
export const keys = Object.keys as <T>(o: T) => (Extract<keyof T, string>)[] | ||
export const keys = Object.keys as <T>(o: T) => Keys<T> |
@@ -1,6 +0,2 @@ | ||
/** | ||
* @packageDocumentation | ||
* @module testing | ||
* @preferred | ||
*/ | ||
/** @packageDocumentation @module testing @preferred */ | ||
@@ -10,3 +6,2 @@ /* Autogenerated Index */ | ||
export { inspect_error } from "./inspect_error" | ||
export { test_name } from "./test_name" |
/** @packageDocumentation @module testing */ | ||
/** | ||
@@ -17,6 +18,6 @@ * Wrapper to log the errors thrown by functions in tests because test libraries (e.g. jest, test) won't log thrown error messages. Allows inspecting the error message manually if/as needed. | ||
func() | ||
} catch (e) { | ||
} catch (e: unknown) { | ||
if (inspect || process.env.INSPECT_ERRORS !== undefined) { | ||
// eslint-disable-next-line no-console | ||
console.warn(e.message) | ||
console.warn((e as Error).message) | ||
} | ||
@@ -23,0 +24,0 @@ throw e |
/** @packageDocumentation @module testing */ | ||
import path from "path" | ||
/** | ||
@@ -9,3 +9,3 @@ * Used for getting the file name of a test spec (relative to the `tests/tests` folder) so it's one less thing we have to worry about when creating a new spec. Its name is just its filename (or if it's nested: folder/filename), making everything easier to find. | ||
* ```ts | ||
* // tests/folder/some_file.spec.ts | ||
* // tests/folder/some_file.spec.ts | ||
* describe(test_name(), () => {}) | ||
@@ -17,3 +17,3 @@ * // = folder/some_file | ||
* ```ts | ||
* // tests/folder/some_file.spec.ts | ||
* // tests/folder/some_file.spec.ts | ||
* describe(test_name({nest: false}), () => {}) | ||
@@ -29,13 +29,21 @@ * // = some_file | ||
* Note: This function assumes the test directory is called test/tests and is in `process.cwd()`. | ||
* | ||
* It will throw if it can't find a test name. | ||
*/ | ||
// eslint-disable-next-line @typescript-eslint/naming-convention | ||
export function test_name({ nest = true, __filename }: { nest?: boolean, __filename?: string } = {}): string { | ||
export function test_name({ nest = true, __filename }: { nest?: boolean, __filename?: string } = {}, sep: string = path.sep): string { | ||
sep = path.sep === "\\" ? "\\\\" : "/" | ||
let regex = `${escape(path.resolve(process.cwd()))}${sep}(test|tests)${sep}` | ||
let regexp = new RegExp(regex, "i") | ||
let filename = __filename ?? (new Error()).stack | ||
?.split("\n") | ||
.find(line => line.includes(path.join(process.cwd(), "test"))) | ||
?.match(/\((.*?)\)/)?.[1] | ||
?.split("\n") | ||
.find(line => line.match(regexp) !== null) | ||
?.match(/\((.*?)\)/)?.[1] | ||
if (filename === undefined) throw new Error("Could not find test file path.") | ||
let filepath = filename | ||
let filepath = filename.replace(/(\\|\/)/g, path.sep) | ||
let name = nest | ||
@@ -42,0 +50,0 @@ ? path.relative(process.cwd(), filepath).match(/(?:test|tests)(?:\/|\\)(.*?(?:\/|\\)?.*?)\./)![1] |
/** @packageDocumentation @module types */ | ||
/** The type of any function since functions don't really extend the Function type. */ | ||
export type AnyFunction = (...args: any) => any |
/** @packageDocumentation @module types */ | ||
/** @packageDocumentation @module types */ | ||
/** Like `Partial<T>` but deep. */ | ||
@@ -4,0 +4,0 @@ export type DeepPartial<T> = { |
/** @packageDocumentation @module types */ | ||
import type { ExpandRecord } from "./ExpandRecord" | ||
/** | ||
@@ -21,3 +21,3 @@ * Does {@link ExpandRecord} on a property of a class. Useful for permanently casting a class's key (e.g. entries) with additional keys or more permissive entry keys. | ||
* expanded.anything // no error | ||
* ```ts | ||
* ``` | ||
*/ | ||
@@ -24,0 +24,0 @@ export type ExpandClassRecord< |
/** @packageDocumentation @module types */ | ||
/** | ||
@@ -3,0 +4,0 @@ * Expands a record type. By default expands the record to accept any string key. |
@@ -12,2 +12,3 @@ /** | ||
export * from "./ExpandRecord" | ||
export * from "./Keys" | ||
export * from "./RecordFromArray" |
/** @packageDocumentation @module types */ | ||
/** @packageDocumentation @module types */ | ||
/** | ||
@@ -7,17 +6,24 @@ * Creates a map from an array (of objects) T, keyed by it's object's TKey property value, with values of TValue. | ||
* This is a simplified example to get the point across. | ||
* It requires a `@ts-ignore` because the obj type needs to be passed otherwise `{prop: string}` in each record entry becomes a union of all the `arr` entries. | ||
* | ||
* | ||
* ```ts | ||
* type obj = { prop: string } | ||
* type arr = [{ prop: "a" }, { prop: "b" }, { prop: "c" }] | ||
* type arr = [{ prop: "a" }, { prop: "b" }] | ||
* // @ts-ignore | ||
* type record = RecordFromArray<arr, "prop", obj> | ||
* // record = { | ||
* // a: {prop: string}, | ||
* // b: {prop: string} | ||
* //} | ||
* // record now autocompletes properly, e.g. `record.` suggests `a` and `b`. | ||
* | ||
* ``` | ||
* Record now autocompletes properly, e.g. `record.` suggests `a` and `b` because it's type looks like this: | ||
* | ||
* It's intended for more complex situations like the following. Note that you always need the `entry`/`Entry` function/class. They serve to "capture" the property value, otherwise we'd just get `Record<string, Entry>`. That's why in the example above const is used (although it's not the same thing which is why the above requires `@ts-ignore`). | ||
* ```ts | ||
* type record = { | ||
* a: {prop: string}, | ||
* b: {prop: string} | ||
* } | ||
* ``` | ||
* | ||
* It requires a `@ts-ignore` in this case (normally it would not) because we need to override the value type with `{ prop: string }` otherwise the value becomes a union of *all* the values for *each* value (e.g. `a`, `b` for each `a`,`b`.). | ||
* | ||
* It's intended for more complex situations where you have some `entry`/`Entry` function/class with a generic for the key type that serves to "capture" it, otherwise we'd just get `Record<string, Entry>`. That's why in the example above a const array type is used (although it's not the same thing which is another reason why the above requires the `@ts-ignore`). | ||
* | ||
* Also note that if you want to pass a const array to `record`/`Record`, you need to make the function/class extend the readonly version of the array, e.g. `T extends Entry[] | readonly Entry[]`. | ||
@@ -27,2 +33,3 @@ * | ||
* ```ts | ||
* // The TName generic type "captures" the id. | ||
* class Entry<TName extends string = string> { | ||
@@ -37,11 +44,13 @@ * id: TName | ||
* let entries = new Record([new Entry("a"), new Entry("b")]).entries | ||
* // the type if hovered over it will just say: RecordFromArray<...bunch of confusing types...> | ||
* // but it's just this: | ||
* // entries = { | ||
* // a: {id: "a"} // <= Entry instance | ||
* // b: {id: "b"} // <= Entry instance | ||
* // } | ||
* ``` | ||
* The type if hovered over it will just say: `RecordFromArray<...bunch of confusing types...>` but it's just this: | ||
* ```ts | ||
* type entries = { | ||
* a: {id: "a"} // <= Entry instance | ||
* b: {id: "b"} // <= Entry instance | ||
* } | ||
* ``` | ||
* | ||
* Using function: | ||
* Using functions: | ||
* | ||
* ```ts | ||
@@ -51,9 +60,10 @@ * function entry<TName extends string = string>(id: TName): {id: TName} { } | ||
* let entries = record([entry("a")]) | ||
* // in this case the type is clearer when you hover over it: Record<"a" | "b", { id: string }> | ||
* // but it expands to the same thing as before (except the entries aren't instances of anything) | ||
* // entries = { | ||
* // a: {id: "a"} | ||
* // b: {id: "b"} | ||
* // } | ||
* ``` | ||
* In this case the type is clearer when you hover over it: `Record<"a" | "b", { id: string }>`, but it expands to the same thing as with classes (except the entries aren't instances of anything). | ||
* ```ts | ||
* type entries = { | ||
* a: {id: "a"} | ||
* b: {id: "b"} | ||
* } | ||
* ``` | ||
*/ | ||
@@ -60,0 +70,0 @@ export type RecordFromArray< |
@@ -7,2 +7,6 @@ /** @packageDocumentation @module utils */ | ||
type Debounced<T extends (...args: any) => any> = ((...args: Parameters<T>) => void) | ||
// #todo not sure why eslint is complaining??? env.node is set to true | ||
// eslint-disable-next-line no-undef | ||
type DebounceQueue = Record<string, { leading?: boolean, timeout?: NodeJS.Timeout | number }> | ||
/** | ||
@@ -27,3 +31,4 @@ * Returns a debounced function. | ||
* | ||
* To use queues, either pass `{queues: true} or {queues: {}}`. You can also have multiple debounced functions share a queue (e.g. save and delete): | ||
* To use queues, either pass `{ queues: true }` or `{ queues: {} }`. You can also have multiple debounced functions share a queue (e.g. save and delete): | ||
* | ||
* ```ts | ||
@@ -52,2 +57,3 @@ * let my_shared_queue = {} | ||
* So the following would debounce the callback based on the id the function was called with: | ||
* | ||
* ```ts | ||
@@ -59,2 +65,3 @@ * function _save(id, some, other, arguments) { | ||
* // equivalent of debounce(_save, 1000, {index: 0}) | ||
* ``` | ||
* | ||
@@ -74,12 +81,18 @@ * If you need to debounce based on something more complicated (a property of an argument or multiple arguments) index can be a function that returns the key to use. | ||
* @param callback The function to debounce. | ||
* | ||
* @param wait How long to wait before calling the function after the last call. Defaults to 0 | ||
* | ||
* @param options optional | ||
* @param options.queues Whether to use queues, or queues object to use. | ||
* @param options.index The index number of the argument that will be used as the key to the queues if queues are enabled. | ||
* @param options.trailing Whether the call is delayed until the end of the timeout. Defaults to true. | ||
* @param options.leading Whether the first call is called immediately, and all subsequent calls ignored. Be sure to pass `trailing:false` if you only want a leading trigger. | ||
* @note If trailing and leading are both set to true, trailing will only fire if there were multiple calls before the wait period timed out. | ||
* | ||
* `options.queues` Whether to use queues, or queues object to use. | ||
* | ||
* `options.index` The index number of the argument that will be used as the key to the queues if queues are enabled. | ||
* | ||
* `options.trailing` Whether the call is delayed until the end of the timeout. Defaults to true. | ||
* | ||
* `options.leading` Whether the first call is called immediately, and all subsequent calls ignored, defaults to false. Note that if trailing and leading are both set to true, trailing will only fire if there were multiple calls before the wait period timed out. | ||
* | ||
* @returns {function} The debounced function. | ||
*/ | ||
type DebounceQueue = Record<string, { leading?: boolean, timeout?: NodeJS.Timeout }> | ||
// #awaiting https://github.com/TypeStrong/typedoc/pull/621 + various variations of the same issue for vscode | ||
export function debounce< | ||
@@ -94,4 +107,3 @@ T extends | ||
{ | ||
// @ts-expect-error | ||
queue = false, | ||
queue = false as TQueued, | ||
index = queue ? 0 : undefined, | ||
@@ -137,3 +149,3 @@ leading = false, | ||
queues[key].leading = false | ||
clearTimeout(queues[key].timeout!) | ||
clearTimeout(queues[key].timeout as number) | ||
} else { | ||
@@ -140,0 +152,0 @@ queues[key] = { leading: false } |
@@ -10,1 +10,2 @@ /** | ||
export { debounce } from "./debounce" | ||
export { inspect } from "./inspect" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
79021
66
1210
45
43