@squiz/dx-json-schema-lib 1.21.1-alpha.4 → 1.21.1-alpha.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. package/.npm/_logs/2023-03-24T05_02_07_989Z-debug-0.log +37 -0
  2. package/lib/JsonValidationService.d.ts +1 -1
  3. package/lib/JsonValidationService.js +18 -5
  4. package/lib/JsonValidationService.js.map +1 -1
  5. package/lib/JsonValidationService.spec.js +444 -445
  6. package/lib/JsonValidationService.spec.js.map +1 -1
  7. package/lib/index.d.ts +6 -1
  8. package/lib/index.js +6 -1
  9. package/lib/index.js.map +1 -1
  10. package/lib/jsonTypeResolution/{arbitraryTypeResolution.d.ts → TypeResolver.d.ts} +7 -12
  11. package/lib/jsonTypeResolution/{arbitraryTypeResolution.js → TypeResolver.js} +17 -17
  12. package/lib/jsonTypeResolution/TypeResolver.js.map +1 -0
  13. package/lib/jsonTypeResolution/{arbitraryTypeResolution.spec.js → TypeResolver.spec.js} +12 -39
  14. package/lib/jsonTypeResolution/TypeResolver.spec.js.map +1 -0
  15. package/lib/jsonTypeResolution/TypeResolverBuilder.d.ts +12 -0
  16. package/lib/jsonTypeResolution/TypeResolverBuilder.js +32 -0
  17. package/lib/jsonTypeResolution/TypeResolverBuilder.js.map +1 -0
  18. package/lib/manifest/v1/DxContentMetaSchema.json +1 -1
  19. package/lib/manifest/v1/MatrixAssetSchema.json +390 -0
  20. package/lib/manifest/v1/subSchemas.d.ts +2 -1
  21. package/lib/manifest/v1/subSchemas.js +3 -1
  22. package/lib/manifest/v1/subSchemas.js.map +1 -1
  23. package/lib/manifest/v1/v1.d.ts +401 -2
  24. package/lib/manifest/v1/v1.json +48 -0
  25. package/lib/primitiveTypes/FormattedText.d.ts +8 -0
  26. package/lib/primitiveTypes/FormattedText.js +21 -0
  27. package/lib/primitiveTypes/FormattedText.js.map +1 -0
  28. package/lib/primitiveTypes/SquizImage.d.ts +26 -0
  29. package/lib/primitiveTypes/SquizImage.js +105 -0
  30. package/lib/primitiveTypes/SquizImage.js.map +1 -0
  31. package/lib/primitiveTypes/index.d.ts +2 -0
  32. package/lib/primitiveTypes/index.js +19 -0
  33. package/lib/primitiveTypes/index.js.map +1 -0
  34. package/lib/resolvableTypes/MatrixAsset.d.ts +9 -0
  35. package/lib/resolvableTypes/MatrixAsset.js +21 -0
  36. package/lib/resolvableTypes/MatrixAsset.js.map +1 -0
  37. package/lib/resolvableTypes/index.d.ts +1 -0
  38. package/lib/resolvableTypes/index.js +18 -0
  39. package/lib/resolvableTypes/index.js.map +1 -0
  40. package/package.json +5 -4
  41. package/src/JsonValidationService.spec.ts +585 -584
  42. package/src/JsonValidationService.ts +23 -9
  43. package/src/index.ts +8 -1
  44. package/src/jsonTypeResolution/{arbitraryTypeResolution.spec.ts → TypeResolver.spec.ts} +23 -70
  45. package/src/jsonTypeResolution/{arbitraryTypeResolution.ts → TypeResolver.ts} +27 -23
  46. package/src/jsonTypeResolution/TypeResolverBuilder.ts +43 -0
  47. package/src/manifest/v1/DxContentMetaSchema.json +1 -1
  48. package/src/manifest/v1/MatrixAssetSchema.json +391 -0
  49. package/src/manifest/v1/subSchemas.ts +2 -1
  50. package/src/manifest/v1/v1.json +48 -0
  51. package/src/manifest/v1/v1.ts +451 -4
  52. package/src/primitiveTypes/FormattedText.ts +24 -0
  53. package/src/primitiveTypes/SquizImage.ts +128 -0
  54. package/src/primitiveTypes/index.ts +2 -0
  55. package/src/resolvableTypes/MatrixAsset.ts +24 -0
  56. package/src/resolvableTypes/index.ts +1 -0
  57. package/tsconfig.tsbuildinfo +1 -1
  58. package/.npm/_logs/2023-03-06T05_16_32_570Z-debug-0.log +0 -39
  59. package/lib/jsonTypeResolution/arbitraryTypeResolution.js.map +0 -1
  60. package/lib/jsonTypeResolution/arbitraryTypeResolution.spec.js.map +0 -1
  61. package/lib/jsonTypeResolution/index.d.ts +0 -76
  62. package/lib/jsonTypeResolution/index.js +0 -35
  63. package/lib/jsonTypeResolution/index.js.map +0 -1
  64. package/lib/jsonTypeResolution/primitiveTypes.d.ts +0 -10
  65. package/lib/jsonTypeResolution/primitiveTypes.js +0 -27
  66. package/lib/jsonTypeResolution/primitiveTypes.js.map +0 -1
  67. package/lib/jsonTypeResolution/resolvableTypes.d.ts +0 -12
  68. package/lib/jsonTypeResolution/resolvableTypes.js +0 -30
  69. package/lib/jsonTypeResolution/resolvableTypes.js.map +0 -1
  70. package/src/jsonTypeResolution/index.ts +0 -16
  71. package/src/jsonTypeResolution/primitiveTypes.ts +0 -32
  72. package/src/jsonTypeResolution/resolvableTypes.ts +0 -37
  73. /package/lib/jsonTypeResolution/{arbitraryTypeResolution.spec.d.ts → TypeResolver.spec.d.ts} +0 -0
@@ -3,18 +3,20 @@ import JSONQuery, { Input } from '@sagold/json-query';
3
3
  import DxComponentInputSchema from './manifest/v1/DxComponentInputSchema.json';
4
4
  import DxComponentIcons from './manifest/v1/DxComponentIcons.json';
5
5
  import DxContentMetaSchema from './manifest/v1/DxContentMetaSchema.json';
6
+ import MatrixAssetSchema from './manifest/v1/MatrixAssetSchema.json';
7
+
6
8
  import Draft07Schema from './manifest/v1/Draft-07.json';
7
9
 
8
10
  import FormattedText from './formatted-text/v1/formattedText.json';
9
11
 
10
12
  import v1 from './manifest/v1/v1.json';
11
13
  import { SchemaValidationError } from './errors/SchemaValidationError';
12
- import { Draft07, JSONError, JSONSchema, Draft, DraftConfig, isJSONError } from 'json-schema-library';
14
+ import { Draft07, JSONError, JSONSchema, Draft, DraftConfig } from 'json-schema-library';
13
15
 
14
16
  import { draft07Config } from 'json-schema-library';
15
17
  import { MANIFEST_MODELS } from '.';
16
18
  import { customFormatValidators } from './validators/customFormatValidators';
17
- import { AnyPrimitiveType, AnyResolvableType, TypeResolver } from './jsonTypeResolution/arbitraryTypeResolution';
19
+ import { AnyPrimitiveType, AnyResolvableType, TypeResolver } from './jsonTypeResolution/TypeResolver';
18
20
  import { JsonResolutionError } from './errors/JsonResolutionError';
19
21
 
20
22
  const defaultConfig: DraftConfig = {
@@ -123,6 +125,7 @@ const v1Schema = new Draft07(v1, defaultConfig);
123
125
  v1Schema.addRemoteSchema('DxComponentInputSchema.json/DxContentMetaSchema.json', DxContentMetaSchema);
124
126
  v1Schema.addRemoteSchema('/DxComponentInputSchema.json', ComponentInputSchema.getSchema());
125
127
  v1Schema.addRemoteSchema('/DxComponentIcons.json', DxComponentIcons);
128
+ v1Schema.addRemoteSchema('/MatrixAssetSchema.json', MatrixAssetSchema);
126
129
  v1Schema.addRemoteSchema('http://json-schema.org/draft-07/schema', Draft07Schema);
127
130
  v1Schema.addRemoteSchema('http://json-schema.org/draft-07/schema#', Draft07Schema);
128
131
 
@@ -143,6 +146,7 @@ export const ManifestV1MetaSchema: MetaSchemaInput = {
143
146
  'DxComponentInputSchema.json/DxContentMetaSchema.json': DxContentMetaSchema,
144
147
  '/DxComponentInputSchema.json': DxComponentInputSchema,
145
148
  '/DxComponentIcons.json': DxComponentIcons,
149
+ '/MatrixAssetSchema.json': MatrixAssetSchema,
146
150
  'http://json-schema.org/draft-07/schema': Draft07Schema,
147
151
  'http://json-schema.org/draft-07/schema#': Draft07Schema,
148
152
  },
@@ -162,6 +166,8 @@ export class JSONSchemaService<P extends AnyPrimitiveType, R extends AnyResolvab
162
166
  {
163
167
  ...defaultConfig,
164
168
  resolveRef: (schema, rootSchema) => this.doResolveRef(schema, rootSchema),
169
+ validate: (core, data, schema, pointer) => defaultConfig.validate(core, data, schema, pointer),
170
+ resolveOneOf: (core, data, schema, pointer) => defaultConfig.resolveOneOf(core, data, schema, pointer),
165
171
  },
166
172
  metaSchema.root,
167
173
  );
@@ -169,15 +175,25 @@ export class JSONSchemaService<P extends AnyPrimitiveType, R extends AnyResolvab
169
175
  for (const [key, value] of Object.entries(metaSchema.remotes || {})) {
170
176
  this.schema.addRemoteSchema(key, value);
171
177
  }
178
+
179
+ for (const schema of this.typeResolver.validationSchemaDefinitions) {
180
+ // Please find a better way of doing this.
181
+ this.schema.addRemoteSchema(`/${schema.title}.json`, schema as JSONSchema);
182
+ this.schema.addRemoteSchema(`#/${schema.title}.json`, schema as JSONSchema);
183
+ }
172
184
  }
173
185
 
174
186
  private doResolveRef(schema: JSONSchema, rootSchema: JSONSchema): JSONSchema {
175
187
  const initialRef = draft07Config.resolveRef(schema, rootSchema);
176
-
177
188
  if (!initialRef) return initialRef;
178
189
  if (!this.typeResolver.isPrimitiveType(initialRef.type)) return initialRef;
179
190
 
180
- return this.typeResolver.getValidationSchemaForPrimitive(initialRef.type);
191
+ const validationSchemas = this.typeResolver.getValidationSchemaForPrimitive(initialRef.type);
192
+ // All validation schemas are pre-compiled as remote schemas and are referenced below
193
+ const fullValidationSchema = {
194
+ oneOf: validationSchemas.map((schema) => ({ $ref: `${schema.title}.json` })),
195
+ };
196
+ return this.schema.compileSchema(fullValidationSchema);
181
197
  }
182
198
 
183
199
  /**
@@ -214,12 +230,10 @@ export class JSONSchemaService<P extends AnyPrimitiveType, R extends AnyResolvab
214
230
  if (!this.typeResolver.isResolvableSchema(schema)) return;
215
231
  // If its a resolvable schema, it should exist in a oneOf array with other schemas
216
232
  // Including a primitive schema
217
- const allPossibleSchemas: Array<JSONSchema> = schema.oneOfSchema.oneOf;
218
- if (isJSONError(allPossibleSchemas)) return;
219
-
220
- const primitiveSchema = allPossibleSchemas.find((schema): schema is P =>
221
- this.typeResolver.isPrimitiveSchema(schema),
233
+ const allPossibleSchemaTitles: Array<string> = schema.oneOfSchema.oneOf.map((o: JSONSchema) =>
234
+ o.$ref.replace('.json', ''),
222
235
  );
236
+ const primitiveSchema = allPossibleSchemaTitles.find((title) => this.typeResolver.isPrimitiveType(title));
223
237
  if (!primitiveSchema) return;
224
238
 
225
239
  const resolver = this.typeResolver.tryGetResolver(primitiveSchema, schema);
package/src/index.ts CHANGED
@@ -11,4 +11,11 @@ export * from './JsonValidationService';
11
11
  export * from './errors/SchemaValidationError';
12
12
  export * from './errors/JsonResolutionError';
13
13
 
14
- export * from './jsonTypeResolution';
14
+ export * from './validators/utils/matrixAssetValidator';
15
+
16
+ export * from './validators/utils/matrixAssetValidator';
17
+
18
+ export * from './jsonTypeResolution/TypeResolver';
19
+ export * from './jsonTypeResolution/TypeResolverBuilder';
20
+ export * from './primitiveTypes';
21
+ export * from './resolvableTypes';
@@ -1,5 +1,5 @@
1
1
  import { JSONSchema } from 'json-schema-library';
2
- import { PrimitiveType, ResolvableType, TypeResolver } from './arbitraryTypeResolution';
2
+ import { PrimitiveType, ResolvableType, TypeResolver } from './TypeResolver';
3
3
 
4
4
  const defaultSchema: JSONSchema = {
5
5
  type: 'object',
@@ -28,64 +28,33 @@ describe('getValidationSchemaForPrimitive', () => {
28
28
  it('should return only the primitive schema when no resolvers are defined', () => {
29
29
  const primitiveType = primitiveTypeFixture('MyPrimitive');
30
30
  const resolvableType = resolvableTypeFixture('MyResolvable');
31
- const resolver = new TypeResolver(
32
- {
33
- MyPrimitive: primitiveType,
34
- },
35
- {
36
- MyResolvable: resolvableType,
37
- },
38
- {},
39
- );
31
+ const resolver = new TypeResolver([primitiveType], [resolvableType], {});
40
32
 
41
- expect(resolver.getValidationSchemaForPrimitive('MyPrimitive')).toEqual({
42
- oneOf: [primitiveType],
43
- });
33
+ expect(resolver.getValidationSchemaForPrimitive('MyPrimitive')).toEqual([primitiveType]);
44
34
  });
45
35
 
46
36
  it('should return the primitive schema and the resolvable schema when a resolver is defined', () => {
47
37
  const primitiveType = primitiveTypeFixture('MyPrimitive');
48
38
  const resolvableType = resolvableTypeFixture('MyResolvable');
49
- const resolver = new TypeResolver(
50
- {
51
- MyPrimitive: primitiveType,
52
- },
53
- {
54
- MyResolvable: resolvableType,
39
+ const resolver = new TypeResolver([primitiveType], [resolvableType], {
40
+ MyPrimitive: {
41
+ MyResolvable: () => null,
55
42
  },
56
- {
57
- MyPrimitive: {
58
- MyResolvable: () => null,
59
- },
60
- },
61
- );
62
-
63
- expect(resolver.getValidationSchemaForPrimitive('MyPrimitive')).toEqual({
64
- oneOf: [primitiveType, resolvableType],
65
43
  });
44
+
45
+ expect(resolver.getValidationSchemaForPrimitive('MyPrimitive')).toEqual([primitiveType, resolvableType]);
66
46
  });
67
47
 
68
48
  it('should return the primitive schema and the resolvable schema when a resolver is defined for a different primitive', () => {
69
49
  const primitiveType = primitiveTypeFixture('MyPrimitive');
70
50
  const resolvableType = resolvableTypeFixture('MyResolvable');
71
- const resolver = new TypeResolver(
72
- {
73
- MyPrimitive: primitiveType,
74
- MyOtherPrimitive: primitiveTypeFixture('MyOtherPrimitive'),
75
- },
76
- {
77
- MyResolvable: resolvableType,
51
+ const resolver = new TypeResolver([primitiveType, primitiveTypeFixture('MyOtherPrimitive')], [resolvableType], {
52
+ MyOtherPrimitive: {
53
+ MyResolvable: () => null,
78
54
  },
79
- {
80
- MyOtherPrimitive: {
81
- MyResolvable: () => null,
82
- },
83
- },
84
- );
85
-
86
- expect(resolver.getValidationSchemaForPrimitive('MyPrimitive')).toEqual({
87
- oneOf: [primitiveType],
88
55
  });
56
+
57
+ expect(resolver.getValidationSchemaForPrimitive('MyPrimitive')).toEqual([primitiveType]);
89
58
  });
90
59
 
91
60
  it('should error when resolver map contains a key not listed in resolver schemas', () => {
@@ -93,20 +62,12 @@ describe('getValidationSchemaForPrimitive', () => {
93
62
  const resolvableType = resolvableTypeFixture('MyResolvable');
94
63
  expect(
95
64
  () =>
96
- new TypeResolver<typeof primitiveType, typeof resolvableType>(
97
- {
98
- MyPrimitive: primitiveType,
99
- },
100
- {
101
- MyResolvable: resolvableType,
65
+ new TypeResolver<typeof primitiveType, typeof resolvableType>([primitiveType], [resolvableType], {
66
+ MyPrimitive: {
67
+ // @ts-expect-error - this is not a valid resolvable type
68
+ MyOtherResolvable: () => null,
102
69
  },
103
- {
104
- MyPrimitive: {
105
- // @ts-expect-error - this is not a valid resolvable type
106
- MyOtherResolvable: () => null,
107
- },
108
- },
109
- ),
70
+ }),
110
71
  ).toThrowError();
111
72
  });
112
73
 
@@ -115,20 +76,12 @@ describe('getValidationSchemaForPrimitive', () => {
115
76
  const resolvableType = resolvableTypeFixture('MyResolvable');
116
77
  expect(
117
78
  () =>
118
- new TypeResolver<typeof primitiveType, typeof resolvableType>(
119
- {
120
- MyPrimitive: primitiveType,
121
- },
122
- {
123
- MyResolvable: resolvableType,
124
- },
125
- {
126
- // @ts-expect-error - this is not a valid primitive type
127
- MyOtherPrimitive: {
128
- MyResolvable: () => null,
129
- },
79
+ new TypeResolver<typeof primitiveType, typeof resolvableType>([primitiveType], [resolvableType], {
80
+ // @ts-expect-error - this is not a valid primitive type
81
+ MyOtherPrimitive: {
82
+ MyResolvable: () => null,
130
83
  },
131
- ),
84
+ }),
132
85
  ).toThrowError();
133
86
  });
134
87
  });
@@ -35,7 +35,7 @@ export function ResolvableType<SHAPE, TITLE extends string>(
35
35
  }
36
36
  export type AnyResolvableType = ResolvableType<string, any>;
37
37
 
38
- type Resolver<INPUT, OUTPUT> = (input: INPUT) => MaybePromise<OUTPUT>;
38
+ export type Resolver<INPUT, OUTPUT> = (input: INPUT) => MaybePromise<OUTPUT>;
39
39
 
40
40
  /**
41
41
  * A JSON Type Resolver class which stores the primitive and resolvable JSON Schema types and their resolvers
@@ -43,27 +43,35 @@ type Resolver<INPUT, OUTPUT> = (input: INPUT) => MaybePromise<OUTPUT>;
43
43
  * No serious logic is required here. The class should only provide data access methods and type safety
44
44
  */
45
45
  export class TypeResolver<P extends AnyPrimitiveType, R extends AnyResolvableType> {
46
+ private primitives: Map<P['title'], P>;
47
+ private resolvables: Map<R['title'], R>;
46
48
  constructor(
47
- private primitives: { [K in P as P['title']]: K },
48
- private resolvables: { [K in R as R['title']]: K },
49
+ primitives: P[],
50
+ resolvables: R[] = [],
49
51
  public resolvers: {
50
52
  [PT in P as PT['title']]?: {
51
53
  [RT in R as RT['title']]?: Resolver<RT['__shape__'], PT['__shape__']>;
52
54
  };
53
- },
55
+ } = {},
54
56
  ) {
57
+ this.primitives = new Map(primitives.map((p) => [p.title, p]));
58
+ this.resolvables = new Map(resolvables.map((r) => [r.title, r]));
55
59
  for (const [primitiveKey, primitiveResolvers] of Object.entries(resolvers) as [string, Record<string, any>][]) {
56
- if (!(primitiveKey in primitives)) {
60
+ if (!this.primitives.has(primitiveKey)) {
57
61
  throw new Error('Resolver keys must match a primitive schema');
58
62
  }
59
- if (!Object.keys(primitiveResolvers).every((k) => k in resolvables)) {
63
+ if (!Object.keys(primitiveResolvers).every((k) => this.resolvables.has(k))) {
60
64
  throw new Error('Primitive resolvers keys must match a resolvable schema');
61
65
  }
62
66
  }
63
67
  }
64
68
 
69
+ get validationSchemaDefinitions() {
70
+ return [...this.primitives.values(), ...this.resolvables.values()];
71
+ }
72
+
65
73
  isPrimitiveType(type: string): type is P['title'] {
66
- return type in this.primitives;
74
+ return this.primitives.has(type);
67
75
  }
68
76
 
69
77
  isPrimitiveSchema(schema: JSONSchema): schema is P {
@@ -71,30 +79,26 @@ export class TypeResolver<P extends AnyPrimitiveType, R extends AnyResolvableTyp
71
79
  }
72
80
 
73
81
  isResolvableSchema(schema: JSONSchema): schema is R {
74
- return schema.title in this.resolvables;
82
+ return this.resolvables.has(schema.title);
75
83
  }
76
84
 
77
- getValidationSchemaForPrimitive(type: keyof typeof this.primitives) {
78
- const primitiveSchema = this.primitives[type];
79
- const validSchemas = [primitiveSchema, ...this.fetchResolvableSchemasForPrimitive(type)];
80
-
81
- return {
82
- oneOf: validSchemas,
83
- };
85
+ getValidationSchemaForPrimitive(type: P['title']) {
86
+ const primitiveSchema = this.primitives.get(type) as JsonResolutionSchema<string>;
87
+ return [primitiveSchema, ...this.fetchResolvableSchemasForPrimitive(type)];
84
88
  }
85
89
 
86
- private *fetchResolvableSchemasForPrimitive(type: keyof typeof this.primitives) {
90
+ private *fetchResolvableSchemasForPrimitive(type: P['title']) {
87
91
  for (const resolverKey in this.resolvers[type]) {
88
- yield this.resolvables[resolverKey];
92
+ yield this.resolvables.get(resolverKey) as JsonResolutionSchema<string>;
89
93
  }
90
94
  }
91
95
 
92
- tryGetResolver<PS extends P, RS extends R>(
93
- primitiveSchema: PS,
94
- resolvableSchema: RS,
95
- ): Resolver<RS['__shape__'], PS['__shape__']> | undefined {
96
- if (!(primitiveSchema.title in this.resolvers)) return;
96
+ tryGetResolver(
97
+ primitiveSchemaTitle: string,
98
+ resolvableSchema: R,
99
+ ): Resolver<R['__shape__'], P['__shape__']> | undefined {
100
+ if (!(primitiveSchemaTitle in this.resolvers)) return;
97
101
  // Sometimes typescript can be insanely annoying
98
- return (this.resolvers[primitiveSchema.title as keyof typeof this.resolvers] as any)?.[resolvableSchema.title];
102
+ return (this.resolvers[primitiveSchemaTitle as keyof typeof this.resolvers] as any)?.[resolvableSchema.title];
99
103
  }
100
104
  }
@@ -0,0 +1,43 @@
1
+ import { AnyPrimitiveType, AnyResolvableType, Resolver, TypeResolver } from './TypeResolver';
2
+
3
+ type TypeResolverFunction<P extends AnyPrimitiveType, R extends AnyResolvableType> = Resolver<
4
+ R['__shape__'],
5
+ P['__shape__']
6
+ >;
7
+
8
+ export class TypeResolverBuilder {
9
+ private primitives = new Set<AnyPrimitiveType>();
10
+ private resolvables = new Set<AnyResolvableType>();
11
+ private resolverMap: Record<string, Record<string, TypeResolverFunction<AnyPrimitiveType, AnyResolvableType>>> = {};
12
+ static new() {
13
+ return new TypeResolverBuilder();
14
+ }
15
+
16
+ addPrimitive<P extends AnyPrimitiveType>(primitive: P) {
17
+ this.primitives.add(primitive);
18
+ return this;
19
+ }
20
+
21
+ addResolver<P extends AnyPrimitiveType, R extends AnyResolvableType>(
22
+ primitive: P,
23
+ resolvable: R,
24
+ resolver: TypeResolverFunction<P, R>,
25
+ ) {
26
+ this.primitives.add(primitive);
27
+ this.resolvables.add(resolvable);
28
+ this.resolverMap[primitive.title] ??= {};
29
+ this.resolverMap[primitive.title][resolvable.title] = resolver as TypeResolverFunction<
30
+ AnyPrimitiveType,
31
+ AnyResolvableType
32
+ >;
33
+ return this;
34
+ }
35
+
36
+ build() {
37
+ return new TypeResolver(
38
+ Array.from(this.primitives.values()),
39
+ Array.from(this.resolvables.values()),
40
+ this.resolverMap,
41
+ );
42
+ }
43
+ }
@@ -16,7 +16,7 @@
16
16
  "allOf": [{ "$ref": "#/definitions/nonNegativeInteger" }, { "default": 0 }]
17
17
  },
18
18
  "simpleTypes": {
19
- "enum": ["array", "boolean", "integer", "null", "number", "object", "string", "FormattedText"]
19
+ "enum": ["array", "boolean", "integer", "null", "number", "object", "string", "FormattedText", "SquizImage"]
20
20
  },
21
21
  "stringArray": {
22
22
  "type": "array",