@mnaoumov/typescript-lib 1.0.0 → 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 +45 -1
- package/dist/lib/cjs/@types/debug.d.cts +1 -1
- package/dist/lib/cjs/abort-controller.cjs +1 -59
- package/dist/lib/cjs/abort-controller.d.cts +2 -1
- package/dist/lib/cjs/aggregate-error.cjs +1 -59
- package/dist/lib/cjs/aggregate-error.d.cts +1 -1
- package/dist/lib/cjs/api-contract.cjs +102 -0
- package/dist/lib/cjs/api-contract.d.cts +184 -0
- package/dist/lib/cjs/array-buffer.cjs +1 -59
- package/dist/lib/cjs/array-buffer.d.cts +1 -1
- package/dist/lib/cjs/array.cjs +1 -59
- package/dist/lib/cjs/array.d.cts +1 -1
- package/dist/lib/cjs/async-events.cjs +1 -59
- package/dist/lib/cjs/async-events.d.cts +1 -1
- package/dist/lib/cjs/async-operation-hook.cjs +1 -59
- package/dist/lib/cjs/async-operation-hook.d.cts +1 -1
- package/dist/lib/cjs/async.cjs +1 -59
- package/dist/lib/cjs/async.d.cts +2 -1
- package/dist/lib/cjs/beeper.cjs +1 -59
- package/dist/lib/cjs/beeper.d.cts +1 -1
- package/dist/lib/cjs/blob.cjs +1 -59
- package/dist/lib/cjs/blob.d.cts +2 -1
- package/dist/lib/cjs/bytes.cjs +1 -59
- package/dist/lib/cjs/bytes.d.cts +1 -1
- package/dist/lib/cjs/debug-controller.cjs +1 -59
- package/dist/lib/cjs/debug-controller.d.cts +1 -1
- package/dist/lib/cjs/debug.cjs +6 -37
- package/dist/lib/cjs/debug.d.cts +1 -1
- package/dist/lib/cjs/desktop-zip-extractor.cjs +1 -59
- package/dist/lib/cjs/desktop-zip-extractor.d.cts +2 -1
- package/dist/lib/cjs/disposable.cjs +4 -54
- package/dist/lib/cjs/disposable.d.cts +1 -1
- package/dist/lib/cjs/enum.cjs +1 -59
- package/dist/lib/cjs/enum.d.cts +1 -1
- package/dist/lib/cjs/error.cjs +1 -59
- package/dist/lib/cjs/error.d.cts +2 -1
- package/dist/lib/cjs/function.cjs +1 -59
- package/dist/lib/cjs/function.d.cts +1 -1
- package/dist/lib/cjs/html-element.cjs +1 -59
- package/dist/lib/cjs/html-element.d.cts +2 -1
- package/dist/lib/cjs/index.cjs +36 -91
- package/dist/lib/cjs/index.d.cts +2 -1
- package/dist/lib/cjs/jpeg-metadata.cjs +1 -59
- package/dist/lib/cjs/jpeg-metadata.d.cts +1 -1
- package/dist/lib/cjs/library-references.d.cts +2 -0
- package/dist/lib/cjs/library.cjs +1 -59
- package/dist/lib/cjs/object-utils.cjs +1 -59
- package/dist/lib/cjs/object-utils.d.cts +1 -1
- package/dist/lib/cjs/path.cjs +6 -37
- package/dist/lib/cjs/path.d.cts +2 -1
- package/dist/lib/cjs/reg-exp.cjs +1 -59
- package/dist/lib/cjs/reg-exp.d.cts +1 -1
- package/dist/lib/cjs/string.cjs +1 -59
- package/dist/lib/cjs/string.d.cts +2 -1
- package/dist/lib/cjs/transformers/date-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/date-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/group-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/group-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/index.cjs +9 -67
- package/dist/lib/cjs/transformers/index.d.cts +1 -1
- package/dist/lib/cjs/transformers/map-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/map-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/set-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/set-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/typed-transformer.cjs +1 -59
- package/dist/lib/cjs/transformers/typed-transformer.d.cts +1 -1
- package/dist/lib/cjs/two-way-map.cjs +1 -59
- package/dist/lib/cjs/two-way-map.d.cts +1 -1
- package/dist/lib/cjs/type-guards.cjs +28 -61
- package/dist/lib/cjs/type-guards.d.cts +36 -1
- package/dist/lib/cjs/type.cjs +1 -59
- package/dist/lib/cjs/type.d.cts +1 -1
- package/dist/lib/cjs/typescript-lib-state.cjs +1 -59
- package/dist/lib/cjs/typescript-lib-state.d.cts +1 -1
- package/dist/lib/cjs/url.cjs +1 -59
- package/dist/lib/cjs/url.d.cts +1 -1
- package/dist/lib/cjs/value-provider.cjs +1 -59
- package/dist/lib/cjs/value-provider.d.cts +2 -1
- package/dist/lib/cjs/value-wrapper.cjs +1 -59
- package/dist/lib/cjs/value-wrapper.d.cts +1 -1
- package/dist/lib/esm/@types/debug.d.mts +1 -1
- package/dist/lib/esm/abort-controller.d.mts +2 -1
- package/dist/lib/esm/abort-controller.mjs +1 -45
- package/dist/lib/esm/aggregate-error.d.mts +1 -1
- package/dist/lib/esm/aggregate-error.mjs +1 -45
- package/dist/lib/esm/api-contract.d.mts +184 -0
- package/dist/lib/esm/api-contract.mjs +75 -0
- package/dist/lib/esm/array-buffer.d.mts +1 -1
- package/dist/lib/esm/array-buffer.mjs +1 -45
- package/dist/lib/esm/array.d.mts +1 -1
- package/dist/lib/esm/array.mjs +1 -45
- package/dist/lib/esm/async-events.d.mts +1 -1
- package/dist/lib/esm/async-events.mjs +1 -45
- package/dist/lib/esm/async-operation-hook.d.mts +1 -1
- package/dist/lib/esm/async-operation-hook.mjs +1 -45
- package/dist/lib/esm/async.d.mts +2 -1
- package/dist/lib/esm/async.mjs +1 -45
- package/dist/lib/esm/beeper.d.mts +1 -1
- package/dist/lib/esm/beeper.mjs +1 -45
- package/dist/lib/esm/blob.d.mts +2 -1
- package/dist/lib/esm/blob.mjs +1 -45
- package/dist/lib/esm/bytes.d.mts +1 -1
- package/dist/lib/esm/bytes.mjs +1 -45
- package/dist/lib/esm/debug-controller.d.mts +1 -1
- package/dist/lib/esm/debug-controller.mjs +0 -44
- package/dist/lib/esm/debug.d.mts +1 -1
- package/dist/lib/esm/debug.mjs +5 -22
- package/dist/lib/esm/desktop-zip-extractor.d.mts +2 -1
- package/dist/lib/esm/desktop-zip-extractor.mjs +1 -45
- package/dist/lib/esm/disposable.d.mts +1 -1
- package/dist/lib/esm/disposable.mjs +4 -40
- package/dist/lib/esm/enum.d.mts +1 -1
- package/dist/lib/esm/enum.mjs +1 -45
- package/dist/lib/esm/error.d.mts +2 -1
- package/dist/lib/esm/error.mjs +1 -45
- package/dist/lib/esm/function.d.mts +1 -1
- package/dist/lib/esm/function.mjs +1 -45
- package/dist/lib/esm/html-element.d.mts +2 -1
- package/dist/lib/esm/html-element.mjs +1 -45
- package/dist/lib/esm/index.d.mts +2 -1
- package/dist/lib/esm/index.mjs +3 -45
- package/dist/lib/esm/jpeg-metadata.d.mts +1 -1
- package/dist/lib/esm/jpeg-metadata.mjs +1 -45
- package/dist/lib/esm/library-references.d.mts +2 -0
- package/dist/lib/esm/library.mjs +1 -45
- package/dist/lib/esm/object-utils.d.mts +1 -1
- package/dist/lib/esm/object-utils.mjs +1 -45
- package/dist/lib/esm/path.d.mts +2 -1
- package/dist/lib/esm/path.mjs +5 -22
- package/dist/lib/esm/reg-exp.d.mts +1 -1
- package/dist/lib/esm/reg-exp.mjs +1 -45
- package/dist/lib/esm/string.d.mts +2 -1
- package/dist/lib/esm/string.mjs +1 -45
- package/dist/lib/esm/transformers/date-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/date-transformer.mjs +1 -45
- package/dist/lib/esm/transformers/group-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/group-transformer.mjs +1 -45
- package/dist/lib/esm/transformers/index.d.mts +1 -1
- package/dist/lib/esm/transformers/index.mjs +1 -45
- package/dist/lib/esm/transformers/map-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/map-transformer.mjs +1 -45
- package/dist/lib/esm/transformers/set-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/set-transformer.mjs +1 -45
- package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +1 -45
- package/dist/lib/esm/transformers/transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/transformer.mjs +1 -45
- package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +1 -45
- package/dist/lib/esm/transformers/typed-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/typed-transformer.mjs +1 -45
- package/dist/lib/esm/two-way-map.d.mts +1 -1
- package/dist/lib/esm/two-way-map.mjs +1 -45
- package/dist/lib/esm/type-guards.d.mts +36 -1
- package/dist/lib/esm/type-guards.mjs +22 -46
- package/dist/lib/esm/type.d.mts +1 -1
- package/dist/lib/esm/type.mjs +1 -45
- package/dist/lib/esm/typescript-lib-state.d.mts +1 -1
- package/dist/lib/esm/typescript-lib-state.mjs +1 -45
- package/dist/lib/esm/url.d.mts +1 -1
- package/dist/lib/esm/url.mjs +1 -45
- package/dist/lib/esm/value-provider.d.mts +2 -1
- package/dist/lib/esm/value-provider.mjs +1 -45
- package/dist/lib/esm/value-wrapper.d.mts +1 -1
- package/dist/lib/esm/value-wrapper.mjs +1 -45
- package/package.json +62 -19
|
@@ -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
|
|
@@ -3,50 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
(function () {
|
|
7
|
-
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function ensureBrowserProcess() {
|
|
13
|
-
const browserProcess = {
|
|
14
|
-
browser: true,
|
|
15
|
-
cwd() {
|
|
16
|
-
return '/';
|
|
17
|
-
},
|
|
18
|
-
env: {},
|
|
19
|
-
platform: 'android'
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
-
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
|
-
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
-
globalThis.process = browserProcess;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (existingProcess.versions?.node) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
|
-
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
-
existingProcessRecord[key] ??= value;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
(function initEsm() {
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
48
|
-
})();
|
|
49
|
-
|
|
50
6
|
function toArrayBuffer(data) {
|
|
51
7
|
const buffer = new ArrayBuffer(data.byteLength);
|
|
52
8
|
new Uint8Array(buffer).set(data);
|
|
@@ -55,4 +11,4 @@ function toArrayBuffer(data) {
|
|
|
55
11
|
export {
|
|
56
12
|
toArrayBuffer
|
|
57
13
|
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FycmF5LWJ1ZmZlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB7QGxpbmsgQXJyYXlCdWZmZXJ9IG9iamVjdHMuXG4gKi9cblxuLyoqXG4gKiBDb3BpZXMgYnl0ZXMgaW50byBhIGZyZXNoIHtAbGluayBBcnJheUJ1ZmZlcn0uXG4gKlxuICogUmVhY2hpbmcgZm9yIGBkYXRhLmJ1ZmZlcmAgd291bGQgYmUgY2hlYXBlciBidXQgd3Jvbmc6IGl0cyB0eXBlIGlzIGBBcnJheUJ1ZmZlckxpa2VgLCBhbmQgdGhlIHZpZXcgbWF5XG4gKiBjb3ZlciBvbmx5IHBhcnQgb2YgYSBsYXJnZXIgYnVmZmVyLCBzbyB0aGUgY2FsbGVyIGNhbiBlbmQgdXAgaGFuZGVkIGJ5dGVzIGl0IG5ldmVyIGFza2VkIGZvci5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBieXRlcyB0byBjb3B5LlxuICogQHJldHVybnMgQW4ge0BsaW5rIEFycmF5QnVmZmVyfSBob2xkaW5nIGV4YWN0bHkgdGhvc2UgYnl0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0FycmF5QnVmZmVyKGRhdGE6IFVpbnQ4QXJyYXkpOiBBcnJheUJ1ZmZlciB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihkYXRhLmJ5dGVMZW5ndGgpO1xuICBuZXcgVWludDhBcnJheShidWZmZXIpLnNldChkYXRhKTtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBZU8sU0FBUyxjQUFjLE1BQStCO0FBQzNELFFBQU0sU0FBUyxJQUFJLFlBQVksS0FBSyxVQUFVO0FBQzlDLE1BQUksV0FBVyxNQUFNLEVBQUUsSUFBSSxJQUFJO0FBQy9CLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/lib/esm/array.d.mts
CHANGED
package/dist/lib/esm/array.mjs
CHANGED
|
@@ -3,50 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
(function () {
|
|
7
|
-
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function ensureBrowserProcess() {
|
|
13
|
-
const browserProcess = {
|
|
14
|
-
browser: true,
|
|
15
|
-
cwd() {
|
|
16
|
-
return '/';
|
|
17
|
-
},
|
|
18
|
-
env: {},
|
|
19
|
-
platform: 'android'
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
-
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
|
-
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
-
globalThis.process = browserProcess;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (existingProcess.versions?.node) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
|
-
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
-
existingProcessRecord[key] ??= value;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
(function initEsm() {
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
48
|
-
})();
|
|
49
|
-
|
|
50
6
|
function filterInPlace(array, shouldKeep) {
|
|
51
7
|
const length = array.length;
|
|
52
8
|
let writeIndex = 0;
|
|
@@ -90,4 +46,4 @@ export {
|
|
|
90
46
|
unique,
|
|
91
47
|
uniqueInPlace
|
|
92
48
|
};
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FycmF5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXJyYXkgdXRpbGl0aWVzLlxuICovXG5cbi8qKlxuICogRmlsdGVyIGFuIGFycmF5IGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBhcnJheSBlbGVtZW50cy5cbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gc2hvdWxkS2VlcCAtIFRoZSBwcmVkaWNhdGUgdG8gZmlsdGVyIHRoZSBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2U8VD4oYXJyYXk6IFRbXSwgc2hvdWxkS2VlcDogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgbGV0IHdyaXRlSW5kZXggPSAwO1xuICBmb3IgKGxldCByZWFkSW5kZXggPSAwOyByZWFkSW5kZXggPCBsZW5ndGg7IHJlYWRJbmRleCsrKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGFycmF5LCByZWFkSW5kZXgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gYXJyYXlbcmVhZEluZGV4XSBhcyBUO1xuICAgIGlmIChzaG91bGRLZWVwKGN1cnJlbnQsIHJlYWRJbmRleCwgYXJyYXkpKSB7XG4gICAgICBhcnJheVt3cml0ZUluZGV4KytdID0gY3VycmVudDtcbiAgICB9XG4gIH1cbiAgYXJyYXkubGVuZ3RoID0gd3JpdGVJbmRleDtcbn1cblxuLyoqXG4gKiBDb3BpZXMgYW4gaXRlcmFibGUgaW50byBhIG5ldyBhcnJheSwgc28gaXQgY2FuIGJlIHNhZmVseSBpdGVyYXRlZCB3aGlsZSB0aGUgb3JpZ2luYWwgaXMgbW9kaWZpZWQuXG4gKlxuICogVXNlIHRoaXMgd2hlbmV2ZXIgdGhlIGxvb3AgYm9keSAob3IgYW4gYXdhaXRlZCBjYWxsIGluc2lkZSBpdCkgYWRkcyB0byBvciByZW1vdmVzIGZyb20gdGhlIGNvbGxlY3Rpb25cbiAqIGJlaW5nIGl0ZXJhdGVkIFx1MjAxNCByZWxlYXNpbmcgbG9ja3MsIGNhbmNlbGxpbmcgdGltZXJzLCBzZXR0bGluZyBwZW5kaW5nIG9wZXJhdGlvbnMuIEl0ZXJhdGluZyB0aGUgbGl2ZVxuICogY29sbGVjdGlvbiBpbiB0aG9zZSBjYXNlcyBzaWxlbnRseSBza2lwcyBlbnRyaWVzLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYW4gaW5saW5lIGBbLi4uY29sbGVjdGlvbl1gOiBpdCBzYXlzIHdoeSB0aGUgY29weSBleGlzdHMsIGFuZCBpdCBrZWVwcyB0aGUgY2FsbCBzaXRlXG4gKiBjbGVhciBvZiBgdW5pY29ybi9uby11c2VsZXNzLXNwcmVhZGAsIHdoaWNoIGNhbm5vdCB0ZWxsIGEgZGVmZW5zaXZlIGNvcHkgZnJvbSBhIHJlZHVuZGFudCBvbmUuXG4gKlxuICogVGhlIHJlc3VsdCBpcyBgcmVhZG9ubHlgOiBpdCBleGlzdHMgdG8gYmUgaXRlcmF0ZWQsIG5vdCB3b3JrZWQgb24uIE11dGF0aW5nIGl0IHdvdWxkIGNoYW5nZSBhIHRocm93YXdheVxuICogY29weSBhbmQgbGVhdmUgdGhlIG9yaWdpbmFsIHVudG91Y2hlZCwgd2hpY2ggaXMgbmV2ZXIgd2hhdCB0aGUgY2FsbGVyIHdhbnRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqIEBwYXJhbSBjb2xsZWN0aW9uIC0gVGhlIGNvbGxlY3Rpb24gdG8gY29weS5cbiAqIEByZXR1cm5zIEEgbmV3IGFycmF5IGhvbGRpbmcgdGhlIGNvbGxlY3Rpb24ncyBlbGVtZW50cyBhdCB0aGUgdGltZSBvZiB0aGUgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNuYXBzaG90PFQ+KGNvbGxlY3Rpb246IEl0ZXJhYmxlPFQ+KTogcmVhZG9ubHkgVFtdIHtcbiAgcmV0dXJuIFsuLi5jb2xsZWN0aW9uXTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgZHVwbGljYXRlcyBmcm9tIGFuIGFycmF5LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBhcnJheSBlbGVtZW50cy5cbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICogQHJldHVybnMgVGhlIGFycmF5IHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KGFycmF5OiByZWFkb25seSBUW10pOiBUW10ge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0PFQ+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FycmF5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQXJyYXkgdXRpbGl0aWVzLlxuICovXG5cbi8qKlxuICogRmlsdGVyIGFuIGFycmF5IGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBhcnJheSBlbGVtZW50cy5cbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gc2hvdWxkS2VlcCAtIFRoZSBwcmVkaWNhdGUgdG8gZmlsdGVyIHRoZSBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2U8VD4oYXJyYXk6IFRbXSwgc2hvdWxkS2VlcDogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiBib29sZWFuKTogdm9pZCB7XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgbGV0IHdyaXRlSW5kZXggPSAwO1xuICBmb3IgKGxldCByZWFkSW5kZXggPSAwOyByZWFkSW5kZXggPCBsZW5ndGg7IHJlYWRJbmRleCsrKSB7XG4gICAgaWYgKCFPYmplY3QuaGFzT3duKGFycmF5LCByZWFkSW5kZXgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50ID0gYXJyYXlbcmVhZEluZGV4XSBhcyBUO1xuICAgIGlmIChzaG91bGRLZWVwKGN1cnJlbnQsIHJlYWRJbmRleCwgYXJyYXkpKSB7XG4gICAgICBhcnJheVt3cml0ZUluZGV4KytdID0gY3VycmVudDtcbiAgICB9XG4gIH1cbiAgYXJyYXkubGVuZ3RoID0gd3JpdGVJbmRleDtcbn1cblxuLyoqXG4gKiBDb3BpZXMgYW4gaXRlcmFibGUgaW50byBhIG5ldyBhcnJheSwgc28gaXQgY2FuIGJlIHNhZmVseSBpdGVyYXRlZCB3aGlsZSB0aGUgb3JpZ2luYWwgaXMgbW9kaWZpZWQuXG4gKlxuICogVXNlIHRoaXMgd2hlbmV2ZXIgdGhlIGxvb3AgYm9keSAob3IgYW4gYXdhaXRlZCBjYWxsIGluc2lkZSBpdCkgYWRkcyB0byBvciByZW1vdmVzIGZyb20gdGhlIGNvbGxlY3Rpb25cbiAqIGJlaW5nIGl0ZXJhdGVkIFx1MjAxNCByZWxlYXNpbmcgbG9ja3MsIGNhbmNlbGxpbmcgdGltZXJzLCBzZXR0bGluZyBwZW5kaW5nIG9wZXJhdGlvbnMuIEl0ZXJhdGluZyB0aGUgbGl2ZVxuICogY29sbGVjdGlvbiBpbiB0aG9zZSBjYXNlcyBzaWxlbnRseSBza2lwcyBlbnRyaWVzLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYW4gaW5saW5lIGBbLi4uY29sbGVjdGlvbl1gOiBpdCBzYXlzIHdoeSB0aGUgY29weSBleGlzdHMsIGFuZCBpdCBrZWVwcyB0aGUgY2FsbCBzaXRlXG4gKiBjbGVhciBvZiBgdW5pY29ybi9uby11c2VsZXNzLXNwcmVhZGAsIHdoaWNoIGNhbm5vdCB0ZWxsIGEgZGVmZW5zaXZlIGNvcHkgZnJvbSBhIHJlZHVuZGFudCBvbmUuXG4gKlxuICogVGhlIHJlc3VsdCBpcyBgcmVhZG9ubHlgOiBpdCBleGlzdHMgdG8gYmUgaXRlcmF0ZWQsIG5vdCB3b3JrZWQgb24uIE11dGF0aW5nIGl0IHdvdWxkIGNoYW5nZSBhIHRocm93YXdheVxuICogY29weSBhbmQgbGVhdmUgdGhlIG9yaWdpbmFsIHVudG91Y2hlZCwgd2hpY2ggaXMgbmV2ZXIgd2hhdCB0aGUgY2FsbGVyIHdhbnRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cy5cbiAqIEBwYXJhbSBjb2xsZWN0aW9uIC0gVGhlIGNvbGxlY3Rpb24gdG8gY29weS5cbiAqIEByZXR1cm5zIEEgbmV3IGFycmF5IGhvbGRpbmcgdGhlIGNvbGxlY3Rpb24ncyBlbGVtZW50cyBhdCB0aGUgdGltZSBvZiB0aGUgY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNuYXBzaG90PFQ+KGNvbGxlY3Rpb246IEl0ZXJhYmxlPFQ+KTogcmVhZG9ubHkgVFtdIHtcbiAgcmV0dXJuIFsuLi5jb2xsZWN0aW9uXTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgZHVwbGljYXRlcyBmcm9tIGFuIGFycmF5LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBhcnJheSBlbGVtZW50cy5cbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICogQHJldHVybnMgVGhlIGFycmF5IHdpdGggZHVwbGljYXRlcyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KGFycmF5OiByZWFkb25seSBUW10pOiBUW10ge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0PFQ+KCk7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoKHZhbHVlKSA9PiB7XG4gICAgaWYgKHNldC5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNldC5hZGQodmFsdWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgZHVwbGljYXRlcyBmcm9tIGFuIGFycmF5IGluIHBsYWNlLlxuICpcbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byByZW1vdmUgZHVwbGljYXRlcyBmcm9tLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlSW5QbGFjZShhcnJheTogdW5rbm93bltdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcbiAgZmlsdGVySW5QbGFjZShhcnJheSwgKHZhbHVlKSA9PiB7XG4gICAgaWYgKHNldC5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNldC5hZGQodmFsdWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBYU8sU0FBUyxjQUFpQixPQUFZLFlBQW9FO0FBQy9HLFFBQU0sU0FBUyxNQUFNO0FBQ3JCLE1BQUksYUFBYTtBQUNqQixXQUFTLFlBQVksR0FBRyxZQUFZLFFBQVEsYUFBYTtBQUN2RCxRQUFJLENBQUMsT0FBTyxPQUFPLE9BQU8sU0FBUyxHQUFHO0FBQ3BDO0FBQUEsSUFDRjtBQUVBLFVBQU0sVUFBVSxNQUFNLFNBQVM7QUFDL0IsUUFBSSxXQUFXLFNBQVMsV0FBVyxLQUFLLEdBQUc7QUFDekMsWUFBTSxZQUFZLElBQUk7QUFBQSxJQUN4QjtBQUFBLEVBQ0Y7QUFDQSxRQUFNLFNBQVM7QUFDakI7QUFtQk8sU0FBUyxTQUFZLFlBQXVDO0FBQ2pFLFNBQU8sQ0FBQyxHQUFHLFVBQVU7QUFDdkI7QUFTTyxTQUFTLE9BQVUsT0FBMEI7QUFDbEQsUUFBTSxNQUFNLG9CQUFJLElBQU87QUFDdkIsU0FBTyxNQUFNLE9BQU8sQ0FBQyxVQUFVO0FBQzdCLFFBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksSUFBSSxLQUFLO0FBQ2IsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIO0FBT08sU0FBUyxjQUFjLE9BQXdCO0FBQ3BELFFBQU0sTUFBTSxvQkFBSSxJQUFhO0FBQzdCLGdCQUFjLE9BQU8sQ0FBQyxVQUFVO0FBQzlCLFFBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNsQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksSUFBSSxLQUFLO0FBQ2IsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|