@squiz/dx-json-schema-lib 1.2.13-alpha.1 → 1.2.13-alpha.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +8 -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.1",
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": "25fd4ac4502cd93a5cfcd7e7a945a6f2f4fa925b"
36
+ "gitHead": "3dd615783e524f49f043b8e8f36fe1bed946e555"
36
37
  }