Skip to content

Commit 8c3def9

Browse files
authored
feat: 🎸 added IsValidURL builder (#45)
Now it is possible to use the builder interface to instantiate the `isValidUrl` verifier
1 parent 0d5c5ec commit 8c3def9

File tree

5 files changed

+38
-3
lines changed

5 files changed

+38
-3
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@
6060
"type": "git",
6161
"url": "git://github.com/ziccardi/json-data-validator.git"
6262
}
63-
}
63+
}

src/rules/RuleBuilder.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {builder as RequiredRuleBuilder} from './builders/RequiredValueBuilder';
55
import {builder as LengthRuleBuilder} from './builders/LengthRuleBuilder';
66
import {builder as MatchesRuleBuilder} from './builders/MatchesRuleBuilder';
77
import {builder as IsBase64Builder} from './builders/IsBase64Builder';
8+
import {builder as IsValidUrlBuilder} from './builders/IsValidUrlBuilder';
89

910
// tslint:disable-next-line:variable-name
1011
export const RuleBuilder = {
@@ -15,4 +16,5 @@ export const RuleBuilder = {
1516
length: LengthRuleBuilder,
1617
matches: MatchesRuleBuilder.withPattern,
1718
isBase64: IsBase64Builder,
19+
isValidUrl: IsValidUrlBuilder.isValidUrl,
1820
};

src/rules/ValidUrlRule.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import validator from 'validator';
22
/**
33
* {
4-
* type: 'VALID_URL_PATH',
4+
* type: 'VALID_URL',
55
* }
66
*/
77
import {GenericValidator} from './GenericValidator';

src/rules/builders/CompositeRuleBuilder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export interface CompositeRuleBuilderInterfaceStart {
66

77
export interface CompositeRuleBuilderInterfaceEnd {
88
withSubRule: (rule: RuleConfig) => CompositeRuleBuilderInterfaceEnd;
9-
build: () => RuleConfig;
9+
build: (errorMessage?: string) => RuleConfig;
1010
}
1111

1212
export const builder = {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import {RuleConfig} from '../../config/RuleConfig';
2+
import * as ValidUrlRule from '../ValidUrlRule';
3+
4+
export interface IsValidUrlBuilder {
5+
requireTld(require: boolean): IsValidUrlBuilder;
6+
requireHost(require: boolean): IsValidUrlBuilder;
7+
requireProtocol(require: boolean): IsValidUrlBuilder;
8+
build: () => RuleConfig;
9+
}
10+
11+
export const builder = {
12+
isValidUrl: () => {
13+
const rule: RuleConfig = {type: ValidUrlRule.NAME};
14+
15+
const returnValue: IsValidUrlBuilder = {
16+
requireTld: (required = true) => {
17+
rule.require_tld = `${required}`;
18+
return returnValue;
19+
},
20+
requireHost: (required = true) => {
21+
rule.require_host = `${required}`;
22+
return returnValue;
23+
},
24+
requireProtocol: (required = false) => {
25+
rule.require_protocol = `${required}`;
26+
return returnValue;
27+
},
28+
build: () => rule,
29+
};
30+
31+
return returnValue;
32+
},
33+
};

0 commit comments

Comments
 (0)