@bedrockio/model 0.1.31 → 0.1.33
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/dist/cjs/include.js +10 -1
- package/dist/cjs/validation.js +10 -6
- package/package.json +3 -3
- package/src/include.js +10 -1
- package/src/validation.js +13 -6
- package/types/validation.d.ts.map +1 -1
package/dist/cjs/include.js
CHANGED
|
@@ -243,7 +243,16 @@ function setNodePath(node, options) {
|
|
|
243
243
|
node[key] = null;
|
|
244
244
|
}
|
|
245
245
|
} else if (type === 'virtual') {
|
|
246
|
-
node[key]
|
|
246
|
+
node[key] ||= {};
|
|
247
|
+
const virtual = schema.virtual(key);
|
|
248
|
+
setNodePath(node[key], {
|
|
249
|
+
// @ts-ignore
|
|
250
|
+
modelName: virtual.options.ref,
|
|
251
|
+
path: path.slice(parts.length),
|
|
252
|
+
depth: depth + 1,
|
|
253
|
+
exclude
|
|
254
|
+
});
|
|
255
|
+
halt = true;
|
|
247
256
|
} else if (type !== 'nested') {
|
|
248
257
|
throw new Error(`Unknown path on ${modelName}: ${key}.`);
|
|
249
258
|
}
|
package/dist/cjs/validation.js
CHANGED
|
@@ -85,6 +85,7 @@ function applyValidation(schema, definition) {
|
|
|
85
85
|
allowInclude,
|
|
86
86
|
stripDeleted: true,
|
|
87
87
|
stripTimestamps: true,
|
|
88
|
+
allowDefaultTags: true,
|
|
88
89
|
allowExpandedRefs: true,
|
|
89
90
|
requireWriteAccess: true,
|
|
90
91
|
...(hasUnique && {
|
|
@@ -267,12 +268,15 @@ function getSchemaForTypedef(typedef, options = {}) {
|
|
|
267
268
|
if (isRequired(typedef, options)) {
|
|
268
269
|
schema = schema.required();
|
|
269
270
|
}
|
|
270
|
-
if (typedef.default) {
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
|
|
271
|
+
if (typedef.default && options.allowDefaultTags) {
|
|
272
|
+
// Tag the default value to allow OpenAPI description
|
|
273
|
+
// of the field but do not actually set the default as it will
|
|
274
|
+
// be handled on the schema level. The tags are being appended
|
|
275
|
+
// for the create validation only as a convenience to describe
|
|
276
|
+
// the default value on creation in OpenApi.
|
|
277
|
+
schema = schema.tag({
|
|
278
|
+
default: typedef.default
|
|
279
|
+
});
|
|
276
280
|
}
|
|
277
281
|
if (typedef.validate?.schema) {
|
|
278
282
|
schema = schema.append(typedef.validate.schema);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bedrockio/model",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.33",
|
|
4
4
|
"description": "Bedrock utilities for model creation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"lodash": "^4.17.21"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@bedrockio/yada": "^1.0.
|
|
32
|
+
"@bedrockio/yada": "^1.0.33",
|
|
33
33
|
"mongoose": ">=6.9.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@babel/core": "^7.20.12",
|
|
38
38
|
"@babel/preset-env": "^7.20.2",
|
|
39
39
|
"@bedrockio/prettier-config": "^1.0.2",
|
|
40
|
-
"@bedrockio/yada": "^1.0.
|
|
40
|
+
"@bedrockio/yada": "^1.0.33",
|
|
41
41
|
"@shelf/jest-mongodb": "^4.1.6",
|
|
42
42
|
"babel-plugin-import-replacement": "^1.0.1",
|
|
43
43
|
"eslint": "^8.33.0",
|
package/src/include.js
CHANGED
|
@@ -228,7 +228,16 @@ function setNodePath(node, options) {
|
|
|
228
228
|
node[key] = null;
|
|
229
229
|
}
|
|
230
230
|
} else if (type === 'virtual') {
|
|
231
|
-
node[key]
|
|
231
|
+
node[key] ||= {};
|
|
232
|
+
const virtual = schema.virtual(key);
|
|
233
|
+
setNodePath(node[key], {
|
|
234
|
+
// @ts-ignore
|
|
235
|
+
modelName: virtual.options.ref,
|
|
236
|
+
path: path.slice(parts.length),
|
|
237
|
+
depth: depth + 1,
|
|
238
|
+
exclude,
|
|
239
|
+
});
|
|
240
|
+
halt = true;
|
|
232
241
|
} else if (type !== 'nested') {
|
|
233
242
|
throw new Error(`Unknown path on ${modelName}: ${key}.`);
|
|
234
243
|
}
|
package/src/validation.js
CHANGED
|
@@ -96,6 +96,7 @@ export function applyValidation(schema, definition) {
|
|
|
96
96
|
allowInclude,
|
|
97
97
|
stripDeleted: true,
|
|
98
98
|
stripTimestamps: true,
|
|
99
|
+
allowDefaultTags: true,
|
|
99
100
|
allowExpandedRefs: true,
|
|
100
101
|
requireWriteAccess: true,
|
|
101
102
|
...(hasUnique && {
|
|
@@ -279,13 +280,18 @@ function getSchemaForTypedef(typedef, options = {}) {
|
|
|
279
280
|
if (isRequired(typedef, options)) {
|
|
280
281
|
schema = schema.required();
|
|
281
282
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
//
|
|
285
|
-
//
|
|
286
|
-
//
|
|
287
|
-
|
|
283
|
+
|
|
284
|
+
if (typedef.default && options.allowDefaultTags) {
|
|
285
|
+
// Tag the default value to allow OpenAPI description
|
|
286
|
+
// of the field but do not actually set the default as it will
|
|
287
|
+
// be handled on the schema level. The tags are being appended
|
|
288
|
+
// for the create validation only as a convenience to describe
|
|
289
|
+
// the default value on creation in OpenApi.
|
|
290
|
+
schema = schema.tag({
|
|
291
|
+
default: typedef.default,
|
|
292
|
+
});
|
|
288
293
|
}
|
|
294
|
+
|
|
289
295
|
if (typedef.validate?.schema) {
|
|
290
296
|
schema = schema.append(typedef.validate.schema);
|
|
291
297
|
} else if (typeof typedef.validate === 'function') {
|
|
@@ -304,6 +310,7 @@ function getSchemaForTypedef(typedef, options = {}) {
|
|
|
304
310
|
if (typedef.max != null || typedef.maxLength != null) {
|
|
305
311
|
schema = schema.max(typedef.max ?? typedef.maxLength);
|
|
306
312
|
}
|
|
313
|
+
|
|
307
314
|
if (options.allowSearch) {
|
|
308
315
|
schema = getSearchSchema(schema, type);
|
|
309
316
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.js"],"names":[],"mappings":"AAiFA,kDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.js"],"names":[],"mappings":"AAiFA,kDAEC;AAED,oEAkFC;AAsBD,wEAkBC;AAuRD;;;EAEC;AAED;;;EAOC;AA/dD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQK"}
|