@mnaoumov/typescript-lib 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/dist/lib/cjs/api-contract.cjs +102 -0
- package/dist/lib/cjs/api-contract.d.cts +184 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/type-guards.cjs +28 -3
- package/dist/lib/cjs/type-guards.d.cts +35 -0
- package/dist/lib/esm/api-contract.d.mts +184 -0
- package/dist/lib/esm/api-contract.mjs +75 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/type-guards.d.mts +35 -0
- package/dist/lib/esm/type-guards.mjs +22 -2
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -12,6 +12,42 @@ npm install @mnaoumov/typescript-lib
|
|
|
12
12
|
|
|
13
13
|
It is one of five packages that replace [`obsidian-dev-utils`](https://github.com/mnaoumov/obsidian-dev-utils): [`@mnaoumov/typescript-lib`](https://github.com/mnaoumov/typescript-lib), [`@mnaoumov/typescript-test-toolkit`](https://github.com/mnaoumov/typescript-test-toolkit), [`@mnaoumov/typescript-dev-toolkit`](https://github.com/mnaoumov/typescript-dev-toolkit), [`@mnaoumov/obsidian-lib`](https://github.com/mnaoumov/obsidian-lib) and [`@mnaoumov/obsidian-dev-toolkit`](https://github.com/mnaoumov/obsidian-dev-toolkit). It depends on none of the other `@mnaoumov` packages. It moved here from that repository with its history.
|
|
14
14
|
|
|
15
|
+
## API contracts
|
|
16
|
+
|
|
17
|
+
`@mnaoumov/typescript-lib/api-contract` describes an API one module exposes to another: which methods it promises, and a [Standard Schema](https://standardschema.dev) over each method's arguments and awaited return value. The schemas are built from type guards, so no schema library is needed, and zod / valibot / arktype schemas fit the same slots.
|
|
18
|
+
|
|
19
|
+
A provider keeps two files beside each other. `api.d.ts` declares the API type and stays copyable. `api-contract.ts` is the contract constant and nothing else:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import {
|
|
23
|
+
BOOLEAN_GUARD,
|
|
24
|
+
createArgumentsSchema,
|
|
25
|
+
createTypeGuardSchema,
|
|
26
|
+
defineApiContract,
|
|
27
|
+
NUMBER_GUARD,
|
|
28
|
+
optionalGuard,
|
|
29
|
+
STRING_GUARD
|
|
30
|
+
} from '@mnaoumov/typescript-lib/api-contract';
|
|
31
|
+
|
|
32
|
+
import type { CounterApi } from './api.d.ts';
|
|
33
|
+
|
|
34
|
+
export const COUNTER_API_CONTRACT = defineApiContract<CounterApi>({
|
|
35
|
+
count: {
|
|
36
|
+
input: createArgumentsSchema([{ ...STRING_GUARD, expected: 'a text' }, optionalGuard(BOOLEAN_GUARD)]),
|
|
37
|
+
output: createTypeGuardSchema(NUMBER_GUARD)
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`defineApiContract<TApi>` checks the contract against the API: one entry per method, none missing or extra, each with both schemas, and each schema producing that method's parameters or awaited return value. The builders take their types from the entry, so no tuple is restated. `ApiContract<TApi>` is the same check as a type annotation, and `ApiContract` with no type argument is the loose record a reader that does not know the API sees.
|
|
43
|
+
|
|
44
|
+
- `createArgumentsSchema(guards, { vendor })` validates an argument list: one guard per parameter, issues carrying the argument index, too many arguments refused.
|
|
45
|
+
- `createTypeGuardSchema({ expected, typeGuard, vendor })` validates one value.
|
|
46
|
+
- `BOOLEAN_GUARD`, `NUMBER_GUARD`, `STRING_GUARD`, `STRING_ARRAY_GUARD` and `UNDEFINED_GUARD` are ready-made guards, `optionalGuard` and `nullableGuard` widen one, and a spread renames what it expects.
|
|
47
|
+
- The schema `vendor` defaults to `@mnaoumov/typescript-lib`.
|
|
48
|
+
|
|
49
|
+
Running the schemas belongs to whoever owns the call path. `@mnaoumov/obsidian-lib`'s plugin API registry runs them while its debugger is on.
|
|
50
|
+
|
|
15
51
|
## License
|
|
16
52
|
|
|
17
53
|
© [Michael Naumov](https://github.com/mnaoumov/)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var api_contract_exports = {};
|
|
25
|
+
__export(api_contract_exports, {
|
|
26
|
+
BOOLEAN_GUARD: () => BOOLEAN_GUARD,
|
|
27
|
+
NUMBER_GUARD: () => NUMBER_GUARD,
|
|
28
|
+
STRING_ARRAY_GUARD: () => STRING_ARRAY_GUARD,
|
|
29
|
+
STRING_GUARD: () => STRING_GUARD,
|
|
30
|
+
UNDEFINED_GUARD: () => UNDEFINED_GUARD,
|
|
31
|
+
createArgumentsSchema: () => createArgumentsSchema,
|
|
32
|
+
createTypeGuardSchema: () => createTypeGuardSchema,
|
|
33
|
+
defineApiContract: () => defineApiContract,
|
|
34
|
+
nullableGuard: () => nullableGuard,
|
|
35
|
+
optionalGuard: () => optionalGuard
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(api_contract_exports);
|
|
38
|
+
var import_library = require('./library.cjs');
|
|
39
|
+
var import_object_utils = require('./object-utils.cjs');
|
|
40
|
+
var import_type_guards = require('./type-guards.cjs');
|
|
41
|
+
const BOOLEAN_GUARD = { expected: "a boolean", typeGuard: import_type_guards.isBoolean };
|
|
42
|
+
const NUMBER_GUARD = { expected: "a number", typeGuard: import_type_guards.isNumber };
|
|
43
|
+
const STRING_GUARD = { expected: "a string", typeGuard: import_type_guards.isString };
|
|
44
|
+
const STRING_ARRAY_GUARD = { expected: "an array of strings", typeGuard: import_type_guards.isStringArray };
|
|
45
|
+
const UNDEFINED_GUARD = { expected: "undefined", typeGuard: import_type_guards.isUndefined };
|
|
46
|
+
function createArgumentsSchema(parameters, options) {
|
|
47
|
+
const parameterList = (0, import_object_utils.castTo)(parameters);
|
|
48
|
+
return createSchema((value) => {
|
|
49
|
+
if (!Array.isArray(value)) {
|
|
50
|
+
return { issues: [{ message: "Expected an argument list." }] };
|
|
51
|
+
}
|
|
52
|
+
if (value.length > parameterList.length) {
|
|
53
|
+
return { issues: [{ message: `Expected at most ${String(parameterList.length)} argument(s), got ${String(value.length)}.` }] };
|
|
54
|
+
}
|
|
55
|
+
const issues = parameterList.flatMap((parameter, index) => parameter.typeGuard(value[index]) ? [] : [{ message: `Expected ${parameter.expected}.`, path: [index] }]);
|
|
56
|
+
return issues.length === 0 ? { value: (0, import_object_utils.castTo)(value) } : { issues };
|
|
57
|
+
}, options?.vendor);
|
|
58
|
+
}
|
|
59
|
+
function createTypeGuardSchema(params) {
|
|
60
|
+
return createSchema(
|
|
61
|
+
(value) => params.typeGuard(value) ? { value } : { issues: [{ message: `Expected ${params.expected}.` }] },
|
|
62
|
+
params.vendor
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
function defineApiContract(contract) {
|
|
66
|
+
return contract;
|
|
67
|
+
}
|
|
68
|
+
function nullableGuard(guard) {
|
|
69
|
+
return {
|
|
70
|
+
expected: `${guard.expected} or null`,
|
|
71
|
+
typeGuard: (value) => value === null || guard.typeGuard(value)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function optionalGuard(guard) {
|
|
75
|
+
return {
|
|
76
|
+
expected: `${guard.expected} or undefined`,
|
|
77
|
+
typeGuard: (value) => value === void 0 || guard.typeGuard(value)
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function createSchema(validate, vendor) {
|
|
81
|
+
return {
|
|
82
|
+
"~standard": {
|
|
83
|
+
validate,
|
|
84
|
+
vendor: vendor ?? import_library.LIBRARY_NAME,
|
|
85
|
+
version: 1
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
90
|
+
0 && (module.exports = {
|
|
91
|
+
BOOLEAN_GUARD,
|
|
92
|
+
NUMBER_GUARD,
|
|
93
|
+
STRING_ARRAY_GUARD,
|
|
94
|
+
STRING_GUARD,
|
|
95
|
+
UNDEFINED_GUARD,
|
|
96
|
+
createArgumentsSchema,
|
|
97
|
+
createTypeGuardSchema,
|
|
98
|
+
defineApiContract,
|
|
99
|
+
nullableGuard,
|
|
100
|
+
optionalGuard
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwaS1jb250cmFjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBjb250cmFjdCBvZiBhbiBBUEkgb25lIG1vZHVsZSBleHBvc2VzIHRvIGFub3RoZXI6IHdoaWNoIG1ldGhvZHMgaXQgcHJvbWlzZXMsIGFuZCBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9zdGFuZGFyZHNjaGVtYS5kZXYgfCBTdGFuZGFyZCBTY2hlbWF9IG92ZXIgZWFjaCBtZXRob2QncyBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBUaGUgc2NoZW1hcyBhcmUgcGxhaW4gb2JqZWN0cyBvdmVyIHBsYWluIGZ1bmN0aW9ucywgd2hpY2ggYSB0eXBlIGd1YXJkIGFscmVhZHkgaXMsIHNvIGEgY29udHJhY3QgY2FuIGNyb3NzIGFcbiAqIGJvdW5kYXJ5IGJldHdlZW4gdHdvIGNvcGllcyBvZiBhIGxpYnJhcnkgYW5kIHN0aWxsIGJlIHJ1biBieSB3aGljaGV2ZXIgY29weSByZWFkcyBpdC4gVGhlIGJ1aWxkZXJzIGhlcmUgdHVyblxuICogdGhlIGd1YXJkcyBhIG1vZHVsZSBhbHJlYWR5IGhhcyBpbnRvIHRoZSB0d28gc2hhcGVzIGEgbWV0aG9kIGNvbnRyYWN0IG5lZWRzOiBvbmUgdmFsdWUgKGFuIG91dHB1dCkgYW5kIG9uZVxuICogYXJndW1lbnQgbGlzdCAoYW4gaW5wdXQpLiB6b2QgLyB2YWxpYm90IC8gYXJrdHlwZSBzY2hlbWFzIHBsdWcgaW50byB0aGUgc2FtZSBzbG90cyB1bmNoYW5nZWQ7IHRoaXMgbW9kdWxlIGp1c3RcbiAqIGRvZXMgbm90IG1ha2UgZXZlcnkgcHJvdmlkZXIgYnVuZGxlIG9uZSB0byBkZXNjcmliZSB0d28gYXJndW1lbnRzLlxuICpcbiAqIFJ1bm5pbmcgdGhlIHNjaGVtYXMgaXMgbGVmdCB0byB3aG9ldmVyIG93bnMgdGhlIGNhbGwgcGF0aCwgc2luY2UgdGhhdCBpcyB3aGVyZSBhbiBpc3N1ZSBjYW4gYmUgcmVwb3J0ZWQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTdGFuZGFyZFNjaGVtYVYxIH0gZnJvbSAnQHN0YW5kYXJkLXNjaGVtYS9zcGVjJztcblxuaW1wb3J0IHsgTElCUkFSWV9OQU1FIH0gZnJvbSAnLi9saWJyYXJ5LnRzJztcbmltcG9ydCB7IGNhc3RUbyB9IGZyb20gJy4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGlzQm9vbGVhbixcbiAgaXNOdW1iZXIsXG4gIGlzU3RyaW5nLFxuICBpc1N0cmluZ0FycmF5LFxuICBpc1VuZGVmaW5lZFxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3QgYW4gQVBJIGRlY2xhcmVzOiBldmVyeSBrZXkgaXMgYSBtZXRob2QgdGhlIEFQSSBwcm9taXNlcyB0byBleHBvc2UsIGFuZCBpdHMgdmFsdWUgb3B0aW9uYWxseVxuICogY2FycmllcyB0aGUgcGF5bG9hZCBzY2hlbWFzIGZvciB0aGF0IG1ldGhvZC5cbiAqXG4gKiBUeXBlZCBvdmVyIHRoZSBBUEkgd2hlbiBvbmUgaXMgbmFtZWQ6IGBBcGlDb250cmFjdDxNeUFwaT5gIGhhcyBleGFjdGx5IG9uZSBlbnRyeSBwZXIgZnVuY3Rpb24gbWVtYmVyIG9mXG4gKiBgTXlBcGlgIChhIG1pc3NpbmcgbWV0aG9kLCBhbiBleHRyYSBvbmUgb3IgYSBtaXNzcGVsbGVkIG9uZSBkb2VzIG5vdCBjb21waWxlKSwgYW5kIGVhY2ggZW50cnkncyBzY2hlbWFzIG11c3RcbiAqIHByb2R1Y2UgdGhhdCBtZXRob2QncyBwYXJhbWV0ZXJzIGFuZCBhd2FpdGVkIHJldHVybiB2YWx1ZS4gV2l0aG91dCBhIHR5cGUgYXJndW1lbnQsIG9yIGZvciBgb2JqZWN0YCwgaXQgaXMgdGhlXG4gKiBsb29zZSByZWNvcmQgYSByZWFkZXIgdGhhdCBrbm93cyBub3RoaW5nIGFib3V0IHRoZSBBUEkgc2Vlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHRoZSBjb250cmFjdCBkZXNjcmliZXMuIGBvYmplY3RgLCB0aGUgZGVmYXVsdCwgbWVhbnMgXCJub3QgdHlwZWRcIi5cbiAqL1xuZXhwb3J0IHR5cGUgQXBpQ29udHJhY3Q8VEFwaSBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gPSBvYmplY3QgZXh0ZW5kcyBUQXBpID8gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgQXBpTWV0aG9kQ29udHJhY3Q+PlxuICA6IFR5cGVkQXBpQ29udHJhY3Q8VEFwaT47XG5cbi8qKlxuICogVGhlIHBheWxvYWQgc2NoZW1hcyBmb3IgYSBzaW5nbGUgQVBJIG1ldGhvZC4gQm90aCBoYWx2ZXMgYXJlIG9wdGlvbmFsOiBhIG1ldGhvZCBtYXkgZGVjbGFyZSBvbmx5IGl0cyBpbnB1dCxcbiAqIG9ubHkgaXRzIG91dHB1dCwgbmVpdGhlciAodGhlIGVudHJ5IHRoZW4ganVzdCBkZWNsYXJlcyB0aGF0IHRoZSBtZXRob2QgbXVzdCBleGlzdCksIG9yIGJvdGguXG4gKlxuICogQHR5cGVQYXJhbSBUUGFyYW1ldGVycyAtIFRoZSBtZXRob2QncyBwYXJhbWV0ZXJzLCBhcyBhIHR1cGxlLCB3aGljaCB0aGUgaW5wdXQgc2NoZW1hIG11c3QgcHJvZHVjZS5cbiAqIEB0eXBlUGFyYW0gVFJldHVyblZhbHVlIC0gVGhlIG1ldGhvZCdzIHJldHVybiB2YWx1ZSwgYXdhaXRlZCwgd2hpY2ggdGhlIG91dHB1dCBzY2hlbWEgbXVzdCBwcm9kdWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaU1ldGhvZENvbnRyYWN0PFRQYXJhbWV0ZXJzID0gdW5rbm93biwgVFJldHVyblZhbHVlID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZXRob2QncyBhcmd1bWVudHMsIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXQ/OiBTdGFuZGFyZFNjaGVtYVYxPHVua25vd24sIFRQYXJhbWV0ZXJzPjtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZXRob2QncyByZXR1cm4gdmFsdWUsIG9yLCB3aGVuIHRoZSBtZXRob2QgcmV0dXJucyBhIHRoZW5hYmxlLCB0aGUgdmFsdWUgaXQgcmVzb2x2ZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBvdXRwdXQ/OiBTdGFuZGFyZFNjaGVtYVYxPHVua25vd24sIFRSZXR1cm5WYWx1ZT47XG59XG5cbi8qKlxuICogVGhlIG5hbWVzIG9mIHRoZSBmdW5jdGlvbiBtZW1iZXJzIG9mIGFuIEFQSSwgd2hpY2ggYXJlIGV4YWN0bHkgdGhlIGtleXMgYSB0eXBlZCB7QGxpbmsgQXBpQ29udHJhY3R9IGhhcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJLlxuICovXG5leHBvcnQgdHlwZSBBcGlNZXRob2ROYW1lPFRBcGkgZXh0ZW5kcyBvYmplY3Q+ID0ga2V5b2YgQXBpTWV0aG9kczxUQXBpPiAmIHN0cmluZztcblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gbWVtYmVycyBvZiBhbiBBUEkuXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUgQXBpTWV0aG9kczxUQXBpIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW1RLZXkgaW4ga2V5b2YgVEFwaSBhcyBUQXBpW1RLZXldIGV4dGVuZHMgKC4uLmFyZ3VtZW50c186IG5ldmVyKSA9PiB1bmtub3duID8gVEtleSA6IG5ldmVyXTogVEFwaVtUS2V5XTtcbn07XG5cbi8qKlxuICogT25lIHR5cGUgZ3VhcmQgcGVyIHBhcmFtZXRlciBvZiBhIG1ldGhvZCwgaW4gb3JkZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUUGFyYW1ldGVycyAtIFRoZSBtZXRob2QncyBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgdHlwZSBBcmd1bWVudFR5cGVHdWFyZHM8VFBhcmFtZXRlcnMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0ge1xuICByZWFkb25seSBbVEluZGV4IGluIGtleW9mIFRQYXJhbWV0ZXJzXTogRXhwZWN0ZWRUeXBlR3VhcmQ8VFBhcmFtZXRlcnNbVEluZGV4XT47XG59O1xuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlQXJndW1lbnRzU2NoZW1hfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcmd1bWVudHNTY2hlbWFPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBTdGFuZGFyZCBTY2hlbWEgYHZlbmRvcmAgdGhlIHNjaGVtYSByZXBvcnRzLiBEZWZhdWx0cyB0byB0aGlzIGxpYnJhcnkncyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVuZG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjcmVhdGVUeXBlR3VhcmRTY2hlbWF9OiB0aGUgZ3VhcmQsIHdoYXQgaXQgZXhwZWN0cywgYW5kIG9wdGlvbmFsbHkgdGhlIHNjaGVtYSdzIHZlbmRvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUeXBlR3VhcmRTY2hlbWFQYXJhbXM8VD4gZXh0ZW5kcyBFeHBlY3RlZFR5cGVHdWFyZDxUPiB7XG4gIC8qKlxuICAgKiBUaGUgU3RhbmRhcmQgU2NoZW1hIGB2ZW5kb3JgIHRoZSBzY2hlbWEgcmVwb3J0cy4gRGVmYXVsdHMgdG8gdGhpcyBsaWJyYXJ5J3MgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHZlbmRvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgdmFsdWUgYSBzY2hlbWEgYWNjZXB0cywgZGVzY3JpYmVkIGJ5IGEgdHlwZSBndWFyZCBhbmQgYnkgd2hhdCBpdCBleHBlY3RzLCBmb3IgdGhlIGlzc3VlIG1lc3NhZ2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwZWN0ZWRUeXBlR3VhcmQ8VD4ge1xuICAvKipcbiAgICogV2hhdCB0aGUgdmFsdWUgc2hvdWxkIGhhdmUgYmVlbiwgcGhyYXNlZCB0byBmb2xsb3cgXCJFeHBlY3RlZFwiLCBlLmcuIGAnYSBzdHJpbmcnYC5cbiAgICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgdmFsdWUgaXMgYWNjZXB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGBUYC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVHdWFyZDogKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBUO1xufVxuXG4vKipcbiAqIFRoZSB7QGxpbmsgQXBpQ29udHJhY3R9IG9mIGEgbmFtZWQgQVBJOiBvbmUgZW50cnkgcGVyIGZ1bmN0aW9uIG1lbWJlciwgZWFjaCB0eXBlZCBhZ2FpbnN0IHRoYXQgbWVtYmVyLiBCb3RoXG4gKiBzY2hlbWFzIGFyZSBSRVFVSVJFRCBoZXJlLCBzbyBhIHR5cGVkIGNvbnRyYWN0IGlzIGEgZnVsbCBkZXNjcmlwdGlvbiBvZiBldmVyeSBzaWduYXR1cmUgYW5kIGEgYHt9YCBlbnRyeSBkb2VzXG4gKiBub3QgY29tcGlsZS4gT25seSB0aGUgbG9vc2UgZm9ybSBsZWF2ZXMgdGhlbSBvcHRpb25hbC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHRoZSBjb250cmFjdCBkZXNjcmliZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVkQXBpQ29udHJhY3Q8VEFwaSBleHRlbmRzIG9iamVjdD4gPSB7XG4gIHJlYWRvbmx5IFtUS2V5IGluIEFwaU1ldGhvZE5hbWU8VEFwaT5dLT86IFRBcGlbVEtleV0gZXh0ZW5kcyAoLi4uYXJndW1lbnRzXzogaW5mZXIgVFBhcmFtZXRlcnMpID0+IGluZmVyIFRSZXR1cm5WYWx1ZSA/IFJlcXVpcmVkPEFwaU1ldGhvZENvbnRyYWN0PFRQYXJhbWV0ZXJzLCBBd2FpdGVkPFRSZXR1cm5WYWx1ZT4+PlxuICAgIDogbmV2ZXI7XG59O1xuXG50eXBlIE11dGFibGVUdXBsZTxUVHVwbGUgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0geyAtcmVhZG9ubHkgW1RJbmRleCBpbiBrZXlvZiBUVHVwbGVdOiBUVHVwbGVbVEluZGV4XSB9O1xuXG4vKipcbiAqIEFjY2VwdHMgYSBib29sZWFuLlxuICovXG5leHBvcnQgY29uc3QgQk9PTEVBTl9HVUFSRDogRXhwZWN0ZWRUeXBlR3VhcmQ8Ym9vbGVhbj4gPSB7IGV4cGVjdGVkOiAnYSBib29sZWFuJywgdHlwZUd1YXJkOiBpc0Jvb2xlYW4gfTtcblxuLyoqXG4gKiBBY2NlcHRzIGEgbnVtYmVyLlxuICovXG5leHBvcnQgY29uc3QgTlVNQkVSX0dVQVJEOiBFeHBlY3RlZFR5cGVHdWFyZDxudW1iZXI+ID0geyBleHBlY3RlZDogJ2EgbnVtYmVyJywgdHlwZUd1YXJkOiBpc051bWJlciB9O1xuXG4vKipcbiAqIEFjY2VwdHMgYSBzdHJpbmcuIFNwcmVhZCBpdCB0byBzYXkgd2hhdCB0aGUgc3RyaW5nIGlzOiBgeyAuLi5TVFJJTkdfR1VBUkQsIGV4cGVjdGVkOiAnYSBwYXRoJyB9YC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNUUklOR19HVUFSRDogRXhwZWN0ZWRUeXBlR3VhcmQ8c3RyaW5nPiA9IHsgZXhwZWN0ZWQ6ICdhIHN0cmluZycsIHR5cGVHdWFyZDogaXNTdHJpbmcgfTtcblxuLyoqXG4gKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBTVFJJTkdfQVJSQVlfR1VBUkQ6IEV4cGVjdGVkVHlwZUd1YXJkPHN0cmluZ1tdPiA9IHsgZXhwZWN0ZWQ6ICdhbiBhcnJheSBvZiBzdHJpbmdzJywgdHlwZUd1YXJkOiBpc1N0cmluZ0FycmF5IH07XG5cbi8qKlxuICogQWNjZXB0cyBgdW5kZWZpbmVkYCwgd2hpY2ggaXMgdGhlIG91dHB1dCBvZiBhIG1ldGhvZCByZXR1cm5pbmcgYHZvaWRgIG9yIGBQcm9taXNlPHZvaWQ+YC5cbiAqL1xuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9HVUFSRDogRXhwZWN0ZWRUeXBlR3VhcmQ8dW5kZWZpbmVkPiA9IHsgZXhwZWN0ZWQ6ICd1bmRlZmluZWQnLCB0eXBlR3VhcmQ6IGlzVW5kZWZpbmVkIH07XG5cbi8qKlxuICogQnVpbGRzIHRoZSBpbnB1dCBzY2hlbWEgb2YgYSBtZXRob2QgY29udHJhY3Q6IGEgc2NoZW1hIG92ZXIgdGhlIG1ldGhvZCdzIEFSR1VNRU5UIExJU1QsIG9uZSB0eXBlIGd1YXJkIHBlclxuICogcGFyYW1ldGVyLiBBbiBhcmd1bWVudCB0aGF0IGZhaWxzIGl0cyBndWFyZCBpcyByZXBvcnRlZCB3aXRoIGl0cyBpbmRleCBhcyB0aGUgaXNzdWUgcGF0aCwgYW5kIGFuIGFyZ3VtZW50IGxpc3RcbiAqIGxvbmdlciB0aGFuIHRoZSBwYXJhbWV0ZXIgbGlzdCBpcyByZWZ1c2VkLiBBIG1pc3NpbmcgYXJndW1lbnQgcmVhY2hlcyBpdHMgZ3VhcmQgYXMgYHVuZGVmaW5lZGAsIHNvIGFuIG9wdGlvbmFsXG4gKiBwYXJhbWV0ZXIncyBndWFyZCBhY2NlcHRzIGB1bmRlZmluZWRgIChzZWUge0BsaW5rIG9wdGlvbmFsR3VhcmR9KS5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQYXJhbWV0ZXJzIC0gVGhlIG1ldGhvZCdzIHBhcmFtZXRlcnMsIGluZmVycmVkIGZyb20gdGhlIGd1YXJkcyBvciBmcm9tIHRoZSBjb250cmFjdCBlbnRyeS5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gT25lIGd1YXJkIHBlciBwYXJhbWV0ZXIsIGluIG9yZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHNjaGVtYS5cbiAqIEByZXR1cm5zIFRoZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8Y29uc3QgVFBhcmFtZXRlcnMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+KFxuICBwYXJhbWV0ZXJzOiBBcmd1bWVudFR5cGVHdWFyZHM8VFBhcmFtZXRlcnM+LFxuICBvcHRpb25zPzogQ3JlYXRlQXJndW1lbnRzU2NoZW1hT3B0aW9uc1xuKTogU3RhbmRhcmRTY2hlbWFWMTx1bmtub3duLCBNdXRhYmxlVHVwbGU8VFBhcmFtZXRlcnM+PiB7XG4gIGNvbnN0IHBhcmFtZXRlckxpc3QgPSBjYXN0VG88cmVhZG9ubHkgRXhwZWN0ZWRUeXBlR3VhcmQ8dW5rbm93bj5bXT4ocGFyYW1ldGVycyk7XG4gIHJldHVybiBjcmVhdGVTY2hlbWEoKHZhbHVlOiB1bmtub3duKTogU3RhbmRhcmRTY2hlbWFWMS5SZXN1bHQ8TXV0YWJsZVR1cGxlPFRQYXJhbWV0ZXJzPj4gPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGlzc3VlczogW3sgbWVzc2FnZTogJ0V4cGVjdGVkIGFuIGFyZ3VtZW50IGxpc3QuJyB9XSB9O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiBwYXJhbWV0ZXJMaXN0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgaXNzdWVzOiBbeyBtZXNzYWdlOiBgRXhwZWN0ZWQgYXQgbW9zdCAke1N0cmluZyhwYXJhbWV0ZXJMaXN0Lmxlbmd0aCl9IGFyZ3VtZW50KHMpLCBnb3QgJHtTdHJpbmcodmFsdWUubGVuZ3RoKX0uYCB9XSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlzc3VlcyA9IHBhcmFtZXRlckxpc3QuZmxhdE1hcCgocGFyYW1ldGVyLCBpbmRleCk6IFN0YW5kYXJkU2NoZW1hVjEuSXNzdWVbXSA9PiBwYXJhbWV0ZXIudHlwZUd1YXJkKHZhbHVlW2luZGV4XSkgPyBbXSA6IFt7IG1lc3NhZ2U6IGBFeHBlY3RlZCAke3BhcmFtZXRlci5leHBlY3RlZH0uYCwgcGF0aDogW2luZGV4XSB9XSk7XG4gICAgcmV0dXJuIGlzc3Vlcy5sZW5ndGggPT09IDAgPyB7IHZhbHVlOiBjYXN0VG88TXV0YWJsZVR1cGxlPFRQYXJhbWV0ZXJzPj4odmFsdWUpIH0gOiB7IGlzc3VlcyB9O1xuICB9LCBvcHRpb25zPy52ZW5kb3IpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHNjaGVtYSBvdmVyIG9uZSB2YWx1ZSBmcm9tIGEgdHlwZSBndWFyZDogdGhlIG91dHB1dCBzY2hlbWEgb2YgYSBtZXRob2QgY29udHJhY3QsIHR5cGljYWxseS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZ3VhcmQsIHdoYXQgaXQgZXhwZWN0cywgYW5kIG9wdGlvbmFsbHkgdGhlIHNjaGVtYSdzIHZlbmRvci5cbiAqIEByZXR1cm5zIFRoZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUeXBlR3VhcmRTY2hlbWE8VD4ocGFyYW1zOiBDcmVhdGVUeXBlR3VhcmRTY2hlbWFQYXJhbXM8VD4pOiBTdGFuZGFyZFNjaGVtYVYxPHVua25vd24sIFQ+IHtcbiAgcmV0dXJuIGNyZWF0ZVNjaGVtYShcbiAgICAodmFsdWU6IHVua25vd24pOiBTdGFuZGFyZFNjaGVtYVYxLlJlc3VsdDxUPiA9PiBwYXJhbXMudHlwZUd1YXJkKHZhbHVlKSA/IHsgdmFsdWUgfSA6IHsgaXNzdWVzOiBbeyBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtwYXJhbXMuZXhwZWN0ZWR9LmAgfV0gfSxcbiAgICBwYXJhbXMudmVuZG9yXG4gICk7XG59XG5cbi8qKlxuICogU3RhdGVzIGEgY29udHJhY3QgYWdhaW5zdCBhbiBBUEkgdHlwZSwgc28gZXZlcnkgZW50cnkgaXMgY2hlY2tlZCBhZ2FpbnN0IGl0cyBtZXRob2QgYW5kIHRoZSBzY2hlbWEgYnVpbGRlcnNcbiAqIGluc2lkZSBpdCBpbmZlciB0aGVpciB0eXBlcyBmcm9tIHRoZSBtZXRob2QgcmF0aGVyIHRoYW4gZnJvbSBhIHJlc3RhdGVkIHR1cGxlLiBJdCByZXR1cm5zIHRoZSBjb250cmFjdCBhcyBpcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHRoZSBjb250cmFjdCBkZXNjcmliZXMuXG4gKiBAcGFyYW0gY29udHJhY3QgLSBUaGUgY29udHJhY3QuXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUFwaUNvbnRyYWN0PFRBcGkgZXh0ZW5kcyBvYmplY3Q+KGNvbnRyYWN0OiBUeXBlZEFwaUNvbnRyYWN0PE5vSW5mZXI8VEFwaT4+KTogVHlwZWRBcGlDb250cmFjdDxUQXBpPiB7XG4gIHJldHVybiBjb250cmFjdDtcbn1cblxuLyoqXG4gKiBXaWRlbnMgYSBndWFyZCB0byBhbHNvIGFjY2VwdCBgbnVsbGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKiBAcGFyYW0gZ3VhcmQgLSBUaGUgZ3VhcmQgdG8gd2lkZW4uXG4gKiBAcmV0dXJucyBBIGd1YXJkIGFjY2VwdGluZyB3aGF0IGBndWFyZGAgYWNjZXB0cywgb3IgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGVHdWFyZDxUPihndWFyZDogRXhwZWN0ZWRUeXBlR3VhcmQ8VD4pOiBFeHBlY3RlZFR5cGVHdWFyZDxudWxsIHwgVD4ge1xuICByZXR1cm4ge1xuICAgIGV4cGVjdGVkOiBgJHtndWFyZC5leHBlY3RlZH0gb3IgbnVsbGAsXG4gICAgdHlwZUd1YXJkOiAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgVCA9PiB2YWx1ZSA9PT0gbnVsbCB8fCBndWFyZC50eXBlR3VhcmQodmFsdWUpXG4gIH07XG59XG5cbi8qKlxuICogV2lkZW5zIGEgZ3VhcmQgdG8gYWxzbyBhY2NlcHQgYHVuZGVmaW5lZGAsIHdoaWNoIGlzIHdoYXQgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHJlY2VpdmVzIHdoZW4gaXQgaXMgbGVmdCBvdXQuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKiBAcGFyYW0gZ3VhcmQgLSBUaGUgZ3VhcmQgdG8gd2lkZW4uXG4gKiBAcmV0dXJucyBBIGd1YXJkIGFjY2VwdGluZyB3aGF0IGBndWFyZGAgYWNjZXB0cywgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbEd1YXJkPFQ+KGd1YXJkOiBFeHBlY3RlZFR5cGVHdWFyZDxUPik6IEV4cGVjdGVkVHlwZUd1YXJkPFQgfCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIHtcbiAgICBleHBlY3RlZDogYCR7Z3VhcmQuZXhwZWN0ZWR9IG9yIHVuZGVmaW5lZGAsXG4gICAgdHlwZUd1YXJkOiAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUIHwgdW5kZWZpbmVkID0+IHZhbHVlID09PSB1bmRlZmluZWQgfHwgZ3VhcmQudHlwZUd1YXJkKHZhbHVlKVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTY2hlbWE8VD4odmFsaWRhdGU6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RhbmRhcmRTY2hlbWFWMS5SZXN1bHQ8VD4sIHZlbmRvcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogU3RhbmRhcmRTY2hlbWFWMTx1bmtub3duLCBUPiB7XG4gIHJldHVybiB7XG4gICAgJ35zdGFuZGFyZCc6IHtcbiAgICAgIHZhbGlkYXRlLFxuICAgICAgdmVuZG9yOiB2ZW5kb3IgPz8gTElCUkFSWV9OQU1FLFxuICAgICAgdmVyc2lvbjogMVxuICAgIH1cbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQSxxQkFBNkI7QUFDN0IsMEJBQXVCO0FBQ3ZCLHlCQU1PO0FBc0hBLE1BQU0sZ0JBQTRDLEVBQUUsVUFBVSxhQUFhLFdBQVcsNkJBQVU7QUFLaEcsTUFBTSxlQUEwQyxFQUFFLFVBQVUsWUFBWSxXQUFXLDRCQUFTO0FBSzVGLE1BQU0sZUFBMEMsRUFBRSxVQUFVLFlBQVksV0FBVyw0QkFBUztBQUs1RixNQUFNLHFCQUFrRCxFQUFFLFVBQVUsdUJBQXVCLFdBQVcsaUNBQWM7QUFLcEgsTUFBTSxrQkFBZ0QsRUFBRSxVQUFVLGFBQWEsV0FBVywrQkFBWTtBQWF0RyxTQUFTLHNCQUNkLFlBQ0EsU0FDc0Q7QUFDdEQsUUFBTSxvQkFBZ0IsNEJBQThDLFVBQVU7QUFDOUUsU0FBTyxhQUFhLENBQUMsVUFBdUU7QUFDMUYsUUFBSSxDQUFDLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDekIsYUFBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLFNBQVMsNkJBQTZCLENBQUMsRUFBRTtBQUFBLElBQy9EO0FBRUEsUUFBSSxNQUFNLFNBQVMsY0FBYyxRQUFRO0FBQ3ZDLGFBQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxTQUFTLG9CQUFvQixPQUFPLGNBQWMsTUFBTSxDQUFDLHFCQUFxQixPQUFPLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQUEsSUFDL0g7QUFFQSxVQUFNLFNBQVMsY0FBYyxRQUFRLENBQUMsV0FBVyxVQUFvQyxVQUFVLFVBQVUsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsWUFBWSxVQUFVLFFBQVEsS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM3TCxXQUFPLE9BQU8sV0FBVyxJQUFJLEVBQUUsV0FBTyw0QkFBa0MsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPO0FBQUEsRUFDOUYsR0FBRyxTQUFTLE1BQU07QUFDcEI7QUFTTyxTQUFTLHNCQUF5QixRQUFzRTtBQUM3RyxTQUFPO0FBQUEsSUFDTCxDQUFDLFVBQStDLE9BQU8sVUFBVSxLQUFLLElBQUksRUFBRSxNQUFNLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxTQUFTLFlBQVksT0FBTyxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQUEsSUFDOUksT0FBTztBQUFBLEVBQ1Q7QUFDRjtBQVVPLFNBQVMsa0JBQXVDLFVBQW1FO0FBQ3hILFNBQU87QUFDVDtBQVNPLFNBQVMsY0FBaUIsT0FBMEQ7QUFDekYsU0FBTztBQUFBLElBQ0wsVUFBVSxHQUFHLE1BQU0sUUFBUTtBQUFBLElBQzNCLFdBQVcsQ0FBQyxVQUFzQyxVQUFVLFFBQVEsTUFBTSxVQUFVLEtBQUs7QUFBQSxFQUMzRjtBQUNGO0FBU08sU0FBUyxjQUFpQixPQUErRDtBQUM5RixTQUFPO0FBQUEsSUFDTCxVQUFVLEdBQUcsTUFBTSxRQUFRO0FBQUEsSUFDM0IsV0FBVyxDQUFDLFVBQTJDLFVBQVUsVUFBYSxNQUFNLFVBQVUsS0FBSztBQUFBLEVBQ3JHO0FBQ0Y7QUFFQSxTQUFTLGFBQWdCLFVBQTBELFFBQTBEO0FBQzNJLFNBQU87QUFBQSxJQUNMLGFBQWE7QUFBQSxNQUNYO0FBQUEsTUFDQSxRQUFRLFVBQVU7QUFBQSxNQUNsQixTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The contract of an API one module exposes to another: which methods it promises, and a
|
|
6
|
+
* {@link https://standardschema.dev | Standard Schema} over each method's arguments and return value.
|
|
7
|
+
*
|
|
8
|
+
* The schemas are plain objects over plain functions, which a type guard already is, so a contract can cross a
|
|
9
|
+
* boundary between two copies of a library and still be run by whichever copy reads it. The builders here turn
|
|
10
|
+
* the guards a module already has into the two shapes a method contract needs: one value (an output) and one
|
|
11
|
+
* argument list (an input). zod / valibot / arktype schemas plug into the same slots unchanged; this module just
|
|
12
|
+
* does not make every provider bundle one to describe two arguments.
|
|
13
|
+
*
|
|
14
|
+
* Running the schemas is left to whoever owns the call path, since that is where an issue can be reported.
|
|
15
|
+
*/
|
|
16
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec' with { 'resolution-mode': 'import' };
|
|
17
|
+
/**
|
|
18
|
+
* The contract an API declares: every key is a method the API promises to expose, and its value optionally
|
|
19
|
+
* carries the payload schemas for that method.
|
|
20
|
+
*
|
|
21
|
+
* Typed over the API when one is named: `ApiContract<MyApi>` has exactly one entry per function member of
|
|
22
|
+
* `MyApi` (a missing method, an extra one or a misspelled one does not compile), and each entry's schemas must
|
|
23
|
+
* produce that method's parameters and awaited return value. Without a type argument, or for `object`, it is the
|
|
24
|
+
* loose record a reader that knows nothing about the API sees.
|
|
25
|
+
*
|
|
26
|
+
* @typeParam TApi - The API the contract describes. `object`, the default, means "not typed".
|
|
27
|
+
*/
|
|
28
|
+
export type ApiContract<TApi extends object = object> = object extends TApi ? Readonly<Record<string, ApiMethodContract>> : TypedApiContract<TApi>;
|
|
29
|
+
/**
|
|
30
|
+
* The payload schemas for a single API method. Both halves are optional: a method may declare only its input,
|
|
31
|
+
* only its output, neither (the entry then just declares that the method must exist), or both.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam TParameters - The method's parameters, as a tuple, which the input schema must produce.
|
|
34
|
+
* @typeParam TReturnValue - The method's return value, awaited, which the output schema must produce.
|
|
35
|
+
*/
|
|
36
|
+
export interface ApiMethodContract<TParameters = unknown, TReturnValue = unknown> {
|
|
37
|
+
/**
|
|
38
|
+
* Validates the method's arguments, as an array.
|
|
39
|
+
*/
|
|
40
|
+
readonly input?: StandardSchemaV1<unknown, TParameters>;
|
|
41
|
+
/**
|
|
42
|
+
* Validates the method's return value, or, when the method returns a thenable, the value it resolves to.
|
|
43
|
+
*/
|
|
44
|
+
readonly output?: StandardSchemaV1<unknown, TReturnValue>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The names of the function members of an API, which are exactly the keys a typed {@link ApiContract} has.
|
|
48
|
+
*
|
|
49
|
+
* @typeParam TApi - The API.
|
|
50
|
+
*/
|
|
51
|
+
export type ApiMethodName<TApi extends object> = keyof ApiMethods<TApi> & string;
|
|
52
|
+
/**
|
|
53
|
+
* The function members of an API.
|
|
54
|
+
*
|
|
55
|
+
* @typeParam TApi - The API.
|
|
56
|
+
*/
|
|
57
|
+
export type ApiMethods<TApi extends object> = {
|
|
58
|
+
[TKey in keyof TApi as TApi[TKey] extends (...arguments_: never) => unknown ? TKey : never]: TApi[TKey];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* One type guard per parameter of a method, in order.
|
|
62
|
+
*
|
|
63
|
+
* @typeParam TParameters - The method's parameters.
|
|
64
|
+
*/
|
|
65
|
+
export type ArgumentTypeGuards<TParameters extends readonly unknown[]> = {
|
|
66
|
+
readonly [TIndex in keyof TParameters]: ExpectedTypeGuard<TParameters[TIndex]>;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Options for {@link createArgumentsSchema}.
|
|
70
|
+
*/
|
|
71
|
+
export interface CreateArgumentsSchemaOptions {
|
|
72
|
+
/**
|
|
73
|
+
* The Standard Schema `vendor` the schema reports. Defaults to this library's name.
|
|
74
|
+
*/
|
|
75
|
+
readonly vendor?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Parameters for {@link createTypeGuardSchema}: the guard, what it expects, and optionally the schema's vendor.
|
|
79
|
+
*
|
|
80
|
+
* @typeParam T - The type the guard narrows to.
|
|
81
|
+
*/
|
|
82
|
+
export interface CreateTypeGuardSchemaParams<T> extends ExpectedTypeGuard<T> {
|
|
83
|
+
/**
|
|
84
|
+
* The Standard Schema `vendor` the schema reports. Defaults to this library's name.
|
|
85
|
+
*/
|
|
86
|
+
readonly vendor?: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* One value a schema accepts, described by a type guard and by what it expects, for the issue message.
|
|
90
|
+
*
|
|
91
|
+
* @typeParam T - The type the guard narrows to.
|
|
92
|
+
*/
|
|
93
|
+
export interface ExpectedTypeGuard<T> {
|
|
94
|
+
/**
|
|
95
|
+
* What the value should have been, phrased to follow "Expected", e.g. `'a string'`.
|
|
96
|
+
*/
|
|
97
|
+
readonly expected: string;
|
|
98
|
+
/**
|
|
99
|
+
* Decides whether the value is acceptable.
|
|
100
|
+
*
|
|
101
|
+
* @param value - The value to check.
|
|
102
|
+
* @returns Whether the value is a `T`.
|
|
103
|
+
*/
|
|
104
|
+
readonly typeGuard: (value: unknown) => value is T;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The {@link ApiContract} of a named API: one entry per function member, each typed against that member. Both
|
|
108
|
+
* schemas are REQUIRED here, so a typed contract is a full description of every signature and a `{}` entry does
|
|
109
|
+
* not compile. Only the loose form leaves them optional.
|
|
110
|
+
*
|
|
111
|
+
* @typeParam TApi - The API the contract describes.
|
|
112
|
+
*/
|
|
113
|
+
export type TypedApiContract<TApi extends object> = {
|
|
114
|
+
readonly [TKey in ApiMethodName<TApi>]-?: TApi[TKey] extends (...arguments_: infer TParameters) => infer TReturnValue ? Required<ApiMethodContract<TParameters, Awaited<TReturnValue>>> : never;
|
|
115
|
+
};
|
|
116
|
+
type MutableTuple<TTuple extends readonly unknown[]> = {
|
|
117
|
+
-readonly [TIndex in keyof TTuple]: TTuple[TIndex];
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Accepts a boolean.
|
|
121
|
+
*/
|
|
122
|
+
export declare const BOOLEAN_GUARD: ExpectedTypeGuard<boolean>;
|
|
123
|
+
/**
|
|
124
|
+
* Accepts a number.
|
|
125
|
+
*/
|
|
126
|
+
export declare const NUMBER_GUARD: ExpectedTypeGuard<number>;
|
|
127
|
+
/**
|
|
128
|
+
* Accepts a string. Spread it to say what the string is: `{ ...STRING_GUARD, expected: 'a path' }`.
|
|
129
|
+
*/
|
|
130
|
+
export declare const STRING_GUARD: ExpectedTypeGuard<string>;
|
|
131
|
+
/**
|
|
132
|
+
* Accepts an array of strings.
|
|
133
|
+
*/
|
|
134
|
+
export declare const STRING_ARRAY_GUARD: ExpectedTypeGuard<string[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Accepts `undefined`, which is the output of a method returning `void` or `Promise<void>`.
|
|
137
|
+
*/
|
|
138
|
+
export declare const UNDEFINED_GUARD: ExpectedTypeGuard<undefined>;
|
|
139
|
+
/**
|
|
140
|
+
* Builds the input schema of a method contract: a schema over the method's ARGUMENT LIST, one type guard per
|
|
141
|
+
* parameter. An argument that fails its guard is reported with its index as the issue path, and an argument list
|
|
142
|
+
* longer than the parameter list is refused. A missing argument reaches its guard as `undefined`, so an optional
|
|
143
|
+
* parameter's guard accepts `undefined` (see {@link optionalGuard}).
|
|
144
|
+
*
|
|
145
|
+
* @typeParam TParameters - The method's parameters, inferred from the guards or from the contract entry.
|
|
146
|
+
* @param parameters - One guard per parameter, in order.
|
|
147
|
+
* @param options - The options for the schema.
|
|
148
|
+
* @returns The schema.
|
|
149
|
+
*/
|
|
150
|
+
export declare function createArgumentsSchema<const TParameters extends readonly unknown[]>(parameters: ArgumentTypeGuards<TParameters>, options?: CreateArgumentsSchemaOptions): StandardSchemaV1<unknown, MutableTuple<TParameters>>;
|
|
151
|
+
/**
|
|
152
|
+
* Builds a schema over one value from a type guard: the output schema of a method contract, typically.
|
|
153
|
+
*
|
|
154
|
+
* @typeParam T - The type the guard narrows to.
|
|
155
|
+
* @param params - The guard, what it expects, and optionally the schema's vendor.
|
|
156
|
+
* @returns The schema.
|
|
157
|
+
*/
|
|
158
|
+
export declare function createTypeGuardSchema<T>(params: CreateTypeGuardSchemaParams<T>): StandardSchemaV1<unknown, T>;
|
|
159
|
+
/**
|
|
160
|
+
* States a contract against an API type, so every entry is checked against its method and the schema builders
|
|
161
|
+
* inside it infer their types from the method rather than from a restated tuple. It returns the contract as is.
|
|
162
|
+
*
|
|
163
|
+
* @typeParam TApi - The API the contract describes.
|
|
164
|
+
* @param contract - The contract.
|
|
165
|
+
* @returns The same contract.
|
|
166
|
+
*/
|
|
167
|
+
export declare function defineApiContract<TApi extends object>(contract: TypedApiContract<NoInfer<TApi>>): TypedApiContract<TApi>;
|
|
168
|
+
/**
|
|
169
|
+
* Widens a guard to also accept `null`.
|
|
170
|
+
*
|
|
171
|
+
* @typeParam T - The type the guard narrows to.
|
|
172
|
+
* @param guard - The guard to widen.
|
|
173
|
+
* @returns A guard accepting what `guard` accepts, or `null`.
|
|
174
|
+
*/
|
|
175
|
+
export declare function nullableGuard<T>(guard: ExpectedTypeGuard<T>): ExpectedTypeGuard<null | T>;
|
|
176
|
+
/**
|
|
177
|
+
* Widens a guard to also accept `undefined`, which is what an optional parameter receives when it is left out.
|
|
178
|
+
*
|
|
179
|
+
* @typeParam T - The type the guard narrows to.
|
|
180
|
+
* @param guard - The guard to widen.
|
|
181
|
+
* @returns A guard accepting what `guard` accepts, or `undefined`.
|
|
182
|
+
*/
|
|
183
|
+
export declare function optionalGuard<T>(guard: ExpectedTypeGuard<T>): ExpectedTypeGuard<T | undefined>;
|
|
184
|
+
export {};
|
package/dist/lib/cjs/index.cjs
CHANGED
|
@@ -35,6 +35,7 @@ var index_exports = {};
|
|
|
35
35
|
__export(index_exports, {
|
|
36
36
|
"abort-controller": () => abort_controller,
|
|
37
37
|
"aggregate-error": () => aggregate_error,
|
|
38
|
+
"api-contract": () => api_contract,
|
|
38
39
|
array: () => array,
|
|
39
40
|
"array-buffer": () => array_buffer,
|
|
40
41
|
async: () => async,
|
|
@@ -69,6 +70,7 @@ __export(index_exports, {
|
|
|
69
70
|
module.exports = __toCommonJS(index_exports);
|
|
70
71
|
var abort_controller = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./abort-controller.cjs')), 1);
|
|
71
72
|
var aggregate_error = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./aggregate-error.cjs')), 1);
|
|
73
|
+
var api_contract = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./api-contract.cjs')), 1);
|
|
72
74
|
var array_buffer = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./array-buffer.cjs')), 1);
|
|
73
75
|
var array = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./array.cjs')), 1);
|
|
74
76
|
var async_events = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./async-events.cjs')), 1);
|
|
@@ -103,6 +105,7 @@ var value_wrapper = __toESM(((module) => module && module.__esModule && 'default
|
|
|
103
105
|
0 && (module.exports = {
|
|
104
106
|
"abort-controller": null,
|
|
105
107
|
"aggregate-error": null,
|
|
108
|
+
"api-contract": null,
|
|
106
109
|
array,
|
|
107
110
|
"array-buffer": null,
|
|
108
111
|
async,
|
|
@@ -134,4 +137,4 @@ var value_wrapper = __toESM(((module) => module && module.__esModule && 'default
|
|
|
134
137
|
"value-provider": null,
|
|
135
138
|
"value-wrapper": null
|
|
136
139
|
});
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2Fib3J0LWNvbnRyb2xsZXInIGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQgKiBhcyAnYWdncmVnYXRlLWVycm9yJyBmcm9tICcuL2FnZ3JlZ2F0ZS1lcnJvci50cyc7XG5leHBvcnQgKiBhcyAnYXBpLWNvbnRyYWN0JyBmcm9tICcuL2FwaS1jb250cmFjdC50cyc7XG5leHBvcnQgKiBhcyAnYXJyYXktYnVmZmVyJyBmcm9tICcuL2FycmF5LWJ1ZmZlci50cyc7XG5leHBvcnQgKiBhcyAnYXJyYXknIGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLWV2ZW50cycgZnJvbSAnLi9hc3luYy1ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLW9wZXJhdGlvbi1ob29rJyBmcm9tICcuL2FzeW5jLW9wZXJhdGlvbi1ob29rLnRzJztcbmV4cG9ydCAqIGFzICdhc3luYycgZnJvbSAnLi9hc3luYy50cyc7XG5leHBvcnQgKiBhcyAnYmVlcGVyJyBmcm9tICcuL2JlZXBlci50cyc7XG5leHBvcnQgKiBhcyAnYmxvYicgZnJvbSAnLi9ibG9iLnRzJztcbmV4cG9ydCAqIGFzICdieXRlcycgZnJvbSAnLi9ieXRlcy50cyc7XG5leHBvcnQgKiBhcyAnZGVidWctY29udHJvbGxlcicgZnJvbSAnLi9kZWJ1Zy1jb250cm9sbGVyLnRzJztcbmV4cG9ydCAqIGFzICdkZWJ1ZycgZnJvbSAnLi9kZWJ1Zy50cyc7XG5leHBvcnQgKiBhcyAnZGVza3RvcC16aXAtZXh0cmFjdG9yJyBmcm9tICcuL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyc7XG5leHBvcnQgKiBhcyAnZGlzcG9zYWJsZScgZnJvbSAnLi9kaXNwb3NhYmxlLnRzJztcbmV4cG9ydCAqIGFzICdlbnVtJyBmcm9tICcuL2VudW0udHMnO1xuZXhwb3J0ICogYXMgJ2Vycm9yJyBmcm9tICcuL2Vycm9yLnRzJztcbmV4cG9ydCAqIGFzICdmdW5jdGlvbicgZnJvbSAnLi9mdW5jdGlvbi50cyc7XG5leHBvcnQgKiBhcyAnaHRtbC1lbGVtZW50JyBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQgKiBhcyAnanBlZy1tZXRhZGF0YScgZnJvbSAnLi9qcGVnLW1ldGFkYXRhLnRzJztcbmV4cG9ydCAqIGFzICdsaWJyYXJ5JyBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0ICogYXMgJ29iamVjdC11dGlscycgZnJvbSAnLi9vYmplY3QtdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ3BhdGgnIGZyb20gJy4vcGF0aC50cyc7XG5leHBvcnQgKiBhcyAncmVnLWV4cCcgZnJvbSAnLi9yZWctZXhwLnRzJztcbmV4cG9ydCAqIGFzICdzdHJpbmcnIGZyb20gJy4vc3RyaW5nLnRzJztcbmV4cG9ydCAqIGFzICd0cmFuc2Zvcm1lcnMnIGZyb20gJy4vdHJhbnNmb3JtZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICd0d28td2F5LW1hcCcgZnJvbSAnLi90d28td2F5LW1hcC50cyc7XG5leHBvcnQgKiBhcyAndHlwZS1ndWFyZHMnIGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGUnIGZyb20gJy4vdHlwZS50cyc7XG5leHBvcnQgKiBhcyAndHlwZXNjcmlwdC1saWItc3RhdGUnIGZyb20gJy4vdHlwZXNjcmlwdC1saWItc3RhdGUudHMnO1xuZXhwb3J0ICogYXMgJ3VybCcgZnJvbSAnLi91cmwudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbHVlLXByb3ZpZGVyJyBmcm9tICcuL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCAqIGFzICd2YWx1ZS13cmFwcGVyJyBmcm9tICcuL3ZhbHVlLXdyYXBwZXIudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBLDRCQUFBQTtBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBO0FBQUEsd0JBQUFDO0FBQUEsRUFBQTtBQUFBLHdCQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDRCQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUEsRUFBQTtBQUFBLGNBQUFDO0FBQUEsRUFBQTtBQUFBLGtCQUFBQztBQUFBLEVBQUEsc0JBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQSxFQUFBO0FBQUEsd0JBQUFDO0FBQUEsRUFBQTtBQUFBLG1CQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBLHVCQUFBQztBQUFBLEVBQUE7QUFBQSx1QkFBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUE7QUFBQSwwQkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBbEIsbUJBQW9DO0FBQ3BDLElBQUFDLGtCQUFtQztBQUNuQyxJQUFBQyxlQUFnQztBQUNoQyxJQUFBQyxlQUFnQztBQUNoQyxZQUF5QjtBQUN6QixJQUFBQyxlQUFnQztBQUNoQyxJQUFBQyx1QkFBd0M7QUFDeEMsWUFBeUI7QUFDekIsYUFBMEI7QUFDMUIsV0FBd0I7QUFDeEIsWUFBeUI7QUFDekIsSUFBQUMsbUJBQW9DO0FBQ3BDLFlBQXlCO0FBQ3pCLElBQUFDLHdCQUF5QztBQUN6QyxpQkFBOEI7QUFDOUIsSUFBQUMsUUFBd0I7QUFDeEIsWUFBeUI7QUFDekIsSUFBQUMsWUFBNEI7QUFDNUIsSUFBQUMsZUFBZ0M7QUFDaEMsSUFBQUMsZ0JBQWlDO0FBQ2pDLGNBQTJCO0FBQzNCLElBQUFDLGVBQWdDO0FBQ2hDLFdBQXdCO0FBQ3hCLElBQUFDLFVBQTJCO0FBQzNCLGFBQTBCO0FBQzFCLG1CQUFnQztBQUNoQyxJQUFBQyxjQUErQjtBQUMvQixJQUFBQyxjQUErQjtBQUMvQixXQUF3QjtBQUN4QixJQUFBQyx1QkFBd0M7QUFDeEMsVUFBdUI7QUFDdkIsSUFBQUMsaUJBQWtDO0FBQ2xDLElBQUFDLGdCQUFpQzsiLAogICJuYW1lcyI6IFsiYWJvcnQtY29udHJvbGxlciIsICJhZ2dyZWdhdGUtZXJyb3IiLCAiYXBpLWNvbnRyYWN0IiwgImFycmF5LWJ1ZmZlciIsICJhc3luYy1ldmVudHMiLCAiYXN5bmMtb3BlcmF0aW9uLWhvb2siLCAiZGVidWctY29udHJvbGxlciIsICJkZXNrdG9wLXppcC1leHRyYWN0b3IiLCAiZW51bSIsICJmdW5jdGlvbiIsICJodG1sLWVsZW1lbnQiLCAianBlZy1tZXRhZGF0YSIsICJvYmplY3QtdXRpbHMiLCAicmVnLWV4cCIsICJ0d28td2F5LW1hcCIsICJ0eXBlLWd1YXJkcyIsICJ0eXBlc2NyaXB0LWxpYi1zdGF0ZSIsICJ2YWx1ZS1wcm92aWRlciIsICJ2YWx1ZS13cmFwcGVyIl0KfQo=
|
package/dist/lib/cjs/index.d.cts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference path="./library-references.d.cts" />
|
|
2
2
|
export * as 'abort-controller' from './abort-controller.cjs';
|
|
3
3
|
export * as 'aggregate-error' from './aggregate-error.cjs';
|
|
4
|
+
export * as 'api-contract' from './api-contract.cjs';
|
|
4
5
|
export * as 'array-buffer' from './array-buffer.cjs';
|
|
5
6
|
export * as 'array' from './array.cjs';
|
|
6
7
|
export * as 'async-events' from './async-events.cjs';
|
|
@@ -28,7 +28,12 @@ __export(type_guards_exports, {
|
|
|
28
28
|
assertNever: () => assertNever,
|
|
29
29
|
assertNonNullable: () => assertNonNullable,
|
|
30
30
|
ensureGenericObject: () => ensureGenericObject,
|
|
31
|
-
ensureNonNullable: () => ensureNonNullable
|
|
31
|
+
ensureNonNullable: () => ensureNonNullable,
|
|
32
|
+
isBoolean: () => isBoolean,
|
|
33
|
+
isNumber: () => isNumber,
|
|
34
|
+
isString: () => isString,
|
|
35
|
+
isStringArray: () => isStringArray,
|
|
36
|
+
isUndefined: () => isUndefined
|
|
32
37
|
});
|
|
33
38
|
module.exports = __toCommonJS(type_guards_exports);
|
|
34
39
|
var import_function = require('./function.cjs');
|
|
@@ -58,6 +63,21 @@ function ensureNonNullable(value, errorOrMessage) {
|
|
|
58
63
|
assertNonNullable(value, errorOrMessage);
|
|
59
64
|
return value;
|
|
60
65
|
}
|
|
66
|
+
function isBoolean(value) {
|
|
67
|
+
return typeof value === "boolean";
|
|
68
|
+
}
|
|
69
|
+
function isNumber(value) {
|
|
70
|
+
return typeof value === "number";
|
|
71
|
+
}
|
|
72
|
+
function isString(value) {
|
|
73
|
+
return typeof value === "string";
|
|
74
|
+
}
|
|
75
|
+
function isStringArray(value) {
|
|
76
|
+
return Array.isArray(value) && value.every(isString);
|
|
77
|
+
}
|
|
78
|
+
function isUndefined(value) {
|
|
79
|
+
return value === void 0;
|
|
80
|
+
}
|
|
61
81
|
// Annotate the CommonJS export names for ESM import in node:
|
|
62
82
|
0 && (module.exports = {
|
|
63
83
|
assert,
|
|
@@ -65,6 +85,11 @@ function ensureNonNullable(value, errorOrMessage) {
|
|
|
65
85
|
assertNever,
|
|
66
86
|
assertNonNullable,
|
|
67
87
|
ensureGenericObject,
|
|
68
|
-
ensureNonNullable
|
|
88
|
+
ensureNonNullable,
|
|
89
|
+
isBoolean,
|
|
90
|
+
isNumber,
|
|
91
|
+
isString,
|
|
92
|
+
isStringArray,
|
|
93
|
+
isUndefined
|
|
69
94
|
});
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGJhc2UgdHlwZSB0byBpbnRlcnNlY3Qgd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPiAmIFQ7XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgYHRydWVgLiBUaHJvd3MgaWYgaXQgaXMgbm90LlxuICpcbiAqIFVzZSBpbiBwbGFjZSBvZiBgLyogdjggaWdub3JlICpcXC9gIGZvciBkZWZlbnNpdmUgZ3VhcmRzIHRoYXQgc2hvdWxkXG4gKiBuZXZlciB0cmlnZ2VyIGF0IHJ1bnRpbWUgYnV0IHdvdWxkIG90aGVyd2lzZSBjcmVhdGUgdW5jb3ZlcmVkIGJyYW5jaGVzLlxuICpcbiAqIEBwYXJhbSBpc1RydWUgLSBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIFRoZSBlcnJvciBvciBtZXNzYWdlIHRvIHRocm93IGlmIHRoZSBjb25kaXRpb24gaXMgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChpc1RydWU6IGJvb2xlYW4sIGVycm9yT3JNZXNzYWdlOiBFcnJvciB8IHN0cmluZyk6IGFzc2VydHMgaXNUcnVlIHtcbiAgaWYgKCFpc1RydWUpIHtcbiAgICB0aHJvdyB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgbmFycm93aW5nIGl0cyB0eXBlIGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBfb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEdlbmVyaWNPYmplY3Q8VD4oX29iamVjdDogVCk6IGFzc2VydHMgX29iamVjdCBpcyBHZW5lcmljT2JqZWN0PFQ+IHtcbiAgbm9vcCgpO1xufVxuXG4vKipcbiAqIEFzc2VydHMgYXQgY29tcGlsZSB0aW1lIHRoYXQgZXZlcnkgY2FzZSBvZiBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gaGFzIGJlZW5cbiAqIGhhbmRsZWQuIFBsYWNlIGF0IHRoZSBgZGVmYXVsdGAgYnJhbmNoIG9mIGEgYHN3aXRjaGAgb3ZlciBhIHVuaW9uIG9yIGVudW0uXG4gKlxuICogSWYgYSBuZXcgdmFyaWFudCBpcyBhZGRlZCB0byB0aGUgdW5pb24gd2l0aG91dCBhIG1hdGNoaW5nIGBjYXNlYCwgdGhlIGNhbGxcbiAqIHRvIHtAbGluayBhc3NlcnROZXZlcn0gZmFpbHMgdG8gY29tcGlsZSBiZWNhdXNlIGB2YWx1ZWAgaXMgbm8gbG9uZ2VyIGBuZXZlcmAuXG4gKiBJZiByZWFjaGVkIGF0IHJ1bnRpbWUgKGUuZy4gYmVjYXVzZSB0aGUgdmFsdWUgd2FzIGJ5cGFzc2VkIHZpYSBKU09OIG9yIGFcbiAqIHR5cGUgYXNzZXJ0aW9uKSwgaXQgdGhyb3dzIGEgZGVzY3JpcHRpdmUgYEVycm9yYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHN3aXRjaCAobW9kZSkge1xuICogICBjYXNlICdhJzogcmV0dXJuIGRvQSgpO1xuICogICBjYXNlICdiJzogcmV0dXJuIGRvQigpO1xuICogICBkZWZhdWx0OiBhc3NlcnROZXZlcihtb2RlKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGhhdXN0aXZlbHktaGFuZGxlZCB2YWx1ZSwgbmFycm93ZWQgdG8gYG5ldmVyYCBieSBjb250cm9sIGZsb3cuXG4gKiBAdGhyb3dzIEFsd2F5cywgaWYgcmVhY2hlZCBhdCBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWU6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCB2YWx1ZTogJHtTdHJpbmcodmFsdWUpfWApO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBPbmx5IGNhbGxhYmxlIHdoZW4gYFRgIGluY2x1ZGVzIGBudWxsYCBvciBgdW5kZWZpbmVkYC4gUGFzc2luZyBhbiBhbHJlYWR5IG5vbi1udWxsYWJsZSB0eXBlIGlzIGEgY29tcGlsZSBlcnJvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBPcHRpb25hbCB7QGxpbmsgRXJyb3J9IG9yIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLlxuICogQHRocm93cyBJZiB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbGFibGU8VCBleHRlbmRzIE51bGxhYmxlQ29uc3RyYWludDxUPj4odmFsdWU6IFQsIGVycm9yT3JNZXNzYWdlPzogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlcnJvck9yTWVzc2FnZSA/Pz0gdmFsdWUgPT09IG51bGwgPyAnVmFsdWUgaXMgbnVsbCcgOiAnVmFsdWUgaXMgdW5kZWZpbmVkJztcbiAgY29uc3QgZXJyb3IgPSB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB0aHJvdyBlcnJvcjtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSB2YWx1ZSBpcyBhIGdlbmVyaWMgb2JqZWN0LCByZXR1cm5pbmcgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlR2VuZXJpY09iamVjdDxUPigkb2JqZWN0OiBUKTogR2VuZXJpY09iamVjdDxUPiB7XG4gIHJldHVybiAkb2JqZWN0IGFzIEdlbmVyaWNPYmplY3Q8VD47XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgbm90IGBudWxsYCBvciBgdW5kZWZpbmVkYCBhbmQgcmV0dXJucyBpdCB3aXRoIG5hcnJvd2VkIHR5cGUuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSB3aXRoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgZXhjbHVkZWQgZnJvbSBpdHMgdHlwZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGJhc2UgdHlwZSB0byBpbnRlcnNlY3Qgd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPiAmIFQ7XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgYHRydWVgLiBUaHJvd3MgaWYgaXQgaXMgbm90LlxuICpcbiAqIFVzZSBpbiBwbGFjZSBvZiBgLyogdjggaWdub3JlICpcXC9gIGZvciBkZWZlbnNpdmUgZ3VhcmRzIHRoYXQgc2hvdWxkXG4gKiBuZXZlciB0cmlnZ2VyIGF0IHJ1bnRpbWUgYnV0IHdvdWxkIG90aGVyd2lzZSBjcmVhdGUgdW5jb3ZlcmVkIGJyYW5jaGVzLlxuICpcbiAqIEBwYXJhbSBpc1RydWUgLSBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIFRoZSBlcnJvciBvciBtZXNzYWdlIHRvIHRocm93IGlmIHRoZSBjb25kaXRpb24gaXMgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChpc1RydWU6IGJvb2xlYW4sIGVycm9yT3JNZXNzYWdlOiBFcnJvciB8IHN0cmluZyk6IGFzc2VydHMgaXNUcnVlIHtcbiAgaWYgKCFpc1RydWUpIHtcbiAgICB0aHJvdyB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgbmFycm93aW5nIGl0cyB0eXBlIGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBfb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEdlbmVyaWNPYmplY3Q8VD4oX29iamVjdDogVCk6IGFzc2VydHMgX29iamVjdCBpcyBHZW5lcmljT2JqZWN0PFQ+IHtcbiAgbm9vcCgpO1xufVxuXG4vKipcbiAqIEFzc2VydHMgYXQgY29tcGlsZSB0aW1lIHRoYXQgZXZlcnkgY2FzZSBvZiBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gaGFzIGJlZW5cbiAqIGhhbmRsZWQuIFBsYWNlIGF0IHRoZSBgZGVmYXVsdGAgYnJhbmNoIG9mIGEgYHN3aXRjaGAgb3ZlciBhIHVuaW9uIG9yIGVudW0uXG4gKlxuICogSWYgYSBuZXcgdmFyaWFudCBpcyBhZGRlZCB0byB0aGUgdW5pb24gd2l0aG91dCBhIG1hdGNoaW5nIGBjYXNlYCwgdGhlIGNhbGxcbiAqIHRvIHtAbGluayBhc3NlcnROZXZlcn0gZmFpbHMgdG8gY29tcGlsZSBiZWNhdXNlIGB2YWx1ZWAgaXMgbm8gbG9uZ2VyIGBuZXZlcmAuXG4gKiBJZiByZWFjaGVkIGF0IHJ1bnRpbWUgKGUuZy4gYmVjYXVzZSB0aGUgdmFsdWUgd2FzIGJ5cGFzc2VkIHZpYSBKU09OIG9yIGFcbiAqIHR5cGUgYXNzZXJ0aW9uKSwgaXQgdGhyb3dzIGEgZGVzY3JpcHRpdmUgYEVycm9yYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHN3aXRjaCAobW9kZSkge1xuICogICBjYXNlICdhJzogcmV0dXJuIGRvQSgpO1xuICogICBjYXNlICdiJzogcmV0dXJuIGRvQigpO1xuICogICBkZWZhdWx0OiBhc3NlcnROZXZlcihtb2RlKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGhhdXN0aXZlbHktaGFuZGxlZCB2YWx1ZSwgbmFycm93ZWQgdG8gYG5ldmVyYCBieSBjb250cm9sIGZsb3cuXG4gKiBAdGhyb3dzIEFsd2F5cywgaWYgcmVhY2hlZCBhdCBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWU6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCB2YWx1ZTogJHtTdHJpbmcodmFsdWUpfWApO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBPbmx5IGNhbGxhYmxlIHdoZW4gYFRgIGluY2x1ZGVzIGBudWxsYCBvciBgdW5kZWZpbmVkYC4gUGFzc2luZyBhbiBhbHJlYWR5IG5vbi1udWxsYWJsZSB0eXBlIGlzIGEgY29tcGlsZSBlcnJvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBPcHRpb25hbCB7QGxpbmsgRXJyb3J9IG9yIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLlxuICogQHRocm93cyBJZiB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbGFibGU8VCBleHRlbmRzIE51bGxhYmxlQ29uc3RyYWludDxUPj4odmFsdWU6IFQsIGVycm9yT3JNZXNzYWdlPzogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlcnJvck9yTWVzc2FnZSA/Pz0gdmFsdWUgPT09IG51bGwgPyAnVmFsdWUgaXMgbnVsbCcgOiAnVmFsdWUgaXMgdW5kZWZpbmVkJztcbiAgY29uc3QgZXJyb3IgPSB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB0aHJvdyBlcnJvcjtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSB2YWx1ZSBpcyBhIGdlbmVyaWMgb2JqZWN0LCByZXR1cm5pbmcgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlR2VuZXJpY09iamVjdDxUPigkb2JqZWN0OiBUKTogR2VuZXJpY09iamVjdDxUPiB7XG4gIHJldHVybiAkb2JqZWN0IGFzIEdlbmVyaWNPYmplY3Q8VD47XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgbm90IGBudWxsYCBvciBgdW5kZWZpbmVkYCBhbmQgcmV0dXJucyBpdCB3aXRoIG5hcnJvd2VkIHR5cGUuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSB3aXRoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgZXhjbHVkZWQgZnJvbSBpdHMgdHlwZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogTm9uTnVsbGFibGU8VD4ge1xuICBhc3NlcnROb25OdWxsYWJsZSh2YWx1ZSwgZXJyb3JPck1lc3NhZ2UpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhIGJvb2xlYW4uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBib29sZWFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgbnVtYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgd2hvc2UgZXZlcnkgaXRlbSBpcyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nQXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmdbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShpc1N0cmluZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHNCQUFxQjtBQW9CZCxTQUFTLE9BQU8sUUFBaUIsZ0JBQWdEO0FBQ3RGLE1BQUksQ0FBQyxRQUFRO0FBQ1gsVUFBTSxPQUFPLG1CQUFtQixXQUFXLElBQUksTUFBTSxjQUFjLElBQUk7QUFBQSxFQUN6RTtBQUNGO0FBUU8sU0FBUyxvQkFBdUIsU0FBaUQ7QUFDdEYsNEJBQUs7QUFDUDtBQXVCTyxTQUFTLFlBQVksT0FBcUI7QUFDL0MsUUFBTSxJQUFJLE1BQU0sb0JBQW9CLE9BQU8sS0FBSyxDQUFDLEVBQUU7QUFDckQ7QUFZTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFrRTtBQUM3SSxNQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDekM7QUFBQSxFQUNGO0FBRUEscUJBQW1CLFVBQVUsT0FBTyxrQkFBa0I7QUFDdEQsUUFBTSxRQUFRLE9BQU8sbUJBQW1CLFdBQVcsSUFBSSxNQUFNLGNBQWMsSUFBSTtBQUMvRSxRQUFNO0FBQ1I7QUFTTyxTQUFTLG9CQUF1QixTQUE4QjtBQUNuRSxTQUFPO0FBQ1Q7QUFhTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFpRDtBQUM1SCxvQkFBa0IsT0FBTyxjQUFjO0FBQ3ZDLFNBQU87QUFDVDtBQVFPLFNBQVMsVUFBVSxPQUFrQztBQUMxRCxTQUFPLE9BQU8sVUFBVTtBQUMxQjtBQVFPLFNBQVMsU0FBUyxPQUFpQztBQUN4RCxTQUFPLE9BQU8sVUFBVTtBQUMxQjtBQVFPLFNBQVMsU0FBUyxPQUFpQztBQUN4RCxTQUFPLE9BQU8sVUFBVTtBQUMxQjtBQVFPLFNBQVMsY0FBYyxPQUFtQztBQUMvRCxTQUFPLE1BQU0sUUFBUSxLQUFLLEtBQUssTUFBTSxNQUFNLFFBQVE7QUFDckQ7QUFRTyxTQUFTLFlBQVksT0FBb0M7QUFDOUQsU0FBTyxVQUFVO0FBQ25COyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -81,4 +81,39 @@ export declare function ensureGenericObject<T>($object: T): GenericObject<T>;
|
|
|
81
81
|
* @throws If the value is `null` or `undefined`.
|
|
82
82
|
*/
|
|
83
83
|
export declare function ensureNonNullable<T extends NullableConstraint<T>>(value: T, errorOrMessage?: Error | string): NonNullable<T>;
|
|
84
|
+
/**
|
|
85
|
+
* Checks whether a value is a boolean.
|
|
86
|
+
*
|
|
87
|
+
* @param value - The value to check.
|
|
88
|
+
* @returns Whether the value is a boolean.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isBoolean(value: unknown): value is boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Checks whether a value is a number.
|
|
93
|
+
*
|
|
94
|
+
* @param value - The value to check.
|
|
95
|
+
* @returns Whether the value is a number.
|
|
96
|
+
*/
|
|
97
|
+
export declare function isNumber(value: unknown): value is number;
|
|
98
|
+
/**
|
|
99
|
+
* Checks whether a value is a string.
|
|
100
|
+
*
|
|
101
|
+
* @param value - The value to check.
|
|
102
|
+
* @returns Whether the value is a string.
|
|
103
|
+
*/
|
|
104
|
+
export declare function isString(value: unknown): value is string;
|
|
105
|
+
/**
|
|
106
|
+
* Checks whether a value is an array of strings.
|
|
107
|
+
*
|
|
108
|
+
* @param value - The value to check.
|
|
109
|
+
* @returns Whether the value is an array whose every item is a string.
|
|
110
|
+
*/
|
|
111
|
+
export declare function isStringArray(value: unknown): value is string[];
|
|
112
|
+
/**
|
|
113
|
+
* Checks whether a value is `undefined`.
|
|
114
|
+
*
|
|
115
|
+
* @param value - The value to check.
|
|
116
|
+
* @returns Whether the value is `undefined`.
|
|
117
|
+
*/
|
|
118
|
+
export declare function isUndefined(value: unknown): value is undefined;
|
|
84
119
|
export {};
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/// <reference path="./library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The contract of an API one module exposes to another: which methods it promises, and a
|
|
6
|
+
* {@link https://standardschema.dev | Standard Schema} over each method's arguments and return value.
|
|
7
|
+
*
|
|
8
|
+
* The schemas are plain objects over plain functions, which a type guard already is, so a contract can cross a
|
|
9
|
+
* boundary between two copies of a library and still be run by whichever copy reads it. The builders here turn
|
|
10
|
+
* the guards a module already has into the two shapes a method contract needs: one value (an output) and one
|
|
11
|
+
* argument list (an input). zod / valibot / arktype schemas plug into the same slots unchanged; this module just
|
|
12
|
+
* does not make every provider bundle one to describe two arguments.
|
|
13
|
+
*
|
|
14
|
+
* Running the schemas is left to whoever owns the call path, since that is where an issue can be reported.
|
|
15
|
+
*/
|
|
16
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
17
|
+
/**
|
|
18
|
+
* The contract an API declares: every key is a method the API promises to expose, and its value optionally
|
|
19
|
+
* carries the payload schemas for that method.
|
|
20
|
+
*
|
|
21
|
+
* Typed over the API when one is named: `ApiContract<MyApi>` has exactly one entry per function member of
|
|
22
|
+
* `MyApi` (a missing method, an extra one or a misspelled one does not compile), and each entry's schemas must
|
|
23
|
+
* produce that method's parameters and awaited return value. Without a type argument, or for `object`, it is the
|
|
24
|
+
* loose record a reader that knows nothing about the API sees.
|
|
25
|
+
*
|
|
26
|
+
* @typeParam TApi - The API the contract describes. `object`, the default, means "not typed".
|
|
27
|
+
*/
|
|
28
|
+
export type ApiContract<TApi extends object = object> = object extends TApi ? Readonly<Record<string, ApiMethodContract>> : TypedApiContract<TApi>;
|
|
29
|
+
/**
|
|
30
|
+
* The payload schemas for a single API method. Both halves are optional: a method may declare only its input,
|
|
31
|
+
* only its output, neither (the entry then just declares that the method must exist), or both.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam TParameters - The method's parameters, as a tuple, which the input schema must produce.
|
|
34
|
+
* @typeParam TReturnValue - The method's return value, awaited, which the output schema must produce.
|
|
35
|
+
*/
|
|
36
|
+
export interface ApiMethodContract<TParameters = unknown, TReturnValue = unknown> {
|
|
37
|
+
/**
|
|
38
|
+
* Validates the method's arguments, as an array.
|
|
39
|
+
*/
|
|
40
|
+
readonly input?: StandardSchemaV1<unknown, TParameters>;
|
|
41
|
+
/**
|
|
42
|
+
* Validates the method's return value, or, when the method returns a thenable, the value it resolves to.
|
|
43
|
+
*/
|
|
44
|
+
readonly output?: StandardSchemaV1<unknown, TReturnValue>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The names of the function members of an API, which are exactly the keys a typed {@link ApiContract} has.
|
|
48
|
+
*
|
|
49
|
+
* @typeParam TApi - The API.
|
|
50
|
+
*/
|
|
51
|
+
export type ApiMethodName<TApi extends object> = keyof ApiMethods<TApi> & string;
|
|
52
|
+
/**
|
|
53
|
+
* The function members of an API.
|
|
54
|
+
*
|
|
55
|
+
* @typeParam TApi - The API.
|
|
56
|
+
*/
|
|
57
|
+
export type ApiMethods<TApi extends object> = {
|
|
58
|
+
[TKey in keyof TApi as TApi[TKey] extends (...arguments_: never) => unknown ? TKey : never]: TApi[TKey];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* One type guard per parameter of a method, in order.
|
|
62
|
+
*
|
|
63
|
+
* @typeParam TParameters - The method's parameters.
|
|
64
|
+
*/
|
|
65
|
+
export type ArgumentTypeGuards<TParameters extends readonly unknown[]> = {
|
|
66
|
+
readonly [TIndex in keyof TParameters]: ExpectedTypeGuard<TParameters[TIndex]>;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Options for {@link createArgumentsSchema}.
|
|
70
|
+
*/
|
|
71
|
+
export interface CreateArgumentsSchemaOptions {
|
|
72
|
+
/**
|
|
73
|
+
* The Standard Schema `vendor` the schema reports. Defaults to this library's name.
|
|
74
|
+
*/
|
|
75
|
+
readonly vendor?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Parameters for {@link createTypeGuardSchema}: the guard, what it expects, and optionally the schema's vendor.
|
|
79
|
+
*
|
|
80
|
+
* @typeParam T - The type the guard narrows to.
|
|
81
|
+
*/
|
|
82
|
+
export interface CreateTypeGuardSchemaParams<T> extends ExpectedTypeGuard<T> {
|
|
83
|
+
/**
|
|
84
|
+
* The Standard Schema `vendor` the schema reports. Defaults to this library's name.
|
|
85
|
+
*/
|
|
86
|
+
readonly vendor?: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* One value a schema accepts, described by a type guard and by what it expects, for the issue message.
|
|
90
|
+
*
|
|
91
|
+
* @typeParam T - The type the guard narrows to.
|
|
92
|
+
*/
|
|
93
|
+
export interface ExpectedTypeGuard<T> {
|
|
94
|
+
/**
|
|
95
|
+
* What the value should have been, phrased to follow "Expected", e.g. `'a string'`.
|
|
96
|
+
*/
|
|
97
|
+
readonly expected: string;
|
|
98
|
+
/**
|
|
99
|
+
* Decides whether the value is acceptable.
|
|
100
|
+
*
|
|
101
|
+
* @param value - The value to check.
|
|
102
|
+
* @returns Whether the value is a `T`.
|
|
103
|
+
*/
|
|
104
|
+
readonly typeGuard: (value: unknown) => value is T;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The {@link ApiContract} of a named API: one entry per function member, each typed against that member. Both
|
|
108
|
+
* schemas are REQUIRED here, so a typed contract is a full description of every signature and a `{}` entry does
|
|
109
|
+
* not compile. Only the loose form leaves them optional.
|
|
110
|
+
*
|
|
111
|
+
* @typeParam TApi - The API the contract describes.
|
|
112
|
+
*/
|
|
113
|
+
export type TypedApiContract<TApi extends object> = {
|
|
114
|
+
readonly [TKey in ApiMethodName<TApi>]-?: TApi[TKey] extends (...arguments_: infer TParameters) => infer TReturnValue ? Required<ApiMethodContract<TParameters, Awaited<TReturnValue>>> : never;
|
|
115
|
+
};
|
|
116
|
+
type MutableTuple<TTuple extends readonly unknown[]> = {
|
|
117
|
+
-readonly [TIndex in keyof TTuple]: TTuple[TIndex];
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Accepts a boolean.
|
|
121
|
+
*/
|
|
122
|
+
export declare const BOOLEAN_GUARD: ExpectedTypeGuard<boolean>;
|
|
123
|
+
/**
|
|
124
|
+
* Accepts a number.
|
|
125
|
+
*/
|
|
126
|
+
export declare const NUMBER_GUARD: ExpectedTypeGuard<number>;
|
|
127
|
+
/**
|
|
128
|
+
* Accepts a string. Spread it to say what the string is: `{ ...STRING_GUARD, expected: 'a path' }`.
|
|
129
|
+
*/
|
|
130
|
+
export declare const STRING_GUARD: ExpectedTypeGuard<string>;
|
|
131
|
+
/**
|
|
132
|
+
* Accepts an array of strings.
|
|
133
|
+
*/
|
|
134
|
+
export declare const STRING_ARRAY_GUARD: ExpectedTypeGuard<string[]>;
|
|
135
|
+
/**
|
|
136
|
+
* Accepts `undefined`, which is the output of a method returning `void` or `Promise<void>`.
|
|
137
|
+
*/
|
|
138
|
+
export declare const UNDEFINED_GUARD: ExpectedTypeGuard<undefined>;
|
|
139
|
+
/**
|
|
140
|
+
* Builds the input schema of a method contract: a schema over the method's ARGUMENT LIST, one type guard per
|
|
141
|
+
* parameter. An argument that fails its guard is reported with its index as the issue path, and an argument list
|
|
142
|
+
* longer than the parameter list is refused. A missing argument reaches its guard as `undefined`, so an optional
|
|
143
|
+
* parameter's guard accepts `undefined` (see {@link optionalGuard}).
|
|
144
|
+
*
|
|
145
|
+
* @typeParam TParameters - The method's parameters, inferred from the guards or from the contract entry.
|
|
146
|
+
* @param parameters - One guard per parameter, in order.
|
|
147
|
+
* @param options - The options for the schema.
|
|
148
|
+
* @returns The schema.
|
|
149
|
+
*/
|
|
150
|
+
export declare function createArgumentsSchema<const TParameters extends readonly unknown[]>(parameters: ArgumentTypeGuards<TParameters>, options?: CreateArgumentsSchemaOptions): StandardSchemaV1<unknown, MutableTuple<TParameters>>;
|
|
151
|
+
/**
|
|
152
|
+
* Builds a schema over one value from a type guard: the output schema of a method contract, typically.
|
|
153
|
+
*
|
|
154
|
+
* @typeParam T - The type the guard narrows to.
|
|
155
|
+
* @param params - The guard, what it expects, and optionally the schema's vendor.
|
|
156
|
+
* @returns The schema.
|
|
157
|
+
*/
|
|
158
|
+
export declare function createTypeGuardSchema<T>(params: CreateTypeGuardSchemaParams<T>): StandardSchemaV1<unknown, T>;
|
|
159
|
+
/**
|
|
160
|
+
* States a contract against an API type, so every entry is checked against its method and the schema builders
|
|
161
|
+
* inside it infer their types from the method rather than from a restated tuple. It returns the contract as is.
|
|
162
|
+
*
|
|
163
|
+
* @typeParam TApi - The API the contract describes.
|
|
164
|
+
* @param contract - The contract.
|
|
165
|
+
* @returns The same contract.
|
|
166
|
+
*/
|
|
167
|
+
export declare function defineApiContract<TApi extends object>(contract: TypedApiContract<NoInfer<TApi>>): TypedApiContract<TApi>;
|
|
168
|
+
/**
|
|
169
|
+
* Widens a guard to also accept `null`.
|
|
170
|
+
*
|
|
171
|
+
* @typeParam T - The type the guard narrows to.
|
|
172
|
+
* @param guard - The guard to widen.
|
|
173
|
+
* @returns A guard accepting what `guard` accepts, or `null`.
|
|
174
|
+
*/
|
|
175
|
+
export declare function nullableGuard<T>(guard: ExpectedTypeGuard<T>): ExpectedTypeGuard<null | T>;
|
|
176
|
+
/**
|
|
177
|
+
* Widens a guard to also accept `undefined`, which is what an optional parameter receives when it is left out.
|
|
178
|
+
*
|
|
179
|
+
* @typeParam T - The type the guard narrows to.
|
|
180
|
+
* @param guard - The guard to widen.
|
|
181
|
+
* @returns A guard accepting what `guard` accepts, or `undefined`.
|
|
182
|
+
*/
|
|
183
|
+
export declare function optionalGuard<T>(guard: ExpectedTypeGuard<T>): ExpectedTypeGuard<T | undefined>;
|
|
184
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { LIBRARY_NAME } from "./library.mjs";
|
|
7
|
+
import { castTo } from "./object-utils.mjs";
|
|
8
|
+
import {
|
|
9
|
+
isBoolean,
|
|
10
|
+
isNumber,
|
|
11
|
+
isString,
|
|
12
|
+
isStringArray,
|
|
13
|
+
isUndefined
|
|
14
|
+
} from "./type-guards.mjs";
|
|
15
|
+
const BOOLEAN_GUARD = { expected: "a boolean", typeGuard: isBoolean };
|
|
16
|
+
const NUMBER_GUARD = { expected: "a number", typeGuard: isNumber };
|
|
17
|
+
const STRING_GUARD = { expected: "a string", typeGuard: isString };
|
|
18
|
+
const STRING_ARRAY_GUARD = { expected: "an array of strings", typeGuard: isStringArray };
|
|
19
|
+
const UNDEFINED_GUARD = { expected: "undefined", typeGuard: isUndefined };
|
|
20
|
+
function createArgumentsSchema(parameters, options) {
|
|
21
|
+
const parameterList = castTo(parameters);
|
|
22
|
+
return createSchema((value) => {
|
|
23
|
+
if (!Array.isArray(value)) {
|
|
24
|
+
return { issues: [{ message: "Expected an argument list." }] };
|
|
25
|
+
}
|
|
26
|
+
if (value.length > parameterList.length) {
|
|
27
|
+
return { issues: [{ message: `Expected at most ${String(parameterList.length)} argument(s), got ${String(value.length)}.` }] };
|
|
28
|
+
}
|
|
29
|
+
const issues = parameterList.flatMap((parameter, index) => parameter.typeGuard(value[index]) ? [] : [{ message: `Expected ${parameter.expected}.`, path: [index] }]);
|
|
30
|
+
return issues.length === 0 ? { value: castTo(value) } : { issues };
|
|
31
|
+
}, options?.vendor);
|
|
32
|
+
}
|
|
33
|
+
function createTypeGuardSchema(params) {
|
|
34
|
+
return createSchema(
|
|
35
|
+
(value) => params.typeGuard(value) ? { value } : { issues: [{ message: `Expected ${params.expected}.` }] },
|
|
36
|
+
params.vendor
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
function defineApiContract(contract) {
|
|
40
|
+
return contract;
|
|
41
|
+
}
|
|
42
|
+
function nullableGuard(guard) {
|
|
43
|
+
return {
|
|
44
|
+
expected: `${guard.expected} or null`,
|
|
45
|
+
typeGuard: (value) => value === null || guard.typeGuard(value)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function optionalGuard(guard) {
|
|
49
|
+
return {
|
|
50
|
+
expected: `${guard.expected} or undefined`,
|
|
51
|
+
typeGuard: (value) => value === void 0 || guard.typeGuard(value)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function createSchema(validate, vendor) {
|
|
55
|
+
return {
|
|
56
|
+
"~standard": {
|
|
57
|
+
validate,
|
|
58
|
+
vendor: vendor ?? LIBRARY_NAME,
|
|
59
|
+
version: 1
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
BOOLEAN_GUARD,
|
|
65
|
+
NUMBER_GUARD,
|
|
66
|
+
STRING_ARRAY_GUARD,
|
|
67
|
+
STRING_GUARD,
|
|
68
|
+
UNDEFINED_GUARD,
|
|
69
|
+
createArgumentsSchema,
|
|
70
|
+
createTypeGuardSchema,
|
|
71
|
+
defineApiContract,
|
|
72
|
+
nullableGuard,
|
|
73
|
+
optionalGuard
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwaS1jb250cmFjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBjb250cmFjdCBvZiBhbiBBUEkgb25lIG1vZHVsZSBleHBvc2VzIHRvIGFub3RoZXI6IHdoaWNoIG1ldGhvZHMgaXQgcHJvbWlzZXMsIGFuZCBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9zdGFuZGFyZHNjaGVtYS5kZXYgfCBTdGFuZGFyZCBTY2hlbWF9IG92ZXIgZWFjaCBtZXRob2QncyBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBUaGUgc2NoZW1hcyBhcmUgcGxhaW4gb2JqZWN0cyBvdmVyIHBsYWluIGZ1bmN0aW9ucywgd2hpY2ggYSB0eXBlIGd1YXJkIGFscmVhZHkgaXMsIHNvIGEgY29udHJhY3QgY2FuIGNyb3NzIGFcbiAqIGJvdW5kYXJ5IGJldHdlZW4gdHdvIGNvcGllcyBvZiBhIGxpYnJhcnkgYW5kIHN0aWxsIGJlIHJ1biBieSB3aGljaGV2ZXIgY29weSByZWFkcyBpdC4gVGhlIGJ1aWxkZXJzIGhlcmUgdHVyblxuICogdGhlIGd1YXJkcyBhIG1vZHVsZSBhbHJlYWR5IGhhcyBpbnRvIHRoZSB0d28gc2hhcGVzIGEgbWV0aG9kIGNvbnRyYWN0IG5lZWRzOiBvbmUgdmFsdWUgKGFuIG91dHB1dCkgYW5kIG9uZVxuICogYXJndW1lbnQgbGlzdCAoYW4gaW5wdXQpLiB6b2QgLyB2YWxpYm90IC8gYXJrdHlwZSBzY2hlbWFzIHBsdWcgaW50byB0aGUgc2FtZSBzbG90cyB1bmNoYW5nZWQ7IHRoaXMgbW9kdWxlIGp1c3RcbiAqIGRvZXMgbm90IG1ha2UgZXZlcnkgcHJvdmlkZXIgYnVuZGxlIG9uZSB0byBkZXNjcmliZSB0d28gYXJndW1lbnRzLlxuICpcbiAqIFJ1bm5pbmcgdGhlIHNjaGVtYXMgaXMgbGVmdCB0byB3aG9ldmVyIG93bnMgdGhlIGNhbGwgcGF0aCwgc2luY2UgdGhhdCBpcyB3aGVyZSBhbiBpc3N1ZSBjYW4gYmUgcmVwb3J0ZWQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTdGFuZGFyZFNjaGVtYVYxIH0gZnJvbSAnQHN0YW5kYXJkLXNjaGVtYS9zcGVjJztcblxuaW1wb3J0IHsgTElCUkFSWV9OQU1FIH0gZnJvbSAnLi9saWJyYXJ5LnRzJztcbmltcG9ydCB7IGNhc3RUbyB9IGZyb20gJy4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7XG4gIGlzQm9vbGVhbixcbiAgaXNOdW1iZXIsXG4gIGlzU3RyaW5nLFxuICBpc1N0cmluZ0FycmF5LFxuICBpc1VuZGVmaW5lZFxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3QgYW4gQVBJIGRlY2xhcmVzOiBldmVyeSBrZXkgaXMgYSBtZXRob2QgdGhlIEFQSSBwcm9taXNlcyB0byBleHBvc2UsIGFuZCBpdHMgdmFsdWUgb3B0aW9uYWxseVxuICogY2FycmllcyB0aGUgcGF5bG9hZCBzY2hlbWFzIGZvciB0aGF0IG1ldGhvZC5cbiAqXG4gKiBUeXBlZCBvdmVyIHRoZSBBUEkgd2hlbiBvbmUgaXMgbmFtZWQ6IGBBcGlDb250cmFjdDxNeUFwaT5gIGhhcyBleGFjdGx5IG9uZSBlbnRyeSBwZXIgZnVuY3Rpb24gbWVtYmVyIG9mXG4gKiBgTXlBcGlgIChhIG1pc3NpbmcgbWV0aG9kLCBhbiBleHRyYSBvbmUgb3IgYSBtaXNzcGVsbGVkIG9uZSBkb2VzIG5vdCBjb21waWxlKSwgYW5kIGVhY2ggZW50cnkncyBzY2hlbWFzIG11c3RcbiAqIHByb2R1Y2UgdGhhdCBtZXRob2QncyBwYXJhbWV0ZXJzIGFuZCBhd2FpdGVkIHJldHVybiB2YWx1ZS4gV2l0aG91dCBhIHR5cGUgYXJndW1lbnQsIG9yIGZvciBgb2JqZWN0YCwgaXQgaXMgdGhlXG4gKiBsb29zZSByZWNvcmQgYSByZWFkZXIgdGhhdCBrbm93cyBub3RoaW5nIGFib3V0IHRoZSBBUEkgc2Vlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHRoZSBjb250cmFjdCBkZXNjcmliZXMuIGBvYmplY3RgLCB0aGUgZGVmYXVsdCwgbWVhbnMgXCJub3QgdHlwZWRcIi5cbiAqL1xuZXhwb3J0IHR5cGUgQXBpQ29udHJhY3Q8VEFwaSBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gPSBvYmplY3QgZXh0ZW5kcyBUQXBpID8gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgQXBpTWV0aG9kQ29udHJhY3Q+PlxuICA6IFR5cGVkQXBpQ29udHJhY3Q8VEFwaT47XG5cbi8qKlxuICogVGhlIHBheWxvYWQgc2NoZW1hcyBmb3IgYSBzaW5nbGUgQVBJIG1ldGhvZC4gQm90aCBoYWx2ZXMgYXJlIG9wdGlvbmFsOiBhIG1ldGhvZCBtYXkgZGVjbGFyZSBvbmx5IGl0cyBpbnB1dCxcbiAqIG9ubHkgaXRzIG91dHB1dCwgbmVpdGhlciAodGhlIGVudHJ5IHRoZW4ganVzdCBkZWNsYXJlcyB0aGF0IHRoZSBtZXRob2QgbXVzdCBleGlzdCksIG9yIGJvdGguXG4gKlxuICogQHR5cGVQYXJhbSBUUGFyYW1ldGVycyAtIFRoZSBtZXRob2QncyBwYXJhbWV0ZXJzLCBhcyBhIHR1cGxlLCB3aGljaCB0aGUgaW5wdXQgc2NoZW1hIG11c3QgcHJvZHVjZS5cbiAqIEB0eXBlUGFyYW0gVFJldHVyblZhbHVlIC0gVGhlIG1ldGhvZCdzIHJldHVybiB2YWx1ZSwgYXdhaXRlZCwgd2hpY2ggdGhlIG91dHB1dCBzY2hlbWEgbXVzdCBwcm9kdWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwaU1ldGhvZENvbnRyYWN0PFRQYXJhbWV0ZXJzID0gdW5rbm93biwgVFJldHVyblZhbHVlID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZXRob2QncyBhcmd1bWVudHMsIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXQ/OiBTdGFuZGFyZFNjaGVtYVYxPHVua25vd24sIFRQYXJhbWV0ZXJzPjtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZXRob2QncyByZXR1cm4gdmFsdWUsIG9yLCB3aGVuIHRoZSBtZXRob2QgcmV0dXJucyBhIHRoZW5hYmxlLCB0aGUgdmFsdWUgaXQgcmVzb2x2ZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBvdXRwdXQ/OiBTdGFuZGFyZFNjaGVtYVYxPHVua25vd24sIFRSZXR1cm5WYWx1ZT47XG59XG5cbi8qKlxuICogVGhlIG5hbWVzIG9mIHRoZSBmdW5jdGlvbiBtZW1iZXJzIG9mIGFuIEFQSSwgd2hpY2ggYXJlIGV4YWN0bHkgdGhlIGtleXMgYSB0eXBlZCB7QGxpbmsgQXBpQ29udHJhY3R9IGhhcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJLlxuICovXG5leHBvcnQgdHlwZSBBcGlNZXRob2ROYW1lPFRBcGkgZXh0ZW5kcyBvYmplY3Q+ID0ga2V5b2YgQXBpTWV0aG9kczxUQXBpPiAmIHN0cmluZztcblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gbWVtYmVycyBvZiBhbiBBUEkuXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUgQXBpTWV0aG9kczxUQXBpIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW1RLZXkgaW4ga2V5b2YgVEFwaSBhcyBUQXBpW1RLZXldIGV4dGVuZHMgKC4uLmFyZ3VtZW50c186IG5ldmVyKSA9PiB1bmtub3duID8gVEtleSA6IG5ldmVyXTogVEFwaVtUS2V5XTtcbn07XG5cbi8qKlxuICogT25lIHR5cGUgZ3VhcmQgcGVyIHBhcmFtZXRlciBvZiBhIG1ldGhvZCwgaW4gb3JkZXIuXG4gKlxuICogQHR5cGVQYXJhbSBUUGFyYW1ldGVycyAtIFRoZSBtZXRob2QncyBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgdHlwZSBBcmd1bWVudFR5cGVHdWFyZHM8VFBhcmFtZXRlcnMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0ge1xuICByZWFkb25seSBbVEluZGV4IGluIGtleW9mIFRQYXJhbWV0ZXJzXTogRXhwZWN0ZWRUeXBlR3VhcmQ8VFBhcmFtZXRlcnNbVEluZGV4XT47XG59O1xuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlQXJndW1lbnRzU2NoZW1hfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVBcmd1bWVudHNTY2hlbWFPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBTdGFuZGFyZCBTY2hlbWEgYHZlbmRvcmAgdGhlIHNjaGVtYSByZXBvcnRzLiBEZWZhdWx0cyB0byB0aGlzIGxpYnJhcnkncyBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVuZG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjcmVhdGVUeXBlR3VhcmRTY2hlbWF9OiB0aGUgZ3VhcmQsIHdoYXQgaXQgZXhwZWN0cywgYW5kIG9wdGlvbmFsbHkgdGhlIHNjaGVtYSdzIHZlbmRvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVUeXBlR3VhcmRTY2hlbWFQYXJhbXM8VD4gZXh0ZW5kcyBFeHBlY3RlZFR5cGVHdWFyZDxUPiB7XG4gIC8qKlxuICAgKiBUaGUgU3RhbmRhcmQgU2NoZW1hIGB2ZW5kb3JgIHRoZSBzY2hlbWEgcmVwb3J0cy4gRGVmYXVsdHMgdG8gdGhpcyBsaWJyYXJ5J3MgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHZlbmRvcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgdmFsdWUgYSBzY2hlbWEgYWNjZXB0cywgZGVzY3JpYmVkIGJ5IGEgdHlwZSBndWFyZCBhbmQgYnkgd2hhdCBpdCBleHBlY3RzLCBmb3IgdGhlIGlzc3VlIG1lc3NhZ2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwZWN0ZWRUeXBlR3VhcmQ8VD4ge1xuICAvKipcbiAgICogV2hhdCB0aGUgdmFsdWUgc2hvdWxkIGhhdmUgYmVlbiwgcGhyYXNlZCB0byBmb2xsb3cgXCJFeHBlY3RlZFwiLCBlLmcuIGAnYSBzdHJpbmcnYC5cbiAgICovXG4gIHJlYWRvbmx5IGV4cGVjdGVkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgdmFsdWUgaXMgYWNjZXB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGBUYC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVHdWFyZDogKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBUO1xufVxuXG4vKipcbiAqIFRoZSB7QGxpbmsgQXBpQ29udHJhY3R9IG9mIGEgbmFtZWQgQVBJOiBvbmUgZW50cnkgcGVyIGZ1bmN0aW9uIG1lbWJlciwgZWFjaCB0eXBlZCBhZ2FpbnN0IHRoYXQgbWVtYmVyLiBCb3RoXG4gKiBzY2hlbWFzIGFyZSBSRVFVSVJFRCBoZXJlLCBzbyBhIHR5cGVkIGNvbnRyYWN0IGlzIGEgZnVsbCBkZXNjcmlwdGlvbiBvZiBldmVyeSBzaWduYXR1cmUgYW5kIGEgYHt9YCBlbnRyeSBkb2VzXG4gKiBub3QgY29tcGlsZS4gT25seSB0aGUgbG9vc2UgZm9ybSBsZWF2ZXMgdGhlbSBvcHRpb25hbC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHRoZSBjb250cmFjdCBkZXNjcmliZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVkQXBpQ29udHJhY3Q8VEFwaSBleHRlbmRzIG9iamVjdD4gPSB7XG4gIHJlYWRvbmx5IFtUS2V5IGluIEFwaU1ldGhvZE5hbWU8VEFwaT5dLT86IFRBcGlbVEtleV0gZXh0ZW5kcyAoLi4uYXJndW1lbnRzXzogaW5mZXIgVFBhcmFtZXRlcnMpID0+IGluZmVyIFRSZXR1cm5WYWx1ZSA/IFJlcXVpcmVkPEFwaU1ldGhvZENvbnRyYWN0PFRQYXJhbWV0ZXJzLCBBd2FpdGVkPFRSZXR1cm5WYWx1ZT4+PlxuICAgIDogbmV2ZXI7XG59O1xuXG50eXBlIE11dGFibGVUdXBsZTxUVHVwbGUgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0geyAtcmVhZG9ubHkgW1RJbmRleCBpbiBrZXlvZiBUVHVwbGVdOiBUVHVwbGVbVEluZGV4XSB9O1xuXG4vKipcbiAqIEFjY2VwdHMgYSBib29sZWFuLlxuICovXG5leHBvcnQgY29uc3QgQk9PTEVBTl9HVUFSRDogRXhwZWN0ZWRUeXBlR3VhcmQ8Ym9vbGVhbj4gPSB7IGV4cGVjdGVkOiAnYSBib29sZWFuJywgdHlwZUd1YXJkOiBpc0Jvb2xlYW4gfTtcblxuLyoqXG4gKiBBY2NlcHRzIGEgbnVtYmVyLlxuICovXG5leHBvcnQgY29uc3QgTlVNQkVSX0dVQVJEOiBFeHBlY3RlZFR5cGVHdWFyZDxudW1iZXI+ID0geyBleHBlY3RlZDogJ2EgbnVtYmVyJywgdHlwZUd1YXJkOiBpc051bWJlciB9O1xuXG4vKipcbiAqIEFjY2VwdHMgYSBzdHJpbmcuIFNwcmVhZCBpdCB0byBzYXkgd2hhdCB0aGUgc3RyaW5nIGlzOiBgeyAuLi5TVFJJTkdfR1VBUkQsIGV4cGVjdGVkOiAnYSBwYXRoJyB9YC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNUUklOR19HVUFSRDogRXhwZWN0ZWRUeXBlR3VhcmQ8c3RyaW5nPiA9IHsgZXhwZWN0ZWQ6ICdhIHN0cmluZycsIHR5cGVHdWFyZDogaXNTdHJpbmcgfTtcblxuLyoqXG4gKiBBY2NlcHRzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBTVFJJTkdfQVJSQVlfR1VBUkQ6IEV4cGVjdGVkVHlwZUd1YXJkPHN0cmluZ1tdPiA9IHsgZXhwZWN0ZWQ6ICdhbiBhcnJheSBvZiBzdHJpbmdzJywgdHlwZUd1YXJkOiBpc1N0cmluZ0FycmF5IH07XG5cbi8qKlxuICogQWNjZXB0cyBgdW5kZWZpbmVkYCwgd2hpY2ggaXMgdGhlIG91dHB1dCBvZiBhIG1ldGhvZCByZXR1cm5pbmcgYHZvaWRgIG9yIGBQcm9taXNlPHZvaWQ+YC5cbiAqL1xuZXhwb3J0IGNvbnN0IFVOREVGSU5FRF9HVUFSRDogRXhwZWN0ZWRUeXBlR3VhcmQ8dW5kZWZpbmVkPiA9IHsgZXhwZWN0ZWQ6ICd1bmRlZmluZWQnLCB0eXBlR3VhcmQ6IGlzVW5kZWZpbmVkIH07XG5cbi8qKlxuICogQnVpbGRzIHRoZSBpbnB1dCBzY2hlbWEgb2YgYSBtZXRob2QgY29udHJhY3Q6IGEgc2NoZW1hIG92ZXIgdGhlIG1ldGhvZCdzIEFSR1VNRU5UIExJU1QsIG9uZSB0eXBlIGd1YXJkIHBlclxuICogcGFyYW1ldGVyLiBBbiBhcmd1bWVudCB0aGF0IGZhaWxzIGl0cyBndWFyZCBpcyByZXBvcnRlZCB3aXRoIGl0cyBpbmRleCBhcyB0aGUgaXNzdWUgcGF0aCwgYW5kIGFuIGFyZ3VtZW50IGxpc3RcbiAqIGxvbmdlciB0aGFuIHRoZSBwYXJhbWV0ZXIgbGlzdCBpcyByZWZ1c2VkLiBBIG1pc3NpbmcgYXJndW1lbnQgcmVhY2hlcyBpdHMgZ3VhcmQgYXMgYHVuZGVmaW5lZGAsIHNvIGFuIG9wdGlvbmFsXG4gKiBwYXJhbWV0ZXIncyBndWFyZCBhY2NlcHRzIGB1bmRlZmluZWRgIChzZWUge0BsaW5rIG9wdGlvbmFsR3VhcmR9KS5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQYXJhbWV0ZXJzIC0gVGhlIG1ldGhvZCdzIHBhcmFtZXRlcnMsIGluZmVycmVkIGZyb20gdGhlIGd1YXJkcyBvciBmcm9tIHRoZSBjb250cmFjdCBlbnRyeS5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gT25lIGd1YXJkIHBlciBwYXJhbWV0ZXIsIGluIG9yZGVyLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHNjaGVtYS5cbiAqIEByZXR1cm5zIFRoZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8Y29uc3QgVFBhcmFtZXRlcnMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+KFxuICBwYXJhbWV0ZXJzOiBBcmd1bWVudFR5cGVHdWFyZHM8VFBhcmFtZXRlcnM+LFxuICBvcHRpb25zPzogQ3JlYXRlQXJndW1lbnRzU2NoZW1hT3B0aW9uc1xuKTogU3RhbmRhcmRTY2hlbWFWMTx1bmtub3duLCBNdXRhYmxlVHVwbGU8VFBhcmFtZXRlcnM+PiB7XG4gIGNvbnN0IHBhcmFtZXRlckxpc3QgPSBjYXN0VG88cmVhZG9ubHkgRXhwZWN0ZWRUeXBlR3VhcmQ8dW5rbm93bj5bXT4ocGFyYW1ldGVycyk7XG4gIHJldHVybiBjcmVhdGVTY2hlbWEoKHZhbHVlOiB1bmtub3duKTogU3RhbmRhcmRTY2hlbWFWMS5SZXN1bHQ8TXV0YWJsZVR1cGxlPFRQYXJhbWV0ZXJzPj4gPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGlzc3VlczogW3sgbWVzc2FnZTogJ0V4cGVjdGVkIGFuIGFyZ3VtZW50IGxpc3QuJyB9XSB9O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiBwYXJhbWV0ZXJMaXN0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgaXNzdWVzOiBbeyBtZXNzYWdlOiBgRXhwZWN0ZWQgYXQgbW9zdCAke1N0cmluZyhwYXJhbWV0ZXJMaXN0Lmxlbmd0aCl9IGFyZ3VtZW50KHMpLCBnb3QgJHtTdHJpbmcodmFsdWUubGVuZ3RoKX0uYCB9XSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlzc3VlcyA9IHBhcmFtZXRlckxpc3QuZmxhdE1hcCgocGFyYW1ldGVyLCBpbmRleCk6IFN0YW5kYXJkU2NoZW1hVjEuSXNzdWVbXSA9PiBwYXJhbWV0ZXIudHlwZUd1YXJkKHZhbHVlW2luZGV4XSkgPyBbXSA6IFt7IG1lc3NhZ2U6IGBFeHBlY3RlZCAke3BhcmFtZXRlci5leHBlY3RlZH0uYCwgcGF0aDogW2luZGV4XSB9XSk7XG4gICAgcmV0dXJuIGlzc3Vlcy5sZW5ndGggPT09IDAgPyB7IHZhbHVlOiBjYXN0VG88TXV0YWJsZVR1cGxlPFRQYXJhbWV0ZXJzPj4odmFsdWUpIH0gOiB7IGlzc3VlcyB9O1xuICB9LCBvcHRpb25zPy52ZW5kb3IpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHNjaGVtYSBvdmVyIG9uZSB2YWx1ZSBmcm9tIGEgdHlwZSBndWFyZDogdGhlIG91dHB1dCBzY2hlbWEgb2YgYSBtZXRob2QgY29udHJhY3QsIHR5cGljYWxseS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZ3VhcmQsIHdoYXQgaXQgZXhwZWN0cywgYW5kIG9wdGlvbmFsbHkgdGhlIHNjaGVtYSdzIHZlbmRvci5cbiAqIEByZXR1cm5zIFRoZSBzY2hlbWEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUeXBlR3VhcmRTY2hlbWE8VD4ocGFyYW1zOiBDcmVhdGVUeXBlR3VhcmRTY2hlbWFQYXJhbXM8VD4pOiBTdGFuZGFyZFNjaGVtYVYxPHVua25vd24sIFQ+IHtcbiAgcmV0dXJuIGNyZWF0ZVNjaGVtYShcbiAgICAodmFsdWU6IHVua25vd24pOiBTdGFuZGFyZFNjaGVtYVYxLlJlc3VsdDxUPiA9PiBwYXJhbXMudHlwZUd1YXJkKHZhbHVlKSA/IHsgdmFsdWUgfSA6IHsgaXNzdWVzOiBbeyBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtwYXJhbXMuZXhwZWN0ZWR9LmAgfV0gfSxcbiAgICBwYXJhbXMudmVuZG9yXG4gICk7XG59XG5cbi8qKlxuICogU3RhdGVzIGEgY29udHJhY3QgYWdhaW5zdCBhbiBBUEkgdHlwZSwgc28gZXZlcnkgZW50cnkgaXMgY2hlY2tlZCBhZ2FpbnN0IGl0cyBtZXRob2QgYW5kIHRoZSBzY2hlbWEgYnVpbGRlcnNcbiAqIGluc2lkZSBpdCBpbmZlciB0aGVpciB0eXBlcyBmcm9tIHRoZSBtZXRob2QgcmF0aGVyIHRoYW4gZnJvbSBhIHJlc3RhdGVkIHR1cGxlLiBJdCByZXR1cm5zIHRoZSBjb250cmFjdCBhcyBpcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcGkgLSBUaGUgQVBJIHRoZSBjb250cmFjdCBkZXNjcmliZXMuXG4gKiBAcGFyYW0gY29udHJhY3QgLSBUaGUgY29udHJhY3QuXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUFwaUNvbnRyYWN0PFRBcGkgZXh0ZW5kcyBvYmplY3Q+KGNvbnRyYWN0OiBUeXBlZEFwaUNvbnRyYWN0PE5vSW5mZXI8VEFwaT4+KTogVHlwZWRBcGlDb250cmFjdDxUQXBpPiB7XG4gIHJldHVybiBjb250cmFjdDtcbn1cblxuLyoqXG4gKiBXaWRlbnMgYSBndWFyZCB0byBhbHNvIGFjY2VwdCBgbnVsbGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKiBAcGFyYW0gZ3VhcmQgLSBUaGUgZ3VhcmQgdG8gd2lkZW4uXG4gKiBAcmV0dXJucyBBIGd1YXJkIGFjY2VwdGluZyB3aGF0IGBndWFyZGAgYWNjZXB0cywgb3IgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGVHdWFyZDxUPihndWFyZDogRXhwZWN0ZWRUeXBlR3VhcmQ8VD4pOiBFeHBlY3RlZFR5cGVHdWFyZDxudWxsIHwgVD4ge1xuICByZXR1cm4ge1xuICAgIGV4cGVjdGVkOiBgJHtndWFyZC5leHBlY3RlZH0gb3IgbnVsbGAsXG4gICAgdHlwZUd1YXJkOiAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgVCA9PiB2YWx1ZSA9PT0gbnVsbCB8fCBndWFyZC50eXBlR3VhcmQodmFsdWUpXG4gIH07XG59XG5cbi8qKlxuICogV2lkZW5zIGEgZ3VhcmQgdG8gYWxzbyBhY2NlcHQgYHVuZGVmaW5lZGAsIHdoaWNoIGlzIHdoYXQgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHJlY2VpdmVzIHdoZW4gaXQgaXMgbGVmdCBvdXQuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKiBAcGFyYW0gZ3VhcmQgLSBUaGUgZ3VhcmQgdG8gd2lkZW4uXG4gKiBAcmV0dXJucyBBIGd1YXJkIGFjY2VwdGluZyB3aGF0IGBndWFyZGAgYWNjZXB0cywgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbEd1YXJkPFQ+KGd1YXJkOiBFeHBlY3RlZFR5cGVHdWFyZDxUPik6IEV4cGVjdGVkVHlwZUd1YXJkPFQgfCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIHtcbiAgICBleHBlY3RlZDogYCR7Z3VhcmQuZXhwZWN0ZWR9IG9yIHVuZGVmaW5lZGAsXG4gICAgdHlwZUd1YXJkOiAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUIHwgdW5kZWZpbmVkID0+IHZhbHVlID09PSB1bmRlZmluZWQgfHwgZ3VhcmQudHlwZUd1YXJkKHZhbHVlKVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTY2hlbWE8VD4odmFsaWRhdGU6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RhbmRhcmRTY2hlbWFWMS5SZXN1bHQ8VD4sIHZlbmRvcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogU3RhbmRhcmRTY2hlbWFWMTx1bmtub3duLCBUPiB7XG4gIHJldHVybiB7XG4gICAgJ35zdGFuZGFyZCc6IHtcbiAgICAgIHZhbGlkYXRlLFxuICAgICAgdmVuZG9yOiB2ZW5kb3IgPz8gTElCUkFSWV9OQU1FLFxuICAgICAgdmVyc2lvbjogMVxuICAgIH1cbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBaUJBLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsY0FBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQXNIQSxNQUFNLGdCQUE0QyxFQUFFLFVBQVUsYUFBYSxXQUFXLFVBQVU7QUFLaEcsTUFBTSxlQUEwQyxFQUFFLFVBQVUsWUFBWSxXQUFXLFNBQVM7QUFLNUYsTUFBTSxlQUEwQyxFQUFFLFVBQVUsWUFBWSxXQUFXLFNBQVM7QUFLNUYsTUFBTSxxQkFBa0QsRUFBRSxVQUFVLHVCQUF1QixXQUFXLGNBQWM7QUFLcEgsTUFBTSxrQkFBZ0QsRUFBRSxVQUFVLGFBQWEsV0FBVyxZQUFZO0FBYXRHLFNBQVMsc0JBQ2QsWUFDQSxTQUNzRDtBQUN0RCxRQUFNLGdCQUFnQixPQUE4QyxVQUFVO0FBQzlFLFNBQU8sYUFBYSxDQUFDLFVBQXVFO0FBQzFGLFFBQUksQ0FBQyxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ3pCLGFBQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxTQUFTLDZCQUE2QixDQUFDLEVBQUU7QUFBQSxJQUMvRDtBQUVBLFFBQUksTUFBTSxTQUFTLGNBQWMsUUFBUTtBQUN2QyxhQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsU0FBUyxvQkFBb0IsT0FBTyxjQUFjLE1BQU0sQ0FBQyxxQkFBcUIsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUFBLElBQy9IO0FBRUEsVUFBTSxTQUFTLGNBQWMsUUFBUSxDQUFDLFdBQVcsVUFBb0MsVUFBVSxVQUFVLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLFlBQVksVUFBVSxRQUFRLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDN0wsV0FBTyxPQUFPLFdBQVcsSUFBSSxFQUFFLE9BQU8sT0FBa0MsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPO0FBQUEsRUFDOUYsR0FBRyxTQUFTLE1BQU07QUFDcEI7QUFTTyxTQUFTLHNCQUF5QixRQUFzRTtBQUM3RyxTQUFPO0FBQUEsSUFDTCxDQUFDLFVBQStDLE9BQU8sVUFBVSxLQUFLLElBQUksRUFBRSxNQUFNLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxTQUFTLFlBQVksT0FBTyxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQUEsSUFDOUksT0FBTztBQUFBLEVBQ1Q7QUFDRjtBQVVPLFNBQVMsa0JBQXVDLFVBQW1FO0FBQ3hILFNBQU87QUFDVDtBQVNPLFNBQVMsY0FBaUIsT0FBMEQ7QUFDekYsU0FBTztBQUFBLElBQ0wsVUFBVSxHQUFHLE1BQU0sUUFBUTtBQUFBLElBQzNCLFdBQVcsQ0FBQyxVQUFzQyxVQUFVLFFBQVEsTUFBTSxVQUFVLEtBQUs7QUFBQSxFQUMzRjtBQUNGO0FBU08sU0FBUyxjQUFpQixPQUErRDtBQUM5RixTQUFPO0FBQUEsSUFDTCxVQUFVLEdBQUcsTUFBTSxRQUFRO0FBQUEsSUFDM0IsV0FBVyxDQUFDLFVBQTJDLFVBQVUsVUFBYSxNQUFNLFVBQVUsS0FBSztBQUFBLEVBQ3JHO0FBQ0Y7QUFFQSxTQUFTLGFBQWdCLFVBQTBELFFBQTBEO0FBQzNJLFNBQU87QUFBQSxJQUNMLGFBQWE7QUFBQSxNQUNYO0FBQUEsTUFDQSxRQUFRLFVBQVU7QUFBQSxNQUNsQixTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference path="./library-references.d.mts" />
|
|
2
2
|
export * as 'abort-controller' from './abort-controller.mjs';
|
|
3
3
|
export * as 'aggregate-error' from './aggregate-error.mjs';
|
|
4
|
+
export * as 'api-contract' from './api-contract.mjs';
|
|
4
5
|
export * as 'array-buffer' from './array-buffer.mjs';
|
|
5
6
|
export * as 'array' from './array.mjs';
|
|
6
7
|
export * as 'async-events' from './async-events.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
import * as abort_controller from "./abort-controller.mjs";
|
|
7
7
|
import * as aggregate_error from "./aggregate-error.mjs";
|
|
8
|
+
import * as api_contract from "./api-contract.mjs";
|
|
8
9
|
import * as array_buffer from "./array-buffer.mjs";
|
|
9
10
|
import * as array from "./array.mjs";
|
|
10
11
|
import * as async_events from "./async-events.mjs";
|
|
@@ -38,6 +39,7 @@ import * as value_wrapper from "./value-wrapper.mjs";
|
|
|
38
39
|
export {
|
|
39
40
|
abort_controller as "abort-controller",
|
|
40
41
|
aggregate_error as "aggregate-error",
|
|
42
|
+
api_contract as "api-contract",
|
|
41
43
|
array,
|
|
42
44
|
array_buffer as "array-buffer",
|
|
43
45
|
async,
|
|
@@ -69,4 +71,4 @@ export {
|
|
|
69
71
|
value_provider as "value-provider",
|
|
70
72
|
value_wrapper as "value-wrapper"
|
|
71
73
|
};
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2Fib3J0LWNvbnRyb2xsZXInIGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQgKiBhcyAnYWdncmVnYXRlLWVycm9yJyBmcm9tICcuL2FnZ3JlZ2F0ZS1lcnJvci50cyc7XG5leHBvcnQgKiBhcyAnYXBpLWNvbnRyYWN0JyBmcm9tICcuL2FwaS1jb250cmFjdC50cyc7XG5leHBvcnQgKiBhcyAnYXJyYXktYnVmZmVyJyBmcm9tICcuL2FycmF5LWJ1ZmZlci50cyc7XG5leHBvcnQgKiBhcyAnYXJyYXknIGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLWV2ZW50cycgZnJvbSAnLi9hc3luYy1ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLW9wZXJhdGlvbi1ob29rJyBmcm9tICcuL2FzeW5jLW9wZXJhdGlvbi1ob29rLnRzJztcbmV4cG9ydCAqIGFzICdhc3luYycgZnJvbSAnLi9hc3luYy50cyc7XG5leHBvcnQgKiBhcyAnYmVlcGVyJyBmcm9tICcuL2JlZXBlci50cyc7XG5leHBvcnQgKiBhcyAnYmxvYicgZnJvbSAnLi9ibG9iLnRzJztcbmV4cG9ydCAqIGFzICdieXRlcycgZnJvbSAnLi9ieXRlcy50cyc7XG5leHBvcnQgKiBhcyAnZGVidWctY29udHJvbGxlcicgZnJvbSAnLi9kZWJ1Zy1jb250cm9sbGVyLnRzJztcbmV4cG9ydCAqIGFzICdkZWJ1ZycgZnJvbSAnLi9kZWJ1Zy50cyc7XG5leHBvcnQgKiBhcyAnZGVza3RvcC16aXAtZXh0cmFjdG9yJyBmcm9tICcuL2Rlc2t0b3AtemlwLWV4dHJhY3Rvci50cyc7XG5leHBvcnQgKiBhcyAnZGlzcG9zYWJsZScgZnJvbSAnLi9kaXNwb3NhYmxlLnRzJztcbmV4cG9ydCAqIGFzICdlbnVtJyBmcm9tICcuL2VudW0udHMnO1xuZXhwb3J0ICogYXMgJ2Vycm9yJyBmcm9tICcuL2Vycm9yLnRzJztcbmV4cG9ydCAqIGFzICdmdW5jdGlvbicgZnJvbSAnLi9mdW5jdGlvbi50cyc7XG5leHBvcnQgKiBhcyAnaHRtbC1lbGVtZW50JyBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5leHBvcnQgKiBhcyAnanBlZy1tZXRhZGF0YScgZnJvbSAnLi9qcGVnLW1ldGFkYXRhLnRzJztcbmV4cG9ydCAqIGFzICdsaWJyYXJ5JyBmcm9tICcuL2xpYnJhcnkudHMnO1xuZXhwb3J0ICogYXMgJ29iamVjdC11dGlscycgZnJvbSAnLi9vYmplY3QtdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ3BhdGgnIGZyb20gJy4vcGF0aC50cyc7XG5leHBvcnQgKiBhcyAncmVnLWV4cCcgZnJvbSAnLi9yZWctZXhwLnRzJztcbmV4cG9ydCAqIGFzICdzdHJpbmcnIGZyb20gJy4vc3RyaW5nLnRzJztcbmV4cG9ydCAqIGFzICd0cmFuc2Zvcm1lcnMnIGZyb20gJy4vdHJhbnNmb3JtZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICd0d28td2F5LW1hcCcgZnJvbSAnLi90d28td2F5LW1hcC50cyc7XG5leHBvcnQgKiBhcyAndHlwZS1ndWFyZHMnIGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGUnIGZyb20gJy4vdHlwZS50cyc7XG5leHBvcnQgKiBhcyAndHlwZXNjcmlwdC1saWItc3RhdGUnIGZyb20gJy4vdHlwZXNjcmlwdC1saWItc3RhdGUudHMnO1xuZXhwb3J0ICogYXMgJ3VybCcgZnJvbSAnLi91cmwudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbHVlLXByb3ZpZGVyJyBmcm9tICcuL3ZhbHVlLXByb3ZpZGVyLnRzJztcbmV4cG9ydCAqIGFzICd2YWx1ZS13cmFwcGVyJyBmcm9tICcuL3ZhbHVlLXdyYXBwZXIudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFFQSxZQUFZQSxzQkFBd0I7QUFDcEMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWSxXQUFhO0FBQ3pCLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWSxXQUFhO0FBQ3pCLFlBQVksWUFBYztBQUMxQixZQUFZLFVBQVk7QUFDeEIsWUFBWSxXQUFhO0FBQ3pCLFlBQVlDLHNCQUF3QjtBQUNwQyxZQUFZLFdBQWE7QUFDekIsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVksZ0JBQWtCO0FBQzlCLFlBQVlDLFdBQVk7QUFDeEIsWUFBWSxXQUFhO0FBQ3pCLFlBQVlDLGVBQWdCO0FBQzVCLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyxtQkFBcUI7QUFDakMsWUFBWSxhQUFlO0FBQzNCLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZLFVBQVk7QUFDeEIsWUFBWUMsYUFBZTtBQUMzQixZQUFZLFlBQWM7QUFDMUIsWUFBWSxrQkFBb0I7QUFDaEMsWUFBWUMsaUJBQW1CO0FBQy9CLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZLFVBQVk7QUFDeEIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksU0FBVztBQUN2QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsbUJBQXFCOyIsCiAgIm5hbWVzIjogWyJhYm9ydC1jb250cm9sbGVyIiwgImFnZ3JlZ2F0ZS1lcnJvciIsICJhcGktY29udHJhY3QiLCAiYXJyYXktYnVmZmVyIiwgImFzeW5jLWV2ZW50cyIsICJhc3luYy1vcGVyYXRpb24taG9vayIsICJkZWJ1Zy1jb250cm9sbGVyIiwgImRlc2t0b3AtemlwLWV4dHJhY3RvciIsICJlbnVtIiwgImZ1bmN0aW9uIiwgImh0bWwtZWxlbWVudCIsICJqcGVnLW1ldGFkYXRhIiwgIm9iamVjdC11dGlscyIsICJyZWctZXhwIiwgInR3by13YXktbWFwIiwgInR5cGUtZ3VhcmRzIiwgInR5cGVzY3JpcHQtbGliLXN0YXRlIiwgInZhbHVlLXByb3ZpZGVyIiwgInZhbHVlLXdyYXBwZXIiXQp9Cg==
|
|
@@ -81,4 +81,39 @@ export declare function ensureGenericObject<T>($object: T): GenericObject<T>;
|
|
|
81
81
|
* @throws If the value is `null` or `undefined`.
|
|
82
82
|
*/
|
|
83
83
|
export declare function ensureNonNullable<T extends NullableConstraint<T>>(value: T, errorOrMessage?: Error | string): NonNullable<T>;
|
|
84
|
+
/**
|
|
85
|
+
* Checks whether a value is a boolean.
|
|
86
|
+
*
|
|
87
|
+
* @param value - The value to check.
|
|
88
|
+
* @returns Whether the value is a boolean.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isBoolean(value: unknown): value is boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Checks whether a value is a number.
|
|
93
|
+
*
|
|
94
|
+
* @param value - The value to check.
|
|
95
|
+
* @returns Whether the value is a number.
|
|
96
|
+
*/
|
|
97
|
+
export declare function isNumber(value: unknown): value is number;
|
|
98
|
+
/**
|
|
99
|
+
* Checks whether a value is a string.
|
|
100
|
+
*
|
|
101
|
+
* @param value - The value to check.
|
|
102
|
+
* @returns Whether the value is a string.
|
|
103
|
+
*/
|
|
104
|
+
export declare function isString(value: unknown): value is string;
|
|
105
|
+
/**
|
|
106
|
+
* Checks whether a value is an array of strings.
|
|
107
|
+
*
|
|
108
|
+
* @param value - The value to check.
|
|
109
|
+
* @returns Whether the value is an array whose every item is a string.
|
|
110
|
+
*/
|
|
111
|
+
export declare function isStringArray(value: unknown): value is string[];
|
|
112
|
+
/**
|
|
113
|
+
* Checks whether a value is `undefined`.
|
|
114
|
+
*
|
|
115
|
+
* @param value - The value to check.
|
|
116
|
+
* @returns Whether the value is `undefined`.
|
|
117
|
+
*/
|
|
118
|
+
export declare function isUndefined(value: unknown): value is undefined;
|
|
84
119
|
export {};
|
|
@@ -30,12 +30,32 @@ function ensureNonNullable(value, errorOrMessage) {
|
|
|
30
30
|
assertNonNullable(value, errorOrMessage);
|
|
31
31
|
return value;
|
|
32
32
|
}
|
|
33
|
+
function isBoolean(value) {
|
|
34
|
+
return typeof value === "boolean";
|
|
35
|
+
}
|
|
36
|
+
function isNumber(value) {
|
|
37
|
+
return typeof value === "number";
|
|
38
|
+
}
|
|
39
|
+
function isString(value) {
|
|
40
|
+
return typeof value === "string";
|
|
41
|
+
}
|
|
42
|
+
function isStringArray(value) {
|
|
43
|
+
return Array.isArray(value) && value.every(isString);
|
|
44
|
+
}
|
|
45
|
+
function isUndefined(value) {
|
|
46
|
+
return value === void 0;
|
|
47
|
+
}
|
|
33
48
|
export {
|
|
34
49
|
assert,
|
|
35
50
|
assertGenericObject,
|
|
36
51
|
assertNever,
|
|
37
52
|
assertNonNullable,
|
|
38
53
|
ensureGenericObject,
|
|
39
|
-
ensureNonNullable
|
|
54
|
+
ensureNonNullable,
|
|
55
|
+
isBoolean,
|
|
56
|
+
isNumber,
|
|
57
|
+
isString,
|
|
58
|
+
isStringArray,
|
|
59
|
+
isUndefined
|
|
40
60
|
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGJhc2UgdHlwZSB0byBpbnRlcnNlY3Qgd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPiAmIFQ7XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgYHRydWVgLiBUaHJvd3MgaWYgaXQgaXMgbm90LlxuICpcbiAqIFVzZSBpbiBwbGFjZSBvZiBgLyogdjggaWdub3JlICpcXC9gIGZvciBkZWZlbnNpdmUgZ3VhcmRzIHRoYXQgc2hvdWxkXG4gKiBuZXZlciB0cmlnZ2VyIGF0IHJ1bnRpbWUgYnV0IHdvdWxkIG90aGVyd2lzZSBjcmVhdGUgdW5jb3ZlcmVkIGJyYW5jaGVzLlxuICpcbiAqIEBwYXJhbSBpc1RydWUgLSBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIFRoZSBlcnJvciBvciBtZXNzYWdlIHRvIHRocm93IGlmIHRoZSBjb25kaXRpb24gaXMgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChpc1RydWU6IGJvb2xlYW4sIGVycm9yT3JNZXNzYWdlOiBFcnJvciB8IHN0cmluZyk6IGFzc2VydHMgaXNUcnVlIHtcbiAgaWYgKCFpc1RydWUpIHtcbiAgICB0aHJvdyB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgbmFycm93aW5nIGl0cyB0eXBlIGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBfb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEdlbmVyaWNPYmplY3Q8VD4oX29iamVjdDogVCk6IGFzc2VydHMgX29iamVjdCBpcyBHZW5lcmljT2JqZWN0PFQ+IHtcbiAgbm9vcCgpO1xufVxuXG4vKipcbiAqIEFzc2VydHMgYXQgY29tcGlsZSB0aW1lIHRoYXQgZXZlcnkgY2FzZSBvZiBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gaGFzIGJlZW5cbiAqIGhhbmRsZWQuIFBsYWNlIGF0IHRoZSBgZGVmYXVsdGAgYnJhbmNoIG9mIGEgYHN3aXRjaGAgb3ZlciBhIHVuaW9uIG9yIGVudW0uXG4gKlxuICogSWYgYSBuZXcgdmFyaWFudCBpcyBhZGRlZCB0byB0aGUgdW5pb24gd2l0aG91dCBhIG1hdGNoaW5nIGBjYXNlYCwgdGhlIGNhbGxcbiAqIHRvIHtAbGluayBhc3NlcnROZXZlcn0gZmFpbHMgdG8gY29tcGlsZSBiZWNhdXNlIGB2YWx1ZWAgaXMgbm8gbG9uZ2VyIGBuZXZlcmAuXG4gKiBJZiByZWFjaGVkIGF0IHJ1bnRpbWUgKGUuZy4gYmVjYXVzZSB0aGUgdmFsdWUgd2FzIGJ5cGFzc2VkIHZpYSBKU09OIG9yIGFcbiAqIHR5cGUgYXNzZXJ0aW9uKSwgaXQgdGhyb3dzIGEgZGVzY3JpcHRpdmUgYEVycm9yYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHN3aXRjaCAobW9kZSkge1xuICogICBjYXNlICdhJzogcmV0dXJuIGRvQSgpO1xuICogICBjYXNlICdiJzogcmV0dXJuIGRvQigpO1xuICogICBkZWZhdWx0OiBhc3NlcnROZXZlcihtb2RlKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGhhdXN0aXZlbHktaGFuZGxlZCB2YWx1ZSwgbmFycm93ZWQgdG8gYG5ldmVyYCBieSBjb250cm9sIGZsb3cuXG4gKiBAdGhyb3dzIEFsd2F5cywgaWYgcmVhY2hlZCBhdCBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWU6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCB2YWx1ZTogJHtTdHJpbmcodmFsdWUpfWApO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBPbmx5IGNhbGxhYmxlIHdoZW4gYFRgIGluY2x1ZGVzIGBudWxsYCBvciBgdW5kZWZpbmVkYC4gUGFzc2luZyBhbiBhbHJlYWR5IG5vbi1udWxsYWJsZSB0eXBlIGlzIGEgY29tcGlsZSBlcnJvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBPcHRpb25hbCB7QGxpbmsgRXJyb3J9IG9yIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLlxuICogQHRocm93cyBJZiB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbGFibGU8VCBleHRlbmRzIE51bGxhYmxlQ29uc3RyYWludDxUPj4odmFsdWU6IFQsIGVycm9yT3JNZXNzYWdlPzogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlcnJvck9yTWVzc2FnZSA/Pz0gdmFsdWUgPT09IG51bGwgPyAnVmFsdWUgaXMgbnVsbCcgOiAnVmFsdWUgaXMgdW5kZWZpbmVkJztcbiAgY29uc3QgZXJyb3IgPSB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB0aHJvdyBlcnJvcjtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSB2YWx1ZSBpcyBhIGdlbmVyaWMgb2JqZWN0LCByZXR1cm5pbmcgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlR2VuZXJpY09iamVjdDxUPigkb2JqZWN0OiBUKTogR2VuZXJpY09iamVjdDxUPiB7XG4gIHJldHVybiAkb2JqZWN0IGFzIEdlbmVyaWNPYmplY3Q8VD47XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgbm90IGBudWxsYCBvciBgdW5kZWZpbmVkYCBhbmQgcmV0dXJucyBpdCB3aXRoIG5hcnJvd2VkIHR5cGUuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSB3aXRoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgZXhjbHVkZWQgZnJvbSBpdHMgdHlwZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGJhc2UgdHlwZSB0byBpbnRlcnNlY3Qgd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPiAmIFQ7XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgYHRydWVgLiBUaHJvd3MgaWYgaXQgaXMgbm90LlxuICpcbiAqIFVzZSBpbiBwbGFjZSBvZiBgLyogdjggaWdub3JlICpcXC9gIGZvciBkZWZlbnNpdmUgZ3VhcmRzIHRoYXQgc2hvdWxkXG4gKiBuZXZlciB0cmlnZ2VyIGF0IHJ1bnRpbWUgYnV0IHdvdWxkIG90aGVyd2lzZSBjcmVhdGUgdW5jb3ZlcmVkIGJyYW5jaGVzLlxuICpcbiAqIEBwYXJhbSBpc1RydWUgLSBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIFRoZSBlcnJvciBvciBtZXNzYWdlIHRvIHRocm93IGlmIHRoZSBjb25kaXRpb24gaXMgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChpc1RydWU6IGJvb2xlYW4sIGVycm9yT3JNZXNzYWdlOiBFcnJvciB8IHN0cmluZyk6IGFzc2VydHMgaXNUcnVlIHtcbiAgaWYgKCFpc1RydWUpIHtcbiAgICB0aHJvdyB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgbmFycm93aW5nIGl0cyB0eXBlIGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBfb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEdlbmVyaWNPYmplY3Q8VD4oX29iamVjdDogVCk6IGFzc2VydHMgX29iamVjdCBpcyBHZW5lcmljT2JqZWN0PFQ+IHtcbiAgbm9vcCgpO1xufVxuXG4vKipcbiAqIEFzc2VydHMgYXQgY29tcGlsZSB0aW1lIHRoYXQgZXZlcnkgY2FzZSBvZiBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gaGFzIGJlZW5cbiAqIGhhbmRsZWQuIFBsYWNlIGF0IHRoZSBgZGVmYXVsdGAgYnJhbmNoIG9mIGEgYHN3aXRjaGAgb3ZlciBhIHVuaW9uIG9yIGVudW0uXG4gKlxuICogSWYgYSBuZXcgdmFyaWFudCBpcyBhZGRlZCB0byB0aGUgdW5pb24gd2l0aG91dCBhIG1hdGNoaW5nIGBjYXNlYCwgdGhlIGNhbGxcbiAqIHRvIHtAbGluayBhc3NlcnROZXZlcn0gZmFpbHMgdG8gY29tcGlsZSBiZWNhdXNlIGB2YWx1ZWAgaXMgbm8gbG9uZ2VyIGBuZXZlcmAuXG4gKiBJZiByZWFjaGVkIGF0IHJ1bnRpbWUgKGUuZy4gYmVjYXVzZSB0aGUgdmFsdWUgd2FzIGJ5cGFzc2VkIHZpYSBKU09OIG9yIGFcbiAqIHR5cGUgYXNzZXJ0aW9uKSwgaXQgdGhyb3dzIGEgZGVzY3JpcHRpdmUgYEVycm9yYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHN3aXRjaCAobW9kZSkge1xuICogICBjYXNlICdhJzogcmV0dXJuIGRvQSgpO1xuICogICBjYXNlICdiJzogcmV0dXJuIGRvQigpO1xuICogICBkZWZhdWx0OiBhc3NlcnROZXZlcihtb2RlKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGhhdXN0aXZlbHktaGFuZGxlZCB2YWx1ZSwgbmFycm93ZWQgdG8gYG5ldmVyYCBieSBjb250cm9sIGZsb3cuXG4gKiBAdGhyb3dzIEFsd2F5cywgaWYgcmVhY2hlZCBhdCBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWU6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCB2YWx1ZTogJHtTdHJpbmcodmFsdWUpfWApO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBPbmx5IGNhbGxhYmxlIHdoZW4gYFRgIGluY2x1ZGVzIGBudWxsYCBvciBgdW5kZWZpbmVkYC4gUGFzc2luZyBhbiBhbHJlYWR5IG5vbi1udWxsYWJsZSB0eXBlIGlzIGEgY29tcGlsZSBlcnJvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBPcHRpb25hbCB7QGxpbmsgRXJyb3J9IG9yIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLlxuICogQHRocm93cyBJZiB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbGFibGU8VCBleHRlbmRzIE51bGxhYmxlQ29uc3RyYWludDxUPj4odmFsdWU6IFQsIGVycm9yT3JNZXNzYWdlPzogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlcnJvck9yTWVzc2FnZSA/Pz0gdmFsdWUgPT09IG51bGwgPyAnVmFsdWUgaXMgbnVsbCcgOiAnVmFsdWUgaXMgdW5kZWZpbmVkJztcbiAgY29uc3QgZXJyb3IgPSB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB0aHJvdyBlcnJvcjtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSB2YWx1ZSBpcyBhIGdlbmVyaWMgb2JqZWN0LCByZXR1cm5pbmcgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlR2VuZXJpY09iamVjdDxUPigkb2JqZWN0OiBUKTogR2VuZXJpY09iamVjdDxUPiB7XG4gIHJldHVybiAkb2JqZWN0IGFzIEdlbmVyaWNPYmplY3Q8VD47XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgbm90IGBudWxsYCBvciBgdW5kZWZpbmVkYCBhbmQgcmV0dXJucyBpdCB3aXRoIG5hcnJvd2VkIHR5cGUuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSB3aXRoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgZXhjbHVkZWQgZnJvbSBpdHMgdHlwZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogTm9uTnVsbGFibGU8VD4ge1xuICBhc3NlcnROb25OdWxsYWJsZSh2YWx1ZSwgZXJyb3JPck1lc3NhZ2UpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhIGJvb2xlYW4uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBib29sZWFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgbnVtYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgd2hvc2UgZXZlcnkgaXRlbSBpcyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nQXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmdbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShpc1N0cmluZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQU1BLFNBQVMsWUFBWTtBQW9CZCxTQUFTLE9BQU8sUUFBaUIsZ0JBQWdEO0FBQ3RGLE1BQUksQ0FBQyxRQUFRO0FBQ1gsVUFBTSxPQUFPLG1CQUFtQixXQUFXLElBQUksTUFBTSxjQUFjLElBQUk7QUFBQSxFQUN6RTtBQUNGO0FBUU8sU0FBUyxvQkFBdUIsU0FBaUQ7QUFDdEYsT0FBSztBQUNQO0FBdUJPLFNBQVMsWUFBWSxPQUFxQjtBQUMvQyxRQUFNLElBQUksTUFBTSxvQkFBb0IsT0FBTyxLQUFLLENBQUMsRUFBRTtBQUNyRDtBQVlPLFNBQVMsa0JBQW1ELE9BQVUsZ0JBQWtFO0FBQzdJLE1BQUksVUFBVSxRQUFRLFVBQVUsUUFBVztBQUN6QztBQUFBLEVBQ0Y7QUFFQSxxQkFBbUIsVUFBVSxPQUFPLGtCQUFrQjtBQUN0RCxRQUFNLFFBQVEsT0FBTyxtQkFBbUIsV0FBVyxJQUFJLE1BQU0sY0FBYyxJQUFJO0FBQy9FLFFBQU07QUFDUjtBQVNPLFNBQVMsb0JBQXVCLFNBQThCO0FBQ25FLFNBQU87QUFDVDtBQWFPLFNBQVMsa0JBQW1ELE9BQVUsZ0JBQWlEO0FBQzVILG9CQUFrQixPQUFPLGNBQWM7QUFDdkMsU0FBTztBQUNUO0FBUU8sU0FBUyxVQUFVLE9BQWtDO0FBQzFELFNBQU8sT0FBTyxVQUFVO0FBQzFCO0FBUU8sU0FBUyxTQUFTLE9BQWlDO0FBQ3hELFNBQU8sT0FBTyxVQUFVO0FBQzFCO0FBUU8sU0FBUyxTQUFTLE9BQWlDO0FBQ3hELFNBQU8sT0FBTyxVQUFVO0FBQzFCO0FBUU8sU0FBUyxjQUFjLE9BQW1DO0FBQy9ELFNBQU8sTUFBTSxRQUFRLEtBQUssS0FBSyxNQUFNLE1BQU0sUUFBUTtBQUNyRDtBQVFPLFNBQVMsWUFBWSxPQUFvQztBQUM5RCxTQUFPLFVBQVU7QUFDbkI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnaoumov/typescript-lib",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Generic TypeScript utilities: async helpers, errors, disposables, strings, paths, debug logging and more, usable in any TypeScript project.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -103,6 +103,7 @@
|
|
|
103
103
|
"version": "jiti scripts/version.ts"
|
|
104
104
|
},
|
|
105
105
|
"dependencies": {
|
|
106
|
+
"@standard-schema/spec": "^1.1.0",
|
|
106
107
|
"@types/path-browserify": "^1.0.3",
|
|
107
108
|
"debug": "^4.4.3",
|
|
108
109
|
"path-browserify": "^1.0.1",
|