1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | var MUTABLE_DATUM_FILE_TYPE = exports.MUTABLE_DATUM_FILE_TYPE = 1;
|
7 | var MUTABLE_DATUM_DIR_TYPE = exports.MUTABLE_DATUM_DIR_TYPE = 2;
|
8 |
|
9 | var OP_BASE58CHECK_PATTERN = exports.OP_BASE58CHECK_PATTERN = "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$";
|
10 | var OP_ADDRESS_PATTERN = exports.OP_ADDRESS_PATTERN = OP_BASE58CHECK_PATTERN;
|
11 | var OP_UUID_PATTERN = exports.OP_UUID_PATTERN = "^([0-9a-fA-F\-]+)$";
|
12 | var OP_HEX_PATTERN = exports.OP_HEX_PATTERN = "^([0-9a-fA-F]+)$";
|
13 | var OP_URLENCODED_NOSLASH_PATTERN = exports.OP_URLENCODED_NOSLASH_PATTERN = "^([a-zA-Z0-9\-_.~%]+)$";
|
14 | var OP_URLENCODED_PATTERN = exports.OP_URLENCODED_PATTERN = "^([a-zA-Z0-9\-_.~%/]+)$";
|
15 | var OP_URLENCODED_NOSLASH_OR_EMPTY_PATTERN = exports.OP_URLENCODED_NOSLASH_OR_EMPTY_PATTERN = "^([a-zA-Z0-9\-_.~%]*)$";
|
16 | var OP_URLENCODED_OR_EMPTY_PATTERN = exports.OP_URLENCODED_OR_EMPTY_PATTERN = "^([a-zA-Z0-9\-_.~%/]*)$";
|
17 | var OP_PUBKEY_PATTERN = exports.OP_PUBKEY_PATTERN = OP_HEX_PATTERN;
|
18 | var OP_BASE64_PATTERN = exports.OP_BASE64_PATTERN = "(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})";
|
19 |
|
20 | var SUCCESS_FAIL_SCHEMA = exports.SUCCESS_FAIL_SCHEMA = {
|
21 | anyOf: [{
|
22 | type: 'object',
|
23 | properties: {
|
24 | status: {
|
25 | type: 'boolean'
|
26 | }
|
27 | }
|
28 | }, {
|
29 | type: 'object',
|
30 | properties: {
|
31 | error: {
|
32 | type: 'string'
|
33 | }
|
34 | }
|
35 | }]
|
36 | };
|
37 |
|
38 | var MUTABLE_DATUM_SCHEMA_BASE_PROPERTIES = exports.MUTABLE_DATUM_SCHEMA_BASE_PROPERTIES = {
|
39 | type: {
|
40 | type: 'integer',
|
41 | minimum: MUTABLE_DATUM_FILE_TYPE,
|
42 | maximum: MUTABLE_DATUM_DIR_TYPE
|
43 | },
|
44 | owner: {
|
45 | type: 'string',
|
46 | pattern: OP_ADDRESS_PATTERN
|
47 | },
|
48 | uuid: {
|
49 | type: 'string',
|
50 | pattern: OP_UUID_PATTERN
|
51 | },
|
52 | readers: {
|
53 | type: 'array',
|
54 | items: {
|
55 | type: 'string',
|
56 | pattern: OP_ADDRESS_PATTERN
|
57 | }
|
58 | },
|
59 | reader_pubkeys: {
|
60 | type: 'array',
|
61 | items: {
|
62 | type: 'string',
|
63 | pattern: OP_HEX_PATTERN
|
64 | }
|
65 | },
|
66 | version: {
|
67 | type: 'integer'
|
68 | },
|
69 | proto_version: {
|
70 | type: 'integer'
|
71 | }
|
72 | };
|
73 |
|
74 | var MUTABLE_DATUM_SCHEMA_HEADER_PROPERTIES = exports.MUTABLE_DATUM_SCHEMA_HEADER_PROPERTIES = Object.assign({}, MUTABLE_DATUM_SCHEMA_BASE_PROPERTIES);
|
75 | MUTABLE_DATUM_SCHEMA_HEADER_PROPERTIES['data_hash'] = {
|
76 | type: 'string',
|
77 | pattern: OP_HEX_PATTERN
|
78 | };
|
79 |
|
80 | var MUTABLE_DATUM_INODE_HEADER_SCHEMA = exports.MUTABLE_DATUM_INODE_HEADER_SCHEMA = {
|
81 | type: 'object',
|
82 | properties: MUTABLE_DATUM_SCHEMA_HEADER_PROPERTIES,
|
83 | additionalProperties: false,
|
84 | required: Object.keys(MUTABLE_DATUM_SCHEMA_HEADER_PROPERTIES).filter(function (x) {
|
85 | return x != 'reader_pubkeys';
|
86 | })
|
87 | };
|
88 |
|
89 | var MUTABLE_DATUM_DIRENT_SCHEMA = exports.MUTABLE_DATUM_DIRENT_SCHEMA = {
|
90 | type: 'object',
|
91 | properties: {
|
92 | type: {
|
93 | type: 'integer',
|
94 | minimum: MUTABLE_DATUM_FILE_TYPE,
|
95 | maximum: MUTABLE_DATUM_DIR_TYPE
|
96 | },
|
97 | uuid: {
|
98 | type: 'string',
|
99 | pattern: OP_UUID_PATTERN
|
100 | },
|
101 | version: {
|
102 | type: 'integer'
|
103 | }
|
104 | },
|
105 | additionalProperties: false,
|
106 | required: ['type', 'uuid', 'version']
|
107 | };
|
108 |
|
109 | var MUTABLE_DATUM_DIR_IDATA_SCHEMA = exports.MUTABLE_DATUM_DIR_IDATA_SCHEMA = {
|
110 | type: 'object',
|
111 | properties: {
|
112 | children: {
|
113 | type: 'object',
|
114 | patternProperties: {
|
115 | OP_URLENCODED_NOSLASH_PATTERN: MUTABLE_DATUM_DIRENT_SCHEMA
|
116 | }
|
117 | },
|
118 | header: MUTABLE_DATUM_INODE_HEADER_SCHEMA
|
119 | },
|
120 | strict: true,
|
121 | required: ['children', 'header']
|
122 | };
|
123 |
|
124 | var MUTABLE_DATUM_FILE_SCHEMA_PROPERTIES = exports.MUTABLE_DATUM_FILE_SCHEMA_PROPERTIES = Object.assign({}, MUTABLE_DATUM_SCHEMA_BASE_PROPERTIES);
|
125 | MUTABLE_DATUM_FILE_SCHEMA_PROPERTIES['idata'] = {
|
126 | type: 'string',
|
127 | pattern: OP_BASE64_PATTERN
|
128 | };
|
129 |
|
130 | var MUTABLE_DATUM_DIR_SCHEMA_PROPERTIES = exports.MUTABLE_DATUM_DIR_SCHEMA_PROPERTIES = Object.assign({}, MUTABLE_DATUM_SCHEMA_BASE_PROPERTIES);
|
131 | MUTABLE_DATUM_DIR_SCHEMA_PROPERTIES['idata'] = Object.assign({}, MUTABLE_DATUM_DIR_IDATA_SCHEMA);
|
132 |
|
133 | var MUTABLE_DATUM_FILE_SCHEMA = exports.MUTABLE_DATUM_FILE_SCHEMA = {
|
134 | type: 'object',
|
135 | properties: MUTABLE_DATUM_FILE_SCHEMA_PROPERTIES,
|
136 | additionalProperties: false,
|
137 | required: Object.keys(MUTABLE_DATUM_FILE_SCHEMA_PROPERTIES).filter(function (x) {
|
138 | return x != 'reader_pubkeys';
|
139 | })
|
140 | };
|
141 |
|
142 | var MUTABLE_DATUM_DIR_SCHEMA = exports.MUTABLE_DATUM_DIR_SCHEMA = {
|
143 | type: 'object',
|
144 | properties: MUTABLE_DATUM_DIR_SCHEMA_PROPERTIES,
|
145 | additionalProperties: false,
|
146 | required: Object.keys(MUTABLE_DATUM_DIR_SCHEMA_PROPERTIES)
|
147 | };
|
148 |
|
149 | var MUTABLE_DATUM_INODE_SCHEMA = exports.MUTABLE_DATUM_INODE_SCHEMA = {
|
150 | anyOf: [Object.assign({}, MUTABLE_DATUM_FILE_SCHEMA), Object.assign({}, MUTABLE_DATUM_DIR_SCHEMA), Object.assign({}, MUTABLE_DATUM_INODE_HEADER_SCHEMA)]
|
151 | };
|
152 |
|
153 | var MUTABLE_DATUM_PATH_INFO_SCHEMA = exports.MUTABLE_DATUM_PATH_INFO_SCHEMA = {
|
154 | type: 'object',
|
155 | patternProperties: {
|
156 | OP_URLENCODED_PATTERN: {
|
157 | uuid: {
|
158 | type: 'string',
|
159 | pattern: OP_UUID_PATTERN
|
160 | },
|
161 | name: {
|
162 | type: 'string',
|
163 | pattern: OP_URLENCODED_NOSLASH_PATTERN
|
164 | },
|
165 | parent: {
|
166 | type: 'string',
|
167 | pattern: OP_URLENCODED_PATTERN
|
168 | },
|
169 | inode: {
|
170 | anyOf: [MUTABLE_DATUM_DIR_SCHEMA, MUTABLE_DATUM_FILE_SCHEMA, MUTABLE_DATUM_INODE_HEADER_SCHEMA]
|
171 | }
|
172 | }
|
173 | },
|
174 | additionalProperties: false
|
175 | };
|
176 |
|
177 | var MUTABLE_DATUM_RESPONSE_SCHEMA = exports.MUTABLE_DATUM_RESPONSE_SCHEMA = {
|
178 | type: 'object',
|
179 | properties: {
|
180 | status: {
|
181 | type: 'boolean'
|
182 | },
|
183 | file: MUTABLE_DATUM_FILE_SCHEMA,
|
184 | dir: MUTABLE_DATUM_DIR_SCHEMA,
|
185 | inode: MUTABLE_DATUM_INODE_SCHEMA
|
186 | },
|
187 | additionalProperties: false,
|
188 | required: ['status']
|
189 | };
|
190 |
|
191 | var MUTABLE_DATUM_EXTENDED_RESPONSE_SCHEMA = exports.MUTABLE_DATUM_EXTENDED_RESPONSE_SCHEMA = Object.assign({}, MUTABLE_DATUM_RESPONSE_SCHEMA);
|
192 | MUTABLE_DATUM_EXTENDED_RESPONSE_SCHEMA['path_info'] = MUTABLE_DATUM_PATH_INFO_SCHEMA;
|
193 |
|
194 | var DATASTORE_SCHEMA = exports.DATASTORE_SCHEMA = {
|
195 | type: 'object',
|
196 | properties: {
|
197 | type: {
|
198 | type: 'string',
|
199 | pattern: "([a-zA-Z0-9_]+)$"
|
200 | },
|
201 | pubkey: {
|
202 | type: 'string',
|
203 | pattern: OP_PUBKEY_PATTERN
|
204 | },
|
205 | drivers: {
|
206 | type: 'array',
|
207 | items: {
|
208 | type: 'string'
|
209 | }
|
210 | },
|
211 | device_ids: {
|
212 | type: 'array',
|
213 | items: {
|
214 | 'type': 'string'
|
215 | }
|
216 | },
|
217 | root_uuid: {
|
218 | type: 'string',
|
219 | pattern: OP_UUID_PATTERN
|
220 | }
|
221 | },
|
222 | additionalProperties: false,
|
223 | required: ['type', 'pubkey', 'drivers', 'device_ids', 'root_uuid']
|
224 | };
|
225 |
|
226 | var DATASTORE_RESPONSE_SCHEMA = exports.DATASTORE_RESPONSE_SCHEMA = {
|
227 | type: 'object',
|
228 | properties: {
|
229 | datastore: DATASTORE_SCHEMA
|
230 | },
|
231 | additionalProperties: false,
|
232 | required: ['datastore']
|
233 | };
|
234 |
|
235 | var DATASTORE_LOOKUP_PATH_ENTRY_SCHEMA = exports.DATASTORE_LOOKUP_PATH_ENTRY_SCHEMA = {
|
236 | type: 'object',
|
237 | properties: {
|
238 | name: {
|
239 | type: 'string',
|
240 | pattern: OP_URLENCODED_NOSLASH_OR_EMPTY_PATTERN
|
241 | },
|
242 | uuid: {
|
243 | type: 'string',
|
244 | pattern: OP_UUID_PATTERN
|
245 | },
|
246 | parent: {
|
247 | type: 'string',
|
248 | pattern: OP_URLENCODED_OR_EMPTY_PATTERN
|
249 | },
|
250 | inode: MUTABLE_DATUM_DIR_SCHEMA
|
251 | },
|
252 | additionalProperties: false,
|
253 | required: ['name', 'uuid', 'parent', 'inode']
|
254 | };
|
255 |
|
256 | var DATASTORE_LOOKUP_INODE_SCHEMA = exports.DATASTORE_LOOKUP_INODE_SCHEMA = {
|
257 | type: 'object',
|
258 | properties: {
|
259 | name: {
|
260 | type: 'string',
|
261 | pattern: OP_URLENCODED_NOSLASH_OR_EMPTY_PATTERN
|
262 | },
|
263 | uuid: {
|
264 | type: 'string',
|
265 | pattern: OP_UUID_PATTERN
|
266 | },
|
267 | parent: {
|
268 | type: 'string',
|
269 | pattern: OP_URLENCODED_OR_EMPTY_PATTERN
|
270 | },
|
271 | inode: {
|
272 | anyOf: [MUTABLE_DATUM_DIR_SCHEMA, MUTABLE_DATUM_FILE_SCHEMA, MUTABLE_DATUM_INODE_HEADER_SCHEMA]
|
273 | }
|
274 | },
|
275 | additionalProperties: false,
|
276 | required: ['name', 'uuid', 'parent', 'inode']
|
277 | };
|
278 |
|
279 | var DATASTORE_LOOKUP_RESPONSE_SCHEMA = exports.DATASTORE_LOOKUP_RESPONSE_SCHEMA = {
|
280 | type: 'object',
|
281 | properties: {
|
282 | inode: {
|
283 | anyOf: [MUTABLE_DATUM_DIR_SCHEMA, MUTABLE_DATUM_FILE_SCHEMA, MUTABLE_DATUM_INODE_HEADER_SCHEMA]
|
284 | },
|
285 | status: {
|
286 | type: 'boolean'
|
287 | }
|
288 | },
|
289 | additionalProperties: false,
|
290 | required: ['inode', 'status']
|
291 | };
|
292 |
|
293 | var DATASTORE_LOOKUP_EXTENDED_RESPONSE_SCHEMA = exports.DATASTORE_LOOKUP_EXTENDED_RESPONSE_SCHEMA = {
|
294 | type: 'object',
|
295 | properties: {
|
296 | path_info: {
|
297 | type: 'object',
|
298 | patternProperties: {
|
299 | OP_URLENCODED_OR_EMPTY_PATTERN: DATASTORE_LOOKUP_INODE_SCHEMA
|
300 | },
|
301 | additionalProperties: false
|
302 | },
|
303 | inode_info: DATASTORE_LOOKUP_INODE_SCHEMA,
|
304 | status: {
|
305 | type: 'boolean'
|
306 | }
|
307 | },
|
308 | additionalProperties: false,
|
309 | required: ['path_info', 'inode_info', 'status']
|
310 | };
|
311 |
|
312 | var CORE_ERROR_SCHEMA = exports.CORE_ERROR_SCHEMA = {
|
313 | type: 'object',
|
314 | properties: {
|
315 | error: {
|
316 | type: 'string'
|
317 | },
|
318 | errno: {
|
319 | type: 'integer'
|
320 | }
|
321 | },
|
322 | additionalProperties: false,
|
323 | required: ['errno', 'error']
|
324 | }; |
\ | No newline at end of file |