From 586e7f08bba81006187dba9a921e8f95fb03c1a4 Mon Sep 17 00:00:00 2001 From: pitwegner Date: Thu, 9 Mar 2023 12:28:37 +0100 Subject: [PATCH 1/7] replace dns validation regex Signed-off-by: pitwegner --- .../src/validation/CommonValidatorFunctions.test.ts | 1 + .../catalog-model/src/validation/CommonValidatorFunctions.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts index a887a9aa2e..5dc3f80694 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts @@ -155,6 +155,7 @@ describe('CommonValidatorFunctions', () => { ['-a-b', false], ['a-b-', false], ['a--b', false], + ['xn--c6h', true], ['a_b', false], [`${'a'.repeat(63)}`, true], [`${'a'.repeat(64)}`, false], diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts index 40a85c5331..4532dd9844 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts @@ -91,7 +91,7 @@ export class CommonValidatorFunctions { typeof value === 'string' && value.length >= 1 && value.length <= 63 && - /^[a-z0-9]+(\-[a-z0-9]+)*$/.test(value) + /^((?!\-))(xn\-\-)?[a-z0-9\-]+[a-z0-9]$/.test(value) ); } From be9c42280736e1ae5e0a93fb3fab0605a3c702e3 Mon Sep 17 00:00:00 2001 From: pitwegner Date: Thu, 9 Mar 2023 12:35:32 +0100 Subject: [PATCH 2/7] generate changeset Signed-off-by: pitwegner --- .changeset/stale-files-sniff.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/stale-files-sniff.md diff --git a/.changeset/stale-files-sniff.md b/.changeset/stale-files-sniff.md new file mode 100644 index 0000000000..6ae2bbd110 --- /dev/null +++ b/.changeset/stale-files-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-model': minor +--- + +Modified the regex for dns label validation to support IDN domains From 547726995e5baca2cb305f9092d358519d327d22 Mon Sep 17 00:00:00 2001 From: pitwegner Date: Thu, 9 Mar 2023 13:07:25 +0100 Subject: [PATCH 3/7] fix regex and typo Signed-off-by: pitwegner --- .changeset/stale-files-sniff.md | 2 +- .../catalog-model/src/validation/CommonValidatorFunctions.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/stale-files-sniff.md b/.changeset/stale-files-sniff.md index 6ae2bbd110..b6f35645c4 100644 --- a/.changeset/stale-files-sniff.md +++ b/.changeset/stale-files-sniff.md @@ -2,4 +2,4 @@ '@backstage/catalog-model': minor --- -Modified the regex for dns label validation to support IDN domains +Modified the regex for DNS label validation to support IDN domains diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts index 4532dd9844..22157b616a 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts @@ -91,7 +91,7 @@ export class CommonValidatorFunctions { typeof value === 'string' && value.length >= 1 && value.length <= 63 && - /^((?!\-))(xn\-\-)?[a-z0-9\-]+[a-z0-9]$/.test(value) + /^((?!\-))(xn\-\-)?[a-z0-9\-]*[a-z0-9]$/.test(value) ); } From 675dadc492143248ac64cd099d3c17415cf668c0 Mon Sep 17 00:00:00 2001 From: pitwegner Date: Thu, 9 Mar 2023 13:29:22 +0100 Subject: [PATCH 4/7] simplify regex Signed-off-by: pitwegner --- .../catalog-model/src/validation/CommonValidatorFunctions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts index 22157b616a..18132ba561 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts @@ -91,7 +91,7 @@ export class CommonValidatorFunctions { typeof value === 'string' && value.length >= 1 && value.length <= 63 && - /^((?!\-))(xn\-\-)?[a-z0-9\-]*[a-z0-9]$/.test(value) + /^(?!\-)[a-z0-9\-]*[a-z0-9]$/.test(value) ); } From 651c8b414d100b3531ef4cfdc059f9e8b086f629 Mon Sep 17 00:00:00 2001 From: pitwegner Date: Thu, 9 Mar 2023 14:12:20 +0100 Subject: [PATCH 5/7] fix invalid test cases Signed-off-by: pitwegner --- .../src/validation/CommonValidatorFunctions.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts index 5dc3f80694..88b6e54113 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts @@ -125,7 +125,7 @@ describe('CommonValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['a_b', false], ['adam.bertil.caesar', true], ['adam.ber-til.caesar', true], @@ -154,7 +154,7 @@ describe('CommonValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['xn--c6h', true], ['a_b', false], [`${'a'.repeat(63)}`, true], From ed734bdd52439a09539c218d636486d90c56c81e Mon Sep 17 00:00:00 2001 From: pitwegner Date: Thu, 9 Mar 2023 15:35:16 +0100 Subject: [PATCH 6/7] fix more test cases Signed-off-by: pitwegner --- .../src/validation/KubernetesValidatorFunctions.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts index c194774906..dad0631b47 100644 --- a/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts +++ b/packages/catalog-model/src/validation/KubernetesValidatorFunctions.test.ts @@ -31,7 +31,7 @@ describe('KubernetesValidatorFunctions', () => { ['a/a', true], ['a/aAb5C', true], ['a-b.c/v1', true], - ['a--b.c/v1', false], + ['a--b.c/v1', true], [ `${'a'.repeat(63)}.${'a'.repeat(63)}.${'a'.repeat(63)}.${'a'.repeat( 61, @@ -96,7 +96,7 @@ describe('KubernetesValidatorFunctions', () => { ['a-b', true], ['-a-b', false], ['a-b-', false], - ['a--b', false], + ['a--b', true], ['a_b', false], ['a.b', false], ])(`isValidNamespace %p ? %p`, (value, matches) => { @@ -121,7 +121,7 @@ describe('KubernetesValidatorFunctions', () => { ['a..b', true], ['a/a', true], ['a-b.c/a', true], - ['a--b.c/a', false], + ['a--b.c/a', true], [ `${'a'.repeat(63)}.${'a'.repeat(63)}.${'a'.repeat(63)}.${'a'.repeat( 61, @@ -178,7 +178,7 @@ describe('KubernetesValidatorFunctions', () => { ['a..b', true], ['a/a', true], ['a-b.c/a', true], - ['a--b.c/a', false], + ['a--b.c/a', true], [ `${'a'.repeat(63)}.${'a'.repeat(63)}.${'a'.repeat(63)}.${'a'.repeat( 61, From 4fa75c0fd7a8ba4b26a52ad56aba5cc554f9b39f Mon Sep 17 00:00:00 2001 From: pitwegner Date: Fri, 10 Mar 2023 17:07:57 +0100 Subject: [PATCH 7/7] Update packages/catalog-model/src/validation/CommonValidatorFunctions.ts Co-authored-by: Patrik Oldsberg Signed-off-by: pitwegner --- .../catalog-model/src/validation/CommonValidatorFunctions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts index 18132ba561..295c5b8895 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts @@ -91,7 +91,7 @@ export class CommonValidatorFunctions { typeof value === 'string' && value.length >= 1 && value.length <= 63 && - /^(?!\-)[a-z0-9\-]*[a-z0-9]$/.test(value) + /^[a-z0-9]+(?:\-+[a-z0-9]+)*$/.test(value) ); }