kodzero-schema-parser 0.0.61 → 0.0.70
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.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ObjectId } from 'bson';
|
|
1
2
|
import type { TableField, TableFieldAny } from './kz-schema-factory/types.js';
|
|
2
3
|
import type TableFieldString from './kz-schema-factory/types-constructors/string.js';
|
|
3
4
|
import type TableFieldNumber from './kz-schema-factory/types-constructors/number.js';
|
|
@@ -8,6 +9,9 @@ import type TableFieldEmail from './kz-schema-factory/types-constructors/email.j
|
|
|
8
9
|
import type TableFieldUrl from './kz-schema-factory/types-constructors/url.js';
|
|
9
10
|
import type TableFieldSelect from './kz-schema-factory/types-constructors/select.js';
|
|
10
11
|
import TableFieldRelation from './kz-schema-factory/types-constructors/relation.js';
|
|
12
|
+
interface ParseSchemaOptions {
|
|
13
|
+
relationAsObjectId?: boolean;
|
|
14
|
+
}
|
|
11
15
|
declare class KodzeroToValidnoParser {
|
|
12
16
|
static parseString(field: TableField<TableFieldString>): {
|
|
13
17
|
type: StringConstructor;
|
|
@@ -41,11 +45,11 @@ declare class KodzeroToValidnoParser {
|
|
|
41
45
|
type: StringConstructor | ArrayConstructor;
|
|
42
46
|
rules?: Record<string, unknown>;
|
|
43
47
|
};
|
|
44
|
-
static parseRelation(field: TableField<TableFieldRelation
|
|
45
|
-
type: StringConstructor | ArrayConstructor;
|
|
48
|
+
static parseRelation(field: TableField<TableFieldRelation>, options: ParseSchemaOptions): {
|
|
49
|
+
type: StringConstructor | ArrayConstructor | typeof ObjectId;
|
|
46
50
|
rules?: Record<string, unknown>;
|
|
47
51
|
};
|
|
48
|
-
static parseSchema(schemaDb: TableField<TableFieldAny>[]): unknown;
|
|
52
|
+
static parseSchema(schemaDb: TableField<TableFieldAny>[], parsesOptions?: ParseSchemaOptions): unknown;
|
|
49
53
|
}
|
|
50
54
|
export default KodzeroToValidnoParser;
|
|
51
55
|
//# sourceMappingURL=KodzeroToValidnoParser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KodzeroToValidnoParser.d.ts","sourceRoot":"","sources":["../src/KodzeroToValidnoParser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KodzeroToValidnoParser.d.ts","sourceRoot":"","sources":["../src/KodzeroToValidnoParser.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,MAAM,CAAA;AAI7B,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,gBAAgB,MAAM,kDAAkD,CAAA;AACpF,OAAO,KAAK,gBAAgB,MAAM,kDAAkD,CAAA;AACpF,OAAO,KAAK,iBAAiB,MAAM,mDAAmD,CAAA;AACtF,OAAO,KAAK,cAAc,MAAM,gDAAgD,CAAA;AAChF,OAAO,KAAK,cAAc,MAAM,gDAAgD,CAAA;AAChF,OAAO,KAAK,eAAe,MAAM,iDAAiD,CAAA;AAClF,OAAO,KAAK,aAAa,MAAM,+CAA+C,CAAA;AAC9E,OAAO,KAAK,gBAAgB,MAAM,kDAAkD,CAAA;AACpF,OAAO,kBAAkB,MAAM,oDAAoD,CAAA;AAInF,UAAU,kBAAkB;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAMD,cAAM,sBAAsB;IAC1B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC;cAC9B,iBAAiB;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAkC1E,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC;cAC9B,iBAAiB;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IA6B1E,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC;cAChC,kBAAkB;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAmB3E,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC;cAC1B,eAAe;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAkDxE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC;cAC1B,iBAAiB;eAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAuBzE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC;cAC5B,iBAAiB;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAyE1E,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC;cACxB,iBAAiB;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAuE1E,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC;cAC9B,iBAAiB,GAAG,gBAAgB;gBAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IA6C7F,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,kBAAkB;cAI7E,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,QAAQ;gBACpD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAgDnC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,kBAAkB,GAAG,OAAO;CA+CvG;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { validations } from 'validno';
|
|
2
|
+
import { ObjectId } from 'bson';
|
|
2
3
|
import isValidJSON from './utils/is-valid-json.js';
|
|
3
4
|
const defaultKeys = ['_id', 'createdAt', 'updatedAt'];
|
|
5
|
+
const getDefaultOptions = () => ({
|
|
6
|
+
relationAsObjectId: true,
|
|
7
|
+
});
|
|
4
8
|
class KodzeroToValidnoParser {
|
|
5
9
|
static parseString(field) {
|
|
6
10
|
const output = { type: String };
|
|
@@ -265,12 +269,14 @@ class KodzeroToValidnoParser {
|
|
|
265
269
|
}
|
|
266
270
|
return output;
|
|
267
271
|
}
|
|
268
|
-
static parseRelation(field) {
|
|
272
|
+
static parseRelation(field, options) {
|
|
273
|
+
var _a;
|
|
274
|
+
const relationAsObjectId = (_a = options.relationAsObjectId) !== null && _a !== void 0 ? _a : true;
|
|
269
275
|
const output = { type: String };
|
|
270
276
|
output.rules = {};
|
|
271
277
|
if (field.item.specs.multiple) {
|
|
272
278
|
output.type = Array;
|
|
273
|
-
output.rules.eachType = String;
|
|
279
|
+
output.rules.eachType = relationAsObjectId ? ObjectId : String;
|
|
274
280
|
output.rules.custom = (value, {}) => {
|
|
275
281
|
if (field.item.specs.mayBeEmpty && Array.isArray(value) && value.length === 0) {
|
|
276
282
|
return {
|
|
@@ -286,25 +292,26 @@ class KodzeroToValidnoParser {
|
|
|
286
292
|
};
|
|
287
293
|
}
|
|
288
294
|
else {
|
|
289
|
-
output.type = String;
|
|
295
|
+
output.type = relationAsObjectId ? ObjectId : String;
|
|
290
296
|
output.rules.custom = (value, {}) => {
|
|
291
|
-
|
|
297
|
+
const valueAsString = typeof value === 'string' ? value : value.toString();
|
|
298
|
+
if (field.item.specs.mayBeEmpty && (typeof valueAsString === 'string' && valueAsString.length === 0)) {
|
|
292
299
|
return {
|
|
293
300
|
result: true,
|
|
294
301
|
details: '',
|
|
295
302
|
};
|
|
296
303
|
}
|
|
297
|
-
const stringLength24 = typeof
|
|
304
|
+
const stringLength24 = typeof valueAsString === 'string' && valueAsString.length === 24;
|
|
298
305
|
return {
|
|
299
306
|
result: stringLength24,
|
|
300
307
|
details: stringLength24 ? '' : 'ID is invalid',
|
|
301
308
|
};
|
|
302
309
|
};
|
|
303
310
|
}
|
|
304
|
-
console.log(output);
|
|
305
311
|
return output;
|
|
306
312
|
}
|
|
307
|
-
static parseSchema(schemaDb) {
|
|
313
|
+
static parseSchema(schemaDb, parsesOptions) {
|
|
314
|
+
const options = Object.assign(Object.assign({}, getDefaultOptions()), parsesOptions);
|
|
308
315
|
const schema = {};
|
|
309
316
|
const schemaFiltered = schemaDb.filter((field) => field.item.key && !defaultKeys.includes(field.item.key));
|
|
310
317
|
for (const field of schemaFiltered) {
|
|
@@ -336,7 +343,7 @@ class KodzeroToValidnoParser {
|
|
|
336
343
|
schema[key] = KodzeroToValidnoParser.parseSelect(field);
|
|
337
344
|
break;
|
|
338
345
|
case 'relation':
|
|
339
|
-
schema[key] = KodzeroToValidnoParser.parseRelation(field);
|
|
346
|
+
schema[key] = KodzeroToValidnoParser.parseRelation(field, options);
|
|
340
347
|
break;
|
|
341
348
|
default:
|
|
342
349
|
break;
|