@squiz/dx-json-schema-lib 1.79.0 → 1.80.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +6 -0
- package/jest.config.ts +13 -2
- package/lib/JsonSchemaService.d.ts +34 -0
- package/lib/JsonSchemaService.js +140 -0
- package/lib/JsonSchemaService.js.map +1 -0
- package/lib/JsonSchemaService.spec.d.ts +1 -0
- package/lib/JsonSchemaService.spec.js +1807 -0
- package/lib/JsonSchemaService.spec.js.map +1 -0
- package/lib/JsonValidationService.d.ts +11 -33
- package/lib/JsonValidationService.js +43 -194
- package/lib/JsonValidationService.js.map +1 -1
- package/lib/JsonValidationService.spec.js +19 -1800
- package/lib/JsonValidationService.spec.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/jsonTypeResolution/TypeResolver.d.ts +0 -1
- package/lib/jsonTypeResolution/TypeResolver.js +0 -3
- package/lib/jsonTypeResolution/TypeResolver.js.map +1 -1
- package/lib/jsonTypeResolution/TypeResolver.spec.js +10 -0
- package/lib/jsonTypeResolution/TypeResolver.spec.js.map +1 -1
- package/lib/manifest/v1/DxComponentInputSchema.spec.js +18 -0
- package/lib/manifest/v1/DxComponentInputSchema.spec.js.map +1 -1
- package/lib/manifest/v1/DxContentMetaSchema.json +24 -32
- package/lib/manifest/v1/JobV1.d.ts +23 -18
- package/lib/manifest/v1/__test__/schemas/invalidUiMetadata.json +31 -0
- package/lib/manifest/v1/v1.d.ts +23 -18
- package/lib/manifest/v1/v1.spec.js +3 -66
- package/lib/manifest/v1/v1.spec.js.map +1 -1
- package/lib/processValidationResult.d.ts +2 -0
- package/lib/processValidationResult.js +24 -0
- package/lib/processValidationResult.js.map +1 -0
- package/lib/validators/customKeywordValidators.d.ts +2 -0
- package/lib/validators/customKeywordValidators.js +47 -0
- package/lib/validators/customKeywordValidators.js.map +1 -0
- package/lib/validators/customKeywordValidators.spec.d.ts +1 -0
- package/lib/validators/customKeywordValidators.spec.js +100 -0
- package/lib/validators/customKeywordValidators.spec.js.map +1 -0
- package/package.json +1 -1
- package/src/JsonSchemaService.spec.ts +2198 -0
- package/src/JsonSchemaService.ts +159 -0
- package/src/JsonValidationService.spec.ts +26 -2195
- package/src/JsonValidationService.ts +64 -226
- package/src/index.ts +1 -0
- package/src/jsonTypeResolution/TypeResolver.spec.ts +12 -0
- package/src/jsonTypeResolution/TypeResolver.ts +0 -4
- package/src/manifest/v1/DxComponentInputSchema.spec.ts +21 -0
- package/src/manifest/v1/DxContentMetaSchema.json +24 -32
- package/src/manifest/v1/JobV1.ts +23 -23
- package/src/manifest/v1/__test__/schemas/invalidUiMetadata.json +31 -0
- package/src/manifest/v1/v1.spec.ts +3 -73
- package/src/manifest/v1/v1.ts +23 -23
- package/src/processValidationResult.ts +20 -0
- package/src/validators/customKeywordValidators.spec.ts +171 -0
- package/src/validators/customKeywordValidators.ts +53 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
package/jest.config.ts
CHANGED
@@ -1,14 +1,25 @@
|
|
1
1
|
import type { Config } from 'jest';
|
2
2
|
|
3
3
|
import { config as configFunc } from 'dotenv';
|
4
|
+
import { defaultConfig } from '../../jest.config';
|
4
5
|
configFunc();
|
5
6
|
|
6
7
|
// Sync object
|
7
8
|
const config: Config = {
|
8
|
-
|
9
|
+
...defaultConfig,
|
9
10
|
testTimeout: 60_000,
|
10
11
|
testEnvironment: 'node',
|
11
|
-
|
12
|
+
clearMocks: false,
|
13
|
+
resetMocks: false,
|
14
|
+
resetModules: false,
|
15
|
+
coverageThreshold: {
|
16
|
+
global: {
|
17
|
+
branches: 80,
|
18
|
+
functions: 90,
|
19
|
+
lines: 90,
|
20
|
+
statements: 90,
|
21
|
+
},
|
22
|
+
},
|
12
23
|
testPathIgnorePatterns: [
|
13
24
|
'<rootDir>/lib/',
|
14
25
|
'<rootDir>/cdk.out/',
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { Input } from '@sagold/json-query';
|
2
|
+
import { JSONSchema, Draft } from '@squiz/json-schema-library';
|
3
|
+
import { AnyPrimitiveType, AnyResolvableType, TypeResolver } from './jsonTypeResolution/TypeResolver';
|
4
|
+
export declare const ComponentInputMetaSchema: MetaSchemaInput;
|
5
|
+
export declare const RenderInputMetaSchema: MetaSchemaInput;
|
6
|
+
export declare const ManifestV1MetaSchema: MetaSchemaInput;
|
7
|
+
export declare const JobV1MetaSchema: MetaSchemaInput;
|
8
|
+
interface MetaSchemaInput {
|
9
|
+
root: JSONSchema;
|
10
|
+
remotes?: Record<string, JSONSchema>;
|
11
|
+
}
|
12
|
+
/**
|
13
|
+
* A service that can be used to validate and resolve JSON against a schema.
|
14
|
+
*/
|
15
|
+
export declare class JSONSchemaService<P extends AnyPrimitiveType, R extends AnyResolvableType> {
|
16
|
+
private typeResolver;
|
17
|
+
schema: Draft;
|
18
|
+
constructor(typeResolver: TypeResolver<P, R>, metaSchema: MetaSchemaInput);
|
19
|
+
private doResolveRef;
|
20
|
+
/**
|
21
|
+
* Validate an input value against a specified schema
|
22
|
+
* @throws {SchemaValidationError} if the input is invalid
|
23
|
+
* @returns true if the input is valid
|
24
|
+
*/
|
25
|
+
validateInput(input: unknown, inputSchema?: JSONSchema): true | never;
|
26
|
+
/**
|
27
|
+
* Resolve an input object by replacing all resolvable shapes with their resolved values
|
28
|
+
* @param input any input object which matches the input schema
|
29
|
+
* @param inputSchema a JSONSchema which provides type information about the input object
|
30
|
+
* @returns the input object with all resolvable shapes resolved
|
31
|
+
*/
|
32
|
+
resolveInput(input: Input, inputSchema: JSONSchema): Promise<Input>;
|
33
|
+
}
|
34
|
+
export {};
|
@@ -0,0 +1,140 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.JSONSchemaService = exports.JobV1MetaSchema = exports.ManifestV1MetaSchema = exports.RenderInputMetaSchema = exports.ComponentInputMetaSchema = void 0;
|
7
|
+
const json_query_1 = __importDefault(require("@sagold/json-query"));
|
8
|
+
const DxComponentInputSchema_json_1 = __importDefault(require("./manifest/v1/DxComponentInputSchema.json"));
|
9
|
+
const DxComponentIcons_json_1 = __importDefault(require("./manifest/v1/DxComponentIcons.json"));
|
10
|
+
const DxContentMetaSchema_json_1 = __importDefault(require("./manifest/v1/DxContentMetaSchema.json"));
|
11
|
+
const MatrixAssetSchema_json_1 = __importDefault(require("./manifest/v1/MatrixAssetSchema.json"));
|
12
|
+
const Draft_07_json_1 = __importDefault(require("./manifest/v1/Draft-07.json"));
|
13
|
+
const JobV1_json_1 = __importDefault(require("./manifest/v1/JobV1.json"));
|
14
|
+
const v1_json_1 = __importDefault(require("./manifest/v1/v1.json"));
|
15
|
+
const json_schema_library_1 = require("@squiz/json-schema-library");
|
16
|
+
const json_schema_library_2 = require("@squiz/json-schema-library");
|
17
|
+
const JsonResolutionError_1 = require("./errors/JsonResolutionError");
|
18
|
+
const processValidationResult_1 = require("./processValidationResult");
|
19
|
+
const _1 = require(".");
|
20
|
+
exports.ComponentInputMetaSchema = {
|
21
|
+
root: DxComponentInputSchema_json_1.default,
|
22
|
+
remotes: {
|
23
|
+
'DxComponentInputSchema.json/DxContentMetaSchema.json': DxContentMetaSchema_json_1.default,
|
24
|
+
},
|
25
|
+
};
|
26
|
+
exports.RenderInputMetaSchema = {
|
27
|
+
root: Draft_07_json_1.default,
|
28
|
+
};
|
29
|
+
exports.ManifestV1MetaSchema = {
|
30
|
+
root: v1_json_1.default,
|
31
|
+
remotes: {
|
32
|
+
'DxComponentInputSchema.json/DxContentMetaSchema.json': DxContentMetaSchema_json_1.default,
|
33
|
+
'/DxComponentInputSchema.json': DxComponentInputSchema_json_1.default,
|
34
|
+
'/DxComponentIcons.json': DxComponentIcons_json_1.default,
|
35
|
+
'/MatrixAssetSchema.json': MatrixAssetSchema_json_1.default,
|
36
|
+
'http://json-schema.org/draft-07/schema': Draft_07_json_1.default,
|
37
|
+
'http://json-schema.org/draft-07/schema#': Draft_07_json_1.default,
|
38
|
+
},
|
39
|
+
};
|
40
|
+
exports.JobV1MetaSchema = {
|
41
|
+
root: JobV1_json_1.default,
|
42
|
+
remotes: {
|
43
|
+
'DxComponentInputSchema.json/DxContentMetaSchema.json': DxContentMetaSchema_json_1.default,
|
44
|
+
'/DxComponentInputSchema.json': DxComponentInputSchema_json_1.default,
|
45
|
+
'http://json-schema.org/draft-07/schema': Draft_07_json_1.default,
|
46
|
+
'http://json-schema.org/draft-07/schema#': Draft_07_json_1.default,
|
47
|
+
},
|
48
|
+
};
|
49
|
+
/**
|
50
|
+
* A service that can be used to validate and resolve JSON against a schema.
|
51
|
+
*/
|
52
|
+
class JSONSchemaService {
|
53
|
+
constructor(typeResolver, metaSchema) {
|
54
|
+
this.typeResolver = typeResolver;
|
55
|
+
this.schema = new json_schema_library_1.Draft({
|
56
|
+
..._1.defaultConfig,
|
57
|
+
resolveRef: (schema, rootSchema) => this.doResolveRef(schema, rootSchema),
|
58
|
+
validate: (core, data, schema, pointer) => _1.defaultConfig.validate(core, data, schema, pointer),
|
59
|
+
resolveOneOf: (core, data, schema, pointer) => _1.defaultConfig.resolveOneOf(core, data, schema, pointer),
|
60
|
+
}, metaSchema.root);
|
61
|
+
for (const [key, value] of Object.entries(metaSchema.remotes || {})) {
|
62
|
+
this.schema.addRemoteSchema(key, value);
|
63
|
+
}
|
64
|
+
for (const schema of this.typeResolver.validationSchemaDefinitions) {
|
65
|
+
// Please find a better way of doing this.
|
66
|
+
this.schema.addRemoteSchema(`/${schema.title}.json`, schema);
|
67
|
+
this.schema.addRemoteSchema(`#/${schema.title}.json`, schema);
|
68
|
+
}
|
69
|
+
}
|
70
|
+
doResolveRef(schema, rootSchema) {
|
71
|
+
const initialRef = json_schema_library_2.draft07Config.resolveRef(schema, rootSchema);
|
72
|
+
if (!initialRef)
|
73
|
+
return initialRef;
|
74
|
+
if (!this.typeResolver.isPrimitiveType(initialRef.type))
|
75
|
+
return initialRef;
|
76
|
+
const validationSchemas = this.typeResolver.getValidationSchemaForPrimitive(initialRef.type);
|
77
|
+
// All validation schemas are pre-compiled as remote schemas and are referenced below
|
78
|
+
const fullValidationSchema = {
|
79
|
+
oneOf: validationSchemas.map((schema) => ({ $ref: `${schema.title}.json` })),
|
80
|
+
};
|
81
|
+
return this.schema.compileSchema(fullValidationSchema);
|
82
|
+
}
|
83
|
+
/**
|
84
|
+
* Validate an input value against a specified schema
|
85
|
+
* @throws {SchemaValidationError} if the input is invalid
|
86
|
+
* @returns true if the input is valid
|
87
|
+
*/
|
88
|
+
validateInput(input, inputSchema = this.schema.rootSchema) {
|
89
|
+
inputSchema = this.schema.compileSchema(inputSchema);
|
90
|
+
const errors = this.schema.validate(input, inputSchema);
|
91
|
+
return (0, processValidationResult_1.processValidationResult)(errors);
|
92
|
+
}
|
93
|
+
/**
|
94
|
+
* Resolve an input object by replacing all resolvable shapes with their resolved values
|
95
|
+
* @param input any input object which matches the input schema
|
96
|
+
* @param inputSchema a JSONSchema which provides type information about the input object
|
97
|
+
* @returns the input object with all resolvable shapes resolved
|
98
|
+
*/
|
99
|
+
async resolveInput(input, inputSchema) {
|
100
|
+
const setters = [];
|
101
|
+
this.schema.each(input, async (schema, value, pointer) => {
|
102
|
+
// Bug in library for Array item schemas which won't resolve the oneOf schema
|
103
|
+
if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.oneOf)) {
|
104
|
+
const oldSchema = schema;
|
105
|
+
schema = this.schema.resolveOneOf(value, schema);
|
106
|
+
schema.oneOfSchema = oldSchema;
|
107
|
+
}
|
108
|
+
if (!this.typeResolver.isResolvableSchema(schema))
|
109
|
+
return;
|
110
|
+
// If its a resolvable schema, it should exist in a oneOf array with other schemas
|
111
|
+
// Including a primitive schema
|
112
|
+
const allPossibleSchemaTitles = schema.oneOfSchema.oneOf.map((o) => o.$ref.replace('.json', ''));
|
113
|
+
const primitiveSchema = allPossibleSchemaTitles.find((title) => this.typeResolver.isPrimitiveType(title));
|
114
|
+
if (!primitiveSchema)
|
115
|
+
return;
|
116
|
+
const resolver = this.typeResolver.tryGetResolver(primitiveSchema, schema);
|
117
|
+
if (!resolver)
|
118
|
+
return;
|
119
|
+
const setResolvedData = Promise.resolve()
|
120
|
+
.then(() => resolver(value))
|
121
|
+
.then((resolvedData) => (item) => json_query_1.default.set(item, pointer, resolvedData, 'replace'))
|
122
|
+
.catch((e) => Promise.reject(new JsonResolutionError_1.JsonResolutionError(e, pointer, value)));
|
123
|
+
setters.push(setResolvedData);
|
124
|
+
}, inputSchema);
|
125
|
+
const potentialResolutionErrors = [];
|
126
|
+
for (const resolveResult of await Promise.allSettled(setters)) {
|
127
|
+
if (resolveResult.status === 'rejected') {
|
128
|
+
potentialResolutionErrors.push(resolveResult.reason);
|
129
|
+
continue;
|
130
|
+
}
|
131
|
+
input = resolveResult.value(input);
|
132
|
+
}
|
133
|
+
if (potentialResolutionErrors.length) {
|
134
|
+
throw new Error(`Error(s) occurred when resolving JSON:\n${potentialResolutionErrors.join('\n')}`);
|
135
|
+
}
|
136
|
+
return input;
|
137
|
+
}
|
138
|
+
}
|
139
|
+
exports.JSONSchemaService = JSONSchemaService;
|
140
|
+
//# sourceMappingURL=JsonSchemaService.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"JsonSchemaService.js","sourceRoot":"","sources":["../src/JsonSchemaService.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|