@oxog/vld 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -0
- package/README.md +1128 -1111
- package/dist/coercion/boolean.d.ts.map +1 -1
- package/dist/coercion/boolean.js +6 -2
- package/dist/coercion/boolean.js.map +1 -1
- package/dist/coercion/string.d.ts.map +1 -1
- package/dist/coercion/string.js +146 -10
- package/dist/coercion/string.js.map +1 -1
- package/dist/locales/af.js +3 -3
- package/dist/locales/af.js.map +1 -1
- package/dist/locales/ar.js +3 -3
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/bn.js +3 -3
- package/dist/locales/bn.js.map +1 -1
- package/dist/locales/da.js +3 -3
- package/dist/locales/da.js.map +1 -1
- package/dist/locales/de.js +3 -3
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.js +3 -3
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es-MX.js +3 -3
- package/dist/locales/es-MX.js.map +1 -1
- package/dist/locales/es.js +3 -3
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/fi.js +3 -3
- package/dist/locales/fi.js.map +1 -1
- package/dist/locales/fr.js +3 -3
- package/dist/locales/fr.js.map +1 -1
- package/dist/locales/hi.js +3 -3
- package/dist/locales/hi.js.map +1 -1
- package/dist/locales/id.js +3 -3
- package/dist/locales/id.js.map +1 -1
- package/dist/locales/it.js +3 -3
- package/dist/locales/it.js.map +1 -1
- package/dist/locales/ja.js +3 -3
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +3 -3
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/nl.js +3 -3
- package/dist/locales/nl.js.map +1 -1
- package/dist/locales/no.js +3 -3
- package/dist/locales/no.js.map +1 -1
- package/dist/locales/pl.js +3 -3
- package/dist/locales/pl.js.map +1 -1
- package/dist/locales/pt-BR.js +3 -3
- package/dist/locales/pt-BR.js.map +1 -1
- package/dist/locales/pt.js +3 -3
- package/dist/locales/pt.js.map +1 -1
- package/dist/locales/ru.js +3 -3
- package/dist/locales/ru.js.map +1 -1
- package/dist/locales/sv.js +3 -3
- package/dist/locales/sv.js.map +1 -1
- package/dist/locales/sw.js +3 -3
- package/dist/locales/sw.js.map +1 -1
- package/dist/locales/th.js +3 -3
- package/dist/locales/th.js.map +1 -1
- package/dist/locales/tr.js +3 -3
- package/dist/locales/tr.js.map +1 -1
- package/dist/locales/types.d.ts +3 -3
- package/dist/locales/types.d.ts.map +1 -1
- package/dist/locales/types.js.map +1 -1
- package/dist/locales/vi.js +3 -3
- package/dist/locales/vi.js.map +1 -1
- package/dist/locales/zh.js +3 -3
- package/dist/locales/zh.js.map +1 -1
- package/dist/utils/codec-utils.d.ts +1 -1
- package/dist/utils/codec-utils.d.ts.map +1 -1
- package/dist/utils/codec-utils.js +92 -5
- package/dist/utils/codec-utils.js.map +1 -1
- package/dist/utils/deep-merge.d.ts +1 -0
- package/dist/utils/deep-merge.d.ts.map +1 -1
- package/dist/utils/deep-merge.js +33 -8
- package/dist/utils/deep-merge.js.map +1 -1
- package/dist/validators/array.d.ts +5 -0
- package/dist/validators/array.d.ts.map +1 -1
- package/dist/validators/array.js +30 -1
- package/dist/validators/array.js.map +1 -1
- package/dist/validators/base64.d.ts.map +1 -1
- package/dist/validators/base64.js +5 -2
- package/dist/validators/base64.js.map +1 -1
- package/dist/validators/date.d.ts +5 -1
- package/dist/validators/date.d.ts.map +1 -1
- package/dist/validators/date.js +53 -29
- package/dist/validators/date.js.map +1 -1
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/number.js +16 -3
- package/dist/validators/number.js.map +1 -1
- package/dist/validators/object.d.ts +5 -0
- package/dist/validators/object.d.ts.map +1 -1
- package/dist/validators/object.js +58 -6
- package/dist/validators/object.js.map +1 -1
- package/dist/validators/record.d.ts.map +1 -1
- package/dist/validators/record.js +6 -0
- package/dist/validators/record.js.map +1 -1
- package/dist/validators/string.d.ts.map +1 -1
- package/dist/validators/string.js +86 -4
- package/dist/validators/string.js.map +1 -1
- package/dist/validators/uint8array.js +3 -3
- package/dist/validators/uint8array.js.map +1 -1
- package/dist/validators/union.d.ts +1 -0
- package/dist/validators/union.d.ts.map +1 -1
- package/dist/validators/union.js +31 -20
- package/dist/validators/union.js.map +1 -1
- package/package.json +1 -1
package/dist/locales/th.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"th.js","sourceRoot":"","sources":["../../src/locales/th.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"th.js","sourceRoot":"","sources":["../../src/locales/th.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const th: LocaleMessages = {\n // String validation messages\n invalidString: 'ข้อความไม่ถูกต้อง',\n stringMin: (min: number) => `ข้อความต้องมีความยาวอย่างน้อย ${min} ตัวอักษร`,\n stringMax: (max: number) => `ข้อความต้องมีความยาวไม่เกิน ${max} ตัวอักษร`,\n stringLength: (length: number) => `ข้อความต้องมีความยาวเท่ากับ ${length} ตัวอักษร`,\n stringEmail: 'อีเมลไม่ถูกต้อง',\n stringUrl: 'URL ไม่ถูกต้อง',\n stringUuid: 'UUID ไม่ถูกต้อง',\n stringRegex: 'รูปแบบไม่ถูกต้อง',\n stringStartsWith: (prefix: string) => `ข้อความต้องเริ่มต้นด้วย \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `ข้อความต้องลงท้ายด้วย \"${suffix}\"`,\n stringIncludes: (substring: string) => `ข้อความต้องมี \"${substring}\"`,\n stringIp: 'IP address ไม่ถูกต้อง',\n stringIpv4: 'IPv4 address ไม่ถูกต้อง',\n stringIpv6: 'IPv6 address ไม่ถูกต้อง',\n stringEmpty: 'ข้อความไม่สามารถเป็นค่าว่างได้',\n\n // Number validation messages\n invalidNumber: 'ตัวเลขไม่ถูกต้อง',\n numberMin: (min: number) => `ตัวเลขต้องมีค่าอย่างน้อย ${min}`,\n numberMax: (max: number) => `ตัวเลขต้องมีค่าไม่เกิน ${max}`,\n numberInt: 'ตัวเลขต้องเป็นจำนวนเต็ม',\n numberPositive: 'ตัวเลขต้องเป็นค่าบวก',\n numberNegative: 'ตัวเลขต้องเป็นค่าลบ',\n numberNonnegative: 'ตัวเลขไม่สามารถเป็นค่าลบได้',\n numberNonpositive: 'ตัวเลขไม่สามารถเป็นค่าบวกได้',\n numberFinite: 'ตัวเลขต้องเป็นค่าจำกัด',\n numberSafe: 'ตัวเลขต้องเป็นจำนวนเต็มที่ปลอดภัย',\n numberMultipleOf: (value: number) => `ตัวเลขต้องเป็นหลายเท่าของ ${value}`,\n\n // Boolean validation messages\n invalidBoolean: 'ค่า Boolean ไม่ถูกต้อง',\n\n // Date validation messages\n invalidDate: 'วันที่ไม่ถูกต้อง',\n dateMin: (date: Date) => `วันที่ต้องหลังจาก ${date.toISOString()}`,\n dateMax: (date: Date) => `วันที่ต้องก่อน ${date.toISOString()}`,\n\n // Object validation messages\n invalidObject: 'Object ไม่ถูกต้อง',\n unexpectedKeys: (keys: string[]) => `Key ที่ไม่คาดหวัง: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Array ไม่ถูกต้อง',\n arrayMin: (min: number) => `Array ต้องมีสมาชิกอย่างน้อย ${min} ตัว`,\n arrayMax: (max: number) => `Array ต้องมีสมาชิกไม่เกิน ${max} ตัว`,\n arrayLength: (length: number) => `Array ต้องมีสมาชิกเท่ากับ ${length} ตัว`,\n arrayEmpty: 'Array ไม่สามารถเป็นค่าว่างได้',\n arrayItem: (index: number, error: string) => `สมาชิกที่ตำแหน่ง ${index} ไม่ถูกต้อง: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `ฟิลด์ \"${field}\" ไม่ถูกต้อง: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `ไม่มี union member ที่ตรงกัน: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `การตรวจสอบ intersection ล้มเหลว: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `คาดหวัง ${expected}, ได้รับ ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `คาดหวังค่าใดค่าหนึ่งจาก [${values.join(', ')}], ได้รับ ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'คาดหวัง undefined',\n neverType: 'ไม่สามารถ parse ประเภท never ได้',\n\n // New advanced type validation messages\n invalidBigint: 'bigint ไม่ถูกต้อง',\n invalidSymbol: 'symbol ไม่ถูกต้อง',\n invalidTuple: 'tuple ไม่ถูกต้อง',\n tupleLength: (expected: number, received: number) => `tuple ต้องมีสมาชิกเท่ากับ ${expected} ตัว, ได้รับ ${received} ตัว`,\n invalidRecord: 'record ไม่ถูกต้อง',\n invalidSet: 'Set ไม่ถูกต้อง',\n invalidMap: 'Map ไม่ถูกต้อง',\n \n // Transformation and refinement messages\n transformError: (error: string) => `การแปลงล้มเหลว: ${error}`,\n refinementError: (error: string) => `การปรับแต่งล้มเหลว: ${error}`,\n customValidationError: (error: string) => `การตรวจสอบแบบกำหนดเองล้มเหลว: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `ไม่สามารถแปลง ${JSON.stringify(value)} เป็น ${type} ได้`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
|
package/dist/locales/tr.js
CHANGED
|
@@ -79,9 +79,9 @@ export const tr = {
|
|
|
79
79
|
invalidHex: 'Invalid hexadecimal string',
|
|
80
80
|
// Uint8Array messages
|
|
81
81
|
expectedUint8Array: 'Expected Uint8Array',
|
|
82
|
-
uint8ArrayMinLength:
|
|
83
|
-
uint8ArrayMaxLength:
|
|
84
|
-
uint8ArrayExactLength:
|
|
82
|
+
uint8ArrayMinLength: (min) => `Uint8Array must have at least ${min} bytes`,
|
|
83
|
+
uint8ArrayMaxLength: (max) => `Uint8Array must have at most ${max} bytes`,
|
|
84
|
+
uint8ArrayExactLength: (length) => `Uint8Array must have exactly ${length} bytes`,
|
|
85
85
|
// Generic type error messages
|
|
86
86
|
expectedString: 'Expected string'
|
|
87
87
|
};
|
package/dist/locales/tr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tr.js","sourceRoot":"","sources":["../../src/locales/tr.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tr.js","sourceRoot":"","sources":["../../src/locales/tr.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const tr: LocaleMessages = {\n // String validation messages\n invalidString: 'Geçersiz metin',\n stringMin: (min: number) => `Metin en az ${min} karakter olmalı`,\n stringMax: (max: number) => `Metin en fazla ${max} karakter olmalı`,\n stringLength: (length: number) => `Metin tam olarak ${length} karakter olmalı`,\n stringEmail: 'Geçersiz e-posta adresi',\n stringUrl: 'Geçersiz URL',\n stringUuid: 'Geçersiz UUID',\n stringRegex: 'Geçersiz format',\n stringStartsWith: (prefix: string) => `Metin \"${prefix}\" ile başlamalı`,\n stringEndsWith: (suffix: string) => `Metin \"${suffix}\" ile bitmeli`,\n stringIncludes: (substring: string) => `Metin \"${substring}\" içermeli`,\n stringIp: 'Geçersiz IP adresi',\n stringIpv4: 'Geçersiz IPv4 adresi',\n stringIpv6: 'Geçersiz IPv6 adresi',\n stringEmpty: 'Metin boş olmamalı',\n\n // Number validation messages\n invalidNumber: 'Geçersiz sayı',\n numberMin: (min: number) => `Sayı en az ${min} olmalı`,\n numberMax: (max: number) => `Sayı en fazla ${max} olmalı`,\n numberInt: 'Sayı tam sayı olmalı',\n numberPositive: 'Sayı pozitif olmalı',\n numberNegative: 'Sayı negatif olmalı',\n numberNonnegative: 'Sayı negatif olmamalı',\n numberNonpositive: 'Sayı pozitif olmamalı',\n numberFinite: 'Sayı sonlu olmalı',\n numberSafe: 'Sayı güvenli tam sayı olmalı',\n numberMultipleOf: (value: number) => `Sayı ${value}'nin katı olmalı`,\n\n // Boolean validation messages\n invalidBoolean: 'Geçersiz boolean',\n\n // Date validation messages\n invalidDate: 'Geçersiz tarih',\n dateMin: (date: Date) => `Tarih ${date.toISOString()} sonrasında olmalı`,\n dateMax: (date: Date) => `Tarih ${date.toISOString()} öncesinde olmalı`,\n\n // Object validation messages\n invalidObject: 'Geçersiz nesne',\n unexpectedKeys: (keys: string[]) => `Beklenmeyen anahtarlar: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Geçersiz dizi',\n arrayMin: (min: number) => `Dizi en az ${min} eleman içermeli`,\n arrayMax: (max: number) => `Dizi en fazla ${max} eleman içermeli`,\n arrayLength: (length: number) => `Dizi tam olarak ${length} eleman içermeli`,\n arrayEmpty: 'Dizi boş olmamalı',\n arrayItem: (index: number, error: string) => `${index} indeksindeki eleman geçersiz: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `\"${field}\" alanı geçersiz: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Hiçbir union üyesi eşleşmedi: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Intersection doğrulaması başarısız: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `${expected} beklendi, ${received} alındı`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `[${values.join(', ')}] değerlerinden biri beklendi, ${received} alındı`,\n\n // Special type validation messages\n expectedUndefined: 'Undefined beklendi',\n neverType: 'Never tipi parse edilemez',\n\n // New advanced type validation messages\n invalidBigint: 'Geçersiz bigint',\n invalidSymbol: 'Geçersiz symbol',\n invalidTuple: 'Geçersiz tuple',\n tupleLength: (expected: number, received: number) => `Tuple tam olarak ${expected} elemana sahip olmalı, ${received} aldı`,\n invalidRecord: 'Geçersiz record',\n invalidSet: 'Geçersiz set',\n invalidMap: 'Geçersiz map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Dönüştürme başarısız: ${error}`,\n refinementError: (error: string) => `Doğrulama başarısız: ${error}`,\n customValidationError: (error: string) => `Özel doğrulama başarısız: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `${JSON.stringify(value)} değeri ${type} tipine dönüştürülemez`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
|
package/dist/locales/types.d.ts
CHANGED
|
@@ -62,9 +62,9 @@ export interface LocaleMessages {
|
|
|
62
62
|
invalidBase64: string;
|
|
63
63
|
invalidHex: string;
|
|
64
64
|
expectedUint8Array: string;
|
|
65
|
-
uint8ArrayMinLength: string;
|
|
66
|
-
uint8ArrayMaxLength: string;
|
|
67
|
-
uint8ArrayExactLength: string;
|
|
65
|
+
uint8ArrayMinLength: (min: number) => string;
|
|
66
|
+
uint8ArrayMaxLength: (max: number) => string;
|
|
67
|
+
uint8ArrayExactLength: (length: number) => string;
|
|
68
68
|
expectedString: string;
|
|
69
69
|
}
|
|
70
70
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAEtG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACtG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAE1E,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACtG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACtG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAEzB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAE/F,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/D,MAAM,WAAW,cAAc;IAE7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAG5C,cAAc,EAAE,MAAM,CAAC;IAGvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IAGhC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAG3C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAGpD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAGtD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAG3C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAG7C,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAGhE,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAG1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAGlB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAGjD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAGzD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAG/B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IAGnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"","sourcesContent":["export type Locale = \n | 'en' | 'tr' | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'ru' | 'ja' | 'ko' | 'zh' | 'ar' | 'hi' | 'nl' | 'pl'\n // Major European Languages \n | 'da' | 'sv' | 'no' | 'fi' | 'is' | 'cs' | 'sk' | 'hu' | 'ro' | 'bg' | 'hr' | 'sl' | 'lv' | 'lt' | 'et'\n | 'el' | 'mk' | 'sq' | 'sr' | 'bs' | 'me' | 'mt' | 'ga' | 'cy' | 'eu' | 'ca'\n // Major Asian Languages\n | 'th' | 'vi' | 'id' | 'ms' | 'tl' | 'bn' | 'ur' | 'fa' | 'he' | 'ka' | 'am' | 'hy' | 'az' | 'kk' | 'ky'\n | 'uz' | 'tg' | 'mn' | 'my' | 'km' | 'lo' | 'si' | 'ta' | 'te' | 'ml' | 'kn' | 'gu' | 'pa' | 'or' | 'as'\n | 'ne' | 'mr' | 'sd' | 'dv'\n // African Languages\n | 'sw' | 'am' | 'ha' | 'yo' | 'ig' | 'zu' | 'xh' | 'af' | 'st' | 'tn' | 'ts' | 've' | 'nr' | 'ss'\n // American Languages \n | 'pt-BR' | 'es-MX' | 'es-AR' | 'fr-CA' | 'qu' | 'gn' | 'ay';\n\nexport interface LocaleMessages {\n // String validation messages\n invalidString: string;\n stringMin: (min: number) => string;\n stringMax: (max: number) => string;\n stringLength: (length: number) => string;\n stringEmail: string;\n stringUrl: string;\n stringUuid: string;\n stringRegex: string;\n stringStartsWith: (prefix: string) => string;\n stringEndsWith: (suffix: string) => string;\n stringIncludes: (substring: string) => string;\n stringIp: string;\n stringIpv4: string;\n stringIpv6: string;\n stringEmpty: string;\n\n // Number validation messages \n invalidNumber: string;\n numberMin: (min: number) => string;\n numberMax: (max: number) => string;\n numberInt: string;\n numberPositive: string;\n numberNegative: string;\n numberNonnegative: string;\n numberNonpositive: string;\n numberFinite: string;\n numberSafe: string;\n numberMultipleOf: (value: number) => string;\n\n // Boolean validation messages\n invalidBoolean: string;\n\n // Date validation messages\n invalidDate: string;\n dateMin: (date: Date) => string;\n dateMax: (date: Date) => string;\n\n // Object validation messages\n invalidObject: string;\n unexpectedKeys: (keys: string[]) => string;\n\n // Array validation messages\n invalidArray: string;\n arrayMin: (min: number) => string;\n arrayMax: (max: number) => string;\n arrayLength: (length: number) => string;\n arrayEmpty: string;\n arrayItem: (index: number, error: string) => string;\n\n // Object field validation\n objectField: (field: string, error: string) => string;\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => string;\n\n // Intersection validation messages\n intersectionError: (error: string) => string;\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => string;\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => string;\n\n // Special type validation messages\n expectedUndefined: string;\n neverType: string;\n\n // New advanced type validation messages\n invalidBigint: string;\n invalidSymbol: string;\n invalidTuple: string;\n tupleLength: (expected: number, received: number) => string;\n invalidRecord: string;\n invalidSet: string;\n invalidMap: string;\n \n // Transformation and refinement messages\n transformError: (error: string) => string;\n refinementError: (error: string) => string;\n customValidationError: (error: string) => string;\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => string;\n \n // Codec messages\n codecDecodeFailed: string;\n codecEncodeFailed: string;\n codecAsyncNotSupported: string;\n \n // Base64/Hex messages\n invalidBase64: string;\n invalidHex: string;\n \n // Uint8Array messages\n expectedUint8Array: string;\n uint8ArrayMinLength: string;\n uint8ArrayMaxLength: string;\n uint8ArrayExactLength: string;\n \n // Generic type error messages\n expectedString: string;\n}"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/locales/types.ts"],"names":[],"mappings":"","sourcesContent":["export type Locale = \n | 'en' | 'tr' | 'es' | 'fr' | 'de' | 'it' | 'pt' | 'ru' | 'ja' | 'ko' | 'zh' | 'ar' | 'hi' | 'nl' | 'pl'\n // Major European Languages \n | 'da' | 'sv' | 'no' | 'fi' | 'is' | 'cs' | 'sk' | 'hu' | 'ro' | 'bg' | 'hr' | 'sl' | 'lv' | 'lt' | 'et'\n | 'el' | 'mk' | 'sq' | 'sr' | 'bs' | 'me' | 'mt' | 'ga' | 'cy' | 'eu' | 'ca'\n // Major Asian Languages\n | 'th' | 'vi' | 'id' | 'ms' | 'tl' | 'bn' | 'ur' | 'fa' | 'he' | 'ka' | 'am' | 'hy' | 'az' | 'kk' | 'ky'\n | 'uz' | 'tg' | 'mn' | 'my' | 'km' | 'lo' | 'si' | 'ta' | 'te' | 'ml' | 'kn' | 'gu' | 'pa' | 'or' | 'as'\n | 'ne' | 'mr' | 'sd' | 'dv'\n // African Languages\n | 'sw' | 'am' | 'ha' | 'yo' | 'ig' | 'zu' | 'xh' | 'af' | 'st' | 'tn' | 'ts' | 've' | 'nr' | 'ss'\n // American Languages \n | 'pt-BR' | 'es-MX' | 'es-AR' | 'fr-CA' | 'qu' | 'gn' | 'ay';\n\nexport interface LocaleMessages {\n // String validation messages\n invalidString: string;\n stringMin: (min: number) => string;\n stringMax: (max: number) => string;\n stringLength: (length: number) => string;\n stringEmail: string;\n stringUrl: string;\n stringUuid: string;\n stringRegex: string;\n stringStartsWith: (prefix: string) => string;\n stringEndsWith: (suffix: string) => string;\n stringIncludes: (substring: string) => string;\n stringIp: string;\n stringIpv4: string;\n stringIpv6: string;\n stringEmpty: string;\n\n // Number validation messages \n invalidNumber: string;\n numberMin: (min: number) => string;\n numberMax: (max: number) => string;\n numberInt: string;\n numberPositive: string;\n numberNegative: string;\n numberNonnegative: string;\n numberNonpositive: string;\n numberFinite: string;\n numberSafe: string;\n numberMultipleOf: (value: number) => string;\n\n // Boolean validation messages\n invalidBoolean: string;\n\n // Date validation messages\n invalidDate: string;\n dateMin: (date: Date) => string;\n dateMax: (date: Date) => string;\n\n // Object validation messages\n invalidObject: string;\n unexpectedKeys: (keys: string[]) => string;\n\n // Array validation messages\n invalidArray: string;\n arrayMin: (min: number) => string;\n arrayMax: (max: number) => string;\n arrayLength: (length: number) => string;\n arrayEmpty: string;\n arrayItem: (index: number, error: string) => string;\n\n // Object field validation\n objectField: (field: string, error: string) => string;\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => string;\n\n // Intersection validation messages\n intersectionError: (error: string) => string;\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => string;\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => string;\n\n // Special type validation messages\n expectedUndefined: string;\n neverType: string;\n\n // New advanced type validation messages\n invalidBigint: string;\n invalidSymbol: string;\n invalidTuple: string;\n tupleLength: (expected: number, received: number) => string;\n invalidRecord: string;\n invalidSet: string;\n invalidMap: string;\n \n // Transformation and refinement messages\n transformError: (error: string) => string;\n refinementError: (error: string) => string;\n customValidationError: (error: string) => string;\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => string;\n \n // Codec messages\n codecDecodeFailed: string;\n codecEncodeFailed: string;\n codecAsyncNotSupported: string;\n \n // Base64/Hex messages\n invalidBase64: string;\n invalidHex: string;\n \n // Uint8Array messages\n expectedUint8Array: string;\n uint8ArrayMinLength: (min: number) => string;\n uint8ArrayMaxLength: (max: number) => string;\n uint8ArrayExactLength: (length: number) => string;\n \n // Generic type error messages\n expectedString: string;\n}"]}
|
package/dist/locales/vi.js
CHANGED
|
@@ -79,9 +79,9 @@ export const vi = {
|
|
|
79
79
|
invalidHex: 'Invalid hexadecimal string',
|
|
80
80
|
// Uint8Array messages
|
|
81
81
|
expectedUint8Array: 'Expected Uint8Array',
|
|
82
|
-
uint8ArrayMinLength:
|
|
83
|
-
uint8ArrayMaxLength:
|
|
84
|
-
uint8ArrayExactLength:
|
|
82
|
+
uint8ArrayMinLength: (min) => `Uint8Array must have at least ${min} bytes`,
|
|
83
|
+
uint8ArrayMaxLength: (max) => `Uint8Array must have at most ${max} bytes`,
|
|
84
|
+
uint8ArrayExactLength: (length) => `Uint8Array must have exactly ${length} bytes`,
|
|
85
85
|
// Generic type error messages
|
|
86
86
|
expectedString: 'Expected string'
|
|
87
87
|
};
|
package/dist/locales/vi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vi.js","sourceRoot":"","sources":["../../src/locales/vi.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vi.js","sourceRoot":"","sources":["../../src/locales/vi.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const vi: LocaleMessages = {\n // String validation messages\n invalidString: 'Chuỗi không hợp lệ',\n stringMin: (min: number) => `Chuỗi phải có ít nhất ${min} ký tự`,\n stringMax: (max: number) => `Chuỗi không được quá ${max} ký tự`,\n stringLength: (length: number) => `Chuỗi phải có chính xác ${length} ký tự`,\n stringEmail: 'Địa chỉ email không hợp lệ',\n stringUrl: 'URL không hợp lệ',\n stringUuid: 'UUID không hợp lệ',\n stringRegex: 'Định dạng không hợp lệ',\n stringStartsWith: (prefix: string) => `Chuỗi phải bắt đầu bằng \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `Chuỗi phải kết thúc bằng \"${suffix}\"`,\n stringIncludes: (substring: string) => `Chuỗi phải chứa \"${substring}\"`,\n stringIp: 'Địa chỉ IP không hợp lệ',\n stringIpv4: 'Địa chỉ IPv4 không hợp lệ',\n stringIpv6: 'Địa chỉ IPv6 không hợp lệ',\n stringEmpty: 'Chuỗi không được để trống',\n\n // Number validation messages\n invalidNumber: 'Số không hợp lệ',\n numberMin: (min: number) => `Số phải ít nhất là ${min}`,\n numberMax: (max: number) => `Số không được vượt quá ${max}`,\n numberInt: 'Số phải là số nguyên',\n numberPositive: 'Số phải là số dương',\n numberNegative: 'Số phải là số âm',\n numberNonnegative: 'Số không được là số âm',\n numberNonpositive: 'Số không được là số dương',\n numberFinite: 'Số phải là số hữu hạn',\n numberSafe: 'Số phải là số nguyên an toàn',\n numberMultipleOf: (value: number) => `Số phải là bội số của ${value}`,\n\n // Boolean validation messages\n invalidBoolean: 'Giá trị boolean không hợp lệ',\n\n // Date validation messages\n invalidDate: 'Ngày không hợp lệ',\n dateMin: (date: Date) => `Ngày phải sau ${date.toISOString()}`,\n dateMax: (date: Date) => `Ngày phải trước ${date.toISOString()}`,\n\n // Object validation messages\n invalidObject: 'Đối tượng không hợp lệ',\n unexpectedKeys: (keys: string[]) => `Khóa không mong muốn: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Mảng không hợp lệ',\n arrayMin: (min: number) => `Mảng phải có ít nhất ${min} phần tử`,\n arrayMax: (max: number) => `Mảng không được quá ${max} phần tử`,\n arrayLength: (length: number) => `Mảng phải có chính xác ${length} phần tử`,\n arrayEmpty: 'Mảng không được để trống',\n arrayItem: (index: number, error: string) => `Phần tử không hợp lệ tại vị trí ${index}: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `Trường \"${field}\" không hợp lệ: ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Không có thành viên union nào khớp: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Xác thực intersection thất bại: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `Mong đợi ${expected}, nhận được ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `Mong đợi một trong [${values.join(', ')}], nhận được ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'Mong đợi undefined',\n neverType: 'Không thể phân tích kiểu never',\n\n // New advanced type validation messages\n invalidBigint: 'Bigint không hợp lệ',\n invalidSymbol: 'Ký hiệu không hợp lệ',\n invalidTuple: 'Tuple không hợp lệ',\n tupleLength: (expected: number, received: number) => `Tuple phải có chính xác ${expected} phần tử, nhận được ${received}`,\n invalidRecord: 'Record không hợp lệ',\n invalidSet: 'Set không hợp lệ',\n invalidMap: 'Map không hợp lệ',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Biến đổi thất bại: ${error}`,\n refinementError: (error: string) => `Tinh chế thất bại: ${error}`,\n customValidationError: (error: string) => `Xác thực tùy chỉnh thất bại: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `Không thể ép kiểu ${JSON.stringify(value)} thành ${type}`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
|
package/dist/locales/zh.js
CHANGED
|
@@ -79,9 +79,9 @@ export const zh = {
|
|
|
79
79
|
invalidHex: 'Invalid hexadecimal string',
|
|
80
80
|
// Uint8Array messages
|
|
81
81
|
expectedUint8Array: 'Expected Uint8Array',
|
|
82
|
-
uint8ArrayMinLength:
|
|
83
|
-
uint8ArrayMaxLength:
|
|
84
|
-
uint8ArrayExactLength:
|
|
82
|
+
uint8ArrayMinLength: (min) => `Uint8Array must have at least ${min} bytes`,
|
|
83
|
+
uint8ArrayMaxLength: (max) => `Uint8Array must have at most ${max} bytes`,
|
|
84
|
+
uint8ArrayExactLength: (length) => `Uint8Array must have exactly ${length} bytes`,
|
|
85
85
|
// Generic type error messages
|
|
86
86
|
expectedString: 'Expected string'
|
|
87
87
|
};
|
package/dist/locales/zh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/locales/zh.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAmB;IAChC,6BAA6B;IAC7B,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,GAAG,KAAK;IAC9C,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,GAAG,KAAK;IAC9C,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,MAAM,KAAK;IACvD,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,MAAM;IACnB,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,MAAM,KAAK;IAC3D,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,MAAM,KAAK;IACzD,cAAc,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,WAAW,SAAS,GAAG;IAC9D,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,SAAS;IAEtB,6BAA6B;IAC7B,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE;IAC3C,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE;IAC1C,SAAS,EAAE,SAAS;IACpB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,iBAAiB,EAAE,SAAS;IAC5B,iBAAiB,EAAE,SAAS;IAC5B,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,WAAW;IACvB,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,KAAK,KAAK;IAEvD,8BAA8B;IAC9B,cAAc,EAAE,OAAO;IAEvB,2BAA2B;IAC3B,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,IAAI;IACvD,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,IAAI;IAEvD,6BAA6B;IAC7B,aAAa,EAAE,MAAM;IACrB,cAAc,EAAE,CAAC,IAAc,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAE9D,4BAA4B;IAC5B,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,GAAG,KAAK;IAC7C,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,GAAG,KAAK;IAC5C,WAAW,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,MAAM,KAAK;IACtD,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,KAAK,EAAE;IAEzE,0BAA0B;IAC1B,WAAW,EAAE,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,KAAK,EAAE;IAEzE,4BAA4B;IAC5B,YAAY,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAErE,mCAAmC;IACnC,iBAAiB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,KAAK,EAAE;IAExD,8BAA8B;IAC9B,eAAe,EAAE,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE,CAAC,KAAK,QAAQ,MAAM,QAAQ,EAAE;IAEtF,2BAA2B;IAC3B,YAAY,EAAE,CAAC,MAAa,EAAE,QAAgB,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,QAAQ,EAAE;IAE/F,mCAAmC;IACnC,iBAAiB,EAAE,aAAa;IAChC,SAAS,EAAE,aAAa;IAExB,wCAAwC;IACxC,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,MAAM;IACrB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE,CAAC,UAAU,QAAQ,SAAS,QAAQ,GAAG;IAC3F,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,OAAO;IAEnB,yCAAyC;IACzC,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE;IACnD,eAAe,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE;IACpD,qBAAqB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,KAAK,EAAE;IAE7D,oBAAoB;IACpB,cAAc,EAAE,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;IAE3F,iBAAiB;IACjB,iBAAiB,EAAE,wBAAwB;IAC3C,iBAAiB,EAAE,wBAAwB;IAC3C,sBAAsB,EAAE,qEAAqE;IAE7F,sBAAsB;IACtB,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,4BAA4B;IAExC,sBAAsB;IACtB,kBAAkB,EAAE,qBAAqB;IACzC,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"zh.js","sourceRoot":"","sources":["../../src/locales/zh.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const zh: LocaleMessages = {\n // String validation messages\n invalidString: '无效字符串',\n stringMin: (min: number) => `字符串必须至少${min}个字符`,\n stringMax: (max: number) => `字符串不能超过${max}个字符`,\n stringLength: (length: number) => `字符串必须正好${length}个字符`,\n stringEmail: '无效邮箱地址',\n stringUrl: '无效URL',\n stringUuid: '无效UUID',\n stringRegex: '无效格式',\n stringStartsWith: (prefix: string) => `字符串必须以\"${prefix}\"开头`,\n stringEndsWith: (suffix: string) => `字符串必须以\"${suffix}\"结尾`,\n stringIncludes: (substring: string) => `字符串必须包含\"${substring}\"`,\n stringIp: '无效IP地址',\n stringIpv4: '无效IPv4地址',\n stringIpv6: '无效IPv6地址',\n stringEmpty: '字符串不能为空',\n\n // Number validation messages\n invalidNumber: '无效数字',\n numberMin: (min: number) => `数字必须至少为${min}`,\n numberMax: (max: number) => `数字不能大于${max}`,\n numberInt: '数字必须是整数',\n numberPositive: '数字必须是正数',\n numberNegative: '数字必须是负数',\n numberNonnegative: '数字不能是负数',\n numberNonpositive: '数字不能是正数',\n numberFinite: '数字必须是有限的',\n numberSafe: '数字必须是安全整数',\n numberMultipleOf: (value: number) => `数字必须是${value}的倍数`,\n\n // Boolean validation messages\n invalidBoolean: '无效布尔值',\n\n // Date validation messages\n invalidDate: '无效日期',\n dateMin: (date: Date) => `日期必须在${date.toISOString()}之后`,\n dateMax: (date: Date) => `日期必须在${date.toISOString()}之前`,\n\n // Object validation messages\n invalidObject: '无效对象',\n unexpectedKeys: (keys: string[]) => `意外的键: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: '无效数组',\n arrayMin: (min: number) => `数组必须至少有${min}个元素`,\n arrayMax: (max: number) => `数组不能超过${max}个元素`,\n arrayLength: (length: number) => `数组必须正好有${length}个元素`,\n arrayEmpty: '数组不能为空',\n arrayItem: (index: number, error: string) => `索引${index}处的无效元素: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `无效字段\"${field}\": ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `没有匹配的联合成员: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `交集验证失败: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `期望${expected},得到${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `期望[${values.join(', ')}]中的一个,得到${received}`,\n\n // Special type validation messages\n expectedUndefined: '期望undefined',\n neverType: 'never类型无法解析',\n\n // New advanced type validation messages\n invalidBigint: '无效bigint',\n invalidSymbol: '无效符号',\n invalidTuple: '无效元组',\n tupleLength: (expected: number, received: number) => `元组必须正好有${expected}个元素,得到${received}个`,\n invalidRecord: '无效记录',\n invalidSet: '无效Set',\n invalidMap: '无效Map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `转换失败: ${error}`,\n refinementError: (error: string) => `细化失败: ${error}`,\n customValidationError: (error: string) => `自定义验证失败: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `无法将${JSON.stringify(value)}强制转换为${type}`,\n \n // Codec messages\n codecDecodeFailed: 'Failed to decode value',\n codecEncodeFailed: 'Failed to encode value',\n codecAsyncNotSupported: 'Async codec operations require using parseAsync/encodeAsync methods',\n \n // Base64/Hex messages\n invalidBase64: 'Invalid base64 string',\n invalidHex: 'Invalid hexadecimal string',\n \n // Uint8Array messages\n expectedUint8Array: 'Expected Uint8Array',\n uint8ArrayMinLength: (min: number) => `Uint8Array must have at least ${min} bytes`,\n uint8ArrayMaxLength: (max: number) => `Uint8Array must have at most ${max} bytes`,\n uint8ArrayExactLength: (length: number) => `Uint8Array must have exactly ${length} bytes`,\n \n // Generic type error messages\n expectedString: 'Expected string'\n};"]}
|
|
@@ -34,7 +34,7 @@ export declare function uint8ArrayToString(bytes: Uint8Array): string;
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function isNodeEnvironment(): boolean;
|
|
36
36
|
/**
|
|
37
|
-
* Polyfill for atob in Node.js
|
|
37
|
+
* Polyfill for atob in Node.js with proper input validation
|
|
38
38
|
*/
|
|
39
39
|
export declare function safeAtob(encoded: string): string;
|
|
40
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-utils.d.ts","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAiB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAO/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAavD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAG1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;
|
|
1
|
+
{"version":3,"file":"codec-utils.d.ts","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAiB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAO/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAavD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAG1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAK3C;AA2ED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiChD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW5C"}
|
|
@@ -51,7 +51,7 @@ export function hexToUint8Array(hex) {
|
|
|
51
51
|
const paddedHex = cleanHex.length % 2 === 0 ? cleanHex : '0' + cleanHex;
|
|
52
52
|
const bytes = new Uint8Array(paddedHex.length / 2);
|
|
53
53
|
for (let i = 0; i < paddedHex.length; i += 2) {
|
|
54
|
-
bytes[i / 2] = parseInt(paddedHex.
|
|
54
|
+
bytes[i / 2] = parseInt(paddedHex.substring(i, i + 2), 16);
|
|
55
55
|
}
|
|
56
56
|
return bytes;
|
|
57
57
|
}
|
|
@@ -90,15 +90,102 @@ export function isNodeEnvironment() {
|
|
|
90
90
|
globalThis.process.versions.node != null;
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
*
|
|
93
|
+
* Validate and sanitize base64 input to prevent prototype pollution
|
|
94
|
+
*/
|
|
95
|
+
function validateBase64Input(encoded) {
|
|
96
|
+
// Check for null/undefined
|
|
97
|
+
if (encoded == null) {
|
|
98
|
+
throw new Error('Base64 input cannot be null or undefined');
|
|
99
|
+
}
|
|
100
|
+
// Ensure it's a string
|
|
101
|
+
if (typeof encoded !== 'string') {
|
|
102
|
+
throw new Error('Base64 input must be a string');
|
|
103
|
+
}
|
|
104
|
+
// Length validation - base64 strings should be reasonable length
|
|
105
|
+
if (encoded.length > 10000000) { // 10MB limit
|
|
106
|
+
throw new Error('Base64 input is too large');
|
|
107
|
+
}
|
|
108
|
+
// Base64 character validation - only allow valid base64 characters
|
|
109
|
+
const base64Regex = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
110
|
+
if (!base64Regex.test(encoded)) {
|
|
111
|
+
throw new Error('Invalid base64 format');
|
|
112
|
+
}
|
|
113
|
+
// Check for padding issues
|
|
114
|
+
const paddingIndex = encoded.indexOf('=');
|
|
115
|
+
if (paddingIndex !== -1) {
|
|
116
|
+
const padding = encoded.substring(paddingIndex);
|
|
117
|
+
// Only allow '=', '==', or '===' as padding
|
|
118
|
+
if (!/^={1,2}$/.test(padding) && padding !== '===') {
|
|
119
|
+
throw new Error('Invalid base64 padding');
|
|
120
|
+
}
|
|
121
|
+
// Padding should only be at the end
|
|
122
|
+
if (paddingIndex < encoded.length - 3) {
|
|
123
|
+
throw new Error('Base64 padding must be at the end');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Additional security check: prevent potential encoded JavaScript
|
|
127
|
+
// by looking for suspicious patterns that might indicate malicious content
|
|
128
|
+
const suspiciousPatterns = [
|
|
129
|
+
/eval/i,
|
|
130
|
+
/function/i,
|
|
131
|
+
/javascript:/i,
|
|
132
|
+
/<script/i,
|
|
133
|
+
/on\w+\s*=/i,
|
|
134
|
+
/__proto__/i,
|
|
135
|
+
/constructor/i,
|
|
136
|
+
/prototype/i
|
|
137
|
+
];
|
|
138
|
+
// Decode a small portion to check for suspicious content
|
|
139
|
+
try {
|
|
140
|
+
const sampleSize = Math.min(100, encoded.length);
|
|
141
|
+
const sample = encoded.substring(0, sampleSize);
|
|
142
|
+
const sampleDecoded = typeof atob !== 'undefined'
|
|
143
|
+
? atob(sample)
|
|
144
|
+
: Buffer.from(sample, 'base64').toString('utf8', 0, 50); // Only decode first 50 chars
|
|
145
|
+
for (const pattern of suspiciousPatterns) {
|
|
146
|
+
if (pattern.test(sampleDecoded)) {
|
|
147
|
+
throw new Error('Suspicious content detected in base64 input');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (error instanceof Error && error.message.includes('Suspicious content')) {
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
// If decoding fails, continue - it might be invalid base64 which will be caught later
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Polyfill for atob in Node.js with proper input validation
|
|
94
160
|
*/
|
|
95
161
|
export function safeAtob(encoded) {
|
|
162
|
+
// Input validation and sanitization
|
|
163
|
+
validateBase64Input(encoded);
|
|
96
164
|
if (typeof atob !== 'undefined') {
|
|
97
|
-
|
|
165
|
+
try {
|
|
166
|
+
return atob(encoded);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
throw new Error('Failed to decode base64 data');
|
|
170
|
+
}
|
|
98
171
|
}
|
|
99
|
-
// Node.js fallback
|
|
172
|
+
// Node.js fallback with additional validation
|
|
100
173
|
if (isNodeEnvironment()) {
|
|
101
|
-
|
|
174
|
+
try {
|
|
175
|
+
// Use Buffer with explicit error handling
|
|
176
|
+
const buffer = Buffer.from(encoded, 'base64');
|
|
177
|
+
// Additional validation: ensure the decoded data is reasonable size
|
|
178
|
+
if (buffer.length > 5000000) { // 5MB limit for decoded data
|
|
179
|
+
throw new Error('Decoded base64 data is too large');
|
|
180
|
+
}
|
|
181
|
+
return buffer.toString('binary');
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
if (error instanceof Error && error.message.includes('Invalid base64')) {
|
|
185
|
+
throw new Error('Invalid base64 format');
|
|
186
|
+
}
|
|
187
|
+
throw new Error('Failed to decode base64 data in Node.js environment');
|
|
188
|
+
}
|
|
102
189
|
}
|
|
103
190
|
throw new Error('Base64 decoding not supported in this environment');
|
|
104
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-utils.js","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Utility functions for codec transformations\n */\n\n/**\n * Convert a base64 string to Uint8Array\n */\nexport function base64ToUint8Array(base64: string): Uint8Array {\n // Handle URL-safe base64\n const base64Clean = base64.replace(/-/g, '+').replace(/_/g, '/');\n \n // Add padding if necessary\n const padded = base64Clean.padEnd(base64Clean.length + (4 - base64Clean.length % 4) % 4, '=');\n \n // Decode base64 to binary string\n const binaryString = safeAtob(padded);\n \n // Convert binary string to Uint8Array\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n \n return bytes;\n}\n\n/**\n * Convert Uint8Array to base64 string\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n // Convert Uint8Array to binary string\n let binaryString = '';\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n \n // Encode to base64\n return safeBtoa(binaryString);\n}\n\n/**\n * Convert Uint8Array to URL-safe base64 string\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n const base64 = uint8ArrayToBase64(bytes);\n // Make URL-safe and remove padding\n return base64\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n}\n\n/**\n * Convert hex string to Uint8Array\n */\nexport function hexToUint8Array(hex: string): Uint8Array {\n // Remove any 0x prefix if present\n const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;\n \n // Ensure even length\n const paddedHex = cleanHex.length % 2 === 0 ? cleanHex : '0' + cleanHex;\n \n const bytes = new Uint8Array(paddedHex.length / 2);\n for (let i = 0; i < paddedHex.length; i += 2) {\n bytes[i / 2] = parseInt(paddedHex.substr(i, 2), 16);\n }\n \n return bytes;\n}\n\n/**\n * Convert Uint8Array to hex string\n */\nexport function uint8ArrayToHex(bytes: Uint8Array): string {\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n const byte = bytes[i].toString(16);\n hex += byte.length === 1 ? '0' + byte : byte;\n }\n return hex;\n}\n\n/**\n * Convert string to Uint8Array using UTF-8 encoding\n */\nexport function stringToUint8Array(str: string): Uint8Array {\n const encoder = new TextEncoder();\n return encoder.encode(str);\n}\n\n/**\n * Convert Uint8Array to string using UTF-8 decoding\n */\nexport function uint8ArrayToString(bytes: Uint8Array): string {\n const decoder = new TextDecoder();\n return decoder.decode(bytes);\n}\n\n/**\n * Check if running in Node.js environment\n */\nexport function isNodeEnvironment(): boolean {\n return typeof globalThis !== 'undefined' && \n typeof globalThis.process !== 'undefined' &&\n globalThis.process.versions != null &&\n globalThis.process.versions.node != null;\n}\n\n/**\n * Polyfill for atob in Node.js\n */\nexport function safeAtob(encoded: string): string {\n if (typeof atob !== 'undefined') {\n return atob(encoded);\n }\n \n // Node.js fallback\n if (isNodeEnvironment()) {\n return Buffer.from(encoded, 'base64').toString('binary');\n }\n \n throw new Error('Base64 decoding not supported in this environment');\n}\n\n/**\n * Polyfill for btoa in Node.js\n */\nexport function safeBtoa(str: string): string {\n if (typeof btoa !== 'undefined') {\n return btoa(str);\n }\n \n // Node.js fallback\n if (isNodeEnvironment()) {\n return Buffer.from(str, 'binary').toString('base64');\n }\n \n throw new Error('Base64 encoding not supported in this environment');\n}"]}
|
|
1
|
+
{"version":3,"file":"codec-utils.js","sourceRoot":"","sources":["../../src/utils/codec-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,yBAAyB;IACzB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEjE,2BAA2B;IAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAE9F,iCAAiC;IACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtC,sCAAsC;IACtC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,sCAAsC;IACtC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,mBAAmB;IACnB,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,mCAAmC;IACnC,OAAO,MAAM;SACV,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,kCAAkC;IAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE3D,qBAAqB;IACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC;IAExE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IAClD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,UAAU,KAAK,WAAW;QACjC,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW;QACzC,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI;QACnC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,2BAA2B;IAC3B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,iEAAiE;IACjE,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC,aAAa;QAC5C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,mEAAmE;IACnE,MAAM,WAAW,GAAG,wBAAwB,CAAC;IAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,2BAA2B;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChD,4CAA4C;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,oCAAoC;QACpC,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,2EAA2E;IAC3E,MAAM,kBAAkB,GAAG;QACzB,OAAO;QACP,WAAW;QACX,cAAc;QACd,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,YAAY;KACb,CAAC;IAEF,yDAAyD;IACzD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK,WAAW;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACd,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,6BAA6B;QAExF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3E,MAAM,KAAK,CAAC;QACd,CAAC;QACD,sFAAsF;IACxF,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,oCAAoC;IACpC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE7B,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE9C,oEAAoE;YACpE,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC,CAAC,6BAA6B;gBAC1D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,mBAAmB;IACnB,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACvE,CAAC","sourcesContent":["/**\r\n * Utility functions for codec transformations\r\n */\r\n\r\n/**\r\n * Convert a base64 string to Uint8Array\r\n */\r\nexport function base64ToUint8Array(base64: string): Uint8Array {\r\n // Handle URL-safe base64\r\n const base64Clean = base64.replace(/-/g, '+').replace(/_/g, '/');\r\n \r\n // Add padding if necessary\r\n const padded = base64Clean.padEnd(base64Clean.length + (4 - base64Clean.length % 4) % 4, '=');\r\n \r\n // Decode base64 to binary string\r\n const binaryString = safeAtob(padded);\r\n \r\n // Convert binary string to Uint8Array\r\n const bytes = new Uint8Array(binaryString.length);\r\n for (let i = 0; i < binaryString.length; i++) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n return bytes;\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to base64 string\r\n */\r\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\r\n // Convert Uint8Array to binary string\r\n let binaryString = '';\r\n for (let i = 0; i < bytes.length; i++) {\r\n binaryString += String.fromCharCode(bytes[i]);\r\n }\r\n \r\n // Encode to base64\r\n return safeBtoa(binaryString);\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to URL-safe base64 string\r\n */\r\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\r\n const base64 = uint8ArrayToBase64(bytes);\r\n // Make URL-safe and remove padding\r\n return base64\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\n/**\r\n * Convert hex string to Uint8Array\r\n */\r\nexport function hexToUint8Array(hex: string): Uint8Array {\r\n // Remove any 0x prefix if present\r\n const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;\r\n \r\n // Ensure even length\r\n const paddedHex = cleanHex.length % 2 === 0 ? cleanHex : '0' + cleanHex;\r\n \r\n const bytes = new Uint8Array(paddedHex.length / 2);\r\n for (let i = 0; i < paddedHex.length; i += 2) {\r\n bytes[i / 2] = parseInt(paddedHex.substring(i, i + 2), 16);\r\n }\r\n \r\n return bytes;\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to hex string\r\n */\r\nexport function uint8ArrayToHex(bytes: Uint8Array): string {\r\n let hex = '';\r\n for (let i = 0; i < bytes.length; i++) {\r\n const byte = bytes[i].toString(16);\r\n hex += byte.length === 1 ? '0' + byte : byte;\r\n }\r\n return hex;\r\n}\r\n\r\n/**\r\n * Convert string to Uint8Array using UTF-8 encoding\r\n */\r\nexport function stringToUint8Array(str: string): Uint8Array {\r\n const encoder = new TextEncoder();\r\n return encoder.encode(str);\r\n}\r\n\r\n/**\r\n * Convert Uint8Array to string using UTF-8 decoding\r\n */\r\nexport function uint8ArrayToString(bytes: Uint8Array): string {\r\n const decoder = new TextDecoder();\r\n return decoder.decode(bytes);\r\n}\r\n\r\n/**\r\n * Check if running in Node.js environment\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return typeof globalThis !== 'undefined' && \r\n typeof globalThis.process !== 'undefined' &&\r\n globalThis.process.versions != null &&\r\n globalThis.process.versions.node != null;\r\n}\r\n\r\n/**\r\n * Validate and sanitize base64 input to prevent prototype pollution\r\n */\r\nfunction validateBase64Input(encoded: string): void {\r\n // Check for null/undefined\r\n if (encoded == null) {\r\n throw new Error('Base64 input cannot be null or undefined');\r\n }\r\n\r\n // Ensure it's a string\r\n if (typeof encoded !== 'string') {\r\n throw new Error('Base64 input must be a string');\r\n }\r\n\r\n // Length validation - base64 strings should be reasonable length\r\n if (encoded.length > 10000000) { // 10MB limit\r\n throw new Error('Base64 input is too large');\r\n }\r\n\r\n // Base64 character validation - only allow valid base64 characters\r\n const base64Regex = /^[A-Za-z0-9+/]*={0,2}$/;\r\n if (!base64Regex.test(encoded)) {\r\n throw new Error('Invalid base64 format');\r\n }\r\n\r\n // Check for padding issues\r\n const paddingIndex = encoded.indexOf('=');\r\n if (paddingIndex !== -1) {\r\n const padding = encoded.substring(paddingIndex);\r\n // Only allow '=', '==', or '===' as padding\r\n if (!/^={1,2}$/.test(padding) && padding !== '===') {\r\n throw new Error('Invalid base64 padding');\r\n }\r\n // Padding should only be at the end\r\n if (paddingIndex < encoded.length - 3) {\r\n throw new Error('Base64 padding must be at the end');\r\n }\r\n }\r\n\r\n // Additional security check: prevent potential encoded JavaScript\r\n // by looking for suspicious patterns that might indicate malicious content\r\n const suspiciousPatterns = [\r\n /eval/i,\r\n /function/i,\r\n /javascript:/i,\r\n /<script/i,\r\n /on\\w+\\s*=/i,\r\n /__proto__/i,\r\n /constructor/i,\r\n /prototype/i\r\n ];\r\n\r\n // Decode a small portion to check for suspicious content\r\n try {\r\n const sampleSize = Math.min(100, encoded.length);\r\n const sample = encoded.substring(0, sampleSize);\r\n const sampleDecoded = typeof atob !== 'undefined'\r\n ? atob(sample)\r\n : Buffer.from(sample, 'base64').toString('utf8', 0, 50); // Only decode first 50 chars\r\n\r\n for (const pattern of suspiciousPatterns) {\r\n if (pattern.test(sampleDecoded)) {\r\n throw new Error('Suspicious content detected in base64 input');\r\n }\r\n }\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('Suspicious content')) {\r\n throw error;\r\n }\r\n // If decoding fails, continue - it might be invalid base64 which will be caught later\r\n }\r\n}\r\n\r\n/**\r\n * Polyfill for atob in Node.js with proper input validation\r\n */\r\nexport function safeAtob(encoded: string): string {\r\n // Input validation and sanitization\r\n validateBase64Input(encoded);\r\n\r\n if (typeof atob !== 'undefined') {\r\n try {\r\n return atob(encoded);\r\n } catch (error) {\r\n throw new Error('Failed to decode base64 data');\r\n }\r\n }\r\n\r\n // Node.js fallback with additional validation\r\n if (isNodeEnvironment()) {\r\n try {\r\n // Use Buffer with explicit error handling\r\n const buffer = Buffer.from(encoded, 'base64');\r\n\r\n // Additional validation: ensure the decoded data is reasonable size\r\n if (buffer.length > 5000000) { // 5MB limit for decoded data\r\n throw new Error('Decoded base64 data is too large');\r\n }\r\n\r\n return buffer.toString('binary');\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('Invalid base64')) {\r\n throw new Error('Invalid base64 format');\r\n }\r\n throw new Error('Failed to decode base64 data in Node.js environment');\r\n }\r\n }\r\n\r\n throw new Error('Base64 decoding not supported in this environment');\r\n}\r\n\r\n/**\r\n * Polyfill for btoa in Node.js\r\n */\r\nexport function safeBtoa(str: string): string {\r\n if (typeof btoa !== 'undefined') {\r\n return btoa(str);\r\n }\r\n \r\n // Node.js fallback\r\n if (isNodeEnvironment()) {\r\n return Buffer.from(str, 'binary').toString('base64');\r\n }\r\n \r\n throw new Error('Base64 encoding not supported in this environment');\r\n}"]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export declare function isPlainObject(obj: any): obj is Record<string, any>;
|
|
5
5
|
/**
|
|
6
6
|
* Safely deep merge two objects without prototype pollution vulnerability
|
|
7
|
+
* Optimized for performance with minimal object allocations
|
|
7
8
|
* @param target The target object
|
|
8
9
|
* @param source The source object to merge from
|
|
9
10
|
* @returns A new merged object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-merge.d.ts","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAOlE;
|
|
1
|
+
{"version":3,"file":"deep-merge.d.ts","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAOlE;AA6BD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAiCH;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAuBjD"}
|
package/dist/utils/deep-merge.js
CHANGED
|
@@ -7,23 +7,48 @@ export function isPlainObject(obj) {
|
|
|
7
7
|
obj.constructor === Object &&
|
|
8
8
|
Object.prototype.toString.call(obj) === '[object Object]');
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Check if a key could be dangerous for prototype pollution
|
|
12
|
+
*/
|
|
13
|
+
function isDangerousKey(key) {
|
|
14
|
+
// Direct dangerous keys
|
|
15
|
+
const directDangerousKeys = ['__proto__', 'constructor', 'prototype'];
|
|
16
|
+
if (directDangerousKeys.includes(key)) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
// Nested prototype manipulation vectors
|
|
20
|
+
const nestedPatterns = [
|
|
21
|
+
'constructor.prototype',
|
|
22
|
+
'__proto__.toString',
|
|
23
|
+
'prototype.constructor'
|
|
24
|
+
];
|
|
25
|
+
// Check for nested patterns
|
|
26
|
+
for (const pattern of nestedPatterns) {
|
|
27
|
+
if (key.includes(pattern)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
10
33
|
/**
|
|
11
34
|
* Safely deep merge two objects without prototype pollution vulnerability
|
|
35
|
+
* Optimized for performance with minimal object allocations
|
|
12
36
|
* @param target The target object
|
|
13
37
|
* @param source The source object to merge from
|
|
14
38
|
* @returns A new merged object
|
|
15
39
|
*/
|
|
16
40
|
export function deepMerge(target, source) {
|
|
17
|
-
//
|
|
18
|
-
const DANGEROUS_KEYS = ['__proto__', 'constructor', 'prototype'];
|
|
19
|
-
// Create a new object to avoid mutations
|
|
41
|
+
// Create a new object to avoid mutations (only once)
|
|
20
42
|
const result = { ...target };
|
|
21
|
-
|
|
43
|
+
// Get source keys directly for better performance
|
|
44
|
+
const sourceKeys = Object.keys(source);
|
|
45
|
+
for (let i = 0; i < sourceKeys.length; i++) {
|
|
46
|
+
const key = sourceKeys[i];
|
|
22
47
|
// Skip dangerous keys that could lead to prototype pollution
|
|
23
|
-
if (
|
|
48
|
+
if (isDangerousKey(key)) {
|
|
24
49
|
continue;
|
|
25
50
|
}
|
|
26
|
-
// Only process own properties
|
|
51
|
+
// Only process own properties (redundant with Object.keys but safe)
|
|
27
52
|
if (!Object.prototype.hasOwnProperty.call(source, key)) {
|
|
28
53
|
continue;
|
|
29
54
|
}
|
|
@@ -56,8 +81,8 @@ export function deepFreeze(obj) {
|
|
|
56
81
|
}
|
|
57
82
|
// Freeze the object/function itself
|
|
58
83
|
Object.freeze(obj);
|
|
59
|
-
// Recursively freeze all properties
|
|
60
|
-
|
|
84
|
+
// Recursively freeze all properties (including Symbol properties)
|
|
85
|
+
Reflect.ownKeys(obj).forEach(prop => {
|
|
61
86
|
const value = obj[prop];
|
|
62
87
|
if (value !== null && (typeof value === 'object' || typeof value === 'function')) {
|
|
63
88
|
deepFreeze(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,CAAC,WAAW,KAAK,MAAM;QAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAC1D,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Type guard to check if a value is a plain object\r\n */\r\nexport function isPlainObject(obj: any): obj is Record<string, any> {\r\n return (\r\n obj !== null &&\r\n typeof obj === 'object' &&\r\n obj.constructor === Object &&\r\n Object.prototype.toString.call(obj) === '[object Object]'\r\n );\r\n}\r\n\r\n/**\r\n * Check if a key could be dangerous for prototype pollution\r\n */\r\nfunction isDangerousKey(key: string): boolean {\r\n // Direct dangerous keys\r\n const directDangerousKeys = ['__proto__', 'constructor', 'prototype'];\r\n if (directDangerousKeys.includes(key)) {\r\n return true;\r\n }\r\n\r\n // Nested prototype manipulation vectors\r\n const nestedPatterns = [\r\n 'constructor.prototype',\r\n '__proto__.toString',\r\n 'prototype.constructor'\r\n ];\r\n\r\n // Check for nested patterns\r\n for (const pattern of nestedPatterns) {\r\n if (key.includes(pattern)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Safely deep merge two objects without prototype pollution vulnerability\r\n * Optimized for performance with minimal object allocations\r\n * @param target The target object\r\n * @param source The source object to merge from\r\n * @returns A new merged object\r\n */\r\nexport function deepMerge<T extends Record<string, any>>(\r\n target: T,\r\n source: Partial<T>\r\n): T {\r\n // Create a new object to avoid mutations (only once)\r\n const result = { ...target } as T;\r\n\r\n // Get source keys directly for better performance\r\n const sourceKeys = Object.keys(source);\r\n\r\n for (let i = 0; i < sourceKeys.length; i++) {\r\n const key = sourceKeys[i];\r\n\r\n // Skip dangerous keys that could lead to prototype pollution\r\n if (isDangerousKey(key)) {\r\n continue;\r\n }\r\n\r\n // Only process own properties (redundant with Object.keys but safe)\r\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\r\n continue;\r\n }\r\n\r\n const sourceValue = source[key];\r\n const targetValue = target[key];\r\n\r\n // If both values are plain objects, merge them recursively\r\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\r\n (result as any)[key] = deepMerge(targetValue as any, sourceValue as any);\r\n } else {\r\n // Otherwise, use the source value (including undefined)\r\n (result as any)[key] = sourceValue;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Freeze an object deeply to prevent any mutations\r\n * @param obj Object to freeze\r\n * @returns The frozen object\r\n */\r\nexport function deepFreeze<T>(obj: T): Readonly<T> {\r\n // Primitive values don't need processing\r\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\r\n return obj;\r\n }\r\n \r\n // Check if already frozen to prevent infinite recursion\r\n if (Object.isFrozen(obj)) {\r\n return obj;\r\n }\r\n \r\n // Freeze the object/function itself\r\n Object.freeze(obj);\r\n\r\n // Recursively freeze all properties (including Symbol properties)\r\n Reflect.ownKeys(obj).forEach(prop => {\r\n const value = (obj as any)[prop];\r\n if (value !== null && (typeof value === 'object' || typeof value === 'function')) {\r\n deepFreeze(value);\r\n }\r\n });\r\n \r\n return obj;\r\n}"]}
|
|
@@ -20,6 +20,11 @@ export declare class VldArray<T> extends VldBase<unknown[], T[]> {
|
|
|
20
20
|
* Safely parse and validate an array value
|
|
21
21
|
*/
|
|
22
22
|
safeParse(value: unknown): ParseResult<T[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Create a stable string representation of an object for hashing
|
|
25
|
+
* Handles circular references gracefully
|
|
26
|
+
*/
|
|
27
|
+
private stableStringify;
|
|
23
28
|
/**
|
|
24
29
|
* Create a new validator with minimum length constraint
|
|
25
30
|
*/
|