ac-convert-json-schema-to-mongoose 0.3.4 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +190 -190
- package/LICENSE.md +21 -21
- package/README.md +92 -92
- package/dist/app.d.ts +1 -0
- package/{app.js → dist/app.js} +32 -31
- package/dist/index.d.ts +2 -0
- package/{index.js → dist/index.js} +6 -4
- package/dist/lib/json-schema.d.ts +6 -0
- package/{lib → dist/lib}/json-schema.js +108 -107
- package/dist/test/json-schema.spec.d.ts +1 -0
- package/dist/test/json-schema.spec.js +82 -0
- package/package.json +45 -37
- package/.travis.yml +0 -4
- package/app.js.map +0 -1
- package/app.ts +0 -32
- package/index.js.map +0 -1
- package/index.ts +0 -3
- package/json-schema-to-mongoose.d.ts +0 -7
- package/lib/json-schema.js.map +0 -1
- package/lib/json-schema.ts +0 -146
- package/typings/jasmine/jasmine.d.ts +0 -442
- package/typings/lodash/lodash.d.ts +0 -6427
- package/typings/mongoose/mongoose.d.ts +0 -455
- package/typings/node/node.d.ts +0 -1334
- package/typings/typings.d.ts +0 -0
package/{app.js → dist/app.js}
RENAMED
@@ -1,31 +1,32 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
4
|
-
|
5
|
-
yep: {
|
6
|
-
type: 'string', pattern: '^\\d{3}$'
|
7
|
-
}, a: {
|
8
|
-
type: 'array', items: {
|
9
|
-
type: 'object', properties: {
|
10
|
-
num: { type: 'number' }, str: { type: 'string' }
|
11
|
-
}
|
12
|
-
}
|
13
|
-
}, idSpec: {
|
14
|
-
type: 'object', properties: {
|
15
|
-
id: { $ref: 'yep' }, arr: { $ref: 'a' }
|
16
|
-
}
|
17
|
-
}
|
18
|
-
};
|
19
|
-
// noinspection ReservedWordAsName
|
20
|
-
|
21
|
-
type: 'object', properties: {
|
22
|
-
id: { $ref: 'yep' }, arr: { $ref: 'a' }, address: {
|
23
|
-
type: 'object', properties: {
|
24
|
-
street: { type: 'integer', default: 44, minimum: 0, maximum: 50 },
|
25
|
-
houseColor: { type: 'string', default: '[Function=Date.now]', format: 'date-time' }
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
};
|
30
|
-
|
31
|
-
console.dir(result, { depth: null });
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const json_schema_1 = require("./lib/json-schema");
|
4
|
+
const refs = {
|
5
|
+
yep: {
|
6
|
+
type: 'string', pattern: '^\\d{3}$'
|
7
|
+
}, a: {
|
8
|
+
type: 'array', items: {
|
9
|
+
type: 'object', properties: {
|
10
|
+
num: { type: 'number' }, str: { type: 'string' }
|
11
|
+
}
|
12
|
+
}
|
13
|
+
}, idSpec: {
|
14
|
+
type: 'object', properties: {
|
15
|
+
id: { $ref: 'yep' }, arr: { $ref: 'a' }
|
16
|
+
}
|
17
|
+
}
|
18
|
+
};
|
19
|
+
// noinspection ReservedWordAsName
|
20
|
+
const valid = {
|
21
|
+
type: 'object', properties: {
|
22
|
+
id: { $ref: 'yep' }, arr: { $ref: 'a' }, address: {
|
23
|
+
type: 'object', properties: {
|
24
|
+
street: { type: 'integer', default: 44, minimum: 0, maximum: 50 },
|
25
|
+
houseColor: { type: 'string', default: '[Function=Date.now]', format: 'date-time' }
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
};
|
30
|
+
const result = (0, json_schema_1.default)(refs, valid);
|
31
|
+
console.dir(result, { depth: null });
|
32
|
+
//# sourceMappingURL=app.js.map
|
package/dist/index.d.ts
ADDED
@@ -1,4 +1,6 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
4
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createMongooseSchema = void 0;
|
4
|
+
const json_schema_1 = require("./lib/json-schema");
|
5
|
+
exports.createMongooseSchema = json_schema_1.default;
|
6
|
+
//# sourceMappingURL=index.js.map
|
@@ -1,107 +1,108 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
'#/definitions/objectid': mongoose.Schema.Types.ObjectId, '#/definitions/dateOrDatetime': Date
|
8
|
-
};
|
9
|
-
|
10
|
-
return (0 <= parentSchema.required.indexOf(key) && !_.isPlainObject(subschema)) ? {
|
11
|
-
type: subschema, required: true
|
12
|
-
} : subschema;
|
13
|
-
};
|
14
|
-
|
15
|
-
return (0 <= parentSchema.required.indexOf(key)) ? !_.isPlainObject(subschema) ? {
|
16
|
-
type: subschema, required: true
|
17
|
-
} : subschema.hasOwnProperty('type') ? _.assign(subschema, { required: true }) : subschema : subschema;
|
18
|
-
};
|
19
|
-
// noinspection ReservedWordAsName
|
20
|
-
|
21
|
-
/**
|
22
|
-
* default value
|
23
|
-
*/
|
24
|
-
default:
|
25
|
-
|
26
|
-
.replace(/\\_/g, '`underscore`')
|
27
|
-
.replace(/_/g, ' ')
|
28
|
-
.replace(/`underscore`/g, '_');
|
29
|
-
// noinspection ReservedWordAsName,DynamicallyGeneratedCodeJS
|
30
|
-
return { default: eval(func) || default_ };
|
31
|
-
},
|
32
|
-
/**
|
33
|
-
* Pattern for value to match
|
34
|
-
*/
|
35
|
-
pattern:
|
36
|
-
type:
|
37
|
-
minLength:
|
38
|
-
maxLength:
|
39
|
-
minimum:
|
40
|
-
maximum:
|
41
|
-
enum:
|
42
|
-
};
|
43
|
-
|
44
|
-
|
45
|
-
// noinspection AssignmentResultUsedJS
|
46
|
-
return (func = schemaParamsToMongoose[key]) ? _.assign(acc, func(val)) : acc;
|
47
|
-
};
|
48
|
-
|
49
|
-
throw new Error('Unsupported $ref value: ' + jsonSchema.$ref);
|
50
|
-
};
|
51
|
-
|
52
|
-
throw new Error('Unsupported JSON schema type, `' + jsonSchema.type + '`');
|
53
|
-
};
|
54
|
-
|
55
|
-
if (!_.isPlainObject(jsonSchema)) {
|
56
|
-
unsupportedJsonSchema(jsonSchema);
|
57
|
-
}
|
58
|
-
|
59
|
-
return (result =
|
60
|
-
isRef ?
|
61
|
-
isMongooseRef ?
|
62
|
-
mongooseRef :
|
63
|
-
subSchema ?
|
64
|
-
convertV(version, refSchemas, subSchema) :
|
65
|
-
unsupportedRefValue(jsonSchema)
|
66
|
-
:
|
67
|
-
isTypeDate ?
|
68
|
-
_.reduce(_.omit(jsonSchema, 'type', 'format'), toMongooseParams, { type: typeRefToMongooseType['#/definitions/dateOrDatetime'] })
|
69
|
-
:
|
70
|
-
_.has(typeStringToMongooseType, jsonSchema.type) ?
|
71
|
-
_.reduce(jsonSchema, toMongooseParams, {})
|
72
|
-
:
|
73
|
-
(jsonSchema.type === 'object') ?
|
74
|
-
_.isEmpty(jsonSchema.properties) ?
|
75
|
-
mongoose.Schema.Types.Mixed :
|
76
|
-
(converted =
|
77
|
-
_.mapValues(jsonSchema.properties, convertV.bind(null, version, refSchemas)), jsonSchema.required ?
|
78
|
-
(_.mapValues(converted, subSchemaType.bind(null, jsonSchema))) :
|
79
|
-
converted)
|
80
|
-
:
|
81
|
-
(jsonSchema.type === 'array') ?
|
82
|
-
!_.isEmpty(jsonSchema.items) ?
|
83
|
-
[convertV(version, refSchemas, jsonSchema.items)] :
|
84
|
-
[]
|
85
|
-
:
|
86
|
-
!_.has(jsonSchema, 'type') ?
|
87
|
-
mongoose.Schema.Types.Mixed :
|
88
|
-
unsupportedJsonSchema(jsonSchema));
|
89
|
-
};
|
90
|
-
|
91
|
-
|
92
|
-
switch (jsonSchema.$schema) {
|
93
|
-
case 'http://json-schema.org/draft-03/schema#':
|
94
|
-
version = 3;
|
95
|
-
break;
|
96
|
-
case 'http://json-schema.org/draft-04/schema#':
|
97
|
-
version = 4;
|
98
|
-
break;
|
99
|
-
// backwards compatibility
|
100
|
-
default:
|
101
|
-
version = 3;
|
102
|
-
break;
|
103
|
-
}
|
104
|
-
return convertV(version, refSchemas, jsonSchema);
|
105
|
-
};
|
106
|
-
// noinspection JSUnusedGlobalSymbols
|
107
|
-
exports.default = _.curry(convert);
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const _ = require("lodash");
|
4
|
+
const mongoose = require("mongoose");
|
5
|
+
const typeStringToMongooseType = { 'string': String, 'boolean': Boolean, 'number': Number, 'integer': Number };
|
6
|
+
const typeRefToMongooseType = {
|
7
|
+
'#/definitions/objectid': mongoose.Schema.Types.ObjectId, '#/definitions/dateOrDatetime': Date
|
8
|
+
};
|
9
|
+
const subSchemaTypeV3 = (parentSchema, subschema, key) => {
|
10
|
+
return (0 <= parentSchema.required.indexOf(key) && !_.isPlainObject(subschema)) ? {
|
11
|
+
type: subschema, required: true
|
12
|
+
} : subschema;
|
13
|
+
};
|
14
|
+
const subSchemaTypeV4 = (parentSchema, subschema, key) => {
|
15
|
+
return (0 <= parentSchema.required.indexOf(key)) ? !_.isPlainObject(subschema) ? {
|
16
|
+
type: subschema, required: true
|
17
|
+
} : subschema.hasOwnProperty('type') ? _.assign(subschema, { required: true }) : subschema : subschema;
|
18
|
+
};
|
19
|
+
// noinspection ReservedWordAsName
|
20
|
+
const schemaParamsToMongoose = {
|
21
|
+
/**
|
22
|
+
* default value
|
23
|
+
*/
|
24
|
+
default: (default_) => {
|
25
|
+
const func = (_.last(/^\[Function=(.+)\]$/.exec(default_)) || '')
|
26
|
+
.replace(/\\_/g, '`underscore`')
|
27
|
+
.replace(/_/g, ' ')
|
28
|
+
.replace(/`underscore`/g, '_');
|
29
|
+
// noinspection ReservedWordAsName,DynamicallyGeneratedCodeJS
|
30
|
+
return { default: eval(func) || default_ };
|
31
|
+
},
|
32
|
+
/**
|
33
|
+
* Pattern for value to match
|
34
|
+
*/
|
35
|
+
pattern: (pattern) => ({ match: RegExp(pattern) }),
|
36
|
+
type: (type) => ({ type: typeStringToMongooseType[type] }),
|
37
|
+
minLength: (min) => ({ minlength: min }),
|
38
|
+
maxLength: (max) => ({ maxlength: max }),
|
39
|
+
minimum: (min) => ({ min: min }),
|
40
|
+
maximum: (max) => ({ max: max }),
|
41
|
+
enum: (members) => ({ enum: members })
|
42
|
+
};
|
43
|
+
const toMongooseParams = (acc, val, key) => {
|
44
|
+
let func;
|
45
|
+
// noinspection AssignmentResultUsedJS
|
46
|
+
return (func = schemaParamsToMongoose[key]) ? _.assign(acc, func(val)) : acc;
|
47
|
+
};
|
48
|
+
const unsupportedRefValue = (jsonSchema) => {
|
49
|
+
throw new Error('Unsupported $ref value: ' + jsonSchema.$ref);
|
50
|
+
};
|
51
|
+
const unsupportedJsonSchema = (jsonSchema) => {
|
52
|
+
throw new Error('Unsupported JSON schema type, `' + jsonSchema.type + '`');
|
53
|
+
};
|
54
|
+
const convertV = (version, refSchemas, jsonSchema) => {
|
55
|
+
if (!_.isPlainObject(jsonSchema)) {
|
56
|
+
unsupportedJsonSchema(jsonSchema);
|
57
|
+
}
|
58
|
+
let converted, result, format = jsonSchema.format, isRef = !_.isEmpty(jsonSchema.$ref), isTypeDate = ('string' === jsonSchema.type) && (('date' === format) || ('date-time' === format)), mongooseRef = typeRefToMongooseType[jsonSchema.$ref], isMongooseRef = ('undefined' != typeof (mongooseRef)), subSchema = _.isEmpty(refSchemas) ? false : refSchemas[jsonSchema.$ref], subSchemaType = (4 == version) ? subSchemaTypeV4 : subSchemaTypeV3;
|
59
|
+
return (result =
|
60
|
+
isRef ?
|
61
|
+
isMongooseRef ?
|
62
|
+
mongooseRef :
|
63
|
+
subSchema ?
|
64
|
+
convertV(version, refSchemas, subSchema) :
|
65
|
+
unsupportedRefValue(jsonSchema)
|
66
|
+
:
|
67
|
+
isTypeDate ?
|
68
|
+
_.reduce(_.omit(jsonSchema, 'type', 'format'), toMongooseParams, { type: typeRefToMongooseType['#/definitions/dateOrDatetime'] })
|
69
|
+
:
|
70
|
+
_.has(typeStringToMongooseType, jsonSchema.type) ?
|
71
|
+
_.reduce(jsonSchema, toMongooseParams, {})
|
72
|
+
:
|
73
|
+
(jsonSchema.type === 'object') ?
|
74
|
+
_.isEmpty(jsonSchema.properties) ?
|
75
|
+
mongoose.Schema.Types.Mixed :
|
76
|
+
(converted =
|
77
|
+
_.mapValues(jsonSchema.properties, convertV.bind(null, version, refSchemas)), jsonSchema.required ?
|
78
|
+
(_.mapValues(converted, subSchemaType.bind(null, jsonSchema))) :
|
79
|
+
converted)
|
80
|
+
:
|
81
|
+
(jsonSchema.type === 'array') ?
|
82
|
+
!_.isEmpty(jsonSchema.items) ?
|
83
|
+
[convertV(version, refSchemas, jsonSchema.items)] :
|
84
|
+
[]
|
85
|
+
:
|
86
|
+
!_.has(jsonSchema, 'type') ?
|
87
|
+
mongoose.Schema.Types.Mixed :
|
88
|
+
unsupportedJsonSchema(jsonSchema));
|
89
|
+
};
|
90
|
+
const convert = (refSchemas, jsonSchema) => {
|
91
|
+
let version = 3;
|
92
|
+
switch (jsonSchema.$schema) {
|
93
|
+
case 'http://json-schema.org/draft-03/schema#':
|
94
|
+
version = 3;
|
95
|
+
break;
|
96
|
+
case 'http://json-schema.org/draft-04/schema#':
|
97
|
+
version = 4;
|
98
|
+
break;
|
99
|
+
// backwards compatibility
|
100
|
+
default:
|
101
|
+
version = 3;
|
102
|
+
break;
|
103
|
+
}
|
104
|
+
return convertV(version, refSchemas, jsonSchema);
|
105
|
+
};
|
106
|
+
// noinspection JSUnusedGlobalSymbols
|
107
|
+
exports.default = _.curry(convert);
|
108
|
+
//# sourceMappingURL=json-schema.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,82 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const assert = require("assert");
|
4
|
+
const _ = require("lodash");
|
5
|
+
const mongoose = require("mongoose");
|
6
|
+
const json_schema_1 = require("../lib/json-schema");
|
7
|
+
describe('mongoose schema conversion:', function () {
|
8
|
+
describe('createMongooseSchema', function () {
|
9
|
+
_.each([
|
10
|
+
{ type: 'objectttttt' }, {
|
11
|
+
type: 'object', properties: 'not an object'
|
12
|
+
}, {
|
13
|
+
type: 'object', properties: { email: { type: 'not a type' } }
|
14
|
+
}
|
15
|
+
], function (invalid) {
|
16
|
+
it('throws when the incorrect type is given', () => {
|
17
|
+
assert.throws(() => {
|
18
|
+
// noinspection VoidExpressionJS
|
19
|
+
(0, json_schema_1.default)(void 0, invalid);
|
20
|
+
}, /Unsupported JSON schema/);
|
21
|
+
// expect(() => {
|
22
|
+
// createMongooseSchema(void 0, invalid);
|
23
|
+
// }).toThrowError(/Unsupported JSON schema/);
|
24
|
+
});
|
25
|
+
});
|
26
|
+
_.each([
|
27
|
+
{
|
28
|
+
type: 'object', properties: { id: { $ref: '#/nope/nope/nope' } }
|
29
|
+
}
|
30
|
+
], function (invalid) {
|
31
|
+
it('throws on unsupported ref, ' + invalid, () => {
|
32
|
+
assert.throws(() => {
|
33
|
+
// noinspection VoidExpressionJS
|
34
|
+
(0, json_schema_1.default)(void 0, invalid);
|
35
|
+
}, /Unsupported .ref/);
|
36
|
+
// expect(() => {
|
37
|
+
// createMongooseSchema(void 0, invalid);
|
38
|
+
// }).toThrowError(/Unsupported .ref/);
|
39
|
+
});
|
40
|
+
});
|
41
|
+
it('should convert a valid json-schema', () => {
|
42
|
+
const refs = {
|
43
|
+
yep: { type: 'string', pattern: '^\\d{3}$' },
|
44
|
+
a: {
|
45
|
+
type: 'array', items: { type: 'object', properties: { num: { type: 'number' }, str: { type: 'string' } } }
|
46
|
+
},
|
47
|
+
anyValue: { description: 'This can be any value.' },
|
48
|
+
idSpec: { type: 'object', properties: { id: { $ref: 'yep' }, arr: { $ref: 'a' } } }
|
49
|
+
};
|
50
|
+
// noinspection ReservedWordAsName
|
51
|
+
const valid = {
|
52
|
+
type: 'object', properties: {
|
53
|
+
id: { $ref: 'yep' }, arr: { $ref: 'a' }, anyValue: { a: 'b' }, address: {
|
54
|
+
type: 'object', properties: {
|
55
|
+
street: { type: 'integer', default: 44, minimum: 0, maximum: 50 },
|
56
|
+
houseColor: { type: 'string', default: '[Function=Date.now]', format: 'date-time' }
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
};
|
61
|
+
// noinspection ReservedWordAsName
|
62
|
+
assert.deepEqual((0, json_schema_1.default)(refs, valid), {
|
63
|
+
id: { type: String, match: /^\d{3}$/ },
|
64
|
+
arr: [{ num: { type: Number }, str: { type: String } }],
|
65
|
+
anyValue: mongoose.Schema.Types.Mixed,
|
66
|
+
address: {
|
67
|
+
street: { type: Number, default: 44, min: 0, max: 50 }, houseColor: { type: Date, default: Date.now }
|
68
|
+
}
|
69
|
+
});
|
70
|
+
// noinspection ReservedWordAsName
|
71
|
+
// expect(createMongooseSchema(refs, valid)).toEqual({
|
72
|
+
// id: {type: String, match: /^\d{3}$/},
|
73
|
+
// arr: [{num: {type: Number}, str: {type: String}}],
|
74
|
+
// anyValue: mongoose.Schema.Types.Mixed,
|
75
|
+
// address: {
|
76
|
+
// street: {type: Number, default: 44, min: 0, max: 50}, houseColor: {type: Date, default: Date.now}
|
77
|
+
// }
|
78
|
+
// });
|
79
|
+
});
|
80
|
+
});
|
81
|
+
});
|
82
|
+
//# sourceMappingURL=json-schema.spec.js.map
|
package/package.json
CHANGED
@@ -1,37 +1,45 @@
|
|
1
|
-
{
|
2
|
-
"name": "ac-convert-json-schema-to-mongoose",
|
3
|
-
"version": "0.3.
|
4
|
-
"description": "A library for converting JSON schema to mongoose 5 schema",
|
5
|
-
"keywords": [
|
6
|
-
"json",
|
7
|
-
"schema",
|
8
|
-
"convert",
|
9
|
-
"mongo",
|
10
|
-
"mongoose"
|
11
|
-
],
|
12
|
-
"homepage": "https://github.com/kristianmandrup/convert-json-schema-to-mongoose",
|
13
|
-
"repository": {
|
14
|
-
"url": "https://github.com/kristianmandrup/convert-json-schema-to-mongoose",
|
15
|
-
"type": "git"
|
16
|
-
},
|
17
|
-
"bugs": {
|
18
|
-
"url": "https://github.com/kristianmandrup/convert-json-schema-to-mongoose/issues"
|
19
|
-
},
|
20
|
-
"private": false,
|
21
|
-
"license": "MIT",
|
22
|
-
"
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
"
|
28
|
-
|
29
|
-
|
30
|
-
"
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
"
|
35
|
-
|
36
|
-
|
37
|
-
|
1
|
+
{
|
2
|
+
"name": "ac-convert-json-schema-to-mongoose",
|
3
|
+
"version": "0.3.6",
|
4
|
+
"description": "A library for converting JSON schema to mongoose 5 schema",
|
5
|
+
"keywords": [
|
6
|
+
"json",
|
7
|
+
"schema",
|
8
|
+
"convert",
|
9
|
+
"mongo",
|
10
|
+
"mongoose"
|
11
|
+
],
|
12
|
+
"homepage": "https://github.com/kristianmandrup/convert-json-schema-to-mongoose",
|
13
|
+
"repository": {
|
14
|
+
"url": "https://github.com/kristianmandrup/convert-json-schema-to-mongoose",
|
15
|
+
"type": "git"
|
16
|
+
},
|
17
|
+
"bugs": {
|
18
|
+
"url": "https://github.com/kristianmandrup/convert-json-schema-to-mongoose/issues"
|
19
|
+
},
|
20
|
+
"private": false,
|
21
|
+
"license": "MIT",
|
22
|
+
"main": "dist/index.js",
|
23
|
+
"types": "dist/index.d.ts",
|
24
|
+
"scripts": {
|
25
|
+
"build": "tsc",
|
26
|
+
"test": "jasmine ./dist/test/*.js",
|
27
|
+
"start": "node dist/index.js"
|
28
|
+
},
|
29
|
+
"files": [
|
30
|
+
"dist/**",
|
31
|
+
"!*.map"
|
32
|
+
],
|
33
|
+
"dependencies": {
|
34
|
+
"lodash": "^4.17.21",
|
35
|
+
"mongoose": "^8.9.5"
|
36
|
+
},
|
37
|
+
"devDependencies": {
|
38
|
+
"@tsconfig/node20": "^20.1.4",
|
39
|
+
"@types/jasmine": "^5.1.5",
|
40
|
+
"@types/lodash": "^4.17.14",
|
41
|
+
"@types/node": "^22.10.7",
|
42
|
+
"jasmine": "^5.5.0",
|
43
|
+
"typescript": "^5.7.3"
|
44
|
+
}
|
45
|
+
}
|
package/.travis.yml
DELETED
package/app.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"AAAA,IAAO,oBAAoB,WAAW,mBAAmB,CAAC,CAAA;AAC1D,IAAO,IAAI,WAAW,MAAM,CAAC,CAAA;AA0C7B,AAxCA,YAAY;AACZ,GAAG;AACH,UAAU;AACV,OAAO;AACP,yBAAyB;AACzB,6BAA6B;AAC7B,QAAQ;AACR,eAAe;AACf,yBAAyB;AACzB,qBAAqB;AACrB,WAAW;AACX,iBAAiB;AACjB,eAAe;AACf,6BAA6B;AAC7B,eAAe;AACf,WAAW;AACX,OAAO;AACP,GAAG;AAEH,aAAa;AACb,GAAG;AACH,qBAAqB;AACrB,iBAAiB;AACjB,OAAO;AACP,aAAa;AACb,WAAW;AACX,yBAAyB;AACzB,YAAY;AACZ,kBAAkB;AAClB,WAAW;AACX,6BAA6B;AAC7B,yBAAyB;AACzB,eAAe;AACf,+EAA+E;AAC/E,mGAAmG;AACnG,eAAe;AACf,WAAW;AACX,OAAO;AACP,GAAG;IAEC,IAAI,GAAG;IACP,GAAG,EAAE;QACD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;KAAC;IACxB,CAAC,EAAE;QACC,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACH,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,GAAG,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;gBACrB,GAAG,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;aAChC;SAAC;KAAC;IACH,MAAM,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC;YACjB,GAAG,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC;SAC3B;KAAC;CAAC,CAAA;AAEH,IAAI,KAAK,GAAG;IACR,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,EAAE,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC;QACjB,GAAG,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC;QAChB,OAAO,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACR,MAAM,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAC;gBAC/D,UAAU,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAC;aAChG;SAAC;KAAC;CAAC,CAAA;AAEJ,IAAI,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAE9C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA"}
|
package/app.ts
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
import createMongooseSchema from './lib/json-schema';
|
2
|
-
|
3
|
-
const refs = {
|
4
|
-
yep: {
|
5
|
-
type: 'string', pattern: '^\\d{3}$'
|
6
|
-
}, a: {
|
7
|
-
type: 'array', items: {
|
8
|
-
type: 'object', properties: {
|
9
|
-
num: {type: 'number'}, str: {type: 'string'}
|
10
|
-
}
|
11
|
-
}
|
12
|
-
}, idSpec: {
|
13
|
-
type: 'object', properties: {
|
14
|
-
id: {$ref: 'yep'}, arr: {$ref: 'a'}
|
15
|
-
}
|
16
|
-
}
|
17
|
-
};
|
18
|
-
|
19
|
-
// noinspection ReservedWordAsName
|
20
|
-
const valid = {
|
21
|
-
type: 'object', properties: {
|
22
|
-
id: {$ref: 'yep'}, arr: {$ref: 'a'}, address: {
|
23
|
-
type: 'object', properties: {
|
24
|
-
street: {type: 'integer', default: 44, minimum: 0, maximum: 50},
|
25
|
-
houseColor: {type: 'string', default: '[Function=Date.now]', format: 'date-time'}
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
};
|
30
|
-
|
31
|
-
const result = createMongooseSchema(refs, valid);
|
32
|
-
console.dir(result, {depth: null});
|
package/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,IAAO,oBAAoB,WAAW,mBAAmB,CAAC,CAAA;AAC7B,AAA7B,iBAAS,oBAAoB,CAAA"}
|
package/index.ts
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
declare module 'json-schema-to-mongoose' {
|
2
|
-
// noinspection JSUnusedGlobalSymbols
|
3
|
-
function createMongooseSchema(refSchemas : any, jsonSchema : any) : any
|
4
|
-
function createMongooseSchema(refSchemas : any, jsonSchema : any) : any
|
5
|
-
function createMongooseSchema(refSchemas : any) : (jsonSchema : any) => any
|
6
|
-
function createMongooseSchema(refSchemas : any) : (jsonSchema : any) => any
|
7
|
-
}
|
package/lib/json-schema.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["json-schema.ts"],"names":[],"mappings":"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"}
|