xanv 1.1.7 → 1.1.9

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/XanvType.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { XVCheckCallback, XanvTransformCallback } from './types.js';
2
2
 
3
- declare abstract class XanvType<Value> {
3
+ declare abstract class XanvType<Value = any> {
4
4
  private checkes;
5
5
  private transforms;
6
6
  readonly meta: Record<string, any>;
package/XanvType.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"XanvType.js","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<Value> {\n private checkes = new Map<string, XVCheckCallback<Value>>();\n private transforms: XanvTransformCallback<Value>[] = []\n readonly meta: Record<string, any> = {}\n protected abstract check(value: any): any;\n\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true) {\n const has = methodName in this\n if (!has) {\n throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);\n }\n this.checkes.set(methodName, check);\n this.meta[methodName] = args\n return this\n }\n\n clone() {\n const cloned = Object.create(this);\n cloned.checkes = new Map(this.checkes);\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional() {\n return this.set('optional', () => { }, true);\n }\n\n default(value: Value | (() => Value)) {\n return this.set('default', () => { }, value);\n }\n\n nullable() {\n return this.set('nullable', () => { }, true);\n }\n\n transform(cb: XanvTransformCallback<Value>) {\n this.transforms.push(cb);\n }\n\n parse(value: any): Value | undefined | null {\n\n if (this.meta.default && (value === undefined || value === null)) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if (this.meta.optional && value === undefined) {\n return value;\n }\n\n if (this.meta.nullable && value === null) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n for (const transform of this.transforms) {\n value = transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"sEAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAkC;QACnD,IAAA,CAAA,UAAU,GAAmC,EAAE;QAC9C,IAAA,CAAA,IAAI,GAAwB,EAAE;IA+D1C;AA5Da,IAAA,GAAG,CAAC,UAAkB,EAAE,KAA6B,EAAE,OAAY,IAAI,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI;QAC9B,IAAI,CAAC,GAAG,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,UAAU,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,QAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC5B,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,CAAC,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,IAAI,CAAE;QAC9B,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,OAAO,MAAM;IAChB;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAA4B,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;YAC/D,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAC3F,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5C,YAAA,OAAO,KAAK;AACd,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.js","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<Value = any> {\n private checkes = new Map<string, XVCheckCallback<Value>>();\n private transforms: XanvTransformCallback<Value>[] = []\n readonly meta: Record<string, any> = {}\n protected abstract check(value: any): any;\n\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true) {\n const has = methodName in this\n if (!has) {\n throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);\n }\n this.checkes.set(methodName, check);\n this.meta[methodName] = args\n return this\n }\n\n clone() {\n const cloned = Object.create(this);\n cloned.checkes = new Map(this.checkes);\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional() {\n return this.set('optional', () => { }, true);\n }\n\n default(value: Value | (() => Value)) {\n return this.set('default', () => { }, value);\n }\n\n nullable() {\n return this.set('nullable', () => { }, true);\n }\n\n transform(cb: XanvTransformCallback<Value>) {\n this.transforms.push(cb);\n }\n\n parse(value: any): Value | undefined | null {\n\n if (this.meta.default && (value === undefined || value === null)) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if (this.meta.optional && value === undefined) {\n return value;\n }\n\n if (this.meta.nullable && value === null) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n for (const transform of this.transforms) {\n value = transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"sEAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAkC;QACnD,IAAA,CAAA,UAAU,GAAmC,EAAE;QAC9C,IAAA,CAAA,IAAI,GAAwB,EAAE;IA+D1C;AA5Da,IAAA,GAAG,CAAC,UAAkB,EAAE,KAA6B,EAAE,OAAY,IAAI,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI;QAC9B,IAAI,CAAC,GAAG,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,UAAU,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,QAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC5B,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,CAAC,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,IAAI,CAAE;QAC9B,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,OAAO,MAAM;IAChB;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAA4B,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;YAC/D,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAC3F,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5C,YAAA,OAAO,KAAK;AACd,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
package/XanvType.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"XanvType.mjs","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<Value> {\n private checkes = new Map<string, XVCheckCallback<Value>>();\n private transforms: XanvTransformCallback<Value>[] = []\n readonly meta: Record<string, any> = {}\n protected abstract check(value: any): any;\n\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true) {\n const has = methodName in this\n if (!has) {\n throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);\n }\n this.checkes.set(methodName, check);\n this.meta[methodName] = args\n return this\n }\n\n clone() {\n const cloned = Object.create(this);\n cloned.checkes = new Map(this.checkes);\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional() {\n return this.set('optional', () => { }, true);\n }\n\n default(value: Value | (() => Value)) {\n return this.set('default', () => { }, value);\n }\n\n nullable() {\n return this.set('nullable', () => { }, true);\n }\n\n transform(cb: XanvTransformCallback<Value>) {\n this.transforms.push(cb);\n }\n\n parse(value: any): Value | undefined | null {\n\n if (this.meta.default && (value === undefined || value === null)) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if (this.meta.optional && value === undefined) {\n return value;\n }\n\n if (this.meta.nullable && value === null) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n for (const transform of this.transforms) {\n value = transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"AAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAkC;QACnD,IAAA,CAAA,UAAU,GAAmC,EAAE;QAC9C,IAAA,CAAA,IAAI,GAAwB,EAAE;IA+D1C;AA5Da,IAAA,GAAG,CAAC,UAAkB,EAAE,KAA6B,EAAE,OAAY,IAAI,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI;QAC9B,IAAI,CAAC,GAAG,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,UAAU,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,QAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC5B,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,CAAC,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,IAAI,CAAE;QAC9B,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,OAAO,MAAM;IAChB;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAA4B,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;YAC/D,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAC3F,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5C,YAAA,OAAO,KAAK;AACd,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
1
+ {"version":3,"file":"XanvType.mjs","sources":["../src/XanvType.ts"],"sourcesContent":["import { XanvTransformCallback, XVCheckCallback } from \"./types\";\n\nabstract class XanvType<Value = any> {\n private checkes = new Map<string, XVCheckCallback<Value>>();\n private transforms: XanvTransformCallback<Value>[] = []\n readonly meta: Record<string, any> = {}\n protected abstract check(value: any): any;\n\n protected set(methodName: string, check: XVCheckCallback<Value>, args: any = true) {\n const has = methodName in this\n if (!has) {\n throw new Error(`Method ${methodName} does not exist on ${this.constructor.name}`);\n }\n this.checkes.set(methodName, check);\n this.meta[methodName] = args\n return this\n }\n\n clone() {\n const cloned = Object.create(this);\n cloned.checkes = new Map(this.checkes);\n cloned.meta = { ...this.meta };\n cloned.transforms = [...this.transforms];\n return cloned;\n }\n\n optional() {\n return this.set('optional', () => { }, true);\n }\n\n default(value: Value | (() => Value)) {\n return this.set('default', () => { }, value);\n }\n\n nullable() {\n return this.set('nullable', () => { }, true);\n }\n\n transform(cb: XanvTransformCallback<Value>) {\n this.transforms.push(cb);\n }\n\n parse(value: any): Value | undefined | null {\n\n if (this.meta.default && (value === undefined || value === null)) {\n value = typeof this.meta.default === 'function' ? this.meta.default() : this.meta.default\n }\n\n if (this.meta.optional && value === undefined) {\n return value;\n }\n\n if (this.meta.nullable && value === null) {\n return value;\n }\n\n value = this.check(value) || value;\n\n for (const [, check] of Array.from(this.checkes.entries())) {\n check(value);\n }\n\n for (const transform of this.transforms) {\n value = transform(value);\n }\n\n return value;\n }\n}\n\nexport default XanvType;"],"names":[],"mappings":"AAEA,MAAe,QAAQ,CAAA;AAAvB,IAAA,WAAA,GAAA;AACW,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAkC;QACnD,IAAA,CAAA,UAAU,GAAmC,EAAE;QAC9C,IAAA,CAAA,IAAI,GAAwB,EAAE;IA+D1C;AA5Da,IAAA,GAAG,CAAC,UAAkB,EAAE,KAA6B,EAAE,OAAY,IAAI,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI;QAC9B,IAAI,CAAC,GAAG,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,OAAA,EAAU,UAAU,CAAA,mBAAA,EAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,QAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC5B,QAAA,OAAO,IAAI;IACd;IAEA,KAAK,GAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,QAAA,MAAM,CAAC,IAAI,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,IAAI,CAAE;QAC9B,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,OAAO,MAAM;IAChB;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,OAAO,CAAC,KAA4B,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAK,EAAG,CAAC,EAAE,KAAK,CAAC;IAC/C;IAEA,QAAQ,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAK,EAAG,CAAC,EAAE,IAAI,CAAC;IAC/C;AAEA,IAAA,SAAS,CAAC,EAAgC,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B;AAEA,IAAA,KAAK,CAAC,KAAU,EAAA;AAEb,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE;YAC/D,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAC3F,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AAC5C,YAAA,OAAO,KAAK;AACd,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,KAAK;AACd,QAAA;QAED,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AAElC,QAAA,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;YACzD,KAAK,CAAC,KAAK,CAAC;AACd,QAAA;AAED,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC1B,QAAA;AAED,QAAA,OAAO,KAAK;IACf;AACF"}
package/index.d.ts CHANGED
@@ -19,16 +19,16 @@ export { XVCheckCallback, XVObjectValueType } from './types.js';
19
19
 
20
20
  declare const xanv: {
21
21
  any: () => XVAny<any>;
22
- array: (type: XVInstanceType, length?: number) => XVArray<any>;
22
+ array: (type: XVInstanceType, length?: number) => XVArray<any[]>;
23
23
  boolean: () => XVBoolean;
24
24
  date: () => XVDate<Date>;
25
25
  enum: (values: XVEnumValues) => XVEnum<string | number>;
26
26
  file: () => XVFile<File | Blob>;
27
27
  map: (key: XVInstanceType, value: XVInstanceType) => XVMap<any, any>;
28
28
  number: (length?: number) => XVNumber<number>;
29
- object: (arg?: XVObjectType) => XVObject<any>;
29
+ object: (arg?: XVObjectType) => XVObject<Record<any, any>>;
30
30
  record: (key: XVInstanceType, value: XVInstanceType) => XVRecord<string, any>;
31
- set: (type: XVInstanceType) => XVSet<any>;
31
+ set: (type: XVInstanceType) => XVSet<unknown>;
32
32
  string: (length?: number) => XVString<string>;
33
33
  tuple: (type: XVInstanceType[]) => XVTuple<any[]>;
34
34
  union: (type: XVInstanceType[]) => XVUnion<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xanv",
3
- "version": "1.1.7",
3
+ "version": "1.1.9",
4
4
  "types": "./index.d.ts",
5
5
  "main": "./index.js",
6
6
  "module": "./index.mjs",
package/types/Array.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import XanvType from '../XanvType.js';
2
2
  import { XVInstanceType } from '../types.js';
3
3
 
4
- declare class XVArray<T = any> extends XanvType<T[]> {
4
+ declare class XVArray<T = any[]> extends XanvType<T[]> {
5
5
  private type?;
6
6
  private length?;
7
7
  constructor(type?: XVInstanceType, length?: number);
@@ -1 +1 @@
1
- {"version":3,"file":"Array.js","sources":["../../src/types/Array.ts"],"sourcesContent":["\nimport XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nclass XVArray<T = any> extends XanvType<T[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number) {\n return this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n unique() {\n return this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n }\n}\n\nexport default XVArray;"],"names":["XanvType","XVObject","XVRecord","XVMap"],"mappings":"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"}
1
+ {"version":3,"file":"Array.js","sources":["../../src/types/Array.ts"],"sourcesContent":["\nimport XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nclass XVArray<T = any[]> extends XanvType<T[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number) {\n return this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n unique() {\n return this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n }\n}\n\nexport default XVArray;"],"names":["XanvType","XVObject","XVRecord","XVMap"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Array.mjs","sources":["../../src/types/Array.ts"],"sourcesContent":["\nimport XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nclass XVArray<T = any> extends XanvType<T[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number) {\n return this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n unique() {\n return this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n }\n}\n\nexport default XVArray;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Array.mjs","sources":["../../src/types/Array.ts"],"sourcesContent":["\nimport XVMap from \"./Map\";\nimport XVObject from \"./Object\";\nimport XVRecord from \"./Record\";\nimport XanvType from \"../XanvType\";\nimport { XVInstanceType } from \"../types\";\n\nclass XVArray<T = any[]> extends XanvType<T[]> {\n private type?: XVInstanceType;\n private length?: number;\n constructor(type?: XVInstanceType, length?: number) {\n super();\n this.type = type;\n this.length = length;\n }\n\n protected check(value: any): void {\n let _value = value;\n if (!Array.isArray(value)) {\n throw new Error(`Value should be an array, received ${typeof value}`);\n }\n\n if (this.length !== undefined && value.length !== this.length) {\n throw new Error(`Array length should be ${this.length}, received ${value.length}`);\n }\n\n if (this.type) {\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n try {\n _value[i] = this.type.parse(item);\n } catch (error: any) {\n throw new Error(`Array item at index ${i} should be of type ${this.type.constructor.name}, received ${typeof item}: ${error.message}`);\n }\n }\n }\n return _value;\n }\n\n min(length: number) {\n return this.set(\"min\", v => {\n if (v.length < length) {\n throw new Error(`Array length should be at least ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", v => {\n if (v.length > length) {\n throw new Error(`Array length should not exceed ${length} items, received ${v.length}`)\n }\n }, length);\n }\n\n unique() {\n return this.set(\"unique\", v => {\n let format: any = []\n for (let i = 0; i < v.length; i++) {\n if (this.type instanceof XVObject || this.type instanceof XVRecord) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVArray) {\n const u = JSON.stringify(v[i]);\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n } else if (this.type instanceof XVMap) {\n const u = JSON.stringify(Array.from(v.entries()));\n if (format.includes(u)) {\n throw new Error(`Array items should be unique, found duplicate: ${u}`);\n } else {\n format.push(u);\n }\n }\n }\n\n const uitems = new Set(v);\n if (uitems.size !== v.length) {\n throw new Error(`Array items should be unique, found duplicates`);\n }\n });\n }\n}\n\nexport default XVArray;"],"names":[],"mappings":"yIAOA,MAAM,OAAmB,SAAQ,QAAa,CAAA;IAG3C,WAAA,CAAY,IAAqB,EAAE,MAAe,EAAA;AAC/C,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,IAAI,MAAM,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,OAAO,KAAK,CAAA,CAAE,CAAC;AACvE,QAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAC5D,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,MAAM,CAAA,WAAA,EAAc,KAAK,CAAC,MAAM,CAAA,CAAE,CAAC;AACpF,QAAA;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,gBAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrB,IAAI;AACD,oBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC,gBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;AACxI,gBAAA;AACH,YAAA;AACH,QAAA;AACD,QAAA,OAAO,MAAM;IAChB;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;AACxB,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,MAAM,CAAA,CAAE,CAAC;AAC1F,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAG;AACxB,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,MAAM,CAAA,CAAE,CAAC;AACzF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;IAEA,MAAM,GAAA;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAG;YAC3B,IAAI,MAAM,GAAQ,EAAE;AACpB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChC,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,IAAI,IAAI,CAAC,IAAI,YAAY,QAAQ,EAAE;oBACjE,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,oBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACrB,wBAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA,CAAE,CAAC;AACxE,oBAAA;AAAM,yBAAA;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChB,oBAAA;AACH,gBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,IAAI,YAAY,OAAO,EAAE;oBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,oBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACrB,wBAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA,CAAE,CAAC;AACxE,oBAAA;AAAM,yBAAA;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChB,oBAAA;AACH,gBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE;AACpC,oBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,oBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACrB,wBAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA,CAAE,CAAC;AACxE,oBAAA;AAAM,yBAAA;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChB,oBAAA;AACH,gBAAA;AACH,YAAA;AAED,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACzB,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8CAAA,CAAgD,CAAC;AACnE,YAAA;AACJ,QAAA,CAAC,CAAC;IACL;AACF"}
package/types/Enum.js CHANGED
@@ -2,7 +2,12 @@
2
2
  constructor(values) {
3
3
  super();
4
4
  if (typeof values === 'object' && !Array.isArray(values) && values !== null) {
5
- values = Object.keys(values);
5
+ values = Object.values(values).map(v => {
6
+ if (typeof v !== 'string' && typeof v !== 'number') {
7
+ throw new Error("Enum values must be strings or numbers");
8
+ }
9
+ return v;
10
+ });
6
11
  }
7
12
  if (!Array.isArray(values) || values.length === 0) {
8
13
  throw new Error("Enum values must be a non-empty array");
package/types/Enum.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Enum.js","sources":["../../src/types/Enum.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVEnumValues } from \"../types\";\n\nclass XVEnum<T extends string | number = string | number> extends XanvType<T> {\n private values: (string | number)[];\n\n constructor(values: XVEnumValues) {\n super();\n if (typeof values === 'object' && !Array.isArray(values) && values !== null) {\n values = Object.keys(values)\n }\n if (!Array.isArray(values) || values.length === 0) {\n throw new Error(\"Enum values must be a non-empty array\");\n }\n this.values = values;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new Error(`Value should be a string or number, received ${typeof value}`);\n }\n\n if (!this.values.includes(value)) {\n throw new Error(`Value should be one of the enum values: ${this.values.join(', ')}`);\n }\n }\n\n}\n\nexport default XVEnum;"],"names":["XanvType"],"mappings":"6GAGA,MAAM,MAAoD,SAAQA,gBAAW,CAAA;AAG1E,IAAA,WAAA,CAAY,MAAoB,EAAA;AAC7B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE;AAC1E,YAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAC1D,QAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,CAAA,6CAAA,EAAgD,OAAO,KAAK,CAAA,CAAE,CAAC;AACjF,QAAA;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtF,QAAA;IACJ;AAEF"}
1
+ {"version":3,"file":"Enum.js","sources":["../../src/types/Enum.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVEnumValues } from \"../types\";\n\nclass XVEnum<T extends string | number = string | number> extends XanvType<T> {\n private values: (string | number)[];\n\n constructor(values: XVEnumValues) {\n super();\n if (typeof values === 'object' && !Array.isArray(values) && values !== null) {\n values = Object.values(values).map(v => {\n if (typeof v !== 'string' && typeof v !== 'number') {\n throw new Error(\"Enum values must be strings or numbers\");\n }\n return v;\n });\n }\n if (!Array.isArray(values) || values.length === 0) {\n throw new Error(\"Enum values must be a non-empty array\");\n }\n this.values = values;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new Error(`Value should be a string or number, received ${typeof value}`);\n }\n\n if (!this.values.includes(value)) {\n throw new Error(`Value should be one of the enum values: ${this.values.join(', ')}`);\n }\n }\n\n}\n\nexport default XVEnum;"],"names":["XanvType"],"mappings":"6GAGA,MAAM,MAAoD,SAAQA,gBAAW,CAAA;AAG1E,IAAA,WAAA,CAAY,MAAoB,EAAA;AAC7B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE;AAC1E,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAG;gBACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACjD,oBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC3D,gBAAA;AACD,gBAAA,OAAO,CAAC;AACX,YAAA,CAAC,CAAC;AACJ,QAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAC1D,QAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,CAAA,6CAAA,EAAgD,OAAO,KAAK,CAAA,CAAE,CAAC;AACjF,QAAA;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtF,QAAA;IACJ;AAEF"}
package/types/Enum.mjs CHANGED
@@ -2,7 +2,12 @@ import XanvType from'../XanvType.mjs';class XVEnum extends XanvType {
2
2
  constructor(values) {
3
3
  super();
4
4
  if (typeof values === 'object' && !Array.isArray(values) && values !== null) {
5
- values = Object.keys(values);
5
+ values = Object.values(values).map(v => {
6
+ if (typeof v !== 'string' && typeof v !== 'number') {
7
+ throw new Error("Enum values must be strings or numbers");
8
+ }
9
+ return v;
10
+ });
6
11
  }
7
12
  if (!Array.isArray(values) || values.length === 0) {
8
13
  throw new Error("Enum values must be a non-empty array");
@@ -1 +1 @@
1
- {"version":3,"file":"Enum.mjs","sources":["../../src/types/Enum.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVEnumValues } from \"../types\";\n\nclass XVEnum<T extends string | number = string | number> extends XanvType<T> {\n private values: (string | number)[];\n\n constructor(values: XVEnumValues) {\n super();\n if (typeof values === 'object' && !Array.isArray(values) && values !== null) {\n values = Object.keys(values)\n }\n if (!Array.isArray(values) || values.length === 0) {\n throw new Error(\"Enum values must be a non-empty array\");\n }\n this.values = values;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new Error(`Value should be a string or number, received ${typeof value}`);\n }\n\n if (!this.values.includes(value)) {\n throw new Error(`Value should be one of the enum values: ${this.values.join(', ')}`);\n }\n }\n\n}\n\nexport default XVEnum;"],"names":[],"mappings":"sCAGA,MAAM,MAAoD,SAAQ,QAAW,CAAA;AAG1E,IAAA,WAAA,CAAY,MAAoB,EAAA;AAC7B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE;AAC1E,YAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,QAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAC1D,QAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,CAAA,6CAAA,EAAgD,OAAO,KAAK,CAAA,CAAE,CAAC;AACjF,QAAA;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtF,QAAA;IACJ;AAEF"}
1
+ {"version":3,"file":"Enum.mjs","sources":["../../src/types/Enum.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVEnumValues } from \"../types\";\n\nclass XVEnum<T extends string | number = string | number> extends XanvType<T> {\n private values: (string | number)[];\n\n constructor(values: XVEnumValues) {\n super();\n if (typeof values === 'object' && !Array.isArray(values) && values !== null) {\n values = Object.values(values).map(v => {\n if (typeof v !== 'string' && typeof v !== 'number') {\n throw new Error(\"Enum values must be strings or numbers\");\n }\n return v;\n });\n }\n if (!Array.isArray(values) || values.length === 0) {\n throw new Error(\"Enum values must be a non-empty array\");\n }\n this.values = values;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw new Error(`Value should be a string or number, received ${typeof value}`);\n }\n\n if (!this.values.includes(value)) {\n throw new Error(`Value should be one of the enum values: ${this.values.join(', ')}`);\n }\n }\n\n}\n\nexport default XVEnum;"],"names":[],"mappings":"sCAGA,MAAM,MAAoD,SAAQ,QAAW,CAAA;AAG1E,IAAA,WAAA,CAAY,MAAoB,EAAA;AAC7B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE;AAC1E,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAG;gBACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACjD,oBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC3D,gBAAA;AACD,gBAAA,OAAO,CAAC;AACX,YAAA,CAAC,CAAC;AACJ,QAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAC1D,QAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACzD,MAAM,IAAI,KAAK,CAAC,CAAA,6CAAA,EAAgD,OAAO,KAAK,CAAA,CAAE,CAAC;AACjF,QAAA;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AACtF,QAAA;IACJ;AAEF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XanvTransformCallback } from \"../types\";\n\nclass XVNumber<T extends number = number> extends XanvType<T> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.length(length);\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n length(value: number) {\n return this.set(\"length\", (v: any) => {\n const n = Number(v);\n if (n.toString().length !== value) {\n throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);\n }\n }, value);\n }\n\n min(value: number) {\n return this.set(\"min\", (v: any) => {\n const n = Number(v);\n if (n < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n }\n\n max(value: number) {\n return this.set(\"max\", (v: any) => {\n const n = Number(v);\n if (n > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n }\n\n positive() {\n return this.set(\"positive\", (v: any) => {\n const n = Number(v);\n if (n < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n }\n\n negative() {\n return this.set(\"negative\", (v: any) => {\n const n = Number(v);\n if (n > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n }\n\n integer() {\n return this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n }\n\n float() {\n return this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n }\n\n}\n\nexport default XVNumber;"],"names":["XanvType"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nclass XVNumber<T extends number = number> extends XanvType<T> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.length(length);\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n length(value: number) {\n return this.set(\"length\", (v: any) => {\n const n = Number(v);\n if (n.toString().length !== value) {\n throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);\n }\n }, value);\n }\n\n min(value: number) {\n return this.set(\"min\", (v: any) => {\n const n = Number(v);\n if (n < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n }\n\n max(value: number) {\n return this.set(\"max\", (v: any) => {\n const n = Number(v);\n if (n > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n }\n\n positive() {\n return this.set(\"positive\", (v: any) => {\n const n = Number(v);\n if (n < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n }\n\n negative() {\n return this.set(\"negative\", (v: any) => {\n const n = Number(v);\n if (n > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n }\n\n integer() {\n return this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n }\n\n float() {\n return this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n }\n\n}\n\nexport default XVNumber;"],"names":["XanvType"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Number.mjs","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XanvTransformCallback } from \"../types\";\n\nclass XVNumber<T extends number = number> extends XanvType<T> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.length(length);\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n length(value: number) {\n return this.set(\"length\", (v: any) => {\n const n = Number(v);\n if (n.toString().length !== value) {\n throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);\n }\n }, value);\n }\n\n min(value: number) {\n return this.set(\"min\", (v: any) => {\n const n = Number(v);\n if (n < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n }\n\n max(value: number) {\n return this.set(\"max\", (v: any) => {\n const n = Number(v);\n if (n > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n }\n\n positive() {\n return this.set(\"positive\", (v: any) => {\n const n = Number(v);\n if (n < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n }\n\n negative() {\n return this.set(\"negative\", (v: any) => {\n const n = Number(v);\n if (n > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n }\n\n integer() {\n return this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n }\n\n float() {\n return this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n }\n\n}\n\nexport default XVNumber;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Number.mjs","sources":["../../src/types/Number.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\n\nclass XVNumber<T extends number = number> extends XanvType<T> {\n\n constructor(length?: number) {\n super();\n if (length) {\n this.length(length);\n }\n }\n\n protected check(value: any): void {\n if (typeof value !== 'number') {\n throw new Error(`Value should be a number, received ${typeof value}`);\n }\n }\n\n length(value: number) {\n return this.set(\"length\", (v: any) => {\n const n = Number(v);\n if (n.toString().length !== value) {\n throw new Error(`Number length should be ${value} digits, received ${n.toString().length}`);\n }\n }, value);\n }\n\n min(value: number) {\n return this.set(\"min\", (v: any) => {\n const n = Number(v);\n if (n < value) {\n throw new Error(`Minimum value should be ${value}`);\n }\n }, value);\n }\n\n max(value: number) {\n return this.set(\"max\", (v: any) => {\n const n = Number(v);\n if (n > value) {\n throw new Error(`Maximum value should be ${value}`);\n }\n }, value);\n }\n\n positive() {\n return this.set(\"positive\", (v: any) => {\n const n = Number(v);\n if (n < 0) {\n throw new Error(`Value should be positive`);\n }\n });\n }\n\n negative() {\n return this.set(\"negative\", (v: any) => {\n const n = Number(v);\n if (n > 0) {\n throw new Error(`Value should be negative`);\n }\n });\n }\n\n integer() {\n return this.set(\"integer\", v => {\n if (!Number.isInteger(v)) {\n throw new Error(`Value should be an integer`);\n }\n });\n }\n\n float() {\n return this.set(\"float\", v => {\n if (!Number.isFinite(v) || Number.isInteger(v)) {\n throw new Error(`Value should be a float`);\n }\n });\n }\n\n}\n\nexport default XVNumber;"],"names":[],"mappings":"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"}
package/types/Object.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import XanvType from '../XanvType.js';
2
2
  import { XVObjectType } from '../types.js';
3
3
 
4
- declare class XVObject<T = any> extends XanvType<T> {
4
+ declare class XVObject<T = Record<any, any>> extends XanvType<T> {
5
5
  private arg?;
6
6
  constructor(arg?: XVObjectType);
7
7
  protected check(value: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Object.js","sources":["../../src/types/Object.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVObjectType } from \"../types\";\n\nclass XVObject<T = any> extends XanvType<T> {\n private arg?: XVObjectType;\n\n constructor(arg?: XVObjectType) {\n super();\n if (arg && (typeof arg !== 'object' || arg === null || Array.isArray(arg))) {\n throw new Error(\"Argument should be a non-null object\");\n }\n this.arg = arg;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`Value should be an object, received ${typeof value}`);\n }\n\n if (this.arg) {\n for (const key in this.arg) {\n const itemType = this.arg[key];\n try {\n value[key] = itemType.parse(value[key]);\n } catch (error: any) {\n throw new Error(`Property '${key}' should be of type ${itemType.constructor.name}, received ${typeof value[key]}`);\n }\n }\n }\n return value;\n }\n\n}\n\nexport default XVObject;\n"],"names":["XanvType"],"mappings":"6GAGA,MAAM,QAAkB,SAAQA,gBAAW,CAAA;AAGxC,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC3B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACzD,QAAA;AACD,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IACjB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC;AACxE,QAAA;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;AACX,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9B,IAAI;AACD,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;AAClB,oBAAA,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAA,oBAAA,EAAuB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AACpH,gBAAA;AACH,YAAA;AACH,QAAA;AACD,QAAA,OAAO,KAAK;IACf;AAEF"}
1
+ {"version":3,"file":"Object.js","sources":["../../src/types/Object.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVObjectType } from \"../types\";\n\nclass XVObject<T = Record<any, any>> extends XanvType<T> {\n private arg?: XVObjectType;\n\n constructor(arg?: XVObjectType) {\n super();\n if (arg && (typeof arg !== 'object' || arg === null || Array.isArray(arg))) {\n throw new Error(\"Argument should be a non-null object\");\n }\n this.arg = arg;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`Value should be an object, received ${typeof value}`);\n }\n\n if (this.arg) {\n for (const key in this.arg) {\n const itemType = this.arg[key];\n try {\n value[key] = itemType.parse(value[key]);\n } catch (error: any) {\n throw new Error(`Property '${key}' should be of type ${itemType.constructor.name}, received ${typeof value[key]}`);\n }\n }\n }\n return value;\n }\n\n}\n\nexport default XVObject;\n"],"names":["XanvType"],"mappings":"6GAGA,MAAM,QAA+B,SAAQA,gBAAW,CAAA;AAGrD,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC3B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACzD,QAAA;AACD,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IACjB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC;AACxE,QAAA;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;AACX,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9B,IAAI;AACD,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;AAClB,oBAAA,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAA,oBAAA,EAAuB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AACpH,gBAAA;AACH,YAAA;AACH,QAAA;AACD,QAAA,OAAO,KAAK;IACf;AAEF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Object.mjs","sources":["../../src/types/Object.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVObjectType } from \"../types\";\n\nclass XVObject<T = any> extends XanvType<T> {\n private arg?: XVObjectType;\n\n constructor(arg?: XVObjectType) {\n super();\n if (arg && (typeof arg !== 'object' || arg === null || Array.isArray(arg))) {\n throw new Error(\"Argument should be a non-null object\");\n }\n this.arg = arg;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`Value should be an object, received ${typeof value}`);\n }\n\n if (this.arg) {\n for (const key in this.arg) {\n const itemType = this.arg[key];\n try {\n value[key] = itemType.parse(value[key]);\n } catch (error: any) {\n throw new Error(`Property '${key}' should be of type ${itemType.constructor.name}, received ${typeof value[key]}`);\n }\n }\n }\n return value;\n }\n\n}\n\nexport default XVObject;\n"],"names":[],"mappings":"sCAGA,MAAM,QAAkB,SAAQ,QAAW,CAAA;AAGxC,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC3B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACzD,QAAA;AACD,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IACjB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC;AACxE,QAAA;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;AACX,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9B,IAAI;AACD,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;AAClB,oBAAA,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAA,oBAAA,EAAuB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AACpH,gBAAA;AACH,YAAA;AACH,QAAA;AACD,QAAA,OAAO,KAAK;IACf;AAEF"}
1
+ {"version":3,"file":"Object.mjs","sources":["../../src/types/Object.ts"],"sourcesContent":["import XanvType from \"../XanvType\";\nimport { XVObjectType } from \"../types\";\n\nclass XVObject<T = Record<any, any>> extends XanvType<T> {\n private arg?: XVObjectType;\n\n constructor(arg?: XVObjectType) {\n super();\n if (arg && (typeof arg !== 'object' || arg === null || Array.isArray(arg))) {\n throw new Error(\"Argument should be a non-null object\");\n }\n this.arg = arg;\n }\n\n protected check(value: any): void {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(`Value should be an object, received ${typeof value}`);\n }\n\n if (this.arg) {\n for (const key in this.arg) {\n const itemType = this.arg[key];\n try {\n value[key] = itemType.parse(value[key]);\n } catch (error: any) {\n throw new Error(`Property '${key}' should be of type ${itemType.constructor.name}, received ${typeof value[key]}`);\n }\n }\n }\n return value;\n }\n\n}\n\nexport default XVObject;\n"],"names":[],"mappings":"sCAGA,MAAM,QAA+B,SAAQ,QAAW,CAAA;AAGrD,IAAA,WAAA,CAAY,GAAkB,EAAA;AAC3B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACzD,QAAA;AACD,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;IACjB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtE,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,OAAO,KAAK,CAAA,CAAE,CAAC;AACxE,QAAA;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;AACX,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC9B,IAAI;AACD,oBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA;AAAC,gBAAA,OAAO,KAAU,EAAE;AAClB,oBAAA,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAA,oBAAA,EAAuB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AACpH,gBAAA;AACH,YAAA;AACH,QAAA;AACD,QAAA,OAAO,KAAK;IACf;AAEF"}
package/types/Set.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { XVInstanceType } from '../types.js';
2
2
  import XanvType from '../XanvType.js';
3
3
 
4
- declare class XVSet<T = any> extends XanvType<Set<T>> {
4
+ declare class XVSet<T = unknown> extends XanvType<Set<T>> {
5
5
  private XVtype;
6
6
  constructor(XVtype: XVInstanceType);
7
7
  protected check(value: any): void;
package/types/Set.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Set.js","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nclass XVSet<T = any> extends XanvType<Set<T>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n protected check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number) {\n return this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n\n}\n\nexport default XVSet;"],"names":["XanvType"],"mappings":"6GAGA,MAAM,KAAe,SAAQA,gBAAgB,CAAA;AAI1C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAGF"}
1
+ {"version":3,"file":"Set.js","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nclass XVSet<T = unknown> extends XanvType<Set<T>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n protected check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number) {\n return this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n\n}\n\nexport default XVSet;"],"names":["XanvType"],"mappings":"6GAGA,MAAM,KAAmB,SAAQA,gBAAgB,CAAA;AAI9C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAGF"}
package/types/Set.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Set.mjs","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nclass XVSet<T = any> extends XanvType<Set<T>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n protected check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number) {\n return this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n\n}\n\nexport default XVSet;"],"names":[],"mappings":"sCAGA,MAAM,KAAe,SAAQ,QAAgB,CAAA;AAI1C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAGF"}
1
+ {"version":3,"file":"Set.mjs","sources":["../../src/types/Set.ts"],"sourcesContent":["import { XVInstanceType } from \"../types\";\nimport XanvType from \"../XanvType\";\n\nclass XVSet<T = unknown> extends XanvType<Set<T>> {\n\n private XVtype: XVInstanceType;\n\n constructor(XVtype: XVInstanceType) {\n super();\n this.XVtype = XVtype;\n }\n\n protected check(value: any): void {\n if (!(value instanceof Set)) {\n throw new Error(`Value should be a Set, received ${typeof value}`);\n }\n\n for (const item of Array.from(value)) {\n try {\n this.XVtype.parse(item);\n } catch (error) {\n throw new Error(`Set item should be of type ${this.XVtype.constructor.name}, received ${typeof item}`);\n }\n }\n }\n\n min(length: number) {\n return this.set(\"min\", (v: any) => {\n if (v.size < length) {\n throw new Error(`Set size should be at least ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n max(length: number) {\n return this.set(\"max\", (v: any) => {\n if (v.size > length) {\n throw new Error(`Set size should not exceed ${length} items, received ${v.size}`);\n }\n }, length);\n }\n\n\n}\n\nexport default XVSet;"],"names":[],"mappings":"sCAGA,MAAM,KAAmB,SAAQ,QAAgB,CAAA;AAI9C,IAAA,WAAA,CAAY,MAAsB,EAAA;AAC/B,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACvB;AAEU,IAAA,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,EAAE,KAAK,YAAY,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,CAAA,gCAAA,EAAmC,OAAO,KAAK,CAAA,CAAE,CAAC;AACpE,QAAA;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACzB,YAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,WAAA,EAAc,OAAO,IAAI,CAAA,CAAE,CAAC;AACxG,YAAA;AACH,QAAA;IACJ;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACpF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAEA,IAAA,GAAG,CAAC,MAAc,EAAA;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,EAA8B,MAAM,CAAA,iBAAA,EAAoB,CAAC,CAAC,IAAI,CAAA,CAAE,CAAC;AACnF,YAAA;QACJ,CAAC,EAAE,MAAM,CAAC;IACb;AAGF"}
package/types.d.ts CHANGED
@@ -14,10 +14,10 @@ import XVString from './types/String.js';
14
14
  import XVTuple from './types/Tuple.js';
15
15
  import XVUnion from './types/Union.js';
16
16
 
17
- type XVInstanceType = XanvType<any> | XVAny | XVArray | XVBoolean | XVDate | XVEnum | XVFile | XVMap | XVNumber | XVObject | XVRecord | XVSet | XVString | XVTuple | XVUnion;
17
+ type XVInstanceType = XanvType | XVAny | XVArray | XVBoolean | XVDate | XVEnum | XVFile | XVMap | XVNumber | XVObject | XVRecord | XVSet | XVString | XVTuple | XVUnion;
18
18
  type XanvTransformCallback<T> = (value: T) => T;
19
19
  type XVCheckCallback<T> = (value: T) => void;
20
- type XVEnumValues = ((string | number)[]) | Record<string, any>;
20
+ type XVEnumValues = ((string | number)[]) | Record<string, string | number>;
21
21
  type XVObjectKeyType = string | number | symbol;
22
22
  type XVObjectValueType = XVInstanceType;
23
23
  type XVObjectType = Record<XVObjectKeyType, XVObjectValueType>;