@maxclicks/utilities 1.6.0 → 1.6.3
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 +1 -0
- 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 -1
- 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 +7 -1
- 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/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 +1 -0
- package/dist/types/Address.d.ts.map +1 -1
- package/dist/types/Color.d.ts +1 -0
- package/dist/types/Color.d.ts.map +1 -1
- package/dist/types/DateOnly.d.ts +2 -0
- package/dist/types/DateOnly.d.ts.map +1 -1
- package/dist/types/DateOnly.js +1 -0
- package/dist/types/DateOnly.js.map +1 -1
- package/dist/types/DateTime.d.ts +1 -0
- package/dist/types/DateTime.d.ts.map +1 -1
- package/dist/types/Decimal.d.ts +1 -0
- package/dist/types/Decimal.d.ts.map +1 -1
- package/dist/types/Email.d.ts +1 -0
- package/dist/types/Email.d.ts.map +1 -1
- package/dist/types/Geolocation.d.ts +1 -0
- package/dist/types/Geolocation.d.ts.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/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 +1 -0
- package/dist/types/Phone.d.ts.map +1 -1
- package/dist/types/Slug.d.ts +1 -0
- package/dist/types/Slug.d.ts.map +1 -1
- package/dist/types/TimeOnly.d.ts +1 -0
- package/dist/types/TimeOnly.d.ts.map +1 -1
- package/dist/types/Url.d.ts +1 -0
- package/dist/types/Url.d.ts.map +1 -1
- package/dist/types/Uuid.d.ts +1 -0
- package/dist/types/Uuid.d.ts.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -15,29 +15,36 @@ export function jsonNormalizerWithSchemaFactory(schema) {
|
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
function validateAgainstSchema(value, schema, warn, path) {
|
|
18
|
+
// Handle const validation
|
|
18
19
|
if ('const' in schema) {
|
|
19
20
|
if (!haveSameContents(value, schema.const))
|
|
20
21
|
throw new Error(prependMessage(path, `Value must be ${JSON.stringify(schema.const)}.`));
|
|
21
22
|
return;
|
|
22
23
|
}
|
|
24
|
+
// Handle enum validation
|
|
23
25
|
if ('enum' in schema) {
|
|
24
26
|
if (!schema.enum.some(enumValue => haveSameContents(value, enumValue)))
|
|
25
27
|
throw new Error(prependMessage(path, `Value must be one of: ${schema.enum.map(v => JSON.stringify(v)).join(', ')}.`));
|
|
26
28
|
return;
|
|
27
29
|
}
|
|
28
30
|
const type = schema.type;
|
|
31
|
+
// Any validation (no type or type: 'any')
|
|
29
32
|
if (type === undefined || type === 'any')
|
|
30
33
|
return;
|
|
34
|
+
// Parse type for nullable handling
|
|
31
35
|
const typeArray = Array.isArray(type) ? type : null;
|
|
32
36
|
const nullable = typeArray !== null && typeArray.includes('null');
|
|
33
37
|
const typeValue = typeArray ? typeArray.find(t => t !== 'null') : type;
|
|
38
|
+
// Handle null values
|
|
34
39
|
if (value === null) {
|
|
35
40
|
if (nullable || typeValue === 'null')
|
|
36
41
|
return;
|
|
37
42
|
throw new Error(prependMessage(path, 'Value cannot be null.'));
|
|
38
43
|
}
|
|
44
|
+
// Null type (but value is not null at this point)
|
|
39
45
|
if (typeValue === 'null')
|
|
40
46
|
throw new Error(prependMessage(path, 'Value must be null.'));
|
|
47
|
+
// String validation
|
|
41
48
|
if (typeValue === 'string') {
|
|
42
49
|
if (typeof value !== 'string')
|
|
43
50
|
throw new Error(prependMessage(path, 'Value must be a string.'));
|
|
@@ -51,6 +58,7 @@ function validateAgainstSchema(value, schema, warn, path) {
|
|
|
51
58
|
validateStringFormat(stringValue, stringSchema.format, path, warn);
|
|
52
59
|
return;
|
|
53
60
|
}
|
|
61
|
+
// Number/Integer validation
|
|
54
62
|
if (typeValue === 'number' || typeValue === 'integer') {
|
|
55
63
|
if (typeof value !== 'number')
|
|
56
64
|
throw new Error(prependMessage(path, `Value must be a ${typeValue}.`));
|
|
@@ -70,11 +78,13 @@ function validateAgainstSchema(value, schema, warn, path) {
|
|
|
70
78
|
throw new Error(prependMessage(path, `Value must be a multiple of ${numberSchema.multipleOf}.`));
|
|
71
79
|
return;
|
|
72
80
|
}
|
|
81
|
+
// Boolean validation
|
|
73
82
|
if (typeValue === 'boolean') {
|
|
74
83
|
if (typeof value !== 'boolean')
|
|
75
84
|
throw new Error(prependMessage(path, 'Value must be a boolean.'));
|
|
76
85
|
return;
|
|
77
86
|
}
|
|
87
|
+
// Array validation
|
|
78
88
|
if (typeValue === 'array') {
|
|
79
89
|
if (!Array.isArray(value))
|
|
80
90
|
throw new Error(prependMessage(path, 'Value must be an array.'));
|
|
@@ -91,17 +101,20 @@ function validateAgainstSchema(value, schema, warn, path) {
|
|
|
91
101
|
}
|
|
92
102
|
return;
|
|
93
103
|
}
|
|
104
|
+
// Object validation
|
|
94
105
|
if (typeValue === 'object') {
|
|
95
106
|
if (typeof value !== 'object' || Array.isArray(value))
|
|
96
107
|
throw new Error(prependMessage(path, 'Value must be an object.'));
|
|
97
108
|
const objectSchema = schema;
|
|
98
109
|
const objectValue = value;
|
|
110
|
+
// Check required properties
|
|
99
111
|
if (objectSchema.required) {
|
|
100
112
|
for (const requiredKey of objectSchema.required) {
|
|
101
113
|
if (!(requiredKey in objectValue))
|
|
102
114
|
throw new Error(prependMessage(path, `Missing required property "${requiredKey}".`));
|
|
103
115
|
}
|
|
104
116
|
}
|
|
117
|
+
// Validate properties
|
|
105
118
|
const definedProperties = new Set(objectSchema.properties ? Object.keys(objectSchema.properties) : []);
|
|
106
119
|
for (const [key, propertyValue] of Object.entries(objectValue)) {
|
|
107
120
|
const propertyPath = path ? `${path}.${key}` : key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonNormalizerWithSchemaFactory.js","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizerWithSchemaFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,UAAU,+BAA+B,CAAW,MAAmB;IAC3E,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAY,EAAE;QACpD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC/B,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QACrD,OAAO,KAAU,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAW,EACX,MAAmB,EACnB,IAAqB,EACrB,IAAwB;
|
|
1
|
+
{"version":3,"file":"jsonNormalizerWithSchemaFactory.js","sourceRoot":"","sources":["../../../src/types/Json/jsonNormalizerWithSchemaFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
6
6
|
if (typeof value !== 'object' || Array.isArray(value))
|
|
7
7
|
throw new Error('Schema must be an object.');
|
|
8
8
|
const schema = value;
|
|
9
|
+
// Extract and validate annotations
|
|
9
10
|
const { $comment, title, description, default: defaultValue, examples, ...rest } = schema;
|
|
10
11
|
if ($comment !== undefined && typeof $comment !== 'string')
|
|
11
12
|
throw new Error('"$comment" must be a string.');
|
|
@@ -15,6 +16,7 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
15
16
|
throw new Error('"description" must be a string.');
|
|
16
17
|
if (examples !== undefined && !Array.isArray(examples))
|
|
17
18
|
throw new Error('"examples" must be an array.');
|
|
19
|
+
// Check for const validation
|
|
18
20
|
if ('const' in rest) {
|
|
19
21
|
const { const: constValue, ...afterConst } = rest;
|
|
20
22
|
const unsupportedKeys = objectHelpers.keys(afterConst);
|
|
@@ -22,6 +24,7 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
22
24
|
throw new Error(`When "const" is declared, these properties are not supported: ${unsupportedKeys.map(k => `"${k}"`).join(', ')}.`);
|
|
23
25
|
return value;
|
|
24
26
|
}
|
|
27
|
+
// Check for enum validation
|
|
25
28
|
if ('enum' in rest) {
|
|
26
29
|
const { enum: enumValue, ...afterEnum } = rest;
|
|
27
30
|
if (!Array.isArray(enumValue))
|
|
@@ -34,12 +37,14 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
34
37
|
return value;
|
|
35
38
|
}
|
|
36
39
|
const { type, ...afterType } = rest;
|
|
40
|
+
// Any validation (no type or type: 'any')
|
|
37
41
|
if (type === undefined || type === 'any') {
|
|
38
42
|
const unsupportedKeys = objectHelpers.keys(afterType);
|
|
39
43
|
if (unsupportedKeys.length > 0)
|
|
40
44
|
throw new Error(`When ${type === undefined ? 'no type is specified' : 'type is "any"'}, these properties are not supported: ${unsupportedKeys.map(k => `"${k}"`).join(', ')}.`);
|
|
41
45
|
return value;
|
|
42
46
|
}
|
|
47
|
+
// Parse type (handle nullable types like ['string', 'null'])
|
|
43
48
|
const typeArray = Array.isArray(type) ? type : null;
|
|
44
49
|
const nullable = typeArray !== null && typeArray.includes('null');
|
|
45
50
|
const typeValues = typeArray ? typeArray.filter(t => t !== 'null') : [type];
|
|
@@ -48,12 +53,14 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
48
53
|
const typeValue = typeValues[0];
|
|
49
54
|
if (typeof typeValue !== 'string')
|
|
50
55
|
throw new Error('"type" must be a string or an array of strings.');
|
|
56
|
+
// Null validation
|
|
51
57
|
if (typeValue === 'null') {
|
|
52
58
|
const unsupportedKeys = objectHelpers.keys(afterType);
|
|
53
59
|
if (unsupportedKeys.length > 0)
|
|
54
60
|
throw new Error(`When type is "null", these properties are not supported: ${unsupportedKeys.map(k => `"${k}"`).join(', ')}.`);
|
|
55
61
|
return value;
|
|
56
62
|
}
|
|
63
|
+
// String validation
|
|
57
64
|
if (typeValue === 'string') {
|
|
58
65
|
const { minLength, maxLength, format, ...remaining } = afterType;
|
|
59
66
|
const unsupportedKeys = objectHelpers.keys(remaining);
|
|
@@ -81,6 +88,7 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
81
88
|
throw new Error('"format" must be a string.');
|
|
82
89
|
return value;
|
|
83
90
|
}
|
|
91
|
+
// Number/Integer validation
|
|
84
92
|
if (typeValue === 'number' || typeValue === 'integer') {
|
|
85
93
|
const { minimum, maximum, exclusiveMinimum, exclusiveMaximum, multipleOf, ...remaining } = afterType;
|
|
86
94
|
const unsupportedKeys = objectHelpers.keys(remaining);
|
|
@@ -108,12 +116,14 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
108
116
|
}
|
|
109
117
|
return value;
|
|
110
118
|
}
|
|
119
|
+
// Boolean validation
|
|
111
120
|
if (typeValue === 'boolean') {
|
|
112
121
|
const unsupportedKeys = objectHelpers.keys(afterType);
|
|
113
122
|
if (unsupportedKeys.length > 0)
|
|
114
123
|
throw new Error(`When type is "boolean", these properties are not supported: ${unsupportedKeys.map(k => `"${k}"`).join(', ')}.`);
|
|
115
124
|
return value;
|
|
116
125
|
}
|
|
126
|
+
// Array validation
|
|
117
127
|
if (typeValue === 'array') {
|
|
118
128
|
const { items, minItems, maxItems, ...remaining } = afterType;
|
|
119
129
|
const unsupportedKeys = objectHelpers.keys(remaining);
|
|
@@ -140,6 +150,7 @@ export const jsonSchemaNormalizer = jsonNormalizer.chain((value, warn) => {
|
|
|
140
150
|
}
|
|
141
151
|
return value;
|
|
142
152
|
}
|
|
153
|
+
// Object validation
|
|
143
154
|
if (typeValue === 'object') {
|
|
144
155
|
const { properties, additionalProperties, required, ...remaining } = afterType;
|
|
145
156
|
const unsupportedKeys = objectHelpers.keys(remaining);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonSchemaNormalizer.js","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAsB,EAAE;IAC3F,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAE/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAEnG,MAAM,MAAM,GAAG,KAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonSchemaNormalizer.js","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaNormalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import { Json } from './Json';
|
|
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 declare function jsonSchemaSatisfies(provided: Json.Schema, required: Json.Schema): boolean;
|
|
3
12
|
//# sourceMappingURL=jsonSchemaSatisfies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonSchemaSatisfies.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSatisfies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonSchemaSatisfies.d.ts","sourceRoot":"","sources":["../../../src/types/Json/jsonSchemaSatisfies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAuEzF"}
|
|
@@ -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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAGjE;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAqB,EAAE,QAAqB;IAC9E,kEAAkE;IAClE,IAAI,WAAW,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtC,qEAAqE;IACrE,IAAI,WAAW,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;IAEvD,2BAA2B;IAC3B,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QAChF,IAAI,MAAM,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QACnG,wEAAwE;QACxE,OAAO,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,0BAA0B;IAC1B,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAChH,IAAI,MAAM,IAAI,QAAQ;YACpB,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CACzC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CACpF,CAAA;QACH,wEAAwE;QACxE,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,gEAAgE;IAChE,0DAA0D;IAC1D,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3D,8DAA8D;IAC9D,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACnD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAElD,2DAA2D;IAC3D,IAAI,gBAAgB,IAAI,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAA;IAEvD,mBAAmB;IACnB,IAAI,gBAAgB,KAAK,MAAM;QAAE,OAAO,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,CAAA;IAEvF,iGAAiG;IACjG,IAAI,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,SAAS,CAAC;YAAE,OAAO,KAAK,CAAA;IACtF,CAAC;IAED,kCAAkC;IAClC,QAAQ,gBAAgB,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,QAAwC,EAAE,QAAwC,CAAC,CAAA;QAEjH,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,oBAAoB,CACzB,QAA+C,EAC/C,QAA+C,CAChD,CAAA;QAEH,KAAK,SAAS;YACZ,OAAO,IAAI,CAAA,CAAC,wCAAwC;QAEtD,KAAK,OAAO;YACV,OAAO,mBAAmB,CAAC,QAAuC,EAAE,QAAuC,CAAC,CAAA;QAE9G,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,QAAwC,EAAE,QAAwC,CAAC,CAAA;QAEjH;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAmB;IACtC,OAAO,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAA;AAC5G,CAAC;AAID,SAAS,WAAW,CAAC,IAAyB;IAC5C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAa,CAAA;IACxE,OAAO,IAAgB,CAAA;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,IAAyB;IAC3C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAAmB,EAAE,KAAW;IAC1D,IAAI,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAExC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAA;IAE1D,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,KAAK,KAAK,IAAI,CAAA;QAEvB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAC3C,MAAM,YAAY,GAAG,MAAsC,CAAA;YAC3D,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAA;YAC/F,IAAI,YAAY,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAA;YAC/F,0FAA0F;YAC1F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC3D,MAAM,YAAY,GAAG,MAA6C,CAAA;YAClE,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,YAAY,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YACpF,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,YAAY,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YACpF,IAAI,YAAY,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,IAAI,YAAY,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAA;YACvG,IAAI,YAAY,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,IAAI,YAAY,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAA;YACvG,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,GAAG,YAAY,CAAC,UAAU,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAChG,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,SAAS,CAAA;QAEnC,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YACvC,MAAM,WAAW,GAAG,MAAqC,CAAA;YACzD,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAC3F,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAC3F,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAC7G,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;YACrF,MAAM,YAAY,GAAG,MAAsC,CAAA;YAC3D,MAAM,WAAW,GAAG,KAA6B,CAAA;YACjD,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC1B,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oBACxC,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC;wBAAE,OAAO,KAAK,CAAA;gBACzC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/D,IAAI,YAAY,CAAC,UAAU,IAAI,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;oBAC9D,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;wBAAE,OAAO,KAAK,CAAA;gBACpF,CAAC;qBAAM,IAAI,YAAY,CAAC,oBAAoB,KAAK,SAAS,IAAI,YAAY,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;oBACzG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,oBAAoB,EAAE,aAAa,CAAC;wBAAE,OAAO,KAAK,CAAA;gBACzF,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAsC,EAAE,QAAsC;IAC1G,kFAAkF;IAClF,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;IAC/F,CAAC;IAED,kFAAkF;IAClF,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;IAC/F,CAAC;IAED,sGAAsG;IACtG,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;IACxF,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA6C,EAC7C,QAA6C;IAE7C,+CAA+C;IAC/C,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;IACzF,CAAC;IAED,+CAA+C;IAC/C,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;IACzF,CAAC;IAED,iEAAiE;IACjE,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAA;IACpH,CAAC;IAED,iEAAiE;IACjE,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAA;IACpH,CAAC;IAED,sEAAsE;IACtE,+FAA+F;IAC/F,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;IACxG,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAqC,EAAE,QAAqC;IACvG,iDAAiD;IACjD,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;IAC5F,CAAC;IAED,iDAAiD;IACjD,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;IAC5F,CAAC;IAED,+DAA+D;IAC/D,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA,CAAC,oCAAoC;QAClF,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5D,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAsC,EAAE,QAAsC;IAC1G,qFAAqF;IACrF,mFAAmF;IACnF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,gHAAgH;gBAChH,iGAAiG;gBACjG,qDAAqD;gBACrD,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,uGAAuG;IACvG,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChF,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC;oBAAE,OAAO,KAAK,CAAA;YAC1F,CAAC;iBAAM,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBACvD,0DAA0D;gBAC1D,IAAI,QAAQ,CAAC,oBAAoB,KAAK,IAAI;oBAAE,SAAQ,CAAC,oBAAoB;gBACzE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;oBAAE,OAAO,KAAK,CAAA;YAC/F,CAAC;YACD,wGAAwG;QAC1G,CAAC;IACH,CAAC;IAED,iGAAiG;IACjG,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAChD,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAChD,2EAA2E;YAC3E,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,QAAQ,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAC3C,6CAA6C;YAC7C,OAAO,QAAQ,CAAC,oBAAoB,KAAK,IAAI,CAAA;QAC/C,CAAC;QACD,IAAI,QAAQ,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAC3C,oEAAoE;YACpE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,gEAAgE;QAChE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC1F,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -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>;
|