@squiz/dx-json-schema-lib 1.2.13-alpha.2 → 1.2.13-alpha.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/jest.config.ts +7 -0
  3. package/lib/JsonValidationService.d.ts +4 -6
  4. package/lib/JsonValidationService.js +90 -28
  5. package/lib/JsonValidationService.js.map +1 -1
  6. package/lib/JsonValidationService.spec.js +276 -65
  7. package/lib/JsonValidationService.spec.js.map +1 -1
  8. package/lib/errors/SchemaValidationError.d.ts +1 -1
  9. package/lib/errors/SchemaValidationError.js +8 -1
  10. package/lib/errors/SchemaValidationError.js.map +1 -1
  11. package/lib/formatted-text/v1/formattedText.d.ts +18 -16
  12. package/lib/formatted-text/v1/formattedText.json +59 -88
  13. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.d.ts +8 -0
  14. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.js +21 -0
  15. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.js.map +1 -0
  16. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.d.ts +1 -0
  17. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.js +52 -0
  18. package/lib/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.js.map +1 -0
  19. package/lib/index.d.ts +1 -0
  20. package/lib/index.js +1 -0
  21. package/lib/index.js.map +1 -1
  22. package/lib/manifest/v1/Draft-07.json +155 -0
  23. package/lib/manifest/v1/DxComponentInputSchema.json +11 -8
  24. package/lib/manifest/v1/DxComponentInputSchema.spec.js +23 -9
  25. package/lib/manifest/v1/DxComponentInputSchema.spec.js.map +1 -1
  26. package/lib/manifest/v1/__test__/schemas/badFunctionInputComponent.json +2 -1
  27. package/lib/manifest/v1/__test__/schemas/badNestedFunctionInput.json +2 -1
  28. package/lib/manifest/v1/__test__/schemas/nonObjectFunctionInputComponent.json +2 -1
  29. package/lib/manifest/v1/__test__/schemas/validComponentJson.json +48 -0
  30. package/lib/manifest/v1/v1.d.ts +5 -7
  31. package/lib/manifest/v1/v1.spec.js +22 -3
  32. package/lib/manifest/v1/v1.spec.js.map +1 -1
  33. package/package.json +4 -3
  34. package/src/JsonValidationService.spec.ts +379 -70
  35. package/src/JsonValidationService.ts +112 -34
  36. package/src/errors/SchemaValidationError.ts +10 -2
  37. package/src/formatted-text/v1/formattedText.json +65 -89
  38. package/src/formatted-text/v1/formattedText.ts +19 -17
  39. package/src/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.spec.ts +58 -0
  40. package/src/formatted-text/v1/higherOrderFormattedTextToBaseFormattedText.ts +36 -0
  41. package/src/index.ts +1 -0
  42. package/src/manifest/v1/Draft-07.json +155 -0
  43. package/src/manifest/v1/DxComponentInputSchema.json +11 -8
  44. package/src/manifest/v1/DxComponentInputSchema.spec.ts +63 -35
  45. package/src/manifest/v1/__test__/schemas/badFunctionInputComponent.json +2 -1
  46. package/src/manifest/v1/__test__/schemas/badNestedFunctionInput.json +2 -1
  47. package/src/manifest/v1/__test__/schemas/nonObjectFunctionInputComponent.json +2 -1
  48. package/src/manifest/v1/__test__/schemas/validComponentJson.json +48 -0
  49. package/src/manifest/v1/v1.spec.ts +37 -3
  50. package/src/manifest/v1/v1.ts +5 -7
  51. package/tsconfig.json +3 -1
  52. package/tsconfig.tsbuildinfo +1 -1
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SchemaValidationError_1 = require("../../errors/SchemaValidationError");
3
4
  const JsonValidationService_1 = require("../../JsonValidationService");
5
+ // eslint-disable-next-line @typescript-eslint/ban-types
6
+ function expectToThrowErrorMatchingTypeAndMessage(received, errorType, message) {
7
+ let error = null;
8
+ try {
9
+ received();
10
+ }
11
+ catch (e) {
12
+ error = e;
13
+ }
14
+ expect(error).toBeDefined();
15
+ expect(error === null || error === void 0 ? void 0 : error.message).toEqual(message);
16
+ expect(error).toBeInstanceOf(errorType);
17
+ }
4
18
  describe('DxComponentInputSchema', () => {
5
19
  let jsonValidationService;
6
20
  beforeAll(() => {
@@ -9,14 +23,14 @@ describe('DxComponentInputSchema', () => {
9
23
  it('should allow empty object', () => {
10
24
  expect(() => jsonValidationService.validateContentSchema({})).not.toThrowError();
11
25
  });
12
- it('should require required if properties is specified', () => {
13
- expect(() => jsonValidationService.validateContentSchema({
26
+ it('should require "required" if properties is specified', () => {
27
+ expectToThrowErrorMatchingTypeAndMessage(() => jsonValidationService.validateContentSchema({
14
28
  properties: {
15
29
  foo: {
16
30
  type: 'string',
17
31
  },
18
32
  },
19
- })).toThrowError();
33
+ }), SchemaValidationError_1.SchemaValidationError, 'failed validation: The required property `required` is missing at `#`');
20
34
  });
21
35
  it('should pass if required and properties are specified', () => {
22
36
  expect(() => jsonValidationService.validateContentSchema({
@@ -29,9 +43,9 @@ describe('DxComponentInputSchema', () => {
29
43
  })).not.toThrowError();
30
44
  });
31
45
  it('should error if type is not "object"', () => {
32
- expect(() => jsonValidationService.validateContentSchema({
46
+ expectToThrowErrorMatchingTypeAndMessage(() => jsonValidationService.validateContentSchema({
33
47
  type: 'string',
34
- })).toThrowError();
48
+ }), SchemaValidationError_1.SchemaValidationError, 'failed validation: Expected value at `#/type` to be `object`, but value given is `string`');
35
49
  });
36
50
  it('should allow a nested type to be "FormattedText"', () => {
37
51
  expect(() => jsonValidationService.validateContentSchema({
@@ -45,10 +59,10 @@ describe('DxComponentInputSchema', () => {
45
59
  })).not.toThrowError();
46
60
  });
47
61
  it('should error on unknown keywords', () => {
48
- expect(() => jsonValidationService.validateContentSchema({
62
+ expectToThrowErrorMatchingTypeAndMessage(() => jsonValidationService.validateContentSchema({
49
63
  type: 'object',
50
64
  foo: 'bar',
51
- })).toThrowError();
65
+ }), SchemaValidationError_1.SchemaValidationError, 'failed validation: Additional property `foo` in `#` is not allowed');
52
66
  });
53
67
  it('should allow a nested property to be an array of of objects which have a property of type to be "FormattedText" that is required', () => {
54
68
  expect(() => jsonValidationService.validateContentSchema({
@@ -71,7 +85,7 @@ describe('DxComponentInputSchema', () => {
71
85
  })).not.toThrowError();
72
86
  });
73
87
  it('should error if any nested object does not have a required property', () => {
74
- expect(() => jsonValidationService.validateContentSchema({
88
+ expectToThrowErrorMatchingTypeAndMessage(() => jsonValidationService.validateContentSchema({
75
89
  type: 'object',
76
90
  properties: {
77
91
  foo: {
@@ -87,7 +101,7 @@ describe('DxComponentInputSchema', () => {
87
101
  },
88
102
  },
89
103
  required: ['foo'],
90
- })).toThrowError();
104
+ }), SchemaValidationError_1.SchemaValidationError, 'failed validation: Object at `#/properties/foo/items` does not match any schema');
91
105
  });
92
106
  it('should succeed if required is on every nested object', () => {
93
107
  expect(() => jsonValidationService.validateContentSchema({
@@ -1 +1 @@
1
- {"version":3,"file":"DxComponentInputSchema.spec.js","sourceRoot":"","sources":["../../../src/manifest/v1/DxComponentInputSchema.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DxComponentInputSchema.spec.js","sourceRoot":"","sources":["../../../src/manifest/v1/DxComponentInputSchema.spec.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,8 @@
29
29
  },
30
30
  "additionalProperties": {
31
31
  "type": "FormattedText"
32
- }
32
+ },
33
+ "required": ["xt"]
33
34
  }
34
35
  },
35
36
  "required": []
@@ -29,7 +29,8 @@
29
29
  },
30
30
  "additionalProperties": {
31
31
  "type": "FormattedText"
32
- }
32
+ },
33
+ "required": ["xt"]
33
34
  }
34
35
  },
35
36
  "required": []
@@ -29,7 +29,8 @@
29
29
  },
30
30
  "additionalProperties": {
31
31
  "type": "FormattedText"
32
- }
32
+ },
33
+ "required": []
33
34
  }
34
35
  },
35
36
  "required": []
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "../../v1.json",
3
+ "description": "t",
4
+ "displayName": "t",
5
+ "name": "test",
6
+ "namespace": "other",
7
+ "mainFunction": "main",
8
+ "version": "1.0.4",
9
+ "environment": [],
10
+ "functions": [
11
+ {
12
+ "entry": "main.js",
13
+ "name": "main",
14
+ "output": {
15
+ "responseType": "json",
16
+ "definition": {
17
+ "type": "object",
18
+ "properties": {
19
+ "prop": {
20
+ "type": "array"
21
+ }
22
+ }
23
+ }
24
+ },
25
+ "input": {
26
+ "type": "object",
27
+ "properties": {
28
+ "textValue": {
29
+ "type": "FormattedText"
30
+ },
31
+ "anotherValue": {
32
+ "type": "object",
33
+ "properties": {
34
+ "xt": {
35
+ "type": "FormattedText"
36
+ }
37
+ },
38
+ "required": [],
39
+ "additionalProperties": {
40
+ "type": "FormattedText"
41
+ }
42
+ }
43
+ },
44
+ "required": []
45
+ }
46
+ }
47
+ ]
48
+ }
@@ -6,8 +6,11 @@
6
6
  /**
7
7
  * Input schema for a DxComponent
8
8
  */
9
- export type DxComponentInputSchema = DxComponentInputSchema1 & DxComponentInputSchema2;
10
- export type DxComponentInputSchema1 = CoreSchemaMetaSchema;
9
+ export type DxComponentInputSchema = CoreSchemaMetaSchema & {
10
+ type?: 'object';
11
+ additionalProperties?: boolean;
12
+ [k: string]: unknown;
13
+ };
11
14
  export type CoreSchemaMetaSchema = CoreSchemaMetaSchema1 & CoreSchemaMetaSchema2;
12
15
  export type CoreSchemaMetaSchema2 = {
13
16
  $id?: string;
@@ -288,11 +291,6 @@ export interface CoreSchemaMetaSchema1 {
288
291
  oneOf?: SchemaArray;
289
292
  not?: CoreSchemaMetaSchema2;
290
293
  }
291
- export interface DxComponentInputSchema2 {
292
- type?: 'object';
293
- additionalProperties?: boolean;
294
- [k: string]: unknown;
295
- }
296
294
  /**
297
295
  * The HtmlResponse type is for returning html content. The response out of the function must be a string. This response object also includes references to resources (staticFiles) the component needs to execute correctly. It is up to the integrating system to respect this.
298
296
  */
@@ -10,6 +10,19 @@ async function fetchTestManifest(filename) {
10
10
  });
11
11
  return JSON.parse(contents);
12
12
  }
13
+ // eslint-disable-next-line @typescript-eslint/ban-types
14
+ function expectToThrowErrorMatchingTypeAndMessage(received, errorType, message) {
15
+ let error = null;
16
+ try {
17
+ received();
18
+ }
19
+ catch (e) {
20
+ error = e;
21
+ }
22
+ expect(error).toBeDefined();
23
+ expect(error === null || error === void 0 ? void 0 : error.message).toEqual(message);
24
+ expect(error).toBeInstanceOf(errorType);
25
+ }
13
26
  describe('manifest/v1', () => {
14
27
  let validationService;
15
28
  beforeAll(() => {
@@ -21,15 +34,21 @@ describe('manifest/v1', () => {
21
34
  });
22
35
  it('errors on invalid property types in function input', async () => {
23
36
  const manifest = await fetchTestManifest('badFunctionInputComponent.json');
24
- expect(() => validationService.validateManifest(manifest, 'v1')).toThrowError(SchemaValidationError_1.SchemaValidationError);
37
+ expectToThrowErrorMatchingTypeAndMessage(() => {
38
+ validationService.validateManifest(manifest, 'v1');
39
+ }, SchemaValidationError_1.SchemaValidationError, 'failed validation: Value `badInputType` at `#/functions/0/input/properties/textValue/type` does not match any schema');
25
40
  });
26
41
  it('errors on invalid property types in nested function input', async () => {
27
42
  const manifest = await fetchTestManifest('badNestedFunctionInput.json');
28
- expect(() => validationService.validateManifest(manifest, 'v1')).toThrowError(SchemaValidationError_1.SchemaValidationError);
43
+ expectToThrowErrorMatchingTypeAndMessage(() => {
44
+ validationService.validateManifest(manifest, 'v1');
45
+ }, SchemaValidationError_1.SchemaValidationError, 'failed validation: Value `astd` at `#/functions/0/input/properties/anotherValue/properties/xt/type` does not match any schema');
29
46
  });
30
47
  it('errors on non-object top level input', async () => {
31
48
  const manifest = await fetchTestManifest('nonObjectFunctionInputComponent.json');
32
- expect(() => validationService.validateManifest(manifest, 'v1')).toThrowError(SchemaValidationError_1.SchemaValidationError);
49
+ expectToThrowErrorMatchingTypeAndMessage(() => {
50
+ validationService.validateManifest(manifest, 'v1');
51
+ }, SchemaValidationError_1.SchemaValidationError, 'failed validation: Expected value at `#/functions/0/input/type` to be `object`, but value given is `string`');
33
52
  });
34
53
  });
35
54
  //# sourceMappingURL=v1.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"v1.spec.js","sourceRoot":"","sources":["../../../src/manifest/v1/v1.spec.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AACvC,+BAA+B;AAC/B,8EAA2E;AAC3E,uEAAoE;AAEpE,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QACnF,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,iBAAwC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,GAAG,IAAI,6CAAqB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAChE,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,6CAAqB,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,6CAAqB,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,sCAAsC,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,6CAAqB,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"v1.spec.js","sourceRoot":"","sources":["../../../src/manifest/v1/v1.spec.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AACvC,+BAA+B;AAC/B,8EAA2E;AAC3E,uEAAoE;AAEpE,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QACnF,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,wDAAwD;AACxD,SAAS,wCAAwC,CAAC,QAAkB,EAAE,SAAmB,EAAE,OAAe;IACxG,IAAI,KAAK,GAAiB,IAAI,CAAC;IAE/B,IAAI;QACF,QAAQ,EAAE,CAAC;KACZ;IAAC,OAAO,CAAM,EAAE;QACf,KAAK,GAAG,CAAC,CAAC;KACX;IAED,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,iBAAwC,CAAC;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,GAAG,IAAI,6CAAqB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAChE,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;QAE3E,wCAAwC,CACtC,GAAG,EAAE;YACH,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,EACD,6CAAqB,EACrB,sHAAsH,CACvH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;QAExE,wCAAwC,CACtC,GAAG,EAAE;YACH,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,EACD,6CAAqB,EACrB,+HAA+H,CAChI,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,sCAAsC,CAAC,CAAC;QACjF,wCAAwC,CACtC,GAAG,EAAE;YACH,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC,EACD,6CAAqB,EACrB,6GAA6G,CAC9G,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squiz/dx-json-schema-lib",
3
- "version": "1.2.13-alpha.2",
3
+ "version": "1.2.13-alpha.3",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -30,7 +30,8 @@
30
30
  "dependencies": {
31
31
  "ajv": "8.11.2",
32
32
  "ajv-formats": "2.1.1",
33
- "better-ajv-errors": "1.2.0"
33
+ "better-ajv-errors": "1.2.0",
34
+ "json-schema-library": "7.4.4"
34
35
  },
35
- "gitHead": "f93643bf518d1d92d7ea3b44bd9114ca43358bf3"
36
+ "gitHead": "3dd615783e524f49f043b8e8f36fe1bed946e555"
36
37
  }