UNPKG

2.55 kBJavaScriptView Raw
1module.exports.schema = {
2 $id: '/Manifest',
3 type: 'array',
4 definitions: {
5 uri: {type: 'string', format: 'uri-template'},
6 uris: {
7 anyOf: [
8 {'$ref': '#/definitions/uri'},
9 {
10 type: 'array',
11 minItems: 1,
12 uniqueItems: true,
13 items: {'$ref': '#/definitions/uri'}
14 }
15 ]
16 },
17 glob: {type: 'string', format: 'extglob'},
18 globs: {
19 anyOf: [
20 {'$ref': '#/definitions/glob'},
21 {
22 type: 'array',
23 minItems: 1,
24 uniqueItems: true,
25 items: {'$ref': '#/definitions/glob'}
26 }
27 ]
28 },
29 push: {
30 anyOf: [
31 {'$ref': '#/definitions/uri'},
32 {'$ref': '#/definitions/glob'},
33 {
34 type: 'object',
35 anyOf: [
36 {required: ['uri']},
37 {required: ['glob']}
38 ],
39 properties: {
40 priority: {type: 'integer', minimum: 1, maximum: 256},
41 uri: {'$ref': '#/definitions/uris'},
42 glob: {'$ref': '#/definitions/globs'}
43 }
44 }
45 ]
46 },
47 get: {
48 anyOf: [
49 {'$ref': '#/definitions/uri'},
50 {'$ref': '#/definitions/glob'},
51 {
52 type: 'object',
53 anyOf: [
54 {required: ['uri']},
55 {required: ['glob']}
56 ],
57 properties: {
58 uri: {'$ref': '#/definitions/uris'},
59 glob: {'$ref': '#/definitions/globs'}
60 }
61 }
62 ]
63 }
64 },
65 additionalProperties: false,
66 items: {
67 type: 'object',
68 additionalProperties: false,
69 required: ['push'],
70 oneOf: [
71 {required: ['get']},
72 {
73 anyOf: [
74 {required: ['uri']},
75 {required: ['glob']}
76 ]
77 }
78 ],
79 properties: {
80 uri: {'$ref': '#/definitions/uris'},
81 glob: {'$ref': '#/definitions/globs'},
82 get: {
83 anyOf: [
84 {'$ref': '#/definitions/get'},
85 {
86 type: 'array',
87 minItems: 1,
88 uniqueItems: true,
89 items: {'$ref': '#/definitions/get'}
90 }
91 ]
92 },
93 push: {
94 anyOf: [
95 {'$ref': '#/definitions/push'},
96 {
97 type: 'array',
98 minItems: 1,
99 uniqueItems: true,
100 items: {
101 anyOf: [
102 {'$ref': '#/definitions/push'},
103 {'$ref': '#/definitions/uris'},
104 {'$ref': '#/definitions/globs'}
105 ]
106 }
107 }
108 ]
109 }
110 }
111 }
112}