@evervault/evervault-react-native 1.2.1 → 1.2.2

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.
@@ -14,7 +14,7 @@ async function changePayload(encrypt, form, fields) {
14
14
  expiry,
15
15
  cvc
16
16
  } = form.values;
17
- const number = rawNumber.replace(/\s/g, "");
17
+ const number = fields.includes("number") ? rawNumber.replace(/\s/g, "") : "";
18
18
  const {
19
19
  brand,
20
20
  localBrands,
@@ -1 +1 @@
1
- {"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","includes","cardValidation","expiryValidation","validateExpiry","cvcValidation","validateCVC","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","cardValidation","expiryValidation","validateExpiry","cvcValidation","validateCVC","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":";;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AASO,eAAeC,aAAaA,CACjCC,OAA2C,EAC3CC,IAA6B,EAC7BC,MAAmB,EACG;EACtB,MAAM;IAAEC,IAAI;IAAEC,MAAM,EAAEC,SAAS;IAAEC,MAAM;IAAEC;EAAI,CAAC,GAAGN,IAAI,CAACO,MAAM;EAE5D,MAAMJ,MAAM,GAAGF,MAAM,CAACO,QAAQ,CAAC,QAAQ,CAAC,GAAGJ,SAAS,CAACK,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE;EAE5E,MAAM;IACJC,KAAK;IACLC,WAAW;IACXC,GAAG;IACHC,QAAQ;IACRC,OAAO,EAAEC;EACX,CAAC,GAAG,IAAAC,6BAAc,EAACb,MAAM,CAAC;EAC1B,OAAO;IACLc,IAAI,EAAE;MACJf,IAAI;MACJQ,KAAK;MACLC,WAAW;MACXC,GAAG;MACHC,QAAQ;MACRV,MAAM,EAAEY,iBAAiB,GAAG,MAAMG,eAAe,CAACnB,OAAO,EAAEI,MAAM,CAAC,GAAG,IAAI;MACzEE,MAAM,EAAEc,YAAY,CAACd,MAAM,CAAC;MAC5BC,GAAG,EAAE,MAAMc,YAAY,CAACrB,OAAO,EAAEO,GAAG,EAAEH,MAAM;IAC9C,CAAC;IACDW,OAAO,EAAEd,IAAI,CAACc,OAAO;IACrBO,UAAU,EAAEA,UAAU,CAACrB,IAAI,EAAEC,MAAM,CAAC;IACpCqB,MAAM,EAAEC,MAAM,CAACC,IAAI,CAACxB,IAAI,CAACsB,MAAM,IAAI,CAAC,CAAC,CAAC,CAACG,MAAM,GAAG,CAAC,GAAGzB,IAAI,CAACsB,MAAM,GAAG;EACpE,CAAC;AACH;AAEO,SAASD,UAAUA,CAACrB,IAA6B,EAAEC,MAAmB,EAAE;EAC7E,IAAIA,MAAM,CAACO,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC3B,IAAIR,IAAI,CAACO,MAAM,CAACL,IAAI,CAACuB,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EACjD;EAEA,IAAIxB,MAAM,CAACO,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAC7B,MAAMkB,cAAc,GAAG,IAAAV,6BAAc,EAAChB,IAAI,CAACO,MAAM,CAACJ,MAAM,CAAC;IACzD,IAAI,CAACuB,cAAc,CAACZ,OAAO,EAAE,OAAO,KAAK;EAC3C;EAEA,IAAIb,MAAM,CAACO,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAC7B,MAAMmB,gBAAgB,GAAG,IAAAC,6BAAc,EAAC5B,IAAI,CAACO,MAAM,CAACF,MAAM,CAAC;IAC3D,IAAI,CAACsB,gBAAgB,CAACb,OAAO,EAAE,OAAO,KAAK;EAC7C;EAEA,IAAIb,MAAM,CAACO,QAAQ,CAAC,KAAK,CAAC,EAAE;IAC1B,MAAMqB,aAAa,GAAG,IAAAC,0BAAW,EAAC9B,IAAI,CAACO,MAAM,CAACD,GAAG,EAAEN,IAAI,CAACO,MAAM,CAACJ,MAAM,CAAC;IACtE,IAAI,CAAC0B,aAAa,CAACf,OAAO,EAAE,OAAO,KAAK;EAC1C;EAEA,OAAO,IAAI;AACb;AAEO,SAASiB,eAAeA,CAC7BC,cAA2C,EAC3CC,0BAAsD,EAC7C;EACT,IAAI,CAACD,cAAc,EAAE,OAAO,IAAI;EAChC,MAAM;IAAEtB,KAAK;IAAEC;EAAY,CAAC,GAAGsB,0BAA0B;EAEzD,MAAMC,eAAe,GAAGxB,KAAK,KAAK,IAAI,IAAIsB,cAAc,CAACxB,QAAQ,CAACE,KAAK,CAAC;EACxE,MAAMyB,oBAAoB,GAAGxB,WAAW,CAACyB,IAAI,CAAEC,UAAU,IACvDL,cAAc,CAACxB,QAAQ,CAAC6B,UAAU,CACpC,CAAC;EAED,OAAOH,eAAe,IAAIC,oBAAoB;AAChD;AAEA,SAAShB,YAAYA,CAACd,MAAc,EAAE;EACpC,MAAMiC,YAAY,GAAG,IAAAV,6BAAc,EAACvB,MAAM,CAAC;EAE3C,OAAO;IACLkC,KAAK,EAAED,YAAY,CAACC,KAAK;IACzBC,IAAI,EAAEF,YAAY,CAACE;EACrB,CAAC;AACH;AAEA,eAAetB,eAAeA,CAC5BnB,OAA2C,EAC3CI,MAAc,EACd;EACA,OAAOJ,OAAO,CAACI,MAAM,CAAC;AACxB;AAEA,eAAeiB,YAAYA,CACzBrB,OAA2C,EAC3CO,GAAW,EACXmC,UAAkB,EAClB;EACA,MAAM;IAAE3B;EAAQ,CAAC,GAAG,IAAAgB,0BAAW,EAACxB,GAAG,EAAEmC,UAAU,CAAC;EAEhD,IAAI,CAAC3B,OAAO,EAAE,OAAO,IAAI;EACzB,OAAOf,OAAO,CAACO,GAAG,CAAC;AACrB","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ var _utilities = require("./utilities");
4
+ function getFutureExpiry() {
5
+ const futureExpiry = new Date();
6
+ futureExpiry.setFullYear(futureExpiry.getFullYear() + 4);
7
+ const month = futureExpiry.getMonth() + 1;
8
+ const year = futureExpiry.getFullYear() % 100;
9
+ if (month < 10) {
10
+ return `0${month}${year}`;
11
+ }
12
+ return `${month}${year}`;
13
+ }
14
+ it("Ignores the card number if it is not included in the fields", async () => {
15
+ const mockEncrypt = jest.fn();
16
+ const expiry = getFutureExpiry();
17
+ const sampleFormPayload = {
18
+ name: "John Doe",
19
+ expiry,
20
+ cvc: "123"
21
+ };
22
+ mockEncrypt.mockImplementation(value => `ev:${value}`);
23
+ const result = await (0, _utilities.changePayload)(mockEncrypt, {
24
+ values: sampleFormPayload,
25
+ isValid: true,
26
+ errors: {},
27
+ setValues: jest.fn(),
28
+ setValue: jest.fn(),
29
+ setError: jest.fn(),
30
+ validate: jest.fn(),
31
+ register: jest.fn()
32
+ }, ["name", "expiry", "cvc"]);
33
+ expect(result.card.number).toBeNull();
34
+ expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
35
+ expect(result.isValid).toBe(true);
36
+ expect(result.isComplete).toBe(true);
37
+ });
38
+ it("Ignores the name if it is not included in the fields", async () => {
39
+ const mockEncrypt = jest.fn();
40
+ const expiry = getFutureExpiry();
41
+ const sampleFormPayload = {
42
+ number: "4242 4242 4242 4242",
43
+ expiry,
44
+ cvc: "123"
45
+ };
46
+ mockEncrypt.mockImplementation(value => `ev:${value}`);
47
+ const result = await (0, _utilities.changePayload)(mockEncrypt, {
48
+ values: sampleFormPayload,
49
+ isValid: true,
50
+ errors: {},
51
+ setValues: jest.fn(),
52
+ setValue: jest.fn(),
53
+ setError: jest.fn(),
54
+ validate: jest.fn(),
55
+ register: jest.fn()
56
+ }, ["number", "expiry", "cvc"]);
57
+ expect(result.card.name).toBeFalsy();
58
+ expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
59
+ expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
60
+ expect(result.isValid).toBe(true);
61
+ expect(result.isComplete).toBe(true);
62
+ });
63
+ it("Ignores the cvc if it is not included in the fields", async () => {
64
+ const mockEncrypt = jest.fn();
65
+ const expiry = getFutureExpiry();
66
+ const sampleFormPayload = {
67
+ number: "4242 4242 4242 4242",
68
+ expiry,
69
+ name: "John Doe"
70
+ };
71
+ mockEncrypt.mockImplementation(value => `ev:${value}`);
72
+ const result = await (0, _utilities.changePayload)(mockEncrypt, {
73
+ values: sampleFormPayload,
74
+ isValid: true,
75
+ errors: {},
76
+ setValues: jest.fn(),
77
+ setValue: jest.fn(),
78
+ setError: jest.fn(),
79
+ validate: jest.fn(),
80
+ register: jest.fn()
81
+ }, ["number", "expiry", "name"]);
82
+ expect(result.card.name).toBe(sampleFormPayload.name);
83
+ expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
84
+ expect(result.card.cvc).toBeFalsy();
85
+ expect(result.isValid).toBe(true);
86
+ expect(result.isComplete).toBe(true);
87
+ });
88
+ //# sourceMappingURL=utilities.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_utilities","require","getFutureExpiry","futureExpiry","Date","setFullYear","getFullYear","month","getMonth","year","it","mockEncrypt","jest","fn","expiry","sampleFormPayload","name","cvc","mockImplementation","value","result","changePayload","values","isValid","errors","setValues","setValue","setError","validate","register","expect","card","number","toBeNull","toBe","isComplete","toBeFalsy","replaceAll"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.test.ts"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ export async function changePayload(encrypt, form, fields) {
6
6
  expiry,
7
7
  cvc
8
8
  } = form.values;
9
- const number = rawNumber.replace(/\s/g, "");
9
+ const number = fields.includes("number") ? rawNumber.replace(/\s/g, "") : "";
10
10
  const {
11
11
  brand,
12
12
  localBrands,
@@ -1 +1 @@
1
- {"version":3,"names":["validateNumber","validateExpiry","validateCVC","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","includes","cardValidation","expiryValidation","cvcValidation","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["validateNumber","validateExpiry","validateCVC","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","cardValidation","expiryValidation","cvcValidation","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ import { changePayload } from "./utilities";
2
+ function getFutureExpiry() {
3
+ const futureExpiry = new Date();
4
+ futureExpiry.setFullYear(futureExpiry.getFullYear() + 4);
5
+ const month = futureExpiry.getMonth() + 1;
6
+ const year = futureExpiry.getFullYear() % 100;
7
+ if (month < 10) {
8
+ return `0${month}${year}`;
9
+ }
10
+ return `${month}${year}`;
11
+ }
12
+ it("Ignores the card number if it is not included in the fields", async () => {
13
+ const mockEncrypt = jest.fn();
14
+ const expiry = getFutureExpiry();
15
+ const sampleFormPayload = {
16
+ name: "John Doe",
17
+ expiry,
18
+ cvc: "123"
19
+ };
20
+ mockEncrypt.mockImplementation(value => `ev:${value}`);
21
+ const result = await changePayload(mockEncrypt, {
22
+ values: sampleFormPayload,
23
+ isValid: true,
24
+ errors: {},
25
+ setValues: jest.fn(),
26
+ setValue: jest.fn(),
27
+ setError: jest.fn(),
28
+ validate: jest.fn(),
29
+ register: jest.fn()
30
+ }, ["name", "expiry", "cvc"]);
31
+ expect(result.card.number).toBeNull();
32
+ expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
33
+ expect(result.isValid).toBe(true);
34
+ expect(result.isComplete).toBe(true);
35
+ });
36
+ it("Ignores the name if it is not included in the fields", async () => {
37
+ const mockEncrypt = jest.fn();
38
+ const expiry = getFutureExpiry();
39
+ const sampleFormPayload = {
40
+ number: "4242 4242 4242 4242",
41
+ expiry,
42
+ cvc: "123"
43
+ };
44
+ mockEncrypt.mockImplementation(value => `ev:${value}`);
45
+ const result = await changePayload(mockEncrypt, {
46
+ values: sampleFormPayload,
47
+ isValid: true,
48
+ errors: {},
49
+ setValues: jest.fn(),
50
+ setValue: jest.fn(),
51
+ setError: jest.fn(),
52
+ validate: jest.fn(),
53
+ register: jest.fn()
54
+ }, ["number", "expiry", "cvc"]);
55
+ expect(result.card.name).toBeFalsy();
56
+ expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
57
+ expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
58
+ expect(result.isValid).toBe(true);
59
+ expect(result.isComplete).toBe(true);
60
+ });
61
+ it("Ignores the cvc if it is not included in the fields", async () => {
62
+ const mockEncrypt = jest.fn();
63
+ const expiry = getFutureExpiry();
64
+ const sampleFormPayload = {
65
+ number: "4242 4242 4242 4242",
66
+ expiry,
67
+ name: "John Doe"
68
+ };
69
+ mockEncrypt.mockImplementation(value => `ev:${value}`);
70
+ const result = await changePayload(mockEncrypt, {
71
+ values: sampleFormPayload,
72
+ isValid: true,
73
+ errors: {},
74
+ setValues: jest.fn(),
75
+ setValue: jest.fn(),
76
+ setError: jest.fn(),
77
+ validate: jest.fn(),
78
+ register: jest.fn()
79
+ }, ["number", "expiry", "name"]);
80
+ expect(result.card.name).toBe(sampleFormPayload.name);
81
+ expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
82
+ expect(result.card.cvc).toBeFalsy();
83
+ expect(result.isValid).toBe(true);
84
+ expect(result.isComplete).toBe(true);
85
+ });
86
+ //# sourceMappingURL=utilities.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["changePayload","getFutureExpiry","futureExpiry","Date","setFullYear","getFullYear","month","getMonth","year","it","mockEncrypt","jest","fn","expiry","sampleFormPayload","name","cvc","mockImplementation","value","result","values","isValid","errors","setValues","setValue","setError","validate","register","expect","card","number","toBeNull","toBe","isComplete","toBeFalsy","replaceAll"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.test.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utilities.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/utilities.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@evervault/evervault-react-native",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "Evervault react native sdk",
5
+ "private": false,
5
6
  "main": "./dist/commonjs/index.js",
6
7
  "module": "./dist/module/index.js",
7
8
  "types": "./dist/typescript/src/index.d.ts",
@@ -84,6 +85,7 @@
84
85
  "build": "bob build",
85
86
  "typecheck": "tsc --noEmit",
86
87
  "clean": "del-cli android/build dist",
87
- "format": "prettier --write ."
88
+ "format": "prettier --write .",
89
+ "test": "jest"
88
90
  }
89
91
  }
@@ -0,0 +1,112 @@
1
+ import { CardForm } from "./types";
2
+ import { changePayload } from "./utilities";
3
+
4
+ function getFutureExpiry() {
5
+ const futureExpiry = new Date();
6
+ futureExpiry.setFullYear(futureExpiry.getFullYear() + 4);
7
+ const month = futureExpiry.getMonth() + 1;
8
+ const year = futureExpiry.getFullYear() % 100;
9
+ if (month < 10) {
10
+ return `0${month}${year}`;
11
+ }
12
+ return `${month}${year}`;
13
+ }
14
+
15
+ it("Ignores the card number if it is not included in the fields", async () => {
16
+ const mockEncrypt = jest.fn();
17
+ const expiry = getFutureExpiry();
18
+ const sampleFormPayload = {
19
+ name: "John Doe",
20
+ expiry,
21
+ cvc: "123",
22
+ } as CardForm;
23
+
24
+ mockEncrypt.mockImplementation((value: string) => `ev:${value}`);
25
+ const result = await changePayload(
26
+ mockEncrypt,
27
+ {
28
+ values: sampleFormPayload,
29
+ isValid: true,
30
+ errors: {},
31
+ setValues: jest.fn(),
32
+ setValue: jest.fn(),
33
+ setError: jest.fn(),
34
+ validate: jest.fn(),
35
+ register: jest.fn(),
36
+ },
37
+ ["name", "expiry", "cvc"]
38
+ );
39
+
40
+ expect(result.card.number).toBeNull();
41
+ expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
42
+ expect(result.isValid).toBe(true);
43
+ expect(result.isComplete).toBe(true);
44
+ });
45
+
46
+ it("Ignores the name if it is not included in the fields", async () => {
47
+ const mockEncrypt = jest.fn();
48
+ const expiry = getFutureExpiry();
49
+ const sampleFormPayload = {
50
+ number: "4242 4242 4242 4242",
51
+ expiry,
52
+ cvc: "123",
53
+ } as CardForm;
54
+
55
+ mockEncrypt.mockImplementation((value: string) => `ev:${value}`);
56
+ const result = await changePayload(
57
+ mockEncrypt,
58
+ {
59
+ values: sampleFormPayload,
60
+ isValid: true,
61
+ errors: {},
62
+ setValues: jest.fn(),
63
+ setValue: jest.fn(),
64
+ setError: jest.fn(),
65
+ validate: jest.fn(),
66
+ register: jest.fn(),
67
+ },
68
+ ["number", "expiry", "cvc"]
69
+ );
70
+
71
+ expect(result.card.name).toBeFalsy();
72
+ expect(result.card.number).toBe(
73
+ `ev:${sampleFormPayload.number.replaceAll(" ", "")}`
74
+ );
75
+ expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
76
+ expect(result.isValid).toBe(true);
77
+ expect(result.isComplete).toBe(true);
78
+ });
79
+
80
+ it("Ignores the cvc if it is not included in the fields", async () => {
81
+ const mockEncrypt = jest.fn();
82
+ const expiry = getFutureExpiry();
83
+ const sampleFormPayload = {
84
+ number: "4242 4242 4242 4242",
85
+ expiry,
86
+ name: "John Doe",
87
+ } as CardForm;
88
+
89
+ mockEncrypt.mockImplementation((value: string) => `ev:${value}`);
90
+ const result = await changePayload(
91
+ mockEncrypt,
92
+ {
93
+ values: sampleFormPayload,
94
+ isValid: true,
95
+ errors: {},
96
+ setValues: jest.fn(),
97
+ setValue: jest.fn(),
98
+ setError: jest.fn(),
99
+ validate: jest.fn(),
100
+ register: jest.fn(),
101
+ },
102
+ ["number", "expiry", "name"]
103
+ );
104
+
105
+ expect(result.card.name).toBe(sampleFormPayload.name);
106
+ expect(result.card.number).toBe(
107
+ `ev:${sampleFormPayload.number.replaceAll(" ", "")}`
108
+ );
109
+ expect(result.card.cvc).toBeFalsy();
110
+ expect(result.isValid).toBe(true);
111
+ expect(result.isComplete).toBe(true);
112
+ });
@@ -14,7 +14,7 @@ export async function changePayload(
14
14
  ): Promise<CardPayload> {
15
15
  const { name, number: rawNumber, expiry, cvc } = form.values;
16
16
 
17
- const number = rawNumber.replace(/\s/g, "");
17
+ const number = fields.includes("number") ? rawNumber.replace(/\s/g, "") : "";
18
18
 
19
19
  const {
20
20
  brand,