@squiz/dx-json-schema-lib 1.79.0 → 1.80.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.
Files changed (59) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/jest.config.ts +13 -2
  3. package/lib/JsonSchemaService.d.ts +34 -0
  4. package/lib/JsonSchemaService.js +140 -0
  5. package/lib/JsonSchemaService.js.map +1 -0
  6. package/lib/JsonSchemaService.spec.d.ts +1 -0
  7. package/lib/JsonSchemaService.spec.js +1807 -0
  8. package/lib/JsonSchemaService.spec.js.map +1 -0
  9. package/lib/JsonValidationService.d.ts +11 -33
  10. package/lib/JsonValidationService.js +43 -194
  11. package/lib/JsonValidationService.js.map +1 -1
  12. package/lib/JsonValidationService.spec.js +19 -1800
  13. package/lib/JsonValidationService.spec.js.map +1 -1
  14. package/lib/index.d.ts +1 -0
  15. package/lib/index.js +1 -0
  16. package/lib/index.js.map +1 -1
  17. package/lib/jsonTypeResolution/TypeResolver.d.ts +4 -2
  18. package/lib/jsonTypeResolution/TypeResolver.js +0 -3
  19. package/lib/jsonTypeResolution/TypeResolver.js.map +1 -1
  20. package/lib/jsonTypeResolution/TypeResolver.spec.js +10 -0
  21. package/lib/jsonTypeResolution/TypeResolver.spec.js.map +1 -1
  22. package/lib/manifest/v1/DxComponentInputSchema.spec.js +18 -0
  23. package/lib/manifest/v1/DxComponentInputSchema.spec.js.map +1 -1
  24. package/lib/manifest/v1/DxContentMetaSchema.json +24 -32
  25. package/lib/manifest/v1/JobV1.d.ts +23 -18
  26. package/lib/manifest/v1/__test__/schemas/invalidUiMetadata.json +31 -0
  27. package/lib/manifest/v1/v1.d.ts +23 -18
  28. package/lib/manifest/v1/v1.spec.js +3 -66
  29. package/lib/manifest/v1/v1.spec.js.map +1 -1
  30. package/lib/primitiveTypes/SquizImage.d.ts +2 -1
  31. package/lib/primitiveTypes/SquizImage.js.map +1 -1
  32. package/lib/processValidationResult.d.ts +2 -0
  33. package/lib/processValidationResult.js +24 -0
  34. package/lib/processValidationResult.js.map +1 -0
  35. package/lib/validators/customKeywordValidators.d.ts +2 -0
  36. package/lib/validators/customKeywordValidators.js +47 -0
  37. package/lib/validators/customKeywordValidators.js.map +1 -0
  38. package/lib/validators/customKeywordValidators.spec.d.ts +1 -0
  39. package/lib/validators/customKeywordValidators.spec.js +100 -0
  40. package/lib/validators/customKeywordValidators.spec.js.map +1 -0
  41. package/package.json +2 -5
  42. package/src/JsonSchemaService.spec.ts +2198 -0
  43. package/src/JsonSchemaService.ts +159 -0
  44. package/src/JsonValidationService.spec.ts +26 -2195
  45. package/src/JsonValidationService.ts +64 -226
  46. package/src/index.ts +1 -0
  47. package/src/jsonTypeResolution/TypeResolver.spec.ts +12 -0
  48. package/src/jsonTypeResolution/TypeResolver.ts +5 -5
  49. package/src/manifest/v1/DxComponentInputSchema.spec.ts +21 -0
  50. package/src/manifest/v1/DxContentMetaSchema.json +24 -32
  51. package/src/manifest/v1/JobV1.ts +23 -23
  52. package/src/manifest/v1/__test__/schemas/invalidUiMetadata.json +31 -0
  53. package/src/manifest/v1/v1.spec.ts +3 -73
  54. package/src/manifest/v1/v1.ts +23 -23
  55. package/src/primitiveTypes/SquizImage.ts +2 -1
  56. package/src/processValidationResult.ts +20 -0
  57. package/src/validators/customKeywordValidators.spec.ts +171 -0
  58. package/src/validators/customKeywordValidators.ts +53 -0
  59. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.80.1
4
+
5
+ ### Patch Changes
6
+
7
+ - a63dfe8: Revise dependencies
8
+
9
+ ## 1.80.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 63fecb7: Add enumWidget ui:metadata configuration
14
+
3
15
  ## 1.79.0
4
16
 
5
17
  ### Minor Changes
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
- preset: 'ts-jest',
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, ResolverContext, 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, ctx?: ResolverContext): 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, ctx = {}) {
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, ctx))
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 {};