@bedrockio/yada 1.0.28 → 1.0.30

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.
@@ -0,0 +1 @@
1
+ module.exports = require('@bedrockio/prettier-config');
package/README.md CHANGED
@@ -527,6 +527,13 @@ console.log(await schema.validate()); // "hi!"
527
527
  console.log(await schema.validate('hello!')); // "hello!"
528
528
  ```
529
529
 
530
+ Note that the argument passed to default may also be a function:
531
+
532
+ ```js
533
+ const schema = yd.string().default(Date.now);
534
+ console.log(await schema.validate()); // Returns current timestamp
535
+ ```
536
+
530
537
  ### Strip
531
538
 
532
539
  The `strip` method serves as a way to conditionally exclude fields when the
@@ -39,12 +39,13 @@ class Schema {
39
39
  * Sets the schema default. [Link](https://github.com/bedrockio/yada#default)
40
40
  * @returns {this}
41
41
  */
42
- default(value) {
42
+ default(arg) {
43
+ const getDefaultValue = typeof arg === 'function' ? arg : () => arg;
43
44
  return this.clone({
44
- default: value
45
+ default: arg
45
46
  }).assert('default', val => {
46
47
  if (val === undefined) {
47
- return value;
48
+ return getDefaultValue();
48
49
  }
49
50
  });
50
51
  }
@@ -7,7 +7,9 @@ exports.default = _default;
7
7
  var _TypeSchema = _interopRequireDefault(require("./TypeSchema"));
8
8
  var _errors = require("./errors");
9
9
  var _utils = require("./utils");
10
- var _Schema = _interopRequireDefault(require("./Schema"));
10
+ var _Schema = _interopRequireWildcard(require("./Schema"));
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
14
  const BASE_ASSERTIONS = ['type', 'transform', 'field'];
13
15
 
@@ -59,6 +61,9 @@ class ObjectSchema extends _TypeSchema.default {
59
61
  }
60
62
  });
61
63
  for (let [key, schema] of Object.entries(this.getFields())) {
64
+ if (!(0, _Schema.isSchema)(schema)) {
65
+ throw new Error(`Key "${key}" must be a schema`);
66
+ }
62
67
  this.assert('field', async (obj, options) => {
63
68
  if (obj) {
64
69
  const {
@@ -26,6 +26,21 @@ class StringSchema extends _TypeSchema.default {
26
26
  });
27
27
  }
28
28
 
29
+ /**
30
+ * @returns {this}
31
+ */
32
+ required() {
33
+ return this.clone({
34
+ required: true
35
+ }).assert('required', val => {
36
+ if (val == null) {
37
+ throw new _errors.LocalizedError('Value is required.');
38
+ } else if (val === '') {
39
+ throw new _errors.LocalizedError('String may not be empty.');
40
+ }
41
+ });
42
+ }
43
+
29
44
  /**
30
45
  * @param {number} length
31
46
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bedrockio/yada",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "Validation library inspired by Joi.",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -27,7 +27,7 @@
27
27
  "babel-plugin-add-module-exports": "^1.0.4",
28
28
  "eslint": "^8.26.0",
29
29
  "eslint-plugin-bedrock": "^1.0.24",
30
- "jest": "^29.2.2",
30
+ "jest": "^29.6.2",
31
31
  "prettier": "^2.7.1",
32
32
  "prettier-eslint": "^15.0.1",
33
33
  "typescript": "^4.9.5"
package/src/Schema.js CHANGED
@@ -37,10 +37,11 @@ export default class Schema {
37
37
  * Sets the schema default. [Link](https://github.com/bedrockio/yada#default)
38
38
  * @returns {this}
39
39
  */
40
- default(value) {
41
- return this.clone({ default: value }).assert('default', (val) => {
40
+ default(arg) {
41
+ const getDefaultValue = typeof arg === 'function' ? arg : () => arg;
42
+ return this.clone({ default: arg }).assert('default', (val) => {
42
43
  if (val === undefined) {
43
- return value;
44
+ return getDefaultValue();
44
45
  }
45
46
  });
46
47
  }
package/src/object.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import TypeSchema from './TypeSchema';
2
2
  import { FieldError, LocalizedError } from './errors';
3
3
  import { pick, omit } from './utils';
4
- import Schema from './Schema';
4
+ import Schema, { isSchema } from './Schema';
5
5
 
6
6
  const BASE_ASSERTIONS = ['type', 'transform', 'field'];
7
7
 
@@ -49,6 +49,9 @@ class ObjectSchema extends TypeSchema {
49
49
  }
50
50
  });
51
51
  for (let [key, schema] of Object.entries(this.getFields())) {
52
+ if (!isSchema(schema)) {
53
+ throw new Error(`Key "${key}" must be a schema`);
54
+ }
52
55
  this.assert('field', async (obj, options) => {
53
56
  if (obj) {
54
57
  const { path = [] } = options;
package/src/string.js CHANGED
@@ -30,6 +30,19 @@ class StringSchema extends TypeSchema {
30
30
  });
31
31
  }
32
32
 
33
+ /**
34
+ * @returns {this}
35
+ */
36
+ required() {
37
+ return this.clone({ required: true }).assert('required', (val) => {
38
+ if (val == null) {
39
+ throw new LocalizedError('Value is required.');
40
+ } else if (val === '') {
41
+ throw new LocalizedError('String may not be empty.');
42
+ }
43
+ });
44
+ }
45
+
33
46
  /**
34
47
  * @param {number} length
35
48
  */
package/types/Schema.d.ts CHANGED
@@ -14,7 +14,7 @@ export default class Schema {
14
14
  * Sets the schema default. [Link](https://github.com/bedrockio/yada#default)
15
15
  * @returns {this}
16
16
  */
17
- default(value: any): this;
17
+ default(arg: any): this;
18
18
  /**
19
19
  * Validate by a custom function. [Link](https://github.com/bedrockio/yada#custom)
20
20
  * @param {CustomSignature} args
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.js"],"names":[],"mappings":"AAsVA,4CAEC;AA5UD;;GAEG;AAEH;IACE,uBAGC;IAFC,kBAAoB;IACpB,SAAgB;IAKlB;;OAEG;IACH,YAFa,IAAI,CAQhB;IAED;;;OAGG;IACH,qBAFa,IAAI,CAQhB;IAED;;;;OAIG;IACH,gBAHW,eAAe,GACb,IAAI,CAmBhB;IAED;;;;OAIG;IACH,mBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,sBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,uBAFa,IAAI,CAIhB;IAED;;OAEG;IACH,uBAFa,IAAI,CAIhB;IAED;;OAEG;IACH,gBAFa,IAAI,CAShB;IAED;;OAEG;IACH,+BAFa,IAAI,CAMhB;IAED;;OAEG;IACH,uBAFa,IAAI,CAIhB;IAED,iDAqCC;IAED;;OAEG;IACH,kBAFa,IAAI,CAOhB;IAED;;;OAGG;IACH,qBAFa,IAAI,CAMhB;IAED,2BAUC;IAED,kBAEC;IAED,4BAMC;IAID;;OAEG;IACH,kCAFa,IAAI,CAmChB;IAED;;OAEG;IACH,4BAFa,IAAI,CAUhB;IAED,oCAKC;IAED;;OAEG;IACH,oBAFa,IAAI,CAShB;IAED,gCAGC;IAED,qEAUC;IAED;;;;;;;;MAoCC;CACF;8BAvUY,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.js"],"names":[],"mappings":"AAuVA,4CAEC;AA7UD;;GAEG;AAEH;IACE,uBAGC;IAFC,kBAAoB;IACpB,SAAgB;IAKlB;;OAEG;IACH,YAFa,IAAI,CAQhB;IAED;;;OAGG;IACH,mBAFa,IAAI,CAShB;IAED;;;;OAIG;IACH,gBAHW,eAAe,GACb,IAAI,CAmBhB;IAED;;;;OAIG;IACH,mBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,sBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,uBAFa,IAAI,CAIhB;IAED;;OAEG;IACH,uBAFa,IAAI,CAIhB;IAED;;OAEG;IACH,gBAFa,IAAI,CAShB;IAED;;OAEG;IACH,+BAFa,IAAI,CAMhB;IAED;;OAEG;IACH,uBAFa,IAAI,CAIhB;IAED,iDAqCC;IAED;;OAEG;IACH,kBAFa,IAAI,CAOhB;IAED;;;OAGG;IACH,qBAFa,IAAI,CAMhB;IAED,2BAUC;IAED,kBAEC;IAED,4BAMC;IAID;;OAEG;IACH,kCAFa,IAAI,CAmChB;IAED;;OAEG;IACH,4BAFa,IAAI,CAUhB;IAED,oCAKC;IAED;;OAEG;IACH,oBAFa,IAAI,CAShB;IAED,gCAGC;IAED,qEAUC;IAED;;;;;;;;MAoCC;CACF;8BAxUY,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.js"],"names":[],"mappings":"AAwMA;;;;;;GAMG;AACH,uCAJW,SAAS,gBAMnB;;;;AA1MD;;GAEG;AAEH;IAUE;;OAEG;IACH,cAkEC;IAED;;OAEG;IACH,kBAEC;IAED;;OAEG;IAEH,YAHW,SAAS,GAAC,MAAM,gBAkC1B;IAED;;OAEG;IACH,gBAFc,MAAM,kBAWnB;IAED;;OAEG;IACH,gBAFc,MAAM,kBAWnB;CAcF"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.js"],"names":[],"mappings":"AA2MA;;;;;;GAMG;AACH,uCAJW,SAAS,gBAMnB;;;;AA7MD;;GAEG;AAEH;IAUE;;OAEG;IACH,cAqEC;IAED;;OAEG;IACH,kBAEC;IAED;;OAEG;IAEH,YAHW,SAAS,GAAC,MAAM,gBAkC1B;IAED;;OAEG;IACH,gBAFc,MAAM,kBAWnB;IAED;;OAEG;IACH,gBAFc,MAAM,kBAWnB;CAcF"}
package/types/string.d.ts CHANGED
@@ -4,6 +4,10 @@
4
4
  export default function _default(): StringSchema;
5
5
  declare class StringSchema extends TypeSchema {
6
6
  constructor();
7
+ /**
8
+ * @returns {this}
9
+ */
10
+ required(): this;
7
11
  /**
8
12
  * @param {number} length
9
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.js"],"names":[],"mappings":"AAgYA;;GAEG;AACH,iDAEC;AAnXD;IACE,cAWC;IAED;;OAEG;IACH,eAFW,MAAM,gBAUhB;IAED;;OAEG;IACH,YAFW,MAAM,gBAUhB;IAED;;OAEG;IACH,YAFW,MAAM,gBAUhB;IAED,qBAIC;IAED;;OAEG;IACH,mBAFW,OAAO,gBAYjB;IAED;;OAEG;IACH,mBAFW,OAAO,gBAYjB;IAED;;OAEG;IACH,WAFW,MAAM,gBAahB;IAED,sBAMC;IAED,sBAMC;IAED,oBAMC;IAED,oBAMC;IAED,qBAMC;IAED,sBAMC;IAED;;;OAGG;IACH;QAF6B,OAAO,GAAzB,OAAO;qBAQjB;IAED,2BAMC;IAED,mBAMC;IAED,wBAMC;IAED,uBAMC;IAED,oBAMC;IAED,qBAOC;IAED,uBAMC;IAED;;OAEG;IACH,oBAFW,MAAM,gBAQhB;IAED;;;;;;;OAOG;IACH;QAN4B,SAAS,GAA1B,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,YAAY,GAA7B,MAAM;QACW,YAAY,GAA7B,MAAM;qBA+BhB;IAED;;;;;;;;;;;OAWG;IACH;QAV6B,gBAAgB,GAAlC,OAAO;QACW,sBAAsB,GAAxC,OAAO;QACW,YAAY,GAA9B,OAAO;QACW,YAAY,GAA9B,OAAO;QACW,4BAA4B,GAA9C,OAAO;QACW,eAAe,GAAjC,OAAO;QACW,sBAAsB,GAAxC,OAAO;QACW,eAAe,GAAjC,OAAO;QACY,SAAS,GAA5B,MAAM,EAAE;qBAQlB;IAED;;;;;;;;OAQG;IACH;QAP6B,WAAW,GAA7B,OAAO;QACW,iBAAiB,GAAnC,OAAO;QACW,kBAAkB,GAApC,OAAO;QACW,iBAAiB,GAAnC,OAAO;QACW,cAAc,GAAhC,OAAO;QACW,iBAAiB,GAAnC,OAAO;qBAQjB;IAED;;OAEG;IACH,eAFW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,gBAQ3B;IAED,oBAMC;IAED,oBAMC;IAED,sBAMC;IAED,sBAMC;CAcF"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.js"],"names":[],"mappings":"AA6YA;;GAEG;AACH,iDAEC;AAhYD;IACE,cAWC;IAED;;OAEG;IACH,YAFa,IAAI,CAUhB;IAED;;OAEG;IACH,eAFW,MAAM,gBAUhB;IAED;;OAEG;IACH,YAFW,MAAM,gBAUhB;IAED;;OAEG;IACH,YAFW,MAAM,gBAUhB;IAED,qBAIC;IAED;;OAEG;IACH,mBAFW,OAAO,gBAYjB;IAED;;OAEG;IACH,mBAFW,OAAO,gBAYjB;IAED;;OAEG;IACH,WAFW,MAAM,gBAahB;IAED,sBAMC;IAED,sBAMC;IAED,oBAMC;IAED,oBAMC;IAED,qBAMC;IAED,sBAMC;IAED;;;OAGG;IACH;QAF6B,OAAO,GAAzB,OAAO;qBAQjB;IAED,2BAMC;IAED,mBAMC;IAED,wBAMC;IAED,uBAMC;IAED,oBAMC;IAED,qBAOC;IAED,uBAMC;IAED;;OAEG;IACH,oBAFW,MAAM,gBAQhB;IAED;;;;;;;OAOG;IACH;QAN4B,SAAS,GAA1B,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,YAAY,GAA7B,MAAM;QACW,YAAY,GAA7B,MAAM;qBA+BhB;IAED;;;;;;;;;;;OAWG;IACH;QAV6B,gBAAgB,GAAlC,OAAO;QACW,sBAAsB,GAAxC,OAAO;QACW,YAAY,GAA9B,OAAO;QACW,YAAY,GAA9B,OAAO;QACW,4BAA4B,GAA9C,OAAO;QACW,eAAe,GAAjC,OAAO;QACW,sBAAsB,GAAxC,OAAO;QACW,eAAe,GAAjC,OAAO;QACY,SAAS,GAA5B,MAAM,EAAE;qBAQlB;IAED;;;;;;;;OAQG;IACH;QAP6B,WAAW,GAA7B,OAAO;QACW,iBAAiB,GAAnC,OAAO;QACW,kBAAkB,GAApC,OAAO;QACW,iBAAiB,GAAnC,OAAO;QACW,cAAc,GAAhC,OAAO;QACW,iBAAiB,GAAnC,OAAO;qBAQjB;IAED;;OAEG;IACH,eAFW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,gBAQ3B;IAED,oBAMC;IAED,oBAMC;IAED,sBAMC;IAED,sBAMC;CAcF"}