xansql 1.0.7 → 1.0.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xansql",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "main": "./index.js",
5
5
  "module": "./index.js",
6
6
  "types": "./index.d.ts",
package/xt/index.cjs CHANGED
@@ -43,7 +43,7 @@ const xt = {
43
43
  return inst;
44
44
  },
45
45
  password: () => {
46
- const inst = xt.string().min(8).max(32).index().transform(v => utils_sha256(v).slice(0, 32));
46
+ const inst = xt.string().min(8).max(64).index().transform(v => utils_sha256(v).slice(0, 64));
47
47
  inst.strong = function () {
48
48
  inst.set("strong", (v) => {
49
49
  const hasUpperCase = /[A-Z]/.test(v);
@@ -58,7 +58,7 @@ const xt = {
58
58
  };
59
59
  return inst;
60
60
  },
61
- email: () => xt.string().email(),
61
+ email: () => xt.string().email().index().unique(),
62
62
  status: (statuses) => xt.enum(statuses).index(),
63
63
  gender: () => xt.enum(['male', 'female', 'other']).index(),
64
64
  role: (roles) => xt.enum(roles).index(),
package/xt/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/xt/index.ts"],"sourcesContent":["import { XVEnumValues, XVObjectType } from \"xanv\";\nimport XqlString from \"./fields/String\";\nimport XqlBoolean from \"./fields/Boolean\";\nimport XqlArray from \"./fields/Array\";\nimport XqlDate from \"./fields/Date\";\nimport XqlEnum from \"./fields/Enum\";\nimport XqlNumber from \"./fields/Number\";\nimport XqlObject from \"./fields/Object\";\nimport XqlRecord from \"./fields/Record\";\nimport XqlTuple from \"./fields/Tuple\";\nimport XqlUnion from \"./fields/Union\";\nimport XqlIDField from \"./fields/IDField\";\nimport XqlFile from \"./fields/File\";\nimport XqlSchema from \"./fields/Schema\";\nimport { XqlFields } from \"./types\";\nimport sha256 from \"../utils/sha256\";\n\nconst xt = {\n id: () => new XqlIDField(),\n array: (type: XqlFields, length?: number) => new XqlArray(type as any, length),\n boolean: () => new XqlBoolean(),\n date: () => new XqlDate(),\n enum: (values: XVEnumValues) => new XqlEnum(values),\n number: (length?: number) => new XqlNumber(length),\n object: (arg?: XVObjectType) => new XqlObject(arg),\n record: (key: XqlFields, value: XqlFields) => new XqlRecord(key as any, value as any),\n string: (length?: number) => new XqlString(length),\n tuple: (type: XqlFields[]) => new XqlTuple(type as any),\n union: (type: XqlFields[]) => new XqlUnion(type as any),\n file: (size?: number) => new XqlFile(size),\n schema: (table: string, column: string) => new XqlSchema(table, column),\n\n createdAt: () => xt.date().create(),\n updatedAt: () => xt.date().update(),\n // Custom Types\n name: () => {\n const inst = xt.string().min(1).max(100)\n inst.set(\"name\" as any, (v: any) => {\n const nameRegex = /^[a-zA-Z\\s'-]+$/;\n if (!nameRegex.test(v)) {\n throw new Error(\"Invalid name format.\");\n }\n });\n return inst;\n },\n password: () => {\n const inst = xt.string().min(8).max(32).index().transform(v => sha256(v).slice(0, 32));\n (inst as any).strong = function () {\n inst.set(\"strong\" as any, (v: any) => {\n const hasUpperCase = /[A-Z]/.test(v);\n const hasLowerCase = /[a-z]/.test(v);\n const hasNumber = /[0-9]/.test(v);\n const hasSpecialChar = /[!@#$%^&*(),.?\":{}|<>]/.test(v);\n\n if (!hasUpperCase || !hasLowerCase || !hasNumber || !hasSpecialChar) {\n throw new Error('Password should contain at least one uppercase letter, one lowercase letter, one number, and one special character');\n }\n });\n return this;\n }\n return inst;\n },\n email: () => xt.string().email(),\n status: (statuses: string[]) => xt.enum(statuses).index(),\n gender: () => xt.enum(['male', 'female', 'other']).index(),\n role: (roles: string[]) => xt.enum(roles).index(),\n username: () => {\n const inst = xt.string().index().min(3).max(30).index().unique()\n inst.set(\"username\" as any, (v: any) => {\n const usernameRegex = /^[a-zA-Z0-9._-]{3,30}$/;\n if (!usernameRegex.test(v)) {\n throw new Error(\"Invalid username format.\");\n }\n });\n return inst;\n },\n slug: () => {\n const inst = xt.string().index().min(3).max(100)\n inst.set(\"slug\" as any, (v: any) => {\n const slugRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n if (!slugRegex.test(v)) {\n throw new Error(\"Invalid slug format.\");\n }\n });\n return inst;\n },\n url: () => {\n const inst = xt.string().max(2048).min(10)\n inst.set(\"url\" as any, (v: any) => {\n try {\n new URL(v);\n } catch {\n throw new Error(\"Invalid URL format.\");\n }\n });\n return inst;\n },\n photo: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 2 MB\n inst.set(\"photo\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid photo file type.\");\n }\n });\n return inst;\n },\n avatar: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 1 MB\n inst.set(\"avatar\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid avatar file type.\");\n }\n });\n return inst;\n },\n amount: () => xt.number().float().min(0).max(1000000000),\n phone: () => {\n const inst = xt.string().min(7).max(15)\n inst.set(\"phone\" as any, (v: any) => {\n const phoneRegex = /^\\+?[1-9]\\d{1,14}$/;\n if (!phoneRegex.test(v)) {\n throw new Error(\"Invalid phone number format.\");\n }\n });\n return inst;\n },\n title: () => xt.string().min(1).max(200),\n description: () => xt.string().max(1000),\n type: (types: string[]) => xt.enum(types).index(),\n metadata: () => xt.record(xt.string(), xt.union([xt.string(), xt.number(), xt.boolean(), xt.date()])),\n ip: () => {\n const inst = xt.string().index()\n inst.set(\"ip\" as any, (v: any) => {\n const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9]))$/;\n if (!ipv4Regex.test(v) && !ipv6Regex.test(v)) {\n throw new Error(\"Invalid IP address format.\");\n }\n });\n return inst;\n },\n\n key: () => xt.string().max(100).index().unique(),\n value: () => xt.string().max(1000),\n token: () => xt.string(64).index().unique(),\n}\n\nexport default xt;"],"names":["XqlIDField","XqlArray","XqlBoolean","XqlDate","XqlEnum","XqlNumber","XqlObject","XqlRecord","XqlString","XqlTuple","XqlUnion","XqlFile","XqlSchema","sha256"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/xt/index.ts"],"sourcesContent":["import { XVEnumValues, XVObjectType } from \"xanv\";\nimport XqlString from \"./fields/String\";\nimport XqlBoolean from \"./fields/Boolean\";\nimport XqlArray from \"./fields/Array\";\nimport XqlDate from \"./fields/Date\";\nimport XqlEnum from \"./fields/Enum\";\nimport XqlNumber from \"./fields/Number\";\nimport XqlObject from \"./fields/Object\";\nimport XqlRecord from \"./fields/Record\";\nimport XqlTuple from \"./fields/Tuple\";\nimport XqlUnion from \"./fields/Union\";\nimport XqlIDField from \"./fields/IDField\";\nimport XqlFile from \"./fields/File\";\nimport XqlSchema from \"./fields/Schema\";\nimport { XqlFields } from \"./types\";\nimport sha256 from \"../utils/sha256\";\n\nconst xt = {\n id: () => new XqlIDField(),\n array: (type: XqlFields, length?: number) => new XqlArray(type as any, length),\n boolean: () => new XqlBoolean(),\n date: () => new XqlDate(),\n enum: (values: XVEnumValues) => new XqlEnum(values),\n number: (length?: number) => new XqlNumber(length),\n object: (arg?: XVObjectType) => new XqlObject(arg),\n record: (key: XqlFields, value: XqlFields) => new XqlRecord(key as any, value as any),\n string: (length?: number) => new XqlString(length),\n tuple: (type: XqlFields[]) => new XqlTuple(type as any),\n union: (type: XqlFields[]) => new XqlUnion(type as any),\n file: (size?: number) => new XqlFile(size),\n schema: (table: string, column: string) => new XqlSchema(table, column),\n\n createdAt: () => xt.date().create(),\n updatedAt: () => xt.date().update(),\n // Custom Types\n name: () => {\n const inst = xt.string().min(1).max(100)\n inst.set(\"name\" as any, (v: any) => {\n const nameRegex = /^[a-zA-Z\\s'-]+$/;\n if (!nameRegex.test(v)) {\n throw new Error(\"Invalid name format.\");\n }\n });\n return inst;\n },\n password: () => {\n const inst = xt.string().min(8).max(64).index().transform(v => sha256(v).slice(0, 64));\n (inst as any).strong = function () {\n inst.set(\"strong\" as any, (v: any) => {\n const hasUpperCase = /[A-Z]/.test(v);\n const hasLowerCase = /[a-z]/.test(v);\n const hasNumber = /[0-9]/.test(v);\n const hasSpecialChar = /[!@#$%^&*(),.?\":{}|<>]/.test(v);\n\n if (!hasUpperCase || !hasLowerCase || !hasNumber || !hasSpecialChar) {\n throw new Error('Password should contain at least one uppercase letter, one lowercase letter, one number, and one special character');\n }\n });\n return this;\n }\n return inst;\n },\n email: () => xt.string().email().index().unique(),\n status: (statuses: string[]) => xt.enum(statuses).index(),\n gender: () => xt.enum(['male', 'female', 'other']).index(),\n role: (roles: string[]) => xt.enum(roles).index(),\n username: () => {\n const inst = xt.string().index().min(3).max(30).index().unique()\n inst.set(\"username\" as any, (v: any) => {\n const usernameRegex = /^[a-zA-Z0-9._-]{3,30}$/;\n if (!usernameRegex.test(v)) {\n throw new Error(\"Invalid username format.\");\n }\n });\n return inst;\n },\n slug: () => {\n const inst = xt.string().index().min(3).max(100)\n inst.set(\"slug\" as any, (v: any) => {\n const slugRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n if (!slugRegex.test(v)) {\n throw new Error(\"Invalid slug format.\");\n }\n });\n return inst;\n },\n url: () => {\n const inst = xt.string().max(2048).min(10)\n inst.set(\"url\" as any, (v: any) => {\n try {\n new URL(v);\n } catch {\n throw new Error(\"Invalid URL format.\");\n }\n });\n return inst;\n },\n photo: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 2 MB\n inst.set(\"photo\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid photo file type.\");\n }\n });\n return inst;\n },\n avatar: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 1 MB\n inst.set(\"avatar\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid avatar file type.\");\n }\n });\n return inst;\n },\n amount: () => xt.number().float().min(0).max(1000000000),\n phone: () => {\n const inst = xt.string().min(7).max(15)\n inst.set(\"phone\" as any, (v: any) => {\n const phoneRegex = /^\\+?[1-9]\\d{1,14}$/;\n if (!phoneRegex.test(v)) {\n throw new Error(\"Invalid phone number format.\");\n }\n });\n return inst;\n },\n title: () => xt.string().min(1).max(200),\n description: () => xt.string().max(1000),\n type: (types: string[]) => xt.enum(types).index(),\n metadata: () => xt.record(xt.string(), xt.union([xt.string(), xt.number(), xt.boolean(), xt.date()])),\n ip: () => {\n const inst = xt.string().index()\n inst.set(\"ip\" as any, (v: any) => {\n const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9]))$/;\n if (!ipv4Regex.test(v) && !ipv6Regex.test(v)) {\n throw new Error(\"Invalid IP address format.\");\n }\n });\n return inst;\n },\n\n key: () => xt.string().max(100).index().unique(),\n value: () => xt.string().max(1000),\n token: () => xt.string(64).index().unique(),\n}\n\nexport default xt;"],"names":["XqlIDField","XqlArray","XqlBoolean","XqlDate","XqlEnum","XqlNumber","XqlObject","XqlRecord","XqlString","XqlTuple","XqlUnion","XqlFile","XqlSchema","sha256"],"mappings":"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"}
package/xt/index.mjs CHANGED
@@ -41,7 +41,7 @@ const xt = {
41
41
  return inst;
42
42
  },
43
43
  password: () => {
44
- const inst = xt.string().min(8).max(32).index().transform(v => sha256(v).slice(0, 32));
44
+ const inst = xt.string().min(8).max(64).index().transform(v => sha256(v).slice(0, 64));
45
45
  inst.strong = function () {
46
46
  inst.set("strong", (v) => {
47
47
  const hasUpperCase = /[A-Z]/.test(v);
@@ -56,7 +56,7 @@ const xt = {
56
56
  };
57
57
  return inst;
58
58
  },
59
- email: () => xt.string().email(),
59
+ email: () => xt.string().email().index().unique(),
60
60
  status: (statuses) => xt.enum(statuses).index(),
61
61
  gender: () => xt.enum(['male', 'female', 'other']).index(),
62
62
  role: (roles) => xt.enum(roles).index(),
package/xt/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/xt/index.ts"],"sourcesContent":["import { XVEnumValues, XVObjectType } from \"xanv\";\nimport XqlString from \"./fields/String\";\nimport XqlBoolean from \"./fields/Boolean\";\nimport XqlArray from \"./fields/Array\";\nimport XqlDate from \"./fields/Date\";\nimport XqlEnum from \"./fields/Enum\";\nimport XqlNumber from \"./fields/Number\";\nimport XqlObject from \"./fields/Object\";\nimport XqlRecord from \"./fields/Record\";\nimport XqlTuple from \"./fields/Tuple\";\nimport XqlUnion from \"./fields/Union\";\nimport XqlIDField from \"./fields/IDField\";\nimport XqlFile from \"./fields/File\";\nimport XqlSchema from \"./fields/Schema\";\nimport { XqlFields } from \"./types\";\nimport sha256 from \"../utils/sha256\";\n\nconst xt = {\n id: () => new XqlIDField(),\n array: (type: XqlFields, length?: number) => new XqlArray(type as any, length),\n boolean: () => new XqlBoolean(),\n date: () => new XqlDate(),\n enum: (values: XVEnumValues) => new XqlEnum(values),\n number: (length?: number) => new XqlNumber(length),\n object: (arg?: XVObjectType) => new XqlObject(arg),\n record: (key: XqlFields, value: XqlFields) => new XqlRecord(key as any, value as any),\n string: (length?: number) => new XqlString(length),\n tuple: (type: XqlFields[]) => new XqlTuple(type as any),\n union: (type: XqlFields[]) => new XqlUnion(type as any),\n file: (size?: number) => new XqlFile(size),\n schema: (table: string, column: string) => new XqlSchema(table, column),\n\n createdAt: () => xt.date().create(),\n updatedAt: () => xt.date().update(),\n // Custom Types\n name: () => {\n const inst = xt.string().min(1).max(100)\n inst.set(\"name\" as any, (v: any) => {\n const nameRegex = /^[a-zA-Z\\s'-]+$/;\n if (!nameRegex.test(v)) {\n throw new Error(\"Invalid name format.\");\n }\n });\n return inst;\n },\n password: () => {\n const inst = xt.string().min(8).max(32).index().transform(v => sha256(v).slice(0, 32));\n (inst as any).strong = function () {\n inst.set(\"strong\" as any, (v: any) => {\n const hasUpperCase = /[A-Z]/.test(v);\n const hasLowerCase = /[a-z]/.test(v);\n const hasNumber = /[0-9]/.test(v);\n const hasSpecialChar = /[!@#$%^&*(),.?\":{}|<>]/.test(v);\n\n if (!hasUpperCase || !hasLowerCase || !hasNumber || !hasSpecialChar) {\n throw new Error('Password should contain at least one uppercase letter, one lowercase letter, one number, and one special character');\n }\n });\n return this;\n }\n return inst;\n },\n email: () => xt.string().email(),\n status: (statuses: string[]) => xt.enum(statuses).index(),\n gender: () => xt.enum(['male', 'female', 'other']).index(),\n role: (roles: string[]) => xt.enum(roles).index(),\n username: () => {\n const inst = xt.string().index().min(3).max(30).index().unique()\n inst.set(\"username\" as any, (v: any) => {\n const usernameRegex = /^[a-zA-Z0-9._-]{3,30}$/;\n if (!usernameRegex.test(v)) {\n throw new Error(\"Invalid username format.\");\n }\n });\n return inst;\n },\n slug: () => {\n const inst = xt.string().index().min(3).max(100)\n inst.set(\"slug\" as any, (v: any) => {\n const slugRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n if (!slugRegex.test(v)) {\n throw new Error(\"Invalid slug format.\");\n }\n });\n return inst;\n },\n url: () => {\n const inst = xt.string().max(2048).min(10)\n inst.set(\"url\" as any, (v: any) => {\n try {\n new URL(v);\n } catch {\n throw new Error(\"Invalid URL format.\");\n }\n });\n return inst;\n },\n photo: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 2 MB\n inst.set(\"photo\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid photo file type.\");\n }\n });\n return inst;\n },\n avatar: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 1 MB\n inst.set(\"avatar\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid avatar file type.\");\n }\n });\n return inst;\n },\n amount: () => xt.number().float().min(0).max(1000000000),\n phone: () => {\n const inst = xt.string().min(7).max(15)\n inst.set(\"phone\" as any, (v: any) => {\n const phoneRegex = /^\\+?[1-9]\\d{1,14}$/;\n if (!phoneRegex.test(v)) {\n throw new Error(\"Invalid phone number format.\");\n }\n });\n return inst;\n },\n title: () => xt.string().min(1).max(200),\n description: () => xt.string().max(1000),\n type: (types: string[]) => xt.enum(types).index(),\n metadata: () => xt.record(xt.string(), xt.union([xt.string(), xt.number(), xt.boolean(), xt.date()])),\n ip: () => {\n const inst = xt.string().index()\n inst.set(\"ip\" as any, (v: any) => {\n const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9]))$/;\n if (!ipv4Regex.test(v) && !ipv6Regex.test(v)) {\n throw new Error(\"Invalid IP address format.\");\n }\n });\n return inst;\n },\n\n key: () => xt.string().max(100).index().unique(),\n value: () => xt.string().max(1000),\n token: () => xt.string(64).index().unique(),\n}\n\nexport default xt;"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/xt/index.ts"],"sourcesContent":["import { XVEnumValues, XVObjectType } from \"xanv\";\nimport XqlString from \"./fields/String\";\nimport XqlBoolean from \"./fields/Boolean\";\nimport XqlArray from \"./fields/Array\";\nimport XqlDate from \"./fields/Date\";\nimport XqlEnum from \"./fields/Enum\";\nimport XqlNumber from \"./fields/Number\";\nimport XqlObject from \"./fields/Object\";\nimport XqlRecord from \"./fields/Record\";\nimport XqlTuple from \"./fields/Tuple\";\nimport XqlUnion from \"./fields/Union\";\nimport XqlIDField from \"./fields/IDField\";\nimport XqlFile from \"./fields/File\";\nimport XqlSchema from \"./fields/Schema\";\nimport { XqlFields } from \"./types\";\nimport sha256 from \"../utils/sha256\";\n\nconst xt = {\n id: () => new XqlIDField(),\n array: (type: XqlFields, length?: number) => new XqlArray(type as any, length),\n boolean: () => new XqlBoolean(),\n date: () => new XqlDate(),\n enum: (values: XVEnumValues) => new XqlEnum(values),\n number: (length?: number) => new XqlNumber(length),\n object: (arg?: XVObjectType) => new XqlObject(arg),\n record: (key: XqlFields, value: XqlFields) => new XqlRecord(key as any, value as any),\n string: (length?: number) => new XqlString(length),\n tuple: (type: XqlFields[]) => new XqlTuple(type as any),\n union: (type: XqlFields[]) => new XqlUnion(type as any),\n file: (size?: number) => new XqlFile(size),\n schema: (table: string, column: string) => new XqlSchema(table, column),\n\n createdAt: () => xt.date().create(),\n updatedAt: () => xt.date().update(),\n // Custom Types\n name: () => {\n const inst = xt.string().min(1).max(100)\n inst.set(\"name\" as any, (v: any) => {\n const nameRegex = /^[a-zA-Z\\s'-]+$/;\n if (!nameRegex.test(v)) {\n throw new Error(\"Invalid name format.\");\n }\n });\n return inst;\n },\n password: () => {\n const inst = xt.string().min(8).max(64).index().transform(v => sha256(v).slice(0, 64));\n (inst as any).strong = function () {\n inst.set(\"strong\" as any, (v: any) => {\n const hasUpperCase = /[A-Z]/.test(v);\n const hasLowerCase = /[a-z]/.test(v);\n const hasNumber = /[0-9]/.test(v);\n const hasSpecialChar = /[!@#$%^&*(),.?\":{}|<>]/.test(v);\n\n if (!hasUpperCase || !hasLowerCase || !hasNumber || !hasSpecialChar) {\n throw new Error('Password should contain at least one uppercase letter, one lowercase letter, one number, and one special character');\n }\n });\n return this;\n }\n return inst;\n },\n email: () => xt.string().email().index().unique(),\n status: (statuses: string[]) => xt.enum(statuses).index(),\n gender: () => xt.enum(['male', 'female', 'other']).index(),\n role: (roles: string[]) => xt.enum(roles).index(),\n username: () => {\n const inst = xt.string().index().min(3).max(30).index().unique()\n inst.set(\"username\" as any, (v: any) => {\n const usernameRegex = /^[a-zA-Z0-9._-]{3,30}$/;\n if (!usernameRegex.test(v)) {\n throw new Error(\"Invalid username format.\");\n }\n });\n return inst;\n },\n slug: () => {\n const inst = xt.string().index().min(3).max(100)\n inst.set(\"slug\" as any, (v: any) => {\n const slugRegex = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n if (!slugRegex.test(v)) {\n throw new Error(\"Invalid slug format.\");\n }\n });\n return inst;\n },\n url: () => {\n const inst = xt.string().max(2048).min(10)\n inst.set(\"url\" as any, (v: any) => {\n try {\n new URL(v);\n } catch {\n throw new Error(\"Invalid URL format.\");\n }\n });\n return inst;\n },\n photo: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 2 MB\n inst.set(\"photo\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid photo file type.\");\n }\n });\n return inst;\n },\n avatar: () => {\n const inst = xt.file().maxSize(2 * 1024 * 1024); // 1 MB\n inst.set(\"avatar\" as any, (v: any) => {\n const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];\n if (!allowedTypes.includes(v.type)) {\n throw new Error(\"Invalid avatar file type.\");\n }\n });\n return inst;\n },\n amount: () => xt.number().float().min(0).max(1000000000),\n phone: () => {\n const inst = xt.string().min(7).max(15)\n inst.set(\"phone\" as any, (v: any) => {\n const phoneRegex = /^\\+?[1-9]\\d{1,14}$/;\n if (!phoneRegex.test(v)) {\n throw new Error(\"Invalid phone number format.\");\n }\n });\n return inst;\n },\n title: () => xt.string().min(1).max(200),\n description: () => xt.string().max(1000),\n type: (types: string[]) => xt.enum(types).index(),\n metadata: () => xt.record(xt.string(), xt.union([xt.string(), xt.number(), xt.boolean(), xt.date()])),\n ip: () => {\n const inst = xt.string().index()\n inst.set(\"ip\" as any, (v: any) => {\n const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]|)[0-9]))$/;\n if (!ipv4Regex.test(v) && !ipv6Regex.test(v)) {\n throw new Error(\"Invalid IP address format.\");\n }\n });\n return inst;\n },\n\n key: () => xt.string().max(100).index().unique(),\n value: () => xt.string().max(1000),\n token: () => xt.string(64).index().unique(),\n}\n\nexport default xt;"],"names":[],"mappings":"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"}