structure-verifier 0.0.4 → 0.0.5

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # structure-verifier 0.0.4
1
+ # structure-verifier 0.0.5
2
2
 
3
3
  structure-verifier is a typescrpt library to validate data of "any" type and to ensure that it corresponds to a data type.
4
4
 
@@ -238,4 +238,52 @@ try {
238
238
  } catch (error) {
239
239
  console.error(error);
240
240
  }
241
+ ```
242
+ ***
243
+ ### Date
244
+ Validations for date data (depends Moment).
245
+
246
+ ```typescript
247
+ const vdate = new V.VDate();
248
+ const vdateNotNull = new V.VDateNotNull();
249
+ ```
250
+
251
+ VDate Exclusive Conditions
252
+
253
+ - **format**: Specifies the date format to be validated against.
254
+ - **timeZone**: Specifies the expected time zone of the input date.
255
+ - **maxDate**: Specifies the maximum allowed date.
256
+ - **minDate**: Specifies the minimum allowed date.
257
+
258
+ #### Example
259
+ #### Basic Date Validation
260
+
261
+ ```typescript
262
+ const vdate = new V.VDate();
263
+ console.log(vdate.check("2023-08-09")?.format("YYYY-MM-DD")); // Output: "2023-08-09"
264
+ ```
265
+
266
+ #### Date with Specific Format
267
+
268
+ ```typescript
269
+ const vdate = new V.VDate({ format: "DD/MM/YYYY" });
270
+ console.log(vdate.check("09/08/2023")?.format("DD/MM/YYYY")); // Output: "09/08/2023"
271
+ ```
272
+
273
+ #### Date with Time Zone
274
+
275
+ ```typescript
276
+ const vdate = new V.VDate({ timeZone: "America/New_York" });
277
+ const result = vdate.check("2023-08-09T10:00:00");
278
+ console.log(result.tz("America/New_York").format()); // Output: "2023-08-09T10:00:00-04:00"
279
+ ```
280
+
281
+ #### Date within Range
282
+
283
+ ```typescript
284
+ const vdate = new V.VDate({
285
+ minDate: moment("2023-01-01"),
286
+ maxDate: moment("2023-12-31")
287
+ });
288
+ console.log(vdate.check("2023-08-09").format("YYYY-MM-DD")); // Output: "2023-08-09"
241
289
  ```
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { VAny } from "./src/verifiers/any/v_any";
2
2
  import { VArray, VArrayNotNull } from "./src/verifiers/array/v_array";
3
3
  import { VBoolean, VBooleanNotNull } from "./src/verifiers/boolean/v_boolean";
4
+ import { VDate, VDateNotNull } from "./src/verifiers/date/v_date";
4
5
  import { VNumber, VNumberNotNull } from "./src/verifiers/number/v_number";
5
6
  import { VObject, VObjectNotNull } from "./src/verifiers/object/v_object";
6
7
  import { VString, VStringNotNull } from "./src/verifiers/string/v_string";
@@ -18,4 +19,6 @@ export declare const Verifiers: {
18
19
  VArray: typeof VArray;
19
20
  VArrayNotNull: typeof VArrayNotNull;
20
21
  VAny: typeof VAny;
22
+ VDate: typeof VDate;
23
+ VDateNotNull: typeof VDateNotNull;
21
24
  };
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ exports.Verifiers = void 0;
4
4
  const v_any_1 = require("./src/verifiers/any/v_any");
5
5
  const v_array_1 = require("./src/verifiers/array/v_array");
6
6
  const v_boolean_1 = require("./src/verifiers/boolean/v_boolean");
7
+ const v_date_1 = require("./src/verifiers/date/v_date");
7
8
  const v_number_1 = require("./src/verifiers/number/v_number");
8
9
  const v_object_1 = require("./src/verifiers/object/v_object");
9
10
  const v_string_1 = require("./src/verifiers/string/v_string");
@@ -20,6 +21,8 @@ exports.Verifiers = {
20
21
  VObject: v_object_1.VObject,
21
22
  VArray: v_array_1.VArray,
22
23
  VArrayNotNull: v_array_1.VArrayNotNull,
23
- VAny: v_any_1.VAny
24
+ VAny: v_any_1.VAny,
25
+ VDate: v_date_1.VDate,
26
+ VDateNotNull: v_date_1.VDateNotNull
24
27
  };
25
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AACjD,2DAAsE;AACtE,iEAA8E;AAC9E,8DAA0E;AAC1E,8DAA0E;AAC1E,8DAA0E;AAC1E,uDAAoD;AAIvC,QAAA,SAAS,GAAG;IACrB,QAAQ,EAAR,mBAAQ;IACR,cAAc,EAAd,yBAAc;IACd,OAAO,EAAP,kBAAO;IACP,cAAc,EAAd,yBAAc;IACd,OAAO,EAAP,kBAAO;IACP,QAAQ,EAAR,oBAAQ;IACR,eAAe,EAAf,2BAAe;IACf,cAAc,EAAd,yBAAc;IACd,OAAO,EAAP,kBAAO;IACP,MAAM,EAAN,gBAAM;IACN,aAAa,EAAb,uBAAa;IACb,IAAI,EAAJ,YAAI;CACP,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AACjD,2DAAsE;AACtE,iEAA8E;AAC9E,wDAAkE;AAClE,8DAA0E;AAC1E,8DAA0E;AAC1E,8DAA0E;AAC1E,uDAAoD;AAIvC,QAAA,SAAS,GAAG;IACrB,QAAQ,EAAR,mBAAQ;IACR,cAAc,EAAd,yBAAc;IACd,OAAO,EAAP,kBAAO;IACP,cAAc,EAAd,yBAAc;IACd,OAAO,EAAP,kBAAO;IACP,QAAQ,EAAR,oBAAQ;IACR,eAAe,EAAf,2BAAe;IACf,cAAc,EAAd,yBAAc;IACd,OAAO,EAAP,kBAAO;IACP,MAAM,EAAN,gBAAM;IACN,aAAa,EAAb,uBAAa;IACb,IAAI,EAAJ,YAAI;IACJ,KAAK,EAAL,cAAK;IACL,YAAY,EAAZ,qBAAY;CACf,CAAA"}
@@ -0,0 +1,31 @@
1
+ import moment, { Moment } from "moment-timezone";
2
+ import { IInfo, MessageType, VBadTypeMessage, VDefaultValue, VVCIsRequired } from "../../interfaces/types";
3
+ import { Verifier } from "../verifier";
4
+ interface VDateConditions extends VBadTypeMessage, VDefaultValue<Moment>, VVCIsRequired, IInfo<number | string | Date | moment.Moment> {
5
+ format?: MessageType<string, {
6
+ format: string;
7
+ }>;
8
+ timeZone?: MessageType<string, {
9
+ timeZone: string;
10
+ }>;
11
+ maxDate?: MessageType<moment.Moment, {
12
+ maxDate: moment.Moment;
13
+ }>;
14
+ minDate?: MessageType<moment.Moment, {
15
+ minDate: moment.Moment;
16
+ }>;
17
+ default?: MessageType<moment.Moment, {
18
+ default: moment.Moment;
19
+ }>;
20
+ }
21
+ export declare class VDateNotNull extends Verifier<moment.Moment> {
22
+ protected cond?: VDateConditions | undefined;
23
+ check(data: any): moment.Moment;
24
+ constructor(cond?: VDateConditions | undefined);
25
+ }
26
+ export declare class VDate extends Verifier<moment.Moment | null> {
27
+ protected cond?: VDateConditions | undefined;
28
+ check(data: any): moment.Moment | null;
29
+ constructor(cond?: VDateConditions | undefined);
30
+ }
31
+ export {};
@@ -1,2 +1,118 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.VDate = exports.VDateNotNull = void 0;
7
+ const moment_timezone_1 = __importDefault(require("moment-timezone"));
8
+ const message_1 = require("../../languages/message");
9
+ const v_error_1 = require("../../error/v_error");
10
+ const verifier_1 = require("../verifier");
11
+ moment_timezone_1.default.suppressDeprecationWarnings = true;
12
+ const dMessages = {
13
+ format: {
14
+ es: (values) => `debe tener el formato ${values.format}`,
15
+ en: (values) => `must have the format ${values.format}`
16
+ },
17
+ timeZone: {
18
+ es: (values) => `debe tener la zona horaria ${values.timeZone}`,
19
+ en: (values) => `must have the time zone ${values.timeZone}`
20
+ },
21
+ maxDate: {
22
+ es: (values) => `debe ser menor o igual a ${values.maxDate.format()}`,
23
+ en: (values) => `must be less or equal to ${values.maxDate.format()}`
24
+ },
25
+ minDate: {
26
+ es: (values) => `debe ser mayor o igual a ${values.minDate.format()}`,
27
+ en: (values) => `must be greater or equal to ${values.minDate.format()}`
28
+ },
29
+ badTypeMessage: {
30
+ es: () => `debe ser una fecha`,
31
+ en: () => `must be a date`
32
+ }
33
+ };
34
+ function haveTimezone(input) {
35
+ const regexDesplazamiento = /(?:UTC|GMT|[+-]\d{2}:?\d{2})$/;
36
+ const regexIdentificadorZona = /(?:Europe\/|America\/|Asia\/|Africa\/|Australia\/|Antarctica\/|Atlantic\/|Indian\/|Pacific\/)[A-Za-z_]+/;
37
+ return regexDesplazamiento.test(input) || regexIdentificadorZona.test(input);
38
+ }
39
+ function formatWithTimeZone(format) {
40
+ return /Z{1,2}|z{1,2}/.test(format);
41
+ }
42
+ function vDate(data, badTypeMessage, conds) {
43
+ let timeZone = (0, message_1.getValue)(conds === null || conds === void 0 ? void 0 : conds.timeZone) || "UTC";
44
+ console.log(timeZone);
45
+ if (data === '' || !(typeof data === 'number' || typeof data === 'string' || data instanceof Date || moment_timezone_1.default.isMoment(data))) {
46
+ throw new v_error_1.VerificationError([{
47
+ key: "",
48
+ message: (0, message_1.getMessage)((conds === null || conds === void 0 ? void 0 : conds.badTypeMessage) != undefined ? conds === null || conds === void 0 ? void 0 : conds.badTypeMessage : undefined, undefined, badTypeMessage)
49
+ }]);
50
+ }
51
+ let date = (0, moment_timezone_1.default)();
52
+ if (conds === null || conds === void 0 ? void 0 : conds.format) {
53
+ let format = (0, message_1.getValue)(conds.format);
54
+ date = (0, moment_timezone_1.default)(data, format, true);
55
+ if (!date.isValid()) {
56
+ throw new v_error_1.VerificationError([{
57
+ key: "",
58
+ message: (0, message_1.getMessage)(conds.format, { format: format }, dMessages.format)
59
+ }]);
60
+ }
61
+ if (!formatWithTimeZone(format)) {
62
+ date = moment_timezone_1.default.tz(date.format('YYYY-MM-DD HH:mm:ss'), timeZone);
63
+ }
64
+ }
65
+ else {
66
+ date = (0, moment_timezone_1.default)(data);
67
+ if (typeof data === 'string' && !haveTimezone(data)) {
68
+ date = moment_timezone_1.default.tz(date.format('YYYY-MM-DD HH:mm:ss'), timeZone);
69
+ }
70
+ }
71
+ if (!date.isValid()) {
72
+ throw new v_error_1.VerificationError([{
73
+ key: "",
74
+ message: (0, message_1.getMessage)((conds === null || conds === void 0 ? void 0 : conds.badTypeMessage) != undefined ? conds === null || conds === void 0 ? void 0 : conds.badTypeMessage : undefined, undefined, badTypeMessage)
75
+ }]);
76
+ }
77
+ if ((conds === null || conds === void 0 ? void 0 : conds.maxDate) && date.isAfter((0, message_1.getValue)(conds.maxDate))) {
78
+ throw new v_error_1.VerificationError([{
79
+ key: "",
80
+ message: (0, message_1.getMessage)(conds.maxDate, { maxDate: (0, message_1.getValue)(conds.maxDate) }, dMessages.maxDate)
81
+ }]);
82
+ }
83
+ if ((conds === null || conds === void 0 ? void 0 : conds.minDate) && date.isBefore((0, message_1.getValue)(conds.minDate))) {
84
+ throw new v_error_1.VerificationError([{
85
+ key: "",
86
+ message: (0, message_1.getMessage)(conds.minDate, { minDate: (0, message_1.getValue)(conds.minDate) }, dMessages.minDate)
87
+ }]);
88
+ }
89
+ return date;
90
+ }
91
+ class VDateNotNull extends verifier_1.Verifier {
92
+ check(data) {
93
+ return vDate(this.isRequired(data, true), this.badTypeMessage, this.cond);
94
+ }
95
+ constructor(cond) {
96
+ super(cond);
97
+ this.cond = cond;
98
+ this.badTypeMessage = dMessages.badTypeMessage;
99
+ }
100
+ }
101
+ exports.VDateNotNull = VDateNotNull;
102
+ class VDate extends verifier_1.Verifier {
103
+ check(data) {
104
+ let val = this.isRequired(data);
105
+ if (val === null || val === undefined) {
106
+ return null;
107
+ }
108
+ return vDate(val, this.badTypeMessage, this.cond);
109
+ }
110
+ constructor(cond) {
111
+ super(cond);
112
+ this.cond = cond;
113
+ this.cond = cond;
114
+ this.badTypeMessage = dMessages.badTypeMessage;
115
+ }
116
+ }
117
+ exports.VDate = VDate;
2
118
  //# sourceMappingURL=v_date.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"v_date.js","sourceRoot":"","sources":["../../../../src/src/verifiers/date/v_date.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"v_date.js","sourceRoot":"","sources":["../../../../src/src/verifiers/date/v_date.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const moment_timezone_1 = __importDefault(require("moment-timezone"));
7
+ const v_error_1 = require("../../error/v_error");
8
+ const index_1 = require("../../../index");
9
+ describe("VDate", () => {
10
+ it("should validate a date string with default settings", () => {
11
+ var _a;
12
+ const vdate = new index_1.Verifiers.VDate();
13
+ expect((_a = vdate.check("2023-08-09")) === null || _a === void 0 ? void 0 : _a.format("YYYY-MM-DD")).toEqual("2023-08-09");
14
+ });
15
+ it("should return null for null input when not required", () => {
16
+ const vdate = new index_1.Verifiers.VDate();
17
+ expect(vdate.check(null)).toBeNull();
18
+ });
19
+ it("should throw an error for invalid date format", () => {
20
+ const vdate = new index_1.Verifiers.VDate({ format: "DD/MM/YYYY" });
21
+ expect(() => vdate.check("2023-08-09")).toThrow(v_error_1.VerificationError);
22
+ });
23
+ it("should validate a date with timezone", () => {
24
+ const vdate = new index_1.Verifiers.VDate({ timeZone: "America/New_York" });
25
+ const result = vdate.check("2023-08-09T10:00:00");
26
+ expect(result === null || result === void 0 ? void 0 : result.tz("America/New_York").format()).toEqual("2023-08-09T10:00:00-04:00");
27
+ });
28
+ it("should validate a date within a min and max range", () => {
29
+ var _a;
30
+ const vdate = new index_1.Verifiers.VDate({
31
+ minDate: (0, moment_timezone_1.default)("2023-01-01"),
32
+ maxDate: (0, moment_timezone_1.default)("2023-12-31")
33
+ });
34
+ expect((_a = vdate.check("2023-08-09")) === null || _a === void 0 ? void 0 : _a.format("YYYY-MM-DD")).toEqual("2023-08-09");
35
+ });
36
+ it("should throw an error if date is before minDate", () => {
37
+ const vdate = new index_1.Verifiers.VDate({ minDate: (0, moment_timezone_1.default)("2023-01-01") });
38
+ expect(() => vdate.check("2022-12-31")).toThrow(v_error_1.VerificationError);
39
+ });
40
+ it("should throw an error if date is after maxDate", () => {
41
+ const vdate = new index_1.Verifiers.VDate({ maxDate: (0, moment_timezone_1.default)("2023-12-31") });
42
+ expect(() => vdate.check("2024-01-01")).toThrow(v_error_1.VerificationError);
43
+ });
44
+ it("should validate a date without timezone in default UTC", () => {
45
+ const vdate = new index_1.Verifiers.VDate();
46
+ const result = vdate.check("2023-08-09T10:00:00");
47
+ expect(result === null || result === void 0 ? void 0 : result.tz("UTC").format('YYYY-MM-DDTHH:mm:ssZ')).toEqual("2023-08-09T10:00:00+00:00");
48
+ });
49
+ });
50
+ describe("VDateNotNull", () => {
51
+ it("should validate a non-null date", () => {
52
+ const vdateNotNull = new index_1.Verifiers.VDateNotNull();
53
+ expect(vdateNotNull.check("2023-08-09").format("YYYY-MM-DD")).toEqual("2023-08-09");
54
+ });
55
+ it("should throw an error for null input", () => {
56
+ const vdateNotNull = new index_1.Verifiers.VDateNotNull();
57
+ expect(() => vdateNotNull.check(null)).toThrow(v_error_1.VerificationError);
58
+ });
59
+ it("should validate a date with a specific format", () => {
60
+ const vdateNotNull = new index_1.Verifiers.VDateNotNull({ format: "DD/MM/YYYY" });
61
+ expect(vdateNotNull.check("09/08/2023").format("DD/MM/YYYY")).toEqual("09/08/2023");
62
+ expect(() => vdateNotNull.check("09-08-2023")).toThrow(v_error_1.VerificationError);
63
+ });
64
+ });
65
+ //# sourceMappingURL=v_date.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v_date.test.js","sourceRoot":"","sources":["../../../../src/src/verifiers/date/v_date.test.ts"],"names":[],"mappings":";;;;;AAAA,sEAAqC;AACrC,iDAAwD;AACxD,0CAAgD;AAEhD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;;QAC3D,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAA,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,2BAAiB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;;QACzD,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,CAAC;YACtB,OAAO,EAAE,IAAA,yBAAM,EAAC,YAAY,CAAC;YAC7B,OAAO,EAAE,IAAA,yBAAM,EAAC,YAAY,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,MAAA,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACvD,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,yBAAM,EAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,2BAAiB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,yBAAM,EAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,2BAAiB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAI,iBAAC,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,YAAY,GAAG,IAAI,iBAAC,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,YAAY,GAAG,IAAI,iBAAC,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,2BAAiB,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,IAAI,iBAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACpF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,2BAAiB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "structure-verifier",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "repository": {