UNPKG

2.63 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: {
18 type: 'string',
19 allOf: [
20 {pattern: '^!?(/|\\*\\*)'},
21 {format: 'extglob'}
22 ]
23 },
24 globs: {
25 anyOf: [
26 {'$ref': '#/definitions/glob'},
27 {
28 type: 'array',
29 minItems: 1,
30 uniqueItems: true,
31 items: {'$ref': '#/definitions/glob'}
32 }
33 ]
34 },
35 push: {
36 anyOf: [
37 {'$ref': '#/definitions/uri'},
38 {'$ref': '#/definitions/glob'},
39 {
40 type: 'object',
41 anyOf: [
42 {required: ['uri']},
43 {required: ['glob']}
44 ],
45 properties: {
46 priority: {type: 'integer', minimum: 1, maximum: 256},
47 uri: {'$ref': '#/definitions/uris'},
48 glob: {'$ref': '#/definitions/globs'}
49 }
50 }
51 ]
52 },
53 get: {
54 anyOf: [
55 {'$ref': '#/definitions/uri'},
56 {'$ref': '#/definitions/glob'},
57 {
58 type: 'object',
59 anyOf: [
60 {required: ['uri']},
61 {required: ['glob']}
62 ],
63 properties: {
64 uri: {'$ref': '#/definitions/uris'},
65 glob: {'$ref': '#/definitions/globs'}
66 }
67 }
68 ]
69 }
70 },
71 additionalProperties: false,
72 items: {
73 type: 'object',
74 additionalProperties: false,
75 required: ['push'],
76 oneOf: [
77 {required: ['get']},
78 {
79 anyOf: [
80 {required: ['uri']},
81 {required: ['glob']}
82 ]
83 }
84 ],
85 properties: {
86 uri: {'$ref': '#/definitions/uris'},
87 glob: {'$ref': '#/definitions/globs'},
88 get: {
89 anyOf: [
90 {'$ref': '#/definitions/get'},
91 {
92 type: 'array',
93 minItems: 1,
94 uniqueItems: true,
95 items: {'$ref': '#/definitions/get'}
96 }
97 ]
98 },
99 push: {
100 anyOf: [
101 {'$ref': '#/definitions/push'},
102 {
103 type: 'array',
104 minItems: 1,
105 uniqueItems: true,
106 items: {
107 anyOf: [
108 {'$ref': '#/definitions/push'},
109 {'$ref': '#/definitions/uris'},
110 {'$ref': '#/definitions/globs'}
111 ]
112 }
113 }
114 ]
115 }
116 }
117 }
118}