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":"AAGA,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,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;cAEhD,iBAAiB,GAAG,gBAAgB;gBAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IA+CnC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,GAAG,OAAO;CA6CnE;AAED,eAAe,sBAAsB,CAAA"}
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
- if (field.item.specs.mayBeEmpty && (typeof value === 'string' && value.length === 0)) {
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 value === 'string' && value.length === 24;
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kodzero-schema-parser",
3
- "version": "0.0.61",
3
+ "version": "0.0.70",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",