@maxclicks/utilities 1.5.0 → 1.6.1
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/dist/helpers/deepClone.d.ts +2 -1
- package/dist/helpers/deepClone.d.ts.map +1 -1
- package/dist/helpers/deepClone.js +1 -0
- package/dist/helpers/deepClone.js.map +1 -1
- package/dist/helpers/delay.d.ts +7 -0
- package/dist/helpers/delay.d.ts.map +1 -1
- package/dist/helpers/delay.js +1 -1
- package/dist/helpers/delay.js.map +1 -1
- package/dist/helpers/error-warning/alterError.d.ts +6 -0
- package/dist/helpers/error-warning/alterError.d.ts.map +1 -1
- package/dist/helpers/error-warning/alterError.js +6 -0
- package/dist/helpers/error-warning/alterError.js.map +1 -1
- package/dist/helpers/error-warning/combineMessages.d.ts +6 -0
- package/dist/helpers/error-warning/combineMessages.d.ts.map +1 -1
- package/dist/helpers/error-warning/combineMessages.js +6 -0
- package/dist/helpers/error-warning/combineMessages.js.map +1 -1
- package/dist/helpers/error-warning/getErrorMessage.d.ts +1 -0
- package/dist/helpers/error-warning/getErrorMessage.d.ts.map +1 -1
- package/dist/helpers/error-warning/getErrorMessage.js +1 -0
- package/dist/helpers/error-warning/getErrorMessage.js.map +1 -1
- package/dist/helpers/error-warning/prependMessage.d.ts +6 -0
- package/dist/helpers/error-warning/prependMessage.d.ts.map +1 -1
- package/dist/helpers/error-warning/prependMessage.js +6 -0
- package/dist/helpers/error-warning/prependMessage.js.map +1 -1
- package/dist/helpers/error-warning/throwError.d.ts +7 -0
- package/dist/helpers/error-warning/throwError.d.ts.map +1 -1
- package/dist/helpers/error-warning/throwError.js +9 -0
- package/dist/helpers/error-warning/throwError.js.map +1 -1
- package/dist/helpers/escapeForRegExp.d.ts +1 -0
- package/dist/helpers/escapeForRegExp.d.ts.map +1 -1
- package/dist/helpers/escapeForRegExp.js +2 -1
- package/dist/helpers/escapeForRegExp.js.map +1 -1
- package/dist/helpers/formatCurrencyUsd.d.ts +1 -0
- package/dist/helpers/formatCurrencyUsd.d.ts.map +1 -1
- package/dist/helpers/formatCurrencyUsd.js +1 -0
- package/dist/helpers/formatCurrencyUsd.js.map +1 -1
- package/dist/helpers/generateRandomKey.d.ts +6 -0
- package/dist/helpers/generateRandomKey.d.ts.map +1 -1
- package/dist/helpers/generateRandomKey.js +6 -0
- package/dist/helpers/generateRandomKey.js.map +1 -1
- package/dist/helpers/generateRuntimeId.d.ts +1 -0
- package/dist/helpers/generateRuntimeId.d.ts.map +1 -1
- package/dist/helpers/generateRuntimeId.js +1 -0
- package/dist/helpers/generateRuntimeId.js.map +1 -1
- package/dist/helpers/generateSequence.d.ts +5 -0
- package/dist/helpers/generateSequence.d.ts.map +1 -1
- package/dist/helpers/generateSequence.js +5 -0
- package/dist/helpers/generateSequence.js.map +1 -1
- package/dist/helpers/getEnumKeyValues.d.ts +1 -0
- package/dist/helpers/getEnumKeyValues.d.ts.map +1 -1
- package/dist/helpers/getEnumKeyValues.js +2 -0
- package/dist/helpers/getEnumKeyValues.js.map +1 -1
- package/dist/helpers/haveSameContents.d.ts +1 -0
- package/dist/helpers/haveSameContents.d.ts.map +1 -1
- package/dist/helpers/haveSameContents.js +1 -0
- package/dist/helpers/haveSameContents.js.map +1 -1
- package/dist/helpers/isOneOf.d.ts +5 -0
- package/dist/helpers/isOneOf.d.ts.map +1 -1
- package/dist/helpers/isOneOf.js +5 -0
- package/dist/helpers/isOneOf.js.map +1 -1
- package/dist/helpers/native/arrayHelpers.d.ts +4 -0
- package/dist/helpers/native/arrayHelpers.d.ts.map +1 -1
- package/dist/helpers/native/arrayHelpers.js +1 -1
- package/dist/helpers/native/arrayHelpers.js.map +1 -1
- package/dist/helpers/native/objectHelpers.d.ts +3 -0
- package/dist/helpers/native/objectHelpers.d.ts.map +1 -1
- package/dist/helpers/native/stringHelpers.d.ts +3 -0
- package/dist/helpers/native/stringHelpers.d.ts.map +1 -1
- package/dist/helpers/optional.d.ts +3 -0
- package/dist/helpers/optional.d.ts.map +1 -1
- package/dist/helpers/optional.js +3 -0
- package/dist/helpers/optional.js.map +1 -1
- package/dist/helpers/percent.d.ts +2 -0
- package/dist/helpers/percent.d.ts.map +1 -1
- package/dist/helpers/percent.js +2 -0
- package/dist/helpers/percent.js.map +1 -1
- package/dist/helpers/typed.d.ts +19 -0
- package/dist/helpers/typed.d.ts.map +1 -1
- package/dist/helpers/typed.js +19 -0
- package/dist/helpers/typed.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/common-normalizers/descriptionNormalizer.d.ts +1 -0
- package/dist/modules/common-normalizers/descriptionNormalizer.d.ts.map +1 -1
- package/dist/modules/common-normalizers/descriptionNormalizer.js +1 -0
- package/dist/modules/common-normalizers/descriptionNormalizer.js.map +1 -1
- package/dist/modules/common-normalizers/labelNormalizer.d.ts +1 -0
- package/dist/modules/common-normalizers/labelNormalizer.d.ts.map +1 -1
- package/dist/modules/common-normalizers/labelNormalizer.js +1 -0
- package/dist/modules/common-normalizers/labelNormalizer.js.map +1 -1
- package/dist/modules/common-normalizers/nameNormalizer.d.ts +1 -0
- package/dist/modules/common-normalizers/nameNormalizer.d.ts.map +1 -1
- package/dist/modules/common-normalizers/nameNormalizer.js +1 -0
- package/dist/modules/common-normalizers/nameNormalizer.js.map +1 -1
- package/dist/modules/common-normalizers/widthHeightNormalizer.d.ts +1 -0
- package/dist/modules/common-normalizers/widthHeightNormalizer.d.ts.map +1 -1
- package/dist/modules/common-normalizers/widthHeightNormalizer.js +1 -0
- package/dist/modules/common-normalizers/widthHeightNormalizer.js.map +1 -1
- package/dist/types/Address.d.ts +3 -0
- package/dist/types/Address.d.ts.map +1 -1
- package/dist/types/Address.js +20 -0
- package/dist/types/Address.js.map +1 -1
- package/dist/types/Color.d.ts +3 -0
- package/dist/types/Color.d.ts.map +1 -1
- package/dist/types/Color.js +4 -0
- package/dist/types/Color.js.map +1 -1
- package/dist/types/DateOnly.d.ts +4 -0
- package/dist/types/DateOnly.d.ts.map +1 -1
- package/dist/types/DateOnly.js +6 -0
- package/dist/types/DateOnly.js.map +1 -1
- package/dist/types/DateTime.d.ts +3 -0
- package/dist/types/DateTime.d.ts.map +1 -1
- package/dist/types/DateTime.js +5 -0
- package/dist/types/DateTime.js.map +1 -1
- package/dist/types/Decimal.d.ts +3 -0
- package/dist/types/Decimal.d.ts.map +1 -1
- package/dist/types/Decimal.js +4 -0
- package/dist/types/Decimal.js.map +1 -1
- package/dist/types/Email.d.ts +3 -0
- package/dist/types/Email.d.ts.map +1 -1
- package/dist/types/Email.js +5 -0
- package/dist/types/Email.js.map +1 -1
- package/dist/types/Geolocation.d.ts +3 -0
- package/dist/types/Geolocation.d.ts.map +1 -1
- package/dist/types/Geolocation.js +14 -0
- package/dist/types/Geolocation.js.map +1 -1
- package/dist/types/Json/Json.d.ts +7 -0
- package/dist/types/Json/Json.d.ts.map +1 -1
- package/dist/types/Json/Json.js +6 -0
- package/dist/types/Json/Json.js.map +1 -1
- package/dist/types/Json/index.d.ts +2 -0
- package/dist/types/Json/index.d.ts.map +1 -0
- package/dist/types/Json/index.js +2 -0
- package/dist/types/Json/index.js.map +1 -0
- package/dist/types/Json/jsonNormalizerWithSchemaFactory.js +13 -0
- package/dist/types/Json/jsonNormalizerWithSchemaFactory.js.map +1 -1
- package/dist/types/Json/jsonSchemaNormalizer.js +11 -0
- package/dist/types/Json/jsonSchemaNormalizer.js.map +1 -1
- package/dist/types/Json/jsonSchemaSatisfies.d.ts +9 -0
- package/dist/types/Json/jsonSchemaSatisfies.d.ts.map +1 -1
- package/dist/types/Json/jsonSchemaSatisfies.js +55 -3
- package/dist/types/Json/jsonSchemaSatisfies.js.map +1 -1
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.d.ts +1 -0
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.d.ts.map +1 -1
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.js +2 -0
- package/dist/types/Json/jsonSchemaSimplifiedSatisfies.js.map +1 -1
- package/dist/types/Lazily.d.ts +39 -0
- package/dist/types/Lazily.d.ts.map +1 -1
- package/dist/types/Lazily.js +2 -0
- package/dist/types/Lazily.js.map +1 -1
- package/dist/types/Normalizer.d.ts +78 -0
- package/dist/types/Normalizer.d.ts.map +1 -1
- package/dist/types/Normalizer.js +54 -0
- package/dist/types/Normalizer.js.map +1 -1
- package/dist/types/Phone.d.ts +3 -0
- package/dist/types/Phone.d.ts.map +1 -1
- package/dist/types/Phone.js +4 -0
- package/dist/types/Phone.js.map +1 -1
- package/dist/types/Slug.d.ts +3 -0
- package/dist/types/Slug.d.ts.map +1 -1
- package/dist/types/Slug.js +4 -0
- package/dist/types/Slug.js.map +1 -1
- package/dist/types/TimeOnly.d.ts +3 -0
- package/dist/types/TimeOnly.d.ts.map +1 -1
- package/dist/types/TimeOnly.js +4 -0
- package/dist/types/TimeOnly.js.map +1 -1
- package/dist/types/Url.d.ts +3 -0
- package/dist/types/Url.d.ts.map +1 -1
- package/dist/types/Url.js +5 -0
- package/dist/types/Url.js.map +1 -1
- package/dist/types/Uuid.d.ts +3 -0
- package/dist/types/Uuid.d.ts.map +1 -1
- package/dist/types/Uuid.js +4 -0
- package/dist/types/Uuid.js.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,37 +1,59 @@
|
|
|
1
1
|
import { haveSameContents } from '../../helpers/haveSameContents';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the `provided` schema satisfies the `required` schema.
|
|
4
|
+
* In other words, any JSON value valid under `required` (old schema) will also be valid under `provided` (new schema).
|
|
5
|
+
* This is useful for checking backward compatibility when updating schemas.
|
|
6
|
+
*
|
|
7
|
+
* @param provided - The new schema (what the provider now offers)
|
|
8
|
+
* @param required - The old schema (what consumers expect)
|
|
9
|
+
* @returns true if the provided schema accepts all values that required schema accepts
|
|
10
|
+
*/
|
|
2
11
|
export function jsonSchemaSatisfies(provided, required) {
|
|
12
|
+
// If provided accepts any value, it satisfies any required schema
|
|
3
13
|
if (isAnySchema(provided))
|
|
4
14
|
return true;
|
|
15
|
+
// If required accepts any value, provided must also accept any value
|
|
5
16
|
if (isAnySchema(required))
|
|
6
17
|
return isAnySchema(provided);
|
|
18
|
+
// Handle const in required
|
|
7
19
|
if ('const' in required) {
|
|
8
20
|
if ('const' in provided)
|
|
9
21
|
return haveSameContents(provided.const, required.const);
|
|
10
22
|
if ('enum' in provided)
|
|
11
23
|
return provided.enum.some(value => haveSameContents(value, required.const));
|
|
24
|
+
// Provided is a typed schema - check if it would accept the const value
|
|
12
25
|
return schemaAcceptsValue(provided, required.const);
|
|
13
26
|
}
|
|
27
|
+
// Handle enum in required
|
|
14
28
|
if ('enum' in required) {
|
|
15
29
|
if ('const' in provided)
|
|
16
30
|
return required.enum.length === 1 && haveSameContents(provided.const, required.enum[0]);
|
|
17
31
|
if ('enum' in provided)
|
|
18
32
|
return required.enum.every(requiredValue => provided.enum.some(providedValue => haveSameContents(providedValue, requiredValue)));
|
|
33
|
+
// Provided is a typed schema - check if it would accept all enum values
|
|
19
34
|
return required.enum.every(value => schemaAcceptsValue(provided, value));
|
|
20
35
|
}
|
|
36
|
+
// Handle const/enum in provided when required is a typed schema
|
|
37
|
+
// const/enum are more restrictive than type-based schemas
|
|
21
38
|
if ('const' in provided || 'enum' in provided)
|
|
22
39
|
return false;
|
|
40
|
+
// Both schemas are type-based - compare types and constraints
|
|
23
41
|
const providedBaseType = getBaseType(provided.type);
|
|
24
42
|
const requiredBaseType = getBaseType(required.type);
|
|
25
43
|
const providedNullable = isNullable(provided.type);
|
|
26
44
|
const requiredNullable = isNullable(required.type);
|
|
45
|
+
// If required accepts null, provided must also accept null
|
|
27
46
|
if (requiredNullable && !providedNullable)
|
|
28
47
|
return false;
|
|
48
|
+
// Handle null type
|
|
29
49
|
if (requiredBaseType === 'null')
|
|
30
50
|
return providedBaseType === 'null' || providedNullable;
|
|
51
|
+
// Types must match (with special case: number satisfies integer since number is more permissive)
|
|
31
52
|
if (providedBaseType !== requiredBaseType) {
|
|
32
53
|
if (!(providedBaseType === 'number' && requiredBaseType === 'integer'))
|
|
33
54
|
return false;
|
|
34
55
|
}
|
|
56
|
+
// Type-specific constraint checks
|
|
35
57
|
switch (requiredBaseType) {
|
|
36
58
|
case 'string':
|
|
37
59
|
return stringSchemasSatisfy(provided, required);
|
|
@@ -39,7 +61,7 @@ export function jsonSchemaSatisfies(provided, required) {
|
|
|
39
61
|
case 'integer':
|
|
40
62
|
return numberSchemasSatisfy(provided, required);
|
|
41
63
|
case 'boolean':
|
|
42
|
-
return true;
|
|
64
|
+
return true; // No additional constraints for boolean
|
|
43
65
|
case 'array':
|
|
44
66
|
return arraySchemasSatisfy(provided, required);
|
|
45
67
|
case 'object':
|
|
@@ -65,6 +87,10 @@ function isNullable(type) {
|
|
|
65
87
|
return type.includes('null');
|
|
66
88
|
return false;
|
|
67
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if a typed schema would accept a specific JSON value.
|
|
92
|
+
* Used when required has const/enum and provided is type-based.
|
|
93
|
+
*/
|
|
68
94
|
function schemaAcceptsValue(schema, value) {
|
|
69
95
|
if (isAnySchema(schema))
|
|
70
96
|
return true;
|
|
@@ -83,6 +109,7 @@ function schemaAcceptsValue(schema, value) {
|
|
|
83
109
|
return false;
|
|
84
110
|
if (stringSchema.maxLength !== undefined && value.length > stringSchema.maxLength)
|
|
85
111
|
return false;
|
|
112
|
+
// Note: format validation is lenient here - we assume the const/enum value is well-formed
|
|
86
113
|
return true;
|
|
87
114
|
}
|
|
88
115
|
case 'number':
|
|
@@ -146,14 +173,17 @@ function schemaAcceptsValue(schema, value) {
|
|
|
146
173
|
}
|
|
147
174
|
}
|
|
148
175
|
function stringSchemasSatisfy(provided, required) {
|
|
176
|
+
// Provided minLength must be <= required minLength (or undefined = no constraint)
|
|
149
177
|
if (required.minLength !== undefined) {
|
|
150
178
|
if (provided.minLength !== undefined && provided.minLength > required.minLength)
|
|
151
179
|
return false;
|
|
152
180
|
}
|
|
181
|
+
// Provided maxLength must be >= required maxLength (or undefined = no constraint)
|
|
153
182
|
if (required.maxLength !== undefined) {
|
|
154
183
|
if (provided.maxLength !== undefined && provided.maxLength < required.maxLength)
|
|
155
184
|
return false;
|
|
156
185
|
}
|
|
186
|
+
// Format: if required has a format, provided must have the same format or no format (more permissive)
|
|
157
187
|
if (required.format !== undefined) {
|
|
158
188
|
if (provided.format !== undefined && provided.format !== required.format)
|
|
159
189
|
return false;
|
|
@@ -161,22 +191,28 @@ function stringSchemasSatisfy(provided, required) {
|
|
|
161
191
|
return true;
|
|
162
192
|
}
|
|
163
193
|
function numberSchemasSatisfy(provided, required) {
|
|
194
|
+
// Provided minimum must be <= required minimum
|
|
164
195
|
if (required.minimum !== undefined) {
|
|
165
196
|
if (provided.minimum !== undefined && provided.minimum > required.minimum)
|
|
166
197
|
return false;
|
|
167
198
|
}
|
|
199
|
+
// Provided maximum must be >= required maximum
|
|
168
200
|
if (required.maximum !== undefined) {
|
|
169
201
|
if (provided.maximum !== undefined && provided.maximum < required.maximum)
|
|
170
202
|
return false;
|
|
171
203
|
}
|
|
204
|
+
// Provided exclusiveMinimum must be <= required exclusiveMinimum
|
|
172
205
|
if (required.exclusiveMinimum !== undefined) {
|
|
173
206
|
if (provided.exclusiveMinimum !== undefined && provided.exclusiveMinimum > required.exclusiveMinimum)
|
|
174
207
|
return false;
|
|
175
208
|
}
|
|
209
|
+
// Provided exclusiveMaximum must be >= required exclusiveMaximum
|
|
176
210
|
if (required.exclusiveMaximum !== undefined) {
|
|
177
211
|
if (provided.exclusiveMaximum !== undefined && provided.exclusiveMaximum < required.exclusiveMaximum)
|
|
178
212
|
return false;
|
|
179
213
|
}
|
|
214
|
+
// multipleOf: provided's multipleOf must divide required's multipleOf
|
|
215
|
+
// e.g., if required is multipleOf: 6, provided can be multipleOf: 2 or 3 (accepts more values)
|
|
180
216
|
if (required.multipleOf !== undefined) {
|
|
181
217
|
if (provided.multipleOf !== undefined && required.multipleOf % provided.multipleOf !== 0)
|
|
182
218
|
return false;
|
|
@@ -184,29 +220,38 @@ function numberSchemasSatisfy(provided, required) {
|
|
|
184
220
|
return true;
|
|
185
221
|
}
|
|
186
222
|
function arraySchemasSatisfy(provided, required) {
|
|
223
|
+
// Provided minItems must be <= required minItems
|
|
187
224
|
if (required.minItems !== undefined) {
|
|
188
225
|
if (provided.minItems !== undefined && provided.minItems > required.minItems)
|
|
189
226
|
return false;
|
|
190
227
|
}
|
|
228
|
+
// Provided maxItems must be >= required maxItems
|
|
191
229
|
if (required.maxItems !== undefined) {
|
|
192
230
|
if (provided.maxItems !== undefined && provided.maxItems < required.maxItems)
|
|
193
231
|
return false;
|
|
194
232
|
}
|
|
233
|
+
// Items schema: provided's items must satisfy required's items
|
|
195
234
|
if (required.items !== undefined) {
|
|
196
235
|
if (provided.items === undefined)
|
|
197
|
-
return true;
|
|
236
|
+
return true; // No constraint = accepts any items
|
|
198
237
|
return jsonSchemaSatisfies(provided.items, required.items);
|
|
199
238
|
}
|
|
200
239
|
return true;
|
|
201
240
|
}
|
|
202
241
|
function objectSchemasSatisfy(provided, required) {
|
|
242
|
+
// Required properties: provided can have fewer required properties (more permissive)
|
|
243
|
+
// But if provided requires a property that required doesn't, it's more restrictive
|
|
203
244
|
if (provided.required) {
|
|
204
245
|
for (const key of provided.required) {
|
|
205
246
|
if (!required.required?.includes(key)) {
|
|
247
|
+
// Provided requires a property that required doesn't - check if required schema would accept objects without it
|
|
248
|
+
// If the property is in required.properties but not required.required, it's optional in required
|
|
249
|
+
// So provided making it required is more restrictive
|
|
206
250
|
return false;
|
|
207
251
|
}
|
|
208
252
|
}
|
|
209
253
|
}
|
|
254
|
+
// Properties: for each property in required, check if provided's schema for that property satisfies it
|
|
210
255
|
if (required.properties) {
|
|
211
256
|
for (const [key, requiredPropertySchema] of Object.entries(required.properties)) {
|
|
212
257
|
if (provided.properties && key in provided.properties) {
|
|
@@ -214,23 +259,30 @@ function objectSchemasSatisfy(provided, required) {
|
|
|
214
259
|
return false;
|
|
215
260
|
}
|
|
216
261
|
else if (provided.additionalProperties !== undefined) {
|
|
262
|
+
// Property is covered by additionalProperties in provided
|
|
217
263
|
if (provided.additionalProperties === true)
|
|
218
|
-
continue;
|
|
264
|
+
continue; // Accepts any value
|
|
219
265
|
if (!jsonSchemaSatisfies(provided.additionalProperties, requiredPropertySchema))
|
|
220
266
|
return false;
|
|
221
267
|
}
|
|
268
|
+
// If property not in provided.properties and no additionalProperties, provided accepts any value for it
|
|
222
269
|
}
|
|
223
270
|
}
|
|
271
|
+
// Additional properties: if required allows additional properties, provided must also allow them
|
|
224
272
|
if (required.additionalProperties !== undefined) {
|
|
225
273
|
if (provided.additionalProperties === undefined) {
|
|
274
|
+
// Provided has no additionalProperties constraint - implicitly accepts any
|
|
226
275
|
return true;
|
|
227
276
|
}
|
|
228
277
|
if (required.additionalProperties === true) {
|
|
278
|
+
// Required accepts any additional properties
|
|
229
279
|
return provided.additionalProperties === true;
|
|
230
280
|
}
|
|
231
281
|
if (provided.additionalProperties === true) {
|
|
282
|
+
// Provided accepts any additional properties - satisfies any schema
|
|
232
283
|
return true;
|
|
233
284
|
}
|
|
285
|
+
// Both have schema constraints - provided must satisfy required
|
|
234
286
|
return jsonSchemaSatisfies(provided.additionalProperties, required.additionalProperties);
|
|
235
287
|
}
|
|
236
288
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonSchemaSatisfies.js","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSatisfies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonSchemaSatisfies.js","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSatisfies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Json } from './Json';
|
|
2
|
+
/** Checks if any JSON value valid under `required` (old) will also be valid under `provided` (new). */
|
|
2
3
|
export declare function jsonSchemaSatisfies(provided: Json.Schema, required: Json.Schema): boolean;
|
|
3
4
|
//# sourceMappingURL=jsonSchemaSimplifiedSatisfies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonSchemaSimplifiedSatisfies.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSimplifiedSatisfies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonSchemaSimplifiedSatisfies.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSimplifiedSatisfies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,uGAAuG;AACvG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAyDzF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { haveSameContents } from '../../helpers/haveSameContents';
|
|
2
|
+
/** Checks if any JSON value valid under `required` (old) will also be valid under `provided` (new). */
|
|
2
3
|
export function jsonSchemaSatisfies(provided, required) {
|
|
3
4
|
if (isAnySchema(provided))
|
|
4
5
|
return true;
|
|
@@ -29,6 +30,7 @@ export function jsonSchemaSatisfies(provided, required) {
|
|
|
29
30
|
if (requiredBaseType === 'null')
|
|
30
31
|
return providedBaseType === 'null' || providedNullable;
|
|
31
32
|
if (providedBaseType !== requiredBaseType) {
|
|
33
|
+
// number satisfies integer since number is more permissive
|
|
32
34
|
if (!(providedBaseType === 'number' && requiredBaseType === 'integer'))
|
|
33
35
|
return false;
|
|
34
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonSchemaSimplifiedSatisfies.js","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSimplifiedSatisfies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonSchemaSimplifiedSatisfies.js","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSimplifiedSatisfies.ts"],"names":[],"mappings":"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"}
|
package/dist/types/Lazily.d.ts
CHANGED
|
@@ -1,3 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extend to build lazy accessors to values that have to be evaluated but are rarely needed.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const rawItems = [{ id: 'one', name: 'One', value: 1 }, ... ]
|
|
7
|
+
*
|
|
8
|
+
* // Use `createByInitialValues` to put direct values on the first level, or `create` to start by getters right away.
|
|
9
|
+
* // You may extend the lazy properties by more getters as many levels as you need:
|
|
10
|
+
* const items = Lazily.createByInitialValues({
|
|
11
|
+
* array: rawItems,
|
|
12
|
+
* })({
|
|
13
|
+
* sum() {
|
|
14
|
+
* return rawItems.reduce((current, item) => current + item.value, 0)
|
|
15
|
+
* },
|
|
16
|
+
* })({
|
|
17
|
+
* // Getters in each level have access to the previous properties via the `values` or `this` arguments:
|
|
18
|
+
* average(values) {
|
|
19
|
+
* return this.sum / values.array.length
|
|
20
|
+
* },
|
|
21
|
+
* extendedArray() {
|
|
22
|
+
* return this.array.map(item => ({ ...item, image: getImage(item.id), ... }))
|
|
23
|
+
* }
|
|
24
|
+
* })({
|
|
25
|
+
* sortedExtendedArray(values) {
|
|
26
|
+
* return [...values.extendedArray].sort( ... )
|
|
27
|
+
* },
|
|
28
|
+
* })({
|
|
29
|
+
* sortedExtendedById() {
|
|
30
|
+
* return this.sortedExtendedArray.reduce( ... )
|
|
31
|
+
* }
|
|
32
|
+
* })() // An extra empty call at the end to finish extending your lazy accessors.
|
|
33
|
+
*
|
|
34
|
+
* // Later in the code:
|
|
35
|
+
* console.log(items.sortedExtendedById) // Only when accessed (for the first time) the values are evaluated (in this case `extendedArray` and `sortedExtendedById`).
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
1
38
|
export interface Lazily<Values extends {
|
|
2
39
|
readonly [key: string]: any;
|
|
3
40
|
}> {
|
|
@@ -15,11 +52,13 @@ export interface Lazily<Values extends {
|
|
|
15
52
|
};
|
|
16
53
|
}
|
|
17
54
|
export declare namespace Lazily {
|
|
55
|
+
/** Creates a lazy object from getter functions. Getters starting with `$` are excluded. */
|
|
18
56
|
function create<Getters extends {
|
|
19
57
|
readonly [key: string]: () => any;
|
|
20
58
|
}>(getters: Getters): Lazily<{
|
|
21
59
|
readonly [Key in keyof Getters as Key extends `$${string}` ? never : Key]: ReturnType<Getters[Key]>;
|
|
22
60
|
}>;
|
|
61
|
+
/** Creates a lazy object from initial values, allowing extension with lazy getters. */
|
|
23
62
|
function createByInitialValues<InitialValues extends {
|
|
24
63
|
readonly [key: string]: any;
|
|
25
64
|
}>(initialValues: InitialValues): Lazily<InitialValues>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lazily.d.ts","sourceRoot":"","sources":["../../src/types/Lazily.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Lazily.d.ts","sourceRoot":"","sources":["../../src/types/Lazily.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,MAAM,CAAC,MAAM,SAAS;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;IACpE,CACE,UAAU,SAAS;QACjB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,CACtB,IAAI,EAAE;YAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;SAAE,EACrD,MAAM,EAAE;YAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;SAAE,KACpD,GAAG,CAAA;KACT,EAED,OAAO,EAAE,UAAU,GAClB,MAAM,CAAC,MAAM,GAAG;QAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAAE,CAAC,CAAA;IACvF,IAAI;QAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;KAAE,CAAA;CACpD;AAED,yBAAiB,MAAM,CAAC;IACtB,2FAA2F;IAC3F,SAAgB,MAAM,CAAC,OAAO,SAAS;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAA;KAAE,EAC1E,OAAO,EAAE,OAAO,GACf,MAAM,CAAC;QAAE,QAAQ,EAAE,GAAG,IAAI,MAAM,OAAO,IAAI,GAAG,SAAS,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAAE,CAAC,CAEjH;IAED,uFAAuF;IACvF,SAAgB,qBAAqB,CAAC,aAAa,SAAS;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EACzF,aAAa,EAAE,aAAa,GAC3B,MAAM,CAAC,aAAa,CAAC,CAIvB;CACF"}
|
package/dist/types/Lazily.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { objectHelpers } from '../helpers/native/objectHelpers';
|
|
2
2
|
export var Lazily;
|
|
3
3
|
(function (Lazily) {
|
|
4
|
+
/** Creates a lazy object from getter functions. Getters starting with `$` are excluded. */
|
|
4
5
|
function create(getters) {
|
|
5
6
|
return createByGetters(getters);
|
|
6
7
|
}
|
|
7
8
|
Lazily.create = create;
|
|
9
|
+
/** Creates a lazy object from initial values, allowing extension with lazy getters. */
|
|
8
10
|
function createByInitialValues(initialValues) {
|
|
9
11
|
return createByGetters(objectHelpers.map(initialValues, (key, value) => (typeof value === 'function' ? () => value : value)));
|
|
10
12
|
}
|
package/dist/types/Lazily.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lazily.js","sourceRoot":"","sources":["../../src/types/Lazily.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAqD/D,MAAM,KAAW,MAAM,CAgBtB;AAhBD,WAAiB,MAAM;
|
|
1
|
+
{"version":3,"file":"Lazily.js","sourceRoot":"","sources":["../../src/types/Lazily.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAqD/D,MAAM,KAAW,MAAM,CAgBtB;AAhBD,WAAiB,MAAM;IACrB,2FAA2F;IAC3F,SAAgB,MAAM,CACpB,OAAgB;QAEhB,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAJe,aAAM,SAIrB,CAAA;IAED,uFAAuF;IACvF,SAAgB,qBAAqB,CACnC,aAA4B;QAE5B,OAAO,eAAe,CACpB,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACtG,CAAA;IACH,CAAC;IANe,4BAAqB,wBAMpC,CAAA;AACH,CAAC,EAhBgB,MAAM,KAAN,MAAM,QAgBtB;AAED,SAAS,eAAe,CAAiD,OAExE;IACC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,EAAS,EAAE;QAClC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ;YAC/B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC;gBAAE,OAAO,SAAS,CAAA;YAClF,IAAI,CAAC,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;gBACnC,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAE,MAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACpG,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;QACnD,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,UAAU,UAAgB;QAC/B,IAAI,CAAC,UAAU;YAAE,OAAO,MAAM,CAAA;QAC9B,OAAO,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,CAAA;IACvD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,23 +1,51 @@
|
|
|
1
1
|
import type { Falsy } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* A composable validation and transformation pipeline for parsing input values.
|
|
4
|
+
*
|
|
5
|
+
* Normalizers can be chained to build complex validation logic:
|
|
6
|
+
* ```ts
|
|
7
|
+
* const emailNormalizer = Normalizer.stringTrimmed
|
|
8
|
+
* .chain(value => value?.toLowerCase())
|
|
9
|
+
* .chain(value => { if (!isValidEmail(value)) throw new Error('Invalid email'); return value })
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
2
12
|
export declare class Normalizer<Value> {
|
|
3
13
|
readonly parseOrThrow: Normalizer.ParseOrThrow<Value>;
|
|
4
14
|
constructor(parseOrThrow: Normalizer.ParseOrThrow<Value>);
|
|
15
|
+
/** Runs the normalizer, returning a `Normalized` result with value or error. */
|
|
5
16
|
normalize(value: any): Normalizer.Normalized<Value>;
|
|
17
|
+
/**
|
|
18
|
+
* Runs the normalizer, returning a `Normalized` result with value or error.
|
|
19
|
+
* Passes `undefined` as it is, suitable to normalized optional (not nullable) values.
|
|
20
|
+
*/
|
|
6
21
|
normalizeIfExists<V>(value: V): Normalizer.Normalized<undefined extends V ? Value | undefined : Value>;
|
|
22
|
+
/** Chains another synchronous transformation step. */
|
|
7
23
|
chain<NewValue>(parseOrThrow: Normalizer.ParseOrThrow<NewValue, Value>): Normalizer<NewValue>;
|
|
24
|
+
/** Chains an asynchronous transformation step, converting to `Normalizer.Async`. */
|
|
8
25
|
chainAsync<NewValue>(parseOrThrowAsync: Normalizer.ParseOrThrowAsync<NewValue, Value>): Normalizer.Async<NewValue>;
|
|
26
|
+
/** Creates a normalizer that throws if value is null, empty string, or empty array. */
|
|
9
27
|
get required(): Normalizer<Exclude<Value, null>>;
|
|
10
28
|
}
|
|
11
29
|
export declare namespace Normalizer {
|
|
30
|
+
/** Async variant of `Normalizer` for pipelines with async steps. */
|
|
12
31
|
class Async<Value> {
|
|
13
32
|
readonly parseOrThrowAsync: ParseOrThrowAsync<Value>;
|
|
14
33
|
constructor(parseOrThrowAsync: ParseOrThrowAsync<Value>);
|
|
34
|
+
/** Runs the async normalizer, returning a `Normalized` result. */
|
|
15
35
|
normalize(value: any, abortSignal?: AbortSignal): Promise<Normalized<Value>>;
|
|
36
|
+
/**
|
|
37
|
+
* Runs the async normalizer, returning a `Normalized` result with value or error.
|
|
38
|
+
* Passes `undefined` as it is, suitable to normalized optional (not nullable) values.
|
|
39
|
+
*/
|
|
16
40
|
normalizeIfExists<V>(value: V, abortSignal?: AbortSignal): Promise<Normalized<undefined extends V ? Value | undefined : Value>>;
|
|
41
|
+
/** Chains a synchronous transformation step. */
|
|
17
42
|
chain<NewValue>(parseOrThrow: ParseOrThrow<NewValue, Value>): Async<NewValue>;
|
|
43
|
+
/** Chains an asynchronous transformation step. */
|
|
18
44
|
chainAsync<NewValue>(parseOrThrowAsync: ParseOrThrowAsync<NewValue, Value>): Async<NewValue>;
|
|
45
|
+
/** Creates an async normalizer that throws if value is null, empty string, or empty array. */
|
|
19
46
|
get required(): Async<Exclude<Value, null>>;
|
|
20
47
|
}
|
|
48
|
+
/** Result container holding either a normalized value (with optional warning) or an error. */
|
|
21
49
|
class Normalized<Value> {
|
|
22
50
|
private readonly state;
|
|
23
51
|
constructor(state: {
|
|
@@ -29,14 +57,27 @@ export declare namespace Normalizer {
|
|
|
29
57
|
readonly warningMessage?: string;
|
|
30
58
|
readonly value: Value;
|
|
31
59
|
});
|
|
60
|
+
/** Error message if normalization failed. */
|
|
32
61
|
get errorMessage(): string | undefined;
|
|
62
|
+
/** Warning message if normalization succeeded with issues. */
|
|
33
63
|
get warningMessage(): string | undefined;
|
|
64
|
+
/** The normalized value, or undefined if failed. Does not throw. */
|
|
34
65
|
get valueSafe(): Value | undefined;
|
|
66
|
+
/** The normalized value. Throws if normalization failed. */
|
|
35
67
|
get value(): Value;
|
|
68
|
+
/** Allows using `Normalized` in expressions expecting the value type. */
|
|
36
69
|
valueOf(): Value;
|
|
70
|
+
/**
|
|
71
|
+
* Gets the value, passing any warning to the warn function.
|
|
72
|
+
* Throws with optional prefix if normalization failed.
|
|
73
|
+
*/
|
|
37
74
|
getValue(warn: Warn): Value;
|
|
38
75
|
getValue(messagePrefix: string): Value;
|
|
39
76
|
getValue(messagePrefix: string, warn: Warn): Value;
|
|
77
|
+
/**
|
|
78
|
+
* Combines multiple `Normalized` results into a single result.
|
|
79
|
+
* Aggregates all errors/warnings with optional labels.
|
|
80
|
+
*/
|
|
40
81
|
static combine<T extends {
|
|
41
82
|
readonly [K in string]: any;
|
|
42
83
|
} | readonly any[]>(normalizedItems: T, labelByKey?: {
|
|
@@ -46,38 +87,75 @@ export declare namespace Normalizer {
|
|
|
46
87
|
}>;
|
|
47
88
|
}
|
|
48
89
|
namespace Normalized {
|
|
90
|
+
/**
|
|
91
|
+
* Use it with `satisfies`.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* interface Type {
|
|
95
|
+
* key1: Type1
|
|
96
|
+
* key2: Type2
|
|
97
|
+
* key3: Type3
|
|
98
|
+
* }
|
|
99
|
+
* const items = {
|
|
100
|
+
* key1: normalizer.normalize(value1),
|
|
101
|
+
* key2: normalizer.normalize(value2),
|
|
102
|
+
* key3: value3,
|
|
103
|
+
* } satisfies Normalizer.Normalized.Items<Type> // Helps with correctly defining items while not restricting the actual type definition.
|
|
104
|
+
* const combined = Normalizer.Normalized.combine(items) // combined.value is compatible with Type.
|
|
105
|
+
*/
|
|
49
106
|
type Items<T extends {
|
|
50
107
|
readonly [K in string]: any;
|
|
51
108
|
} | readonly any[]> = {
|
|
52
109
|
-readonly [K in keyof T]: T[K] | Normalized<T[K]>;
|
|
53
110
|
};
|
|
54
111
|
}
|
|
112
|
+
/** Synchronous parser function signature. Throws on validation failure. */
|
|
55
113
|
type ParseOrThrow<ToValue, FromValue = any> = (value: FromValue, warn: Warn) => ToValue;
|
|
114
|
+
/** Async parser function signature. Throws on validation failure. */
|
|
56
115
|
type ParseOrThrowAsync<ToValue, FromValue = any> = (value: FromValue, warn: Warn, abortSignal: AbortSignal | undefined) => Promise<ToValue>;
|
|
116
|
+
/** Warning collector function passed to parsers. Call with a message to accumulate warnings. */
|
|
57
117
|
interface Warn {
|
|
58
118
|
(message: string | Falsy): void;
|
|
119
|
+
/** Accumulated warning messages joined by newlines. */
|
|
59
120
|
readonly message: string | undefined;
|
|
60
121
|
}
|
|
61
122
|
namespace Warn {
|
|
123
|
+
/** Creates a new warning collector. */
|
|
62
124
|
function create(): Warn;
|
|
63
125
|
}
|
|
126
|
+
/** Passthrough normalizer that accepts any value unchanged. */
|
|
64
127
|
const any: Normalizer<any>;
|
|
128
|
+
/** Normalizer that coerces to string. Returns null for empty strings. */
|
|
65
129
|
const string: Normalizer<string | null>;
|
|
130
|
+
/** Normalizer that trims whitespace and warns if trimming occurred. */
|
|
66
131
|
const stringTrimmed: Normalizer<string | null>;
|
|
132
|
+
/** Normalizer that trims and lowercases strings. */
|
|
67
133
|
const stringTrimmedAndLowerCased: Normalizer<string | null>;
|
|
134
|
+
/** Creates a parser that warns if string length is outside bounds. */
|
|
68
135
|
function stringLimitLength(minimum: number, maximum: number): ParseOrThrow<string | null, string | null>;
|
|
136
|
+
/** Creates a parser that validates string is a value from an enum object. */
|
|
69
137
|
function stringEnum<E extends string>(enumObject: {
|
|
70
138
|
readonly [K in string]: E;
|
|
71
139
|
}): ParseOrThrow<E | null, string | null>;
|
|
140
|
+
/** Creates a parser that validates string is one of the allowed values. */
|
|
72
141
|
function stringEnumValues<E extends readonly string[]>(...allowedValues: E): ParseOrThrow<E[number] | null, string | null>;
|
|
142
|
+
/** Normalizer that coerces to number. Throws for NaN. */
|
|
73
143
|
const number: Normalizer<number | null>;
|
|
144
|
+
/** Normalizer that validates number is an integer. */
|
|
74
145
|
const numberInteger: Normalizer<number | null>;
|
|
146
|
+
/** Creates a parser that warns if number is outside bounds. */
|
|
75
147
|
function numberLimitRange(minimum: number, maximum: number): ParseOrThrow<number | null, number | null>;
|
|
148
|
+
/** Normalizer that coerces to boolean. Accepts `'true'`/`'false'` strings. */
|
|
76
149
|
const boolean: Normalizer<boolean | null>;
|
|
150
|
+
/** Normalizer that validates value is a plain object (not array). */
|
|
77
151
|
const object: Normalizer<Record<string, any> | null>;
|
|
152
|
+
/** Creates a parser that throws if object is missing required keys. */
|
|
78
153
|
function objectRequireKeys(...keys: readonly string[]): ParseOrThrow<Record<string, any> | null, Record<string, any> | null>;
|
|
154
|
+
/** Simplifies normalization of object properties with a stronger type guarantee. */
|
|
79
155
|
function objectProperties<T extends {}>(normalizeProperties: (value: T) => Normalized.Items<T>): ParseOrThrow<T | null, Record<string, any> | null>;
|
|
156
|
+
/** Normalizer that wraps non-array values in an array. Returns empty array for null. */
|
|
80
157
|
const array: Normalizer<any[]>;
|
|
158
|
+
/** Simplifies normalization of array items with a stronger type guarantee. */
|
|
81
159
|
function arrayItems<I>(itemNormalizer: Normalizer<I>): Normalizer.ParseOrThrow<I[], any[]>;
|
|
82
160
|
}
|
|
83
161
|
//# sourceMappingURL=Normalizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Normalizer.d.ts","sourceRoot":"","sources":["../../src/types/Normalizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"Normalizer.d.ts","sourceRoot":"","sources":["../../src/types/Normalizer.ts"],"names":[],"mappings":"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"}
|