valtech-components 2.0.964 → 2.0.965

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.
@@ -1,9 +1,12 @@
1
1
  const MIN_LENGTH = 8;
2
+ // bcrypt silently truncates input at 72 bytes — cap here so FE/BE stay aligned.
3
+ const MAX_LENGTH = 72;
2
4
  // Special chars: ASCII 33-47, 58-64, 91-96, 123-126
3
5
  const SPECIAL_CHAR_RE = /[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]/;
4
6
  /**
5
- * Mirrors the backend `authPassword` validator (`pkg/validator.go`):
6
- * min 8 chars, ≥1 uppercase, ≥1 lowercase, ≥1 digit, ≥1 special char.
7
+ * Mirrors the backend `authPassword` validator (services/authv2/password.go):
8
+ * min 8 chars, max 72 chars (bcrypt limit), ≥1 uppercase, ≥1 lowercase,
9
+ * ≥1 digit, ≥1 special char.
7
10
  *
8
11
  * Returns `{ authPassword: true }` on failure so the form can surface the
9
12
  * inline error via `errorKeys: { authPassword: 'passwordStrength' }`.
@@ -14,6 +17,7 @@ export function authPasswordValidator() {
14
17
  if (!value)
15
18
  return null; // `required` handles empty
16
19
  const valid = value.length >= MIN_LENGTH &&
20
+ value.length <= MAX_LENGTH &&
17
21
  /[A-Z]/.test(value) &&
18
22
  /[a-z]/.test(value) &&
19
23
  /[0-9]/.test(value) &&
@@ -21,4 +25,4 @@ export function authPasswordValidator() {
21
25
  return valid ? null : { authPassword: true };
22
26
  };
23
27
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2hhcmVkL3V0aWxzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLG9EQUFvRDtBQUNwRCxNQUFNLGVBQWUsR0FBRyx3Q0FBd0MsQ0FBQztBQUVqRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7UUFFcEQsTUFBTSxLQUFLLEdBQ1QsS0FBSyxDQUFDLE1BQU0sSUFBSSxVQUFVO1lBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ25CLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmNvbnN0IE1JTl9MRU5HVEggPSA4O1xuLy8gU3BlY2lhbCBjaGFyczogQVNDSUkgMzMtNDcsIDU4LTY0LCA5MS05NiwgMTIzLTEyNlxuY29uc3QgU1BFQ0lBTF9DSEFSX1JFID0gL1tcXHgyMS1cXHgyRlxceDNBLVxceDQwXFx4NUItXFx4NjBcXHg3Qi1cXHg3RV0vO1xuXG4vKipcbiAqIE1pcnJvcnMgdGhlIGJhY2tlbmQgYGF1dGhQYXNzd29yZGAgdmFsaWRhdG9yIChgcGtnL3ZhbGlkYXRvci5nb2ApOlxuICogbWluIDggY2hhcnMsIOKJpTEgdXBwZXJjYXNlLCDiiaUxIGxvd2VyY2FzZSwg4omlMSBkaWdpdCwg4omlMSBzcGVjaWFsIGNoYXIuXG4gKlxuICogUmV0dXJucyBgeyBhdXRoUGFzc3dvcmQ6IHRydWUgfWAgb24gZmFpbHVyZSBzbyB0aGUgZm9ybSBjYW4gc3VyZmFjZSB0aGVcbiAqIGlubGluZSBlcnJvciB2aWEgYGVycm9yS2V5czogeyBhdXRoUGFzc3dvcmQ6ICdwYXNzd29yZFN0cmVuZ3RoJyB9YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dGhQYXNzd29yZFZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSBjb250cm9sLnZhbHVlID8/ICcnO1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsOyAvLyBgcmVxdWlyZWRgIGhhbmRsZXMgZW1wdHlcblxuICAgIGNvbnN0IHZhbGlkID1cbiAgICAgIHZhbHVlLmxlbmd0aCA+PSBNSU5fTEVOR1RIICYmXG4gICAgICAvW0EtWl0vLnRlc3QodmFsdWUpICYmXG4gICAgICAvW2Etel0vLnRlc3QodmFsdWUpICYmXG4gICAgICAvWzAtOV0vLnRlc3QodmFsdWUpICYmXG4gICAgICBTUEVDSUFMX0NIQVJfUkUudGVzdCh2YWx1ZSk7XG5cbiAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogeyBhdXRoUGFzc3dvcmQ6IHRydWUgfTtcbiAgfTtcbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2hhcmVkL3V0aWxzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsb0RBQW9EO0FBQ3BELE1BQU0sZUFBZSxHQUFHLHdDQUF3QyxDQUFDO0FBRWpFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELE1BQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7UUFFcEQsTUFBTSxLQUFLLEdBQ1QsS0FBSyxDQUFDLE1BQU0sSUFBSSxVQUFVO1lBQzFCLEtBQUssQ0FBQyxNQUFNLElBQUksVUFBVTtZQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNuQixlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9DLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5jb25zdCBNSU5fTEVOR1RIID0gODtcbi8vIGJjcnlwdCBzaWxlbnRseSB0cnVuY2F0ZXMgaW5wdXQgYXQgNzIgYnl0ZXMg4oCUIGNhcCBoZXJlIHNvIEZFL0JFIHN0YXkgYWxpZ25lZC5cbmNvbnN0IE1BWF9MRU5HVEggPSA3Mjtcbi8vIFNwZWNpYWwgY2hhcnM6IEFTQ0lJIDMzLTQ3LCA1OC02NCwgOTEtOTYsIDEyMy0xMjZcbmNvbnN0IFNQRUNJQUxfQ0hBUl9SRSA9IC9bXFx4MjEtXFx4MkZcXHgzQS1cXHg0MFxceDVCLVxceDYwXFx4N0ItXFx4N0VdLztcblxuLyoqXG4gKiBNaXJyb3JzIHRoZSBiYWNrZW5kIGBhdXRoUGFzc3dvcmRgIHZhbGlkYXRvciAoc2VydmljZXMvYXV0aHYyL3Bhc3N3b3JkLmdvKTpcbiAqIG1pbiA4IGNoYXJzLCBtYXggNzIgY2hhcnMgKGJjcnlwdCBsaW1pdCksIOKJpTEgdXBwZXJjYXNlLCDiiaUxIGxvd2VyY2FzZSxcbiAqIOKJpTEgZGlnaXQsIOKJpTEgc3BlY2lhbCBjaGFyLlxuICpcbiAqIFJldHVybnMgYHsgYXV0aFBhc3N3b3JkOiB0cnVlIH1gIG9uIGZhaWx1cmUgc28gdGhlIGZvcm0gY2FuIHN1cmZhY2UgdGhlXG4gKiBpbmxpbmUgZXJyb3IgdmlhIGBlcnJvcktleXM6IHsgYXV0aFBhc3N3b3JkOiAncGFzc3dvcmRTdHJlbmd0aCcgfWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdXRoUGFzc3dvcmRWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gY29udHJvbC52YWx1ZSA/PyAnJztcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDsgLy8gYHJlcXVpcmVkYCBoYW5kbGVzIGVtcHR5XG5cbiAgICBjb25zdCB2YWxpZCA9XG4gICAgICB2YWx1ZS5sZW5ndGggPj0gTUlOX0xFTkdUSCAmJlxuICAgICAgdmFsdWUubGVuZ3RoIDw9IE1BWF9MRU5HVEggJiZcbiAgICAgIC9bQS1aXS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgIC9bYS16XS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgIC9bMC05XS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgIFNQRUNJQUxfQ0hBUl9SRS50ZXN0KHZhbHVlKTtcblxuICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiB7IGF1dGhQYXNzd29yZDogdHJ1ZSB9O1xuICB9O1xufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.964';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45NjQnO1xuIl19
5
+ export const VERSION = '2.0.965';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC45NjUnO1xuIl19
@@ -54,7 +54,7 @@ import 'prismjs/components/prism-json';
54
54
  * Current version of valtech-components.
55
55
  * This is automatically updated during the publish process.
56
56
  */
57
- const VERSION = '2.0.964';
57
+ const VERSION = '2.0.965';
58
58
 
59
59
  // Control de estado de refresco (singleton a nivel de módulo)
60
60
  let isRefreshing = false;
@@ -30535,11 +30535,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
30535
30535
  }] } });
30536
30536
 
30537
30537
  const MIN_LENGTH = 8;
30538
+ // bcrypt silently truncates input at 72 bytes — cap here so FE/BE stay aligned.
30539
+ const MAX_LENGTH = 72;
30538
30540
  // Special chars: ASCII 33-47, 58-64, 91-96, 123-126
30539
30541
  const SPECIAL_CHAR_RE = /[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]/;
30540
30542
  /**
30541
- * Mirrors the backend `authPassword` validator (`pkg/validator.go`):
30542
- * min 8 chars, ≥1 uppercase, ≥1 lowercase, ≥1 digit, ≥1 special char.
30543
+ * Mirrors the backend `authPassword` validator (services/authv2/password.go):
30544
+ * min 8 chars, max 72 chars (bcrypt limit), ≥1 uppercase, ≥1 lowercase,
30545
+ * ≥1 digit, ≥1 special char.
30543
30546
  *
30544
30547
  * Returns `{ authPassword: true }` on failure so the form can surface the
30545
30548
  * inline error via `errorKeys: { authPassword: 'passwordStrength' }`.
@@ -30550,6 +30553,7 @@ function authPasswordValidator() {
30550
30553
  if (!value)
30551
30554
  return null; // `required` handles empty
30552
30555
  const valid = value.length >= MIN_LENGTH &&
30556
+ value.length <= MAX_LENGTH &&
30553
30557
  /[A-Z]/.test(value) &&
30554
30558
  /[a-z]/.test(value) &&
30555
30559
  /[0-9]/.test(value) &&