@smartlyio/oats-runtime 3.5.0 → 4.0.2
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.
- package/package.json +11 -11
- package/src/make.ts +6 -6
- package/src/reflection-type.ts +5 -3
- package/src/runtime.ts +2 -0
- package/src/union-discriminator.ts +2 -2
- package/src/value-class.ts +2 -2
- package/dist/client.d.ts +0 -43
- package/dist/client.js +0 -131
- package/dist/client.js.map +0 -1
- package/dist/make.d.ts +0 -123
- package/dist/make.js +0 -645
- package/dist/make.js.map +0 -1
- package/dist/reflection-type.d.ts +0 -92
- package/dist/reflection-type.js +0 -198
- package/dist/reflection-type.js.map +0 -1
- package/dist/runtime.d.ts +0 -35
- package/dist/runtime.js +0 -172
- package/dist/runtime.js.map +0 -1
- package/dist/server.d.ts +0 -84
- package/dist/server.js +0 -123
- package/dist/server.js.map +0 -1
- package/dist/union-discriminator.d.ts +0 -26
- package/dist/union-discriminator.js +0 -116
- package/dist/union-discriminator.js.map +0 -1
- package/dist/value-class.d.ts +0 -14
- package/dist/value-class.js +0 -29
- package/dist/value-class.js.map +0 -1
package/dist/make.js
DELETED
|
@@ -1,645 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeOneOfWithDiscriminator = exports.extractDiscriminatorValueMap = exports.extractDiscriminatorKeys = exports.mergeMappings = exports.createMakerWith = exports.createMaker = exports.fromReflection = exports.makeNullable = exports.makeBinary = exports.File = exports.FormBinary = exports.makeObject = exports.makeAllOf = exports.makeOneOf = exports.makeArray = exports.makeBoolean = exports.makeOptional = exports.makeEnum = exports.makeVoid = exports.makeAny = exports.makeInteger = exports.makeNumber = exports.makeString = exports.registerFormat = exports.Make = exports.validationErrorPrinter = exports.MakeError = void 0;
|
|
4
|
-
const assert = require("assert");
|
|
5
|
-
const safe_navigation_1 = require("@smartlyio/safe-navigation");
|
|
6
|
-
const _ = require("lodash");
|
|
7
|
-
const value_class_1 = require("./value-class");
|
|
8
|
-
const union_discriminator_1 = require("./union-discriminator");
|
|
9
|
-
const lodash_1 = require("lodash");
|
|
10
|
-
class MakeError extends Error {
|
|
11
|
-
constructor(errors) {
|
|
12
|
-
super('tried to get success value from error: ' + errors.map(validationErrorPrinter).join('\n'));
|
|
13
|
-
this.errors = errors;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.MakeError = MakeError;
|
|
17
|
-
function indent(i) {
|
|
18
|
-
const str = [];
|
|
19
|
-
while (i-- > 0) {
|
|
20
|
-
str.push(' ');
|
|
21
|
-
}
|
|
22
|
-
return str.join('');
|
|
23
|
-
}
|
|
24
|
-
function validationErrorPrinter(error, indentation = 0) {
|
|
25
|
-
if (typeof error.error === 'string') {
|
|
26
|
-
return `${indent(indentation)}${error.path.join('/')}: ${error.error}`;
|
|
27
|
-
}
|
|
28
|
-
const subErrors = error.error.errors.map(e => validationErrorPrinter(e, indentation + 1));
|
|
29
|
-
return `${indent(indentation)}${error.path.length > 0 ? error.path.join('/') + ': ' : ''}${error.error.groupMessage}\n${subErrors.join('\n')}`;
|
|
30
|
-
}
|
|
31
|
-
exports.validationErrorPrinter = validationErrorPrinter;
|
|
32
|
-
class Make {
|
|
33
|
-
constructor(value, errors) {
|
|
34
|
-
this.value = value;
|
|
35
|
-
this.errors = errors;
|
|
36
|
-
}
|
|
37
|
-
static ok(value) {
|
|
38
|
-
return new Make(value, []);
|
|
39
|
-
}
|
|
40
|
-
static error(errors) {
|
|
41
|
-
return new Make(null, errors);
|
|
42
|
-
}
|
|
43
|
-
isError() {
|
|
44
|
-
return this.errors.length > 0;
|
|
45
|
-
}
|
|
46
|
-
isSuccess() {
|
|
47
|
-
return !this.isError();
|
|
48
|
-
}
|
|
49
|
-
success(handler) {
|
|
50
|
-
if (this.isSuccess()) {
|
|
51
|
-
return this.value;
|
|
52
|
-
}
|
|
53
|
-
if (handler) {
|
|
54
|
-
return handler(this);
|
|
55
|
-
}
|
|
56
|
-
throw new MakeError(this.errors);
|
|
57
|
-
}
|
|
58
|
-
group(groupMessage) {
|
|
59
|
-
return new Make(null, [{ path: [], error: { groupMessage, errors: this.errors } }]);
|
|
60
|
-
}
|
|
61
|
-
errorPath(path) {
|
|
62
|
-
return new Make(null, this.errors.map(error => ({
|
|
63
|
-
path: [path, ...error.path],
|
|
64
|
-
error: error.error
|
|
65
|
-
})));
|
|
66
|
-
}
|
|
67
|
-
map(fn) {
|
|
68
|
-
if (this.isError()) {
|
|
69
|
-
return Make.error(this.errors);
|
|
70
|
-
}
|
|
71
|
-
if (this.isSuccess()) {
|
|
72
|
-
return Make.ok(fn(this.success()));
|
|
73
|
-
}
|
|
74
|
-
return assert.fail('neither failed or succesfull make');
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.Make = Make;
|
|
78
|
-
function getErrorWithValueMsg(msg, value) {
|
|
79
|
-
const stringified = typeof value === 'object' || typeof value === 'string' ? JSON.stringify(value) : String(value);
|
|
80
|
-
return error(`${msg}, but got \`${stringified}\` instead.`);
|
|
81
|
-
}
|
|
82
|
-
function error(error) {
|
|
83
|
-
return Make.error([{ path: [], error }]);
|
|
84
|
-
}
|
|
85
|
-
function registerFormat(format, maker) {
|
|
86
|
-
assert(!formats[format], `format ${format} is already registered`);
|
|
87
|
-
formats[format] = maker;
|
|
88
|
-
}
|
|
89
|
-
exports.registerFormat = registerFormat;
|
|
90
|
-
const formats = {};
|
|
91
|
-
function getFormatter(format) {
|
|
92
|
-
if (format === undefined) {
|
|
93
|
-
return () => Make.ok(undefined);
|
|
94
|
-
}
|
|
95
|
-
const formatter = formats[format];
|
|
96
|
-
if (!formatter) {
|
|
97
|
-
return () => Make.ok(undefined);
|
|
98
|
-
}
|
|
99
|
-
return formatter;
|
|
100
|
-
}
|
|
101
|
-
function getPatterner(pattern) {
|
|
102
|
-
if (pattern === undefined) {
|
|
103
|
-
return value => Make.ok(value);
|
|
104
|
-
}
|
|
105
|
-
try {
|
|
106
|
-
const reg = new RegExp(pattern);
|
|
107
|
-
return value => {
|
|
108
|
-
if (!reg.test(value)) {
|
|
109
|
-
return error(`${value} does not match pattern /${pattern}/`);
|
|
110
|
-
}
|
|
111
|
-
return Make.ok(undefined);
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
catch (e) {
|
|
115
|
-
if (e instanceof SyntaxError) {
|
|
116
|
-
throw new Error("pattern for 'type: string' is not valid: " + e.message);
|
|
117
|
-
}
|
|
118
|
-
throw e;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
function makeString(format, pattern, minLength, maxLength) {
|
|
122
|
-
const formatter = getFormatter(format);
|
|
123
|
-
const patterner = getPatterner(pattern);
|
|
124
|
-
return (value) => {
|
|
125
|
-
if (typeof value !== 'string') {
|
|
126
|
-
return getErrorWithValueMsg('expected a string', value);
|
|
127
|
-
}
|
|
128
|
-
if (minLength != null && value.length < minLength) {
|
|
129
|
-
return getErrorWithValueMsg('expected a string with a length of at least ' + minLength, value);
|
|
130
|
-
}
|
|
131
|
-
if (maxLength != null && value.length > maxLength) {
|
|
132
|
-
return getErrorWithValueMsg('expected a string with a length of at maximum ' + maxLength, value);
|
|
133
|
-
}
|
|
134
|
-
const formatted = formatter(value);
|
|
135
|
-
if (formatted.isError()) {
|
|
136
|
-
return formatted;
|
|
137
|
-
}
|
|
138
|
-
const patterned = patterner(value);
|
|
139
|
-
if (patterned.isError()) {
|
|
140
|
-
return patterned;
|
|
141
|
-
}
|
|
142
|
-
return Make.ok(value);
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
exports.makeString = makeString;
|
|
146
|
-
function makeNumber(min, max) {
|
|
147
|
-
return makeFloatOrInteger(false, min, max);
|
|
148
|
-
}
|
|
149
|
-
exports.makeNumber = makeNumber;
|
|
150
|
-
function makeInteger(min, max) {
|
|
151
|
-
return makeFloatOrInteger(true, min, max);
|
|
152
|
-
}
|
|
153
|
-
exports.makeInteger = makeInteger;
|
|
154
|
-
function makeFloatOrInteger(isInteger, min, max) {
|
|
155
|
-
return (x, { parseNumericStrings = false } = {}) => {
|
|
156
|
-
let value;
|
|
157
|
-
if (typeof x === 'number') {
|
|
158
|
-
value = x;
|
|
159
|
-
}
|
|
160
|
-
else if (typeof x === 'string' && parseNumericStrings) {
|
|
161
|
-
value = x.trim() === '' ? NaN : Number(x);
|
|
162
|
-
if (!Number.isFinite(value)) {
|
|
163
|
-
return getErrorWithValueMsg('expected a number', x);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
return getErrorWithValueMsg('expected a number', x);
|
|
168
|
-
}
|
|
169
|
-
if (isInteger && !Number.isInteger(value)) {
|
|
170
|
-
return getErrorWithValueMsg('expected an integer', x);
|
|
171
|
-
}
|
|
172
|
-
if (min != null && value < min) {
|
|
173
|
-
return getErrorWithValueMsg('expected a number greater than ' + min, value);
|
|
174
|
-
}
|
|
175
|
-
if (max != null && value > max) {
|
|
176
|
-
return getErrorWithValueMsg('expected a number smaller than ' + max, value);
|
|
177
|
-
}
|
|
178
|
-
return Make.ok(value);
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
function checkAny(value) {
|
|
182
|
-
return Make.ok(_.cloneDeep(value));
|
|
183
|
-
}
|
|
184
|
-
function makeAny() {
|
|
185
|
-
return checkAny;
|
|
186
|
-
}
|
|
187
|
-
exports.makeAny = makeAny;
|
|
188
|
-
function checkVoid(value) {
|
|
189
|
-
if (value != null) {
|
|
190
|
-
return getErrorWithValueMsg('expected no value', value);
|
|
191
|
-
}
|
|
192
|
-
return Make.ok(value);
|
|
193
|
-
}
|
|
194
|
-
function makeVoid() {
|
|
195
|
-
return checkVoid;
|
|
196
|
-
}
|
|
197
|
-
exports.makeVoid = makeVoid;
|
|
198
|
-
function makeEnum(...args) {
|
|
199
|
-
const err = 'expected value to be one of ' + args.join(', ');
|
|
200
|
-
return (value) => {
|
|
201
|
-
if (args.indexOf(value) < 0) {
|
|
202
|
-
return getErrorWithValueMsg(err, value);
|
|
203
|
-
}
|
|
204
|
-
return Make.ok(value);
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
exports.makeEnum = makeEnum;
|
|
208
|
-
function makeOptional(maker) {
|
|
209
|
-
return { optional: maker };
|
|
210
|
-
}
|
|
211
|
-
exports.makeOptional = makeOptional;
|
|
212
|
-
function makeBoolean() {
|
|
213
|
-
return (x, { parseBooleanStrings = false } = {}) => {
|
|
214
|
-
let value;
|
|
215
|
-
if (typeof x === 'boolean') {
|
|
216
|
-
value = x;
|
|
217
|
-
}
|
|
218
|
-
else if (parseBooleanStrings && x === 'true') {
|
|
219
|
-
value = true;
|
|
220
|
-
}
|
|
221
|
-
else if (parseBooleanStrings && x === 'false') {
|
|
222
|
-
value = false;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
return getErrorWithValueMsg('expected a boolean', x);
|
|
226
|
-
}
|
|
227
|
-
return Make.ok(value);
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
exports.makeBoolean = makeBoolean;
|
|
231
|
-
function makeArray(maker, minSize, maxSize) {
|
|
232
|
-
return (x, opts) => {
|
|
233
|
-
let value;
|
|
234
|
-
if (Array.isArray(x)) {
|
|
235
|
-
value = x;
|
|
236
|
-
}
|
|
237
|
-
else if (opts === null || opts === void 0 ? void 0 : opts.allowConvertForArrayType) {
|
|
238
|
-
value = [x];
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
return getErrorWithValueMsg('expected an array', x);
|
|
242
|
-
}
|
|
243
|
-
if (minSize != null && value.length < minSize) {
|
|
244
|
-
return getErrorWithValueMsg(`expected an array of minimum length ${minSize}`, value);
|
|
245
|
-
}
|
|
246
|
-
if (maxSize != null && value.length > maxSize) {
|
|
247
|
-
return getErrorWithValueMsg(`expected an array of maximum length ${maxSize}`, value);
|
|
248
|
-
}
|
|
249
|
-
const result = [];
|
|
250
|
-
for (let index = 0; index < value.length; index++) {
|
|
251
|
-
const item = value[index];
|
|
252
|
-
const mapped = maker(item, opts);
|
|
253
|
-
if (mapped.isError()) {
|
|
254
|
-
return mapped.errorPath('[' + index + ']');
|
|
255
|
-
}
|
|
256
|
-
result.push(mapped.success());
|
|
257
|
-
}
|
|
258
|
-
return Make.ok(result);
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
exports.makeArray = makeArray;
|
|
262
|
-
function makeOneOf(...options) {
|
|
263
|
-
return (value, opts) => {
|
|
264
|
-
let errors = [];
|
|
265
|
-
if (options.length === 0) {
|
|
266
|
-
errors.push(error('no options given for oneof'));
|
|
267
|
-
}
|
|
268
|
-
let success;
|
|
269
|
-
let preferredSuccess;
|
|
270
|
-
for (const option of options) {
|
|
271
|
-
const mapped = option(value, opts);
|
|
272
|
-
if (mapped.isSuccess()) {
|
|
273
|
-
if (value instanceof value_class_1.ValueClass && mapped.success() === value) {
|
|
274
|
-
if (preferredSuccess) {
|
|
275
|
-
return error('multiple preferred options match');
|
|
276
|
-
}
|
|
277
|
-
preferredSuccess = mapped;
|
|
278
|
-
}
|
|
279
|
-
else if (success) {
|
|
280
|
-
return error('multiple options match');
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
success = mapped;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
else {
|
|
287
|
-
errors = [...errors, mapped];
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
if (preferredSuccess || success) {
|
|
291
|
-
return preferredSuccess || success;
|
|
292
|
-
}
|
|
293
|
-
return Make.error(errors.map((error, i) => error.group('- option ' + (i + 1)).errors[0])).group('no option of oneOf matched');
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
exports.makeOneOf = makeOneOf;
|
|
297
|
-
function makeAllOf(...all) {
|
|
298
|
-
return (value, opts) => {
|
|
299
|
-
for (const make of all) {
|
|
300
|
-
const result = make(value, opts);
|
|
301
|
-
if (result.isError()) {
|
|
302
|
-
return result.errorPath('(allOf)');
|
|
303
|
-
}
|
|
304
|
-
value = result.success();
|
|
305
|
-
}
|
|
306
|
-
return Make.ok(value);
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
exports.makeAllOf = makeAllOf;
|
|
310
|
-
function isMagic(field) {
|
|
311
|
-
return ['__proto__', 'constructor'].indexOf(field) >= 0;
|
|
312
|
-
}
|
|
313
|
-
function makeObject(props, additionalProp, comparisorOrder) {
|
|
314
|
-
return (value, opts) => {
|
|
315
|
-
if (typeof value !== 'object' || value == null || Array.isArray(value)) {
|
|
316
|
-
return getErrorWithValueMsg('expected an object', value);
|
|
317
|
-
}
|
|
318
|
-
comparisorOrder || (comparisorOrder = Object.keys(props));
|
|
319
|
-
const result = {};
|
|
320
|
-
for (const index of comparisorOrder) {
|
|
321
|
-
if (isMagic(index)) {
|
|
322
|
-
return error(`Using ${index} as field of an object is not allowed`);
|
|
323
|
-
}
|
|
324
|
-
let maker = props[index];
|
|
325
|
-
if (!maker) {
|
|
326
|
-
return error(`Prop maker not found for key ${index}. This is likely a bug in oats`);
|
|
327
|
-
}
|
|
328
|
-
if (maker.optional) {
|
|
329
|
-
if (!(index in value) || value[index] === undefined) {
|
|
330
|
-
continue;
|
|
331
|
-
}
|
|
332
|
-
maker = maker.optional;
|
|
333
|
-
}
|
|
334
|
-
const propResult = maker(value[index], opts);
|
|
335
|
-
if (propResult.isError()) {
|
|
336
|
-
return propResult.errorPath(index);
|
|
337
|
-
}
|
|
338
|
-
result[index] = propResult.success();
|
|
339
|
-
}
|
|
340
|
-
for (const index of Object.keys(value)) {
|
|
341
|
-
if (isMagic(index)) {
|
|
342
|
-
return error(`Using ${index} as objects additional field is not allowed.`);
|
|
343
|
-
}
|
|
344
|
-
if (props[index]) {
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
if (!additionalProp) {
|
|
348
|
-
if ((0, safe_navigation_1.default)(opts).unknownField.$ === 'drop') {
|
|
349
|
-
continue;
|
|
350
|
-
}
|
|
351
|
-
return error('unexpected property').errorPath(index);
|
|
352
|
-
}
|
|
353
|
-
const propResult = additionalProp(value[index], opts);
|
|
354
|
-
if (propResult.isError()) {
|
|
355
|
-
return propResult.errorPath(index);
|
|
356
|
-
}
|
|
357
|
-
result[index] = propResult.success();
|
|
358
|
-
}
|
|
359
|
-
return Make.ok(result);
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
exports.makeObject = makeObject;
|
|
363
|
-
class FormBinary {
|
|
364
|
-
constructor(binary, options) {
|
|
365
|
-
this.binary = binary;
|
|
366
|
-
this.options = options;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
exports.FormBinary = FormBinary;
|
|
370
|
-
var FileBrand;
|
|
371
|
-
(function (FileBrand) {
|
|
372
|
-
})(FileBrand || (FileBrand = {}));
|
|
373
|
-
class File {
|
|
374
|
-
constructor(path, size, name) {
|
|
375
|
-
this.path = path;
|
|
376
|
-
this.size = size;
|
|
377
|
-
this.name = name;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
exports.File = File;
|
|
381
|
-
function checkBinary(value) {
|
|
382
|
-
if (value instanceof File) {
|
|
383
|
-
return Make.ok(value);
|
|
384
|
-
}
|
|
385
|
-
if (value instanceof Buffer) {
|
|
386
|
-
return Make.ok(value);
|
|
387
|
-
}
|
|
388
|
-
if (value instanceof FormBinary) {
|
|
389
|
-
return Make.ok(value);
|
|
390
|
-
}
|
|
391
|
-
return getErrorWithValueMsg('expected a binary value', value);
|
|
392
|
-
}
|
|
393
|
-
function makeBinary() {
|
|
394
|
-
// note: do *not* construct the instance here
|
|
395
|
-
// only check that the instance is ok. The adapter needs to construct the instance itself.
|
|
396
|
-
// if we would construct the intance from say a { path: nnnn } here that would allow the client to
|
|
397
|
-
// supply any path in the request and possibly leak or otherwise cause havoc on any file in the fs
|
|
398
|
-
return checkBinary;
|
|
399
|
-
}
|
|
400
|
-
exports.makeBinary = makeBinary;
|
|
401
|
-
function makeNullable(maker) {
|
|
402
|
-
return (value, opts) => {
|
|
403
|
-
if (value == null) {
|
|
404
|
-
return Make.ok(value);
|
|
405
|
-
}
|
|
406
|
-
return maker(value, opts);
|
|
407
|
-
};
|
|
408
|
-
}
|
|
409
|
-
exports.makeNullable = makeNullable;
|
|
410
|
-
function isScalar(type) {
|
|
411
|
-
if (type.type === 'named') {
|
|
412
|
-
return isScalar(type.reference.definition);
|
|
413
|
-
}
|
|
414
|
-
return ['array', 'object', 'union', 'intersection', 'unknown'].indexOf(type.type) < 0;
|
|
415
|
-
}
|
|
416
|
-
function enumOptions(type) {
|
|
417
|
-
var _a;
|
|
418
|
-
if (type.type === 'null') {
|
|
419
|
-
return 1;
|
|
420
|
-
}
|
|
421
|
-
if (type.type === 'named') {
|
|
422
|
-
return enumOptions(type.reference.definition);
|
|
423
|
-
}
|
|
424
|
-
if (type.type === 'string' ||
|
|
425
|
-
type.type === 'boolean' ||
|
|
426
|
-
type.type === 'number' ||
|
|
427
|
-
type.type === 'integer') {
|
|
428
|
-
return ((_a = type.enum) === null || _a === void 0 ? void 0 : _a.length) || null;
|
|
429
|
-
}
|
|
430
|
-
return null;
|
|
431
|
-
}
|
|
432
|
-
var Priority;
|
|
433
|
-
(function (Priority) {
|
|
434
|
-
Priority[Priority["Tag"] = 0] = "Tag";
|
|
435
|
-
Priority[Priority["Enum"] = 1] = "Enum";
|
|
436
|
-
Priority[Priority["Pattern"] = 2] = "Pattern";
|
|
437
|
-
Priority[Priority["Required"] = 3] = "Required";
|
|
438
|
-
Priority[Priority["Scalar"] = 4] = "Scalar";
|
|
439
|
-
Priority[Priority["NonScalar"] = 5] = "NonScalar";
|
|
440
|
-
})(Priority || (Priority = {}));
|
|
441
|
-
function priority(v) {
|
|
442
|
-
// check scalars first to avoid constructing trees unnecessarily
|
|
443
|
-
if (isScalar(v.value)) {
|
|
444
|
-
const enums = enumOptions(v.value);
|
|
445
|
-
if (enums !== null) {
|
|
446
|
-
// high chance this is a union type tag
|
|
447
|
-
if (enums === 1) {
|
|
448
|
-
return Priority.Tag;
|
|
449
|
-
}
|
|
450
|
-
// enum matches less things than non enum
|
|
451
|
-
return Priority.Enum;
|
|
452
|
-
}
|
|
453
|
-
if (v.value.type === 'string') {
|
|
454
|
-
// a pattern matches less things than a non pattern so lets try this first
|
|
455
|
-
if (v.value.pattern) {
|
|
456
|
-
return Priority.Pattern;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
if (v.required) {
|
|
460
|
-
return Priority.Required;
|
|
461
|
-
}
|
|
462
|
-
return Priority.Scalar;
|
|
463
|
-
}
|
|
464
|
-
return Priority.NonScalar;
|
|
465
|
-
}
|
|
466
|
-
function fromObjectReflection(type) {
|
|
467
|
-
const comparisonOrder = Object.keys(type.properties).sort((aKey, bKey) => {
|
|
468
|
-
const a = type.properties[aKey];
|
|
469
|
-
const b = type.properties[bKey];
|
|
470
|
-
return priority(a) - priority(b);
|
|
471
|
-
});
|
|
472
|
-
return makeObject(Object.entries(type.properties).reduce((memo, [key, prop]) => (Object.assign(Object.assign({}, memo), { [key]: prop.required ? fromReflection(prop.value) : { optional: fromReflection(prop.value) } })), {}), type.additionalProperties
|
|
473
|
-
? type.additionalProperties === true
|
|
474
|
-
? makeAny()
|
|
475
|
-
: fromReflection(type.additionalProperties)
|
|
476
|
-
: undefined, comparisonOrder);
|
|
477
|
-
}
|
|
478
|
-
function fromUnionReflection(types) {
|
|
479
|
-
const { discriminator, undiscriminated } = (0, union_discriminator_1.discriminateUnion)(types);
|
|
480
|
-
const untaggedMaker = undiscriminated.length > 0
|
|
481
|
-
? [makeOneOf(...undiscriminated.map(type => fromReflection(type)))]
|
|
482
|
-
: [];
|
|
483
|
-
if (!discriminator) {
|
|
484
|
-
return makeOneOf(...types.map(type => fromReflection(type)));
|
|
485
|
-
}
|
|
486
|
-
const discriminatedMakers = new Map();
|
|
487
|
-
for (const [key, t] of discriminator.map) {
|
|
488
|
-
// note that we need to check the undiscriminated values also as those *might* match also
|
|
489
|
-
discriminatedMakers.set(key, makeOneOf(...[...untaggedMaker, fromReflection(t)]));
|
|
490
|
-
}
|
|
491
|
-
return (value, opts) => {
|
|
492
|
-
if (value && typeof value === 'object' && !Array.isArray(value) && value[discriminator.key]) {
|
|
493
|
-
const discriminatedType = discriminatedMakers.get(value[discriminator.key]);
|
|
494
|
-
if (discriminatedType) {
|
|
495
|
-
return discriminatedType(value, opts);
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
// we know that none of the discriminated types can match as the tag value did not match
|
|
499
|
-
// so its enough to check the non discriminated types
|
|
500
|
-
if (untaggedMaker[0]) {
|
|
501
|
-
return untaggedMaker[0](value, opts);
|
|
502
|
-
}
|
|
503
|
-
return error(`No value matching discriminator key ${discriminator.key}`);
|
|
504
|
-
};
|
|
505
|
-
}
|
|
506
|
-
function fromReflection(type) {
|
|
507
|
-
if (type.enum) {
|
|
508
|
-
return makeEnum(...type.enum);
|
|
509
|
-
}
|
|
510
|
-
switch (type.type) {
|
|
511
|
-
case 'integer':
|
|
512
|
-
return makeInteger(type.minimum, type.maximum);
|
|
513
|
-
case 'number':
|
|
514
|
-
return makeNumber(type.minimum, type.maximum);
|
|
515
|
-
case 'string':
|
|
516
|
-
return makeString(type.format, type.pattern, type.minLength, type.maxLength);
|
|
517
|
-
case 'boolean':
|
|
518
|
-
return makeBoolean();
|
|
519
|
-
case 'array':
|
|
520
|
-
return makeArray(fromReflection(type.items), type.minItems, type.maxItems);
|
|
521
|
-
case 'object':
|
|
522
|
-
return fromObjectReflection(type);
|
|
523
|
-
case 'void':
|
|
524
|
-
return makeVoid();
|
|
525
|
-
case 'null':
|
|
526
|
-
return makeEnum(null);
|
|
527
|
-
case 'union':
|
|
528
|
-
return fromUnionReflection(type.options);
|
|
529
|
-
case 'intersection':
|
|
530
|
-
return makeAllOf(...type.options.map(req => fromReflection(req)));
|
|
531
|
-
case 'named':
|
|
532
|
-
return type.reference.maker;
|
|
533
|
-
case 'unknown':
|
|
534
|
-
return makeAny();
|
|
535
|
-
case 'binary':
|
|
536
|
-
return makeBinary();
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
exports.fromReflection = fromReflection;
|
|
540
|
-
function createMaker(fun) {
|
|
541
|
-
let cached;
|
|
542
|
-
return (value, opts) => {
|
|
543
|
-
if (!cached) {
|
|
544
|
-
cached = fun();
|
|
545
|
-
}
|
|
546
|
-
return cached(value, opts);
|
|
547
|
-
};
|
|
548
|
-
}
|
|
549
|
-
exports.createMaker = createMaker;
|
|
550
|
-
function createMakerWith(constructor) {
|
|
551
|
-
return (value, opts) => {
|
|
552
|
-
if (value instanceof constructor) {
|
|
553
|
-
return Make.ok(value);
|
|
554
|
-
}
|
|
555
|
-
try {
|
|
556
|
-
return Make.ok(new constructor(value, opts));
|
|
557
|
-
}
|
|
558
|
-
catch (e) {
|
|
559
|
-
if (e instanceof MakeError) {
|
|
560
|
-
return Make.error(e.errors);
|
|
561
|
-
}
|
|
562
|
-
throw e;
|
|
563
|
-
}
|
|
564
|
-
};
|
|
565
|
-
}
|
|
566
|
-
exports.createMakerWith = createMakerWith;
|
|
567
|
-
/**
|
|
568
|
-
* Merge multiple mappings into one set of mappings
|
|
569
|
-
*
|
|
570
|
-
* Throw error if there are duplicate koys
|
|
571
|
-
* @deprecated
|
|
572
|
-
*/
|
|
573
|
-
function mergeMappings(...mappings) {
|
|
574
|
-
return mappings.reduce((memo, current) => {
|
|
575
|
-
_.forEach(current, (maker, key) => {
|
|
576
|
-
if (memo[key]) {
|
|
577
|
-
throw new Error(`Value ${key} already has mapping`);
|
|
578
|
-
}
|
|
579
|
-
memo[key] = maker;
|
|
580
|
-
});
|
|
581
|
-
return memo;
|
|
582
|
-
}, {});
|
|
583
|
-
}
|
|
584
|
-
exports.mergeMappings = mergeMappings;
|
|
585
|
-
function extractDiscriminatorKeys(discriminatorField, typeObjectRef) {
|
|
586
|
-
const typeObject = typeObjectRef.type === 'named' ? typeObjectRef.reference.definition : typeObjectRef;
|
|
587
|
-
if (typeObject.type === 'union') {
|
|
588
|
-
const keys = typeObject.options.map(type => extractDiscriminatorKeys(discriminatorField, type));
|
|
589
|
-
if (!(0, lodash_1.isEqual)(keys[0], (0, lodash_1.uniq)(keys.flat(1)))) {
|
|
590
|
-
throw new Error('All values from union need to have same discriminator keys');
|
|
591
|
-
}
|
|
592
|
-
return keys[0];
|
|
593
|
-
}
|
|
594
|
-
if (typeObject.type !== 'object') {
|
|
595
|
-
throw new Error('Invalid type used for discriminator: type is not an object' + JSON.stringify(typeObject));
|
|
596
|
-
}
|
|
597
|
-
const fieldSchemaRef = typeObject.properties[discriminatorField].value;
|
|
598
|
-
const fieldSchema = fieldSchemaRef.type === 'named' ? fieldSchemaRef.reference.definition : fieldSchemaRef;
|
|
599
|
-
if (fieldSchema.type === 'union') {
|
|
600
|
-
return extractDiscriminatorKeys(discriminatorField, fieldSchemaRef);
|
|
601
|
-
}
|
|
602
|
-
if (fieldSchema.type !== 'string') {
|
|
603
|
-
throw new Error('Invalid type used for discriminator: no value defined ' + JSON.stringify(typeObject));
|
|
604
|
-
}
|
|
605
|
-
return fieldSchema.enum || [];
|
|
606
|
-
}
|
|
607
|
-
exports.extractDiscriminatorKeys = extractDiscriminatorKeys;
|
|
608
|
-
/** @deprecated */
|
|
609
|
-
function extractDiscriminatorValueMap(discriminatorField, typeObject) {
|
|
610
|
-
const keys = extractDiscriminatorKeys(discriminatorField, typeObject.definition);
|
|
611
|
-
return keys.reduce((memo, e) => (Object.assign(Object.assign({}, memo), { [e]: typeObject.maker })), {});
|
|
612
|
-
}
|
|
613
|
-
exports.extractDiscriminatorValueMap = extractDiscriminatorValueMap;
|
|
614
|
-
/**
|
|
615
|
-
* Make oneOf with the discriminator support
|
|
616
|
-
*
|
|
617
|
-
* Will use given mapping to find correct maker. If optional importedTypes are provided, will extract
|
|
618
|
-
* extra mapping keys from them.
|
|
619
|
-
*
|
|
620
|
-
* @deprecated
|
|
621
|
-
*
|
|
622
|
-
* @param discriminatorField Field to use as discriminator
|
|
623
|
-
* @param mapping Mappings that we should use to determine target makers
|
|
624
|
-
* @param importedTypes Optional types where we should extract enum values for makers
|
|
625
|
-
*/
|
|
626
|
-
function makeOneOfWithDiscriminator(discriminatorField, mapping, importedTypes) {
|
|
627
|
-
const fullMapping = mergeMappings(mapping, ...(importedTypes !== null && importedTypes !== void 0 ? importedTypes : []).map((type) => extractDiscriminatorValueMap(discriminatorField, type)));
|
|
628
|
-
return (value, opts) => {
|
|
629
|
-
if (typeof value !== 'object') {
|
|
630
|
-
return error('value for oneOf with discriminator needs to be an object');
|
|
631
|
-
}
|
|
632
|
-
let discriminatorValue;
|
|
633
|
-
if (!(discriminatorField in value) ||
|
|
634
|
-
typeof (discriminatorValue = value[discriminatorField]) !== 'string') {
|
|
635
|
-
return error(`value for discriminator field "${discriminatorField}" must be a string but value was "${discriminatorValue}" instead`);
|
|
636
|
-
}
|
|
637
|
-
const maker = fullMapping[discriminatorValue];
|
|
638
|
-
if (!maker) {
|
|
639
|
-
return error(`unexpected value ${JSON.stringify(discriminatorValue)} in field "${discriminatorField}" which is used as discriminator`);
|
|
640
|
-
}
|
|
641
|
-
return maker(value, opts);
|
|
642
|
-
};
|
|
643
|
-
}
|
|
644
|
-
exports.makeOneOfWithDiscriminator = makeOneOfWithDiscriminator;
|
|
645
|
-
//# sourceMappingURL=make.js.map
|
package/dist/make.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make.js","sourceRoot":"","sources":["../src/make.ts"],"names":[],"mappings":"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"}
|