@availity/yup 3.2.1 → 4.2.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,49 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 4.2.0 (2021-12-21)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **yup:** conditional logic fix ([3679957](https://github.com/Availity/sdk-js/commit/36799574f86674e1a41228c10bfba8d303958e02))
12
+
13
+
14
+ ### Features
15
+
16
+ * **yup:** convert to ts and fix undefined class property ([f5a3a4f](https://github.com/Availity/sdk-js/commit/f5a3a4f944a0ae281e0eaabf3b6a38659a2acc71))
17
+
18
+
19
+
20
+
21
+
22
+ # 4.1.0 (2021-11-18)
23
+
24
+
25
+ ### Features
26
+
27
+ * **yup:** allow custom type error message for dateRange ([cc36cde](https://github.com/Availity/sdk-js/commit/cc36cde7d403f9787343fcecbf1d0fd9d8ac6bf7))
28
+
29
+
30
+
31
+
32
+
33
+ # 4.0.0 (2021-11-02)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * **yup:** package change for major version update ([9ad040f](https://github.com/Availity/sdk-js/commit/9ad040ff7a4f7cbe7d5fdd37932d953287db805c)), closes [/github.com/jquense/yup/blob/375f1b9ed41f5043e123ea87a01a2dfe333c3927/CHANGELOG.md#0320-2020-12-03](https://github.com//github.com/jquense/yup/blob/375f1b9ed41f5043e123ea87a01a2dfe333c3927/CHANGELOG.md/issues/0320-2020-12-03)
39
+
40
+
41
+ ### BREAKING CHANGES
42
+
43
+ * **yup:** the version of yup this package requires contains breaking changes from 0.32.0 onward
44
+
45
+
46
+
47
+
48
+
6
49
  ## [3.2.1](https://github.com/Availity/sdk-js/compare/@availity/yup@3.2.0...@availity/yup@3.2.1) (2021-10-29)
7
50
 
8
51
 
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
- # yup
1
+ # @availity/yup
2
2
 
3
- > Method extensions for the [yup](https://github.com/jquense/yup)
3
+ > Method extensions for [yup](https://github.com/jquense/yup)
4
4
 
5
5
  [![Version](https://img.shields.io/npm/v/@availity/yup.svg?style=for-the-badge)](https://www.npmjs.com/package/@availity/yup)
6
+ [![NPM Downloads](https://img.shields.io/npm/dt/@availity/yup.svg?style=for-the-badge)](https://www.npmjs.com/package/@availity/yup)
7
+ [![Dependecy Status](https://img.shields.io/librariesio/release/npm/@availity/yup?style=for-the-badge)](https://github.com/Availity/sdk-js/blob/master/packages/yup/package.json)
6
8
 
7
9
  ## Install
8
10
 
@@ -18,4 +20,8 @@ npm install @availity/yup yup
18
20
  yarn add @availity/yup yup
19
21
  ```
20
22
 
21
- ## [Documentation](https://availity.github.io/sdk-js/resources/yup)
23
+ > You will need to also install [moment](https://www.npmjs.com/package/moment) if you plan on using the `date` or `dateRange` schemas
24
+
25
+ ## Documentation
26
+
27
+ Check out more documentation at [availity.github.io](https://availity.github.io/sdk-js/resources/yup)
package/dist/date.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { MixedSchema } from 'yup';
2
+ import moment, { Moment } from 'moment';
3
+ export default class AvDateSchema extends MixedSchema<Moment> {
4
+ format: string;
5
+ constructor({ format }?: Options);
6
+ _typeCheck(value: Moment & {
7
+ _i: string;
8
+ }): value is Moment & {
9
+ _i: string;
10
+ };
11
+ getValidDate(value: string | Date | Moment): moment.Moment;
12
+ min(min: string, message?: string): this;
13
+ max(max: string, message?: string): this;
14
+ isRequired(isRequired?: boolean, msg?: string): this;
15
+ between(min: string, max: string, msg?: string, inclusivity?: Inclusivity): this;
16
+ }
17
+ export declare type Inclusivity = '()' | '[)' | '(]' | '[]';
18
+ declare type Options = {
19
+ format?: string;
20
+ };
21
+ export declare const avDate: (opts?: Options | undefined) => AvDateSchema;
22
+ export {};
23
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIxC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW,CAAC,MAAM,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAC;gBAEH,EAAE,MAAqB,EAAE,GAAE,OAAY;IAiBnD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,IAAI,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;IAQ5E,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAI1C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAiBjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAiBjC,UAAU,CAAC,UAAU,UAAO,EAAE,GAAG,CAAC,EAAE,MAAM;IAe1C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,WAAkB;CAmBhF;AAED,oBAAY,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpD,aAAK,OAAO,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,eAAO,MAAM,MAAM,kCAAqB,YAAsC,CAAC"}
package/dist/date.js ADDED
@@ -0,0 +1,123 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
17
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
18
+ if (ar || !(i in from)) {
19
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
20
+ ar[i] = from[i];
21
+ }
22
+ }
23
+ return to.concat(ar || Array.prototype.slice.call(from));
24
+ };
25
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
26
+ import { MixedSchema } from 'yup';
27
+ import moment from 'moment';
28
+ var formats = ['YYYY-MM-DD', 'MMDDYYYY', 'YYYYMMDD', 'MM-DD-YYYY'];
29
+ var AvDateSchema = /** @class */ (function (_super) {
30
+ __extends(AvDateSchema, _super);
31
+ function AvDateSchema(_a) {
32
+ var _b = _a === void 0 ? {} : _a, _c = _b.format, format = _c === void 0 ? 'MM/DD/YYYY' : _c;
33
+ var _this = _super.call(this, {
34
+ type: 'avDate',
35
+ }) || this;
36
+ _this.format = format;
37
+ _this.withMutation(function (schema) {
38
+ if (!schema.tests.some(function (test) { var _a; return ((_a = test === null || test === void 0 ? void 0 : test.OPTIONS) === null || _a === void 0 ? void 0 : _a.name) === 'typeError'; })) {
39
+ _super.prototype.typeError.call(_this, 'Date is invalid.');
40
+ }
41
+ schema.transform(function mutate(value) {
42
+ return schema.getValidDate(value);
43
+ });
44
+ });
45
+ return _this;
46
+ }
47
+ AvDateSchema.prototype._typeCheck = function (value) {
48
+ // So as long as the passed in value is defined, moment._i will contain a string value to validate.
49
+ // If user enters a date and then removes it, should not show a typeError
50
+ // Note: this does not prevent other tests, like isRequired, from showing messages
51
+ // If user has touched a required field, required error message should still show
52
+ return value.isValid() || value._i === '';
53
+ };
54
+ AvDateSchema.prototype.getValidDate = function (value) {
55
+ return moment(value, __spreadArray([this.format], formats, true), true);
56
+ };
57
+ AvDateSchema.prototype.min = function (min, message) {
58
+ var minDate = this.getValidDate(min);
59
+ return this.test({
60
+ message: message || "Date must be " + minDate.format(this.format) + " or later.",
61
+ name: 'min',
62
+ exclusive: true,
63
+ params: { min: min },
64
+ test: function (value) {
65
+ if (!min || !minDate.isValid()) {
66
+ return true;
67
+ }
68
+ return value === null || minDate.isSameOrBefore(value);
69
+ },
70
+ });
71
+ };
72
+ AvDateSchema.prototype.max = function (max, message) {
73
+ var maxDate = this.getValidDate(max);
74
+ return this.test({
75
+ message: message || "Date must be " + maxDate.format(this.format) + " or earlier.",
76
+ name: 'max',
77
+ exclusive: true,
78
+ params: { max: max },
79
+ test: function (value) {
80
+ if (!max || !maxDate.isValid()) {
81
+ return true;
82
+ }
83
+ return value === null || maxDate.isSameOrAfter(value);
84
+ },
85
+ });
86
+ };
87
+ AvDateSchema.prototype.isRequired = function (isRequired, msg) {
88
+ if (isRequired === void 0) { isRequired = true; }
89
+ return this.test({
90
+ name: 'isRequired',
91
+ exclusive: true,
92
+ message: msg || 'This field is required.',
93
+ test: function (value) {
94
+ if (!isRequired) {
95
+ return true;
96
+ }
97
+ return value !== undefined;
98
+ },
99
+ });
100
+ };
101
+ AvDateSchema.prototype.between = function (min, max, msg, inclusivity) {
102
+ if (inclusivity === void 0) { inclusivity = '()'; }
103
+ var minDate = this.getValidDate(min);
104
+ var maxDate = this.getValidDate(max);
105
+ // Can't use arrow function because we rely on 'this' referencing yup's internals
106
+ return this.test({
107
+ name: 'between',
108
+ exclusive: true,
109
+ // NOTE: Intentional use of single quotes - yup will handle the string interpolation
110
+ message: msg || "Date must be between " + minDate.format(this.format) + " and " + maxDate.format(this.format) + ".",
111
+ test: function (value) {
112
+ if (!value || !min || !max || !minDate.isValid() || !maxDate.isValid()) {
113
+ return true;
114
+ }
115
+ return value.isBetween(minDate, maxDate, undefined, inclusivity);
116
+ },
117
+ });
118
+ };
119
+ return AvDateSchema;
120
+ }(MixedSchema));
121
+ export default AvDateSchema;
122
+ export var avDate = function (opts) { return new AvDateSchema(opts); };
123
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { MixedSchema } from 'yup';
2
+ import moment, { Moment, unitOfTime } from 'moment';
3
+ export default class DateRangeSchema extends MixedSchema<DateRange> {
4
+ startKey: string;
5
+ endKey: string;
6
+ format: string;
7
+ constructor(options?: Options);
8
+ getValidDate(value: string | Date | Moment): moment.Moment;
9
+ distance({ min: { value: minValue, units: minUnits, errorMessage: minErrorMessage }, max: { value: maxValue, units: maxUnits, errorMessage: maxErrorMessage }, }?: DistanceOptions): this;
10
+ min(min: string, message?: string): this;
11
+ max(max: string, message?: string): this;
12
+ between(min: string, max: string, message?: string): this;
13
+ isRequired(isRequired?: boolean, msg?: string): this;
14
+ typeError({ message }: {
15
+ message: string;
16
+ }): this;
17
+ _typeCheck(range?: {
18
+ startDate?: Moment;
19
+ endDate?: Moment;
20
+ }): range is DateRange;
21
+ }
22
+ declare type Options = {
23
+ startKey?: string;
24
+ endKey?: string;
25
+ format?: string;
26
+ };
27
+ declare type DateRange = {
28
+ startDate?: Moment;
29
+ endDate?: Moment;
30
+ supportedFormats?: string[];
31
+ };
32
+ declare type DistanceValue = {
33
+ value: number;
34
+ units?: unitOfTime.DurationConstructor;
35
+ errorMessage?: string;
36
+ };
37
+ declare type DistanceOptions = {
38
+ min?: DistanceValue;
39
+ max?: DistanceValue;
40
+ };
41
+ export declare const dateRange: (opts?: Options | undefined) => DateRangeSchema;
42
+ export {};
43
+ //# sourceMappingURL=dateRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateRange.d.ts","sourceRoot":"","sources":["../src/dateRange.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,MAAM,KAAK,CAAC;AACnD,OAAO,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAYpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW,CAAC,SAAS,CAAC;IACjE,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,CAAC;gBAEH,OAAO,CAAC,EAAE,OAAO;IA2B7B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAI1C,QAAQ,CAAC,EACP,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,YAAY,EAAE,eAAe,EAAiB,EAC/F,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,YAAY,EAAE,eAAe,EAAiB,GAChG,GAAE,eAAoB;IAoCvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAqBjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAoBjC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAuBlD,UAAU,CAAC,UAAU,UAAO,EAAE,GAAG,CAAC,EAAE,MAAM;IAW1C,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IA+B1C,UAAU,CAAC,KAAK,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,KAAK,IAAI,SAAS;CAKrF;AAED,aAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,aAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AACvF,aAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF,aAAK,eAAe,GAAG;IAAE,GAAG,CAAC,EAAE,aAAa,CAAC;IAAC,GAAG,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC;AAEpE,eAAO,MAAM,SAAS,kCAAqB,eAA4C,CAAC"}
@@ -0,0 +1,203 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
17
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
18
+ if (ar || !(i in from)) {
19
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
20
+ ar[i] = from[i];
21
+ }
22
+ }
23
+ return to.concat(ar || Array.prototype.slice.call(from));
24
+ };
25
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
26
+ import { MixedSchema, ValidationError } from 'yup';
27
+ import moment from 'moment';
28
+ import get from 'lodash/get';
29
+ import merge from 'lodash/merge';
30
+ var defaultOptions = {
31
+ startKey: 'startDate',
32
+ endKey: 'endDate',
33
+ format: 'MM/DD/YYYY',
34
+ };
35
+ var formats = ['YYYY-MM-DD', 'MMDDYYYY', 'YYYYMMDD'];
36
+ var DateRangeSchema = /** @class */ (function (_super) {
37
+ __extends(DateRangeSchema, _super);
38
+ function DateRangeSchema(options) {
39
+ var _this = _super.call(this, {
40
+ type: 'dateRange',
41
+ }) || this;
42
+ var _a = merge({}, defaultOptions, options), startKey = _a.startKey, endKey = _a.endKey, format = _a.format;
43
+ // Assign them here so we can use in schema.transform
44
+ _this.startKey = startKey;
45
+ _this.endKey = endKey;
46
+ _this.format = format;
47
+ _this.withMutation(function (schema) {
48
+ schema.transform(function mutate(value) {
49
+ var start = get(value, startKey);
50
+ var end = get(value, endKey);
51
+ return {
52
+ startDate: start ? schema.getValidDate(start) : start,
53
+ endDate: end ? schema.getValidDate(end) : end,
54
+ supportedFormats: __spreadArray([schema.format], formats, true),
55
+ };
56
+ });
57
+ });
58
+ return _this;
59
+ }
60
+ // Convert the string to a moment object
61
+ DateRangeSchema.prototype.getValidDate = function (value) {
62
+ return moment(value, __spreadArray([this.format], formats, true), true);
63
+ };
64
+ DateRangeSchema.prototype.distance = function (_a) {
65
+ var _b = _a === void 0 ? {} : _a, _c = _b.min, _d = _c === void 0 ? { value: 0 } : _c, minValue = _d.value, _e = _d.units, minUnits = _e === void 0 ? 'day' : _e, minErrorMessage = _d.errorMessage, _f = _b.max, _g = _f === void 0 ? { value: 0 } : _f, maxValue = _g.value, _h = _g.units, maxUnits = _h === void 0 ? 'day' : _h, maxErrorMessage = _g.errorMessage;
66
+ return this.test({
67
+ name: 'distance',
68
+ exclusive: true,
69
+ test: function (_a) {
70
+ var _b = _a === void 0 ? {} : _a, endDate = _b.endDate, startDate = _b.startDate;
71
+ // check if we have min or max set and if both dates are present
72
+ if ((!minValue && !maxValue) || !startDate || !endDate)
73
+ return true;
74
+ // if we have a max then check distance between end and start
75
+ if (maxValue && endDate.isAfter(startDate.add(maxValue, maxUnits), 'day')) {
76
+ return new ValidationError(maxErrorMessage ||
77
+ "The end date must be within " + maxValue + " " + maxUnits + (maxValue > 1 ? 's' : '') + " of the start date", {
78
+ startDate: startDate,
79
+ endDate: endDate,
80
+ }, this.path);
81
+ }
82
+ // if we have a min the check distance between end and start
83
+ if (minValue && endDate.isBefore(startDate.add(minValue, minUnits), 'day')) {
84
+ return new ValidationError(minErrorMessage ||
85
+ "The end date must be greater than " + minValue + " " + minUnits + (minValue > 1 ? 's' : '') + " of the start date", { startDate: startDate, endDate: endDate }, this.path);
86
+ }
87
+ return true;
88
+ },
89
+ });
90
+ };
91
+ DateRangeSchema.prototype.min = function (min, message) {
92
+ // it works for date, but not daterange. maybe that can tell us more about what is going on
93
+ // const minDate = this.getValidDate(min);
94
+ return this.test({
95
+ message: message || (function (_a) {
96
+ var min = _a.min;
97
+ return "Date Range must start on or after " + min;
98
+ }),
99
+ name: 'min',
100
+ exclusive: true,
101
+ params: { min: min },
102
+ test: function (_a) {
103
+ var _b = _a === void 0 ? {} : _a, startDate = _b.startDate, supportedFormats = _b.supportedFormats;
104
+ // return true when no startDate or min set
105
+ if (!startDate || !min)
106
+ return true;
107
+ // otherwise check if min is correct format and is after given startDate
108
+ var minDate = moment(min, supportedFormats, true);
109
+ return minDate.isValid() && minDate.isSameOrBefore(startDate);
110
+ },
111
+ });
112
+ };
113
+ DateRangeSchema.prototype.max = function (max, message) {
114
+ // const maxDate = this.getValidDate(max);
115
+ return this.test({
116
+ message: message || (function (_a) {
117
+ var max = _a.max;
118
+ return "Date Range must end on or before " + max;
119
+ }),
120
+ name: 'max',
121
+ exclusive: true,
122
+ params: { max: max },
123
+ test: function (_a) {
124
+ var _b = _a === void 0 ? {} : _a, endDate = _b.endDate, supportedFormats = _b.supportedFormats;
125
+ // return true when no endDate given or max set
126
+ if (!endDate || !max)
127
+ return true;
128
+ // otherwise check if max is correct format and is after given endDate
129
+ var maxDate = moment(max, supportedFormats, true);
130
+ return maxDate.isValid() && maxDate.isSameOrAfter(endDate);
131
+ },
132
+ });
133
+ };
134
+ DateRangeSchema.prototype.between = function (min, max, message) {
135
+ // const minDate = this.getValidDate(min);
136
+ // const maxDate = this.getValidDate(max);
137
+ return this.test({
138
+ message: message || (function (_a) {
139
+ var min = _a.min, max = _a.max;
140
+ return "Date Range must be between " + min + " and " + max;
141
+ }),
142
+ name: 'between',
143
+ exclusive: true,
144
+ params: { min: min, max: max },
145
+ test: function (_a) {
146
+ var _b = _a === void 0 ? {} : _a, startDate = _b.startDate, endDate = _b.endDate, supportedFormats = _b.supportedFormats;
147
+ if (!startDate || !endDate || !min || !max)
148
+ return true;
149
+ var minDate = moment(min, supportedFormats, true);
150
+ var maxDate = moment(max, supportedFormats, true);
151
+ return (maxDate.isValid() && minDate.isValid() && maxDate.isSameOrAfter(endDate) && minDate.isSameOrBefore(startDate));
152
+ },
153
+ });
154
+ };
155
+ DateRangeSchema.prototype.isRequired = function (isRequired, msg) {
156
+ if (isRequired === void 0) { isRequired = true; }
157
+ return this.test({
158
+ name: 'isRequired',
159
+ exclusive: true,
160
+ message: msg || 'This field is required.',
161
+ test: function (_a) {
162
+ var _b = _a === void 0 ? {} : _a, startDate = _b.startDate, endDate = _b.endDate;
163
+ return !isRequired || !!(startDate && endDate);
164
+ },
165
+ });
166
+ };
167
+ DateRangeSchema.prototype.typeError = function (_a) {
168
+ var message = _a.message;
169
+ return this.test({
170
+ name: 'typeError',
171
+ exclusive: true,
172
+ test: function (_a) {
173
+ var _b = _a === void 0 ? {} : _a, startDate = _b.startDate, endDate = _b.endDate;
174
+ // Set to `any` to pass to ValidationErrors. Docs state string[] is accepted,
175
+ // but types do not allow string[]
176
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
177
+ var errors = [];
178
+ if ((!startDate || !endDate) && (startDate || endDate)) {
179
+ errors.push(message || 'Start and End Date are required.');
180
+ }
181
+ if (startDate && endDate && !startDate.isSameOrBefore(endDate)) {
182
+ errors.push('Start date must come before end date.');
183
+ }
184
+ if (startDate && !startDate.isValid()) {
185
+ errors.push('Start Date is invalid.');
186
+ }
187
+ if (endDate && !endDate.isValid()) {
188
+ errors.push('End Date is invalid.');
189
+ }
190
+ return errors.length > 0 ? new ValidationError(errors, { startDate: startDate, endDate: endDate }, this.path) : true;
191
+ },
192
+ });
193
+ };
194
+ DateRangeSchema.prototype._typeCheck = function (range) {
195
+ if (range === void 0) { range = {}; }
196
+ var startDate = range.startDate, endDate = range.endDate;
197
+ return !!startDate && !!endDate && startDate.isValid() && endDate.isValid();
198
+ };
199
+ return DateRangeSchema;
200
+ }(MixedSchema));
201
+ export default DateRangeSchema;
202
+ export var dateRange = function (opts) { return new DateRangeSchema(opts); };
203
+ //# sourceMappingURL=dateRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateRange.js","sourceRoot":"","sources":["../src/dateRange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { AnyObject, Maybe, Optionals } from 'yup/lib/types';
2
+ import BaseSchema, { AnySchema } from 'yup/lib/schema';
3
+ import { Asserts, TypeOf } from 'yup/lib/util/types';
4
+ import { AssertsShape, ObjectShape, TypeOfShape } from 'yup/lib/object';
5
+ import Lazy from 'yup/lib/Lazy';
6
+ import { avDate } from './date';
7
+ import { dateRange } from './dateRange';
8
+ export { avDate, dateRange };
9
+ declare module 'yup' {
10
+ interface StringSchema<TType extends Maybe<string> = string | undefined, TContext extends AnyObject = AnyObject, TOut extends TType = TType> extends BaseSchema<TType, TContext, TOut> {
11
+ isRequired(required?: boolean, errorMessage?: string): StringSchema<TType, TContext>;
12
+ npi(errorMessage?: string): StringSchema<TType, TContext>;
13
+ phone(errorMessage?: string): StringSchema<TType, TContext>;
14
+ }
15
+ interface NumberSchema<TType extends Maybe<number> = number | undefined, TContext extends AnyObject = AnyObject, TOut extends TType = TType> extends BaseSchema<TType, TContext, TOut> {
16
+ isRequired(required?: boolean, errorMessage?: string): NumberSchema<TType, TContext, TOut>;
17
+ npi(errorMessage?: string): NumberSchema<TType, TContext, TOut>;
18
+ phone(errorMessage?: string): NumberSchema<TType, TContext, TOut>;
19
+ }
20
+ interface ArraySchema<T extends AnySchema | Lazy<any, any>, C extends AnyObject = AnyObject, TIn extends Maybe<TypeOf<T>[]> = TypeOf<T>[] | undefined, TOut extends Maybe<Asserts<T>[]> = Asserts<T>[] | Optionals<TIn>> extends BaseSchema<TIn, C, TOut> {
21
+ isRequired(required?: boolean, errorMessage?: string): ArraySchema<T, C, TIn, TOut>;
22
+ }
23
+ interface ObjectSchema<TShape extends ObjectShape, TContext extends AnyObject = AnyObject, TIn extends Maybe<TypeOfShape<TShape>> = TypeOfShape<TShape>, TOut extends Maybe<AssertsShape<TShape>> = AssertsShape<TShape> | Optionals<TIn>> extends BaseSchema<TIn, TContext, TOut> {
24
+ isRequired(required?: boolean, errorMessage?: string): ObjectSchema<TShape, TContext, TIn, TOut>;
25
+ }
26
+ }
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,16 @@
1
1
  import { addMethod, array, number, object, string } from 'yup';
2
- import AvDateSchema from './date';
3
- import DateRangeSchema from './dateRange';
2
+ import { avDate } from './date';
3
+ import { dateRange } from './dateRange';
4
4
  import isRequired from './isRequired';
5
5
  import npi from './npi';
6
6
  import phone from './phone';
7
-
8
- export const avDate = (opts) => new AvDateSchema(opts);
9
- export const dateRange = (opts) => new DateRangeSchema(opts);
10
-
7
+ export { avDate, dateRange };
11
8
  addMethod(array, 'isRequired', isRequired);
12
9
  addMethod(number, 'isRequired', isRequired);
13
10
  addMethod(object, 'isRequired', isRequired);
14
11
  addMethod(string, 'isRequired', isRequired);
15
-
16
12
  addMethod(number, 'npi', npi);
17
13
  addMethod(string, 'npi', npi);
18
-
19
14
  addMethod(number, 'phone', phone);
20
15
  addMethod(string, 'phone', phone);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAO/D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAE7B,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3C,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC5C,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC5C,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE5C,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAE9B,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { BaseSchema } from 'yup';
2
+ declare function isRequired<Schema extends BaseSchema>(this: Schema, isRequired?: boolean, msg?: string): Schema;
3
+ export default isRequired;
4
+ //# sourceMappingURL=isRequired.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isRequired.d.ts","sourceRoot":"","sources":["../src/isRequired.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,iBAAS,UAAU,CAAC,MAAM,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,UAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBpG;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ function isRequired(isRequired, msg) {
2
+ if (isRequired === void 0) { isRequired = true; }
3
+ return this.test({
4
+ name: 'isRequired',
5
+ exclusive: true,
6
+ message: msg || 'This field is required.',
7
+ test: function (value) {
8
+ if (isRequired) {
9
+ // array and string have custom logic
10
+ if (this.schema.type === 'array') {
11
+ return Array.isArray(value) ? value.length > 0 : value !== undefined;
12
+ }
13
+ if (this.schema.type === 'string') {
14
+ return value !== undefined && value !== '';
15
+ }
16
+ // default logic for all other types
17
+ return value !== undefined;
18
+ }
19
+ return true;
20
+ },
21
+ });
22
+ }
23
+ export default isRequired;
24
+ //# sourceMappingURL=isRequired.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isRequired.js","sourceRoot":"","sources":["../src/isRequired.ts"],"names":[],"mappings":"AAEA,SAAS,UAAU,CAA0C,UAAiB,EAAE,GAAY;IAA/B,2BAAA,EAAA,iBAAiB;IAC5E,OAAO,IAAI,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,GAAG,IAAI,yBAAyB;QACzC,IAAI,YAAC,KAAK;YACR,IAAI,UAAU,EAAE;gBACd,qCAAqC;gBACrC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;oBAChC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;iBACtE;gBACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACjC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;iBAC5C;gBACD,oCAAoC;gBACpC,OAAO,KAAK,KAAK,SAAS,CAAC;aAC5B;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,eAAe,UAAU,CAAC"}
package/dist/npi.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { BaseSchema } from 'yup';
2
+ declare function npi<Schema extends BaseSchema>(this: Schema, msg?: string): Schema;
3
+ export default npi;
4
+ //# sourceMappingURL=npi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npi.d.ts","sourceRoot":"","sources":["../src/npi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAIjC,iBAAS,GAAG,CAAC,MAAM,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA8C1E;AAED,eAAe,GAAG,CAAC"}