@test-glide/payment-react-native 0.1.0 → 0.1.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.
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ import { fetchData } from "../utils/fetch.js";
3
4
  import { formatCardYear, formatString } from "../utils/utils.js";
4
5
  export class BivoCollect {
5
6
  form = {};
@@ -39,20 +40,20 @@ export class BivoCollect {
39
40
 
40
41
  // Default validations
41
42
  switch (fieldName) {
42
- case "cardNumber":
43
+ case "card":
43
44
  {
44
45
  const digits = trimmedValue.replace(/\D/g, "");
45
46
  if (digits.length < 12) return "Invalid card number";
46
47
  break;
47
48
  }
48
- case "cvc":
49
+ case "cvv":
49
50
  {
50
51
  if (!/^\d{3,4}$/.test(trimmedValue)) {
51
- return "Invalid CVC";
52
+ return "Invalid CVV";
52
53
  }
53
54
  break;
54
55
  }
55
- case "expiryDate":
56
+ case "exp":
56
57
  {
57
58
  // Format check MM/YY
58
59
  if (!/^\d{2}\/\d{2}$/.test(trimmedValue)) {
@@ -93,24 +94,33 @@ export class BivoCollect {
93
94
  async submit(endpoint, token) {
94
95
  console.log("Submitting form:", this.form, this.errors);
95
96
  const expiry = this.form.expiryDate?.split("/") || [];
96
- const payload = {
97
- token,
98
- pan: formatString(this.form.cardNumber || ""),
99
- expiry_month: Number(expiry[0] || 0),
100
- expiry_year: formatCardYear(expiry[1] || ""),
101
- cvv: this.form.cvc ? formatString(this.form.cvc) : null,
102
- name: this.form.cardHolderName || null
103
- };
104
97
 
105
98
  // Replace fetchData with your API call
106
- const response = await fetch(endpoint, {
99
+ const response = await fetchData(endpoint, {
107
100
  method: "POST",
108
- headers: {
109
- "Content-Type": "application/json"
110
- },
111
- body: JSON.stringify(payload)
101
+ body: {
102
+ token,
103
+ pan: formatString(this.form.cardNumber || ""),
104
+ expiry_month: Number(expiry[0] || 0) || null,
105
+ expiry_year: formatCardYear(expiry[1] || "") || null,
106
+ cvv: this.form.cvc ? formatString(this.form.cvc) : null,
107
+ address: {
108
+ postal_code: this.form.zipCode ? formatString(this.form.zipCode) : null
109
+ }
110
+ }
112
111
  });
113
- return response.json();
112
+ if (response.error) {
113
+ return {
114
+ success: false,
115
+ error: response.error
116
+ };
117
+ } else {
118
+ return {
119
+ success: true,
120
+ data: response.data
121
+ };
122
+ }
123
+ // return response.json();
114
124
  }
115
125
  }
116
126
  //# sourceMappingURL=Collector.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["formatCardYear","formatString","BivoCollect","form","errors","fieldConfig","constructor","vaultId","environment","setField","fieldName","value","onStateChange","required","regex","errorMsg","error","validateField","trimmedValue","trim","test","digits","replace","length","monthStr","yearStr","split","month","parseInt","year","fullYear","now","Date","currentMonth","getMonth","currentYear","getFullYear","isSubmitDisabled","fieldNames","some","submit","endpoint","token","console","log","expiry","expiryDate","payload","pan","cardNumber","expiry_month","Number","expiry_year","cvv","cvc","name","cardHolderName","response","fetch","method","headers","body","JSON","stringify","json"],"sourceRoot":"../../../src","sources":["core/Collector.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["fetchData","formatCardYear","formatString","BivoCollect","form","errors","fieldConfig","constructor","vaultId","environment","setField","fieldName","value","onStateChange","required","regex","errorMsg","error","validateField","trimmedValue","trim","test","digits","replace","length","monthStr","yearStr","split","month","parseInt","year","fullYear","now","Date","currentMonth","getMonth","currentYear","getFullYear","isSubmitDisabled","fieldNames","some","submit","endpoint","token","console","log","expiry","expiryDate","response","method","body","pan","cardNumber","expiry_month","Number","expiry_year","cvv","cvc","address","postal_code","zipCode","success","data"],"sourceRoot":"../../../src","sources":["core/Collector.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ export const fetchData = async (url, payload = {}) => {
4
+ const {
5
+ method = "GET",
6
+ headers = {},
7
+ body = null,
8
+ ...options
9
+ } = payload;
10
+ try {
11
+ const config = {
12
+ method,
13
+ headers: {
14
+ Accept: "*/*",
15
+ "Content-Type": "application/json",
16
+ ...headers
17
+ },
18
+ ...options
19
+ };
20
+ if (body && ["POST", "PUT", "PATCH", "DELETE"].includes(method.toUpperCase())) {
21
+ config.body = typeof body === "string" ? body : JSON.stringify(body);
22
+ }
23
+ const response = await fetch(url, config);
24
+ const contentType = response.headers.get("content-type");
25
+ let responseData;
26
+ if (contentType?.includes("application/json")) {
27
+ responseData = await response.json();
28
+ } else {
29
+ responseData = await response.text();
30
+ }
31
+ if (!response.ok) {
32
+ const errData = responseData;
33
+ throw new Error(errData?.message || `HTTP error! status: ${response.status}`);
34
+ }
35
+ return {
36
+ data: responseData,
37
+ error: null
38
+ };
39
+ } catch (err) {
40
+ const errorMessage = err instanceof Error ? err.message : "An error occurred";
41
+ return {
42
+ data: null,
43
+ error: errorMessage
44
+ };
45
+ }
46
+ };
47
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fetchData","url","payload","method","headers","body","options","config","Accept","includes","toUpperCase","JSON","stringify","response","fetch","contentType","get","responseData","json","text","ok","errData","Error","message","status","data","error","err","errorMessage"],"sourceRoot":"../../../src","sources":["utils/fetch.ts"],"mappings":";;AAaA,OAAO,MAAMA,SAAS,GAAG,MAAAA,CACvBC,GAAW,EACXC,OAAqB,GAAG,CAAC,CAAC,KACE;EAC5B,MAAM;IAAEC,MAAM,GAAG,KAAK;IAAEC,OAAO,GAAG,CAAC,CAAC;IAAEC,IAAI,GAAG,IAAI;IAAE,GAAGC;EAAQ,CAAC,GAAGJ,OAAO;EAEzE,IAAI;IACF,MAAMK,MAAmB,GAAG;MAC1BJ,MAAM;MACNC,OAAO,EAAE;QACPI,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,kBAAkB;QAClC,GAAGJ;MACL,CAAC;MACD,GAAGE;IACL,CAAC;IAED,IAAID,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAACI,QAAQ,CAACN,MAAM,CAACO,WAAW,CAAC,CAAC,CAAC,EAAE;MAC7EH,MAAM,CAACF,IAAI,GAAG,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGM,IAAI,CAACC,SAAS,CAACP,IAAI,CAAC;IACtE;IAEA,MAAMQ,QAAQ,GAAG,MAAMC,KAAK,CAACb,GAAG,EAAEM,MAAM,CAAC;IAEzC,MAAMQ,WAAW,GAAGF,QAAQ,CAACT,OAAO,CAACY,GAAG,CAAC,cAAc,CAAC;IACxD,IAAIC,YAAe;IAEnB,IAAIF,WAAW,EAAEN,QAAQ,CAAC,kBAAkB,CAAC,EAAE;MAC7CQ,YAAY,GAAG,MAAMJ,QAAQ,CAACK,IAAI,CAAC,CAAM;IAC3C,CAAC,MAAM;MACLD,YAAY,GAAG,MAAMJ,QAAQ,CAACM,IAAI,CAAC,CAAM;IAC3C;IAEA,IAAI,CAACN,QAAQ,CAACO,EAAE,EAAE;MAChB,MAAMC,OAAO,GAAGJ,YAAuC;MACvD,MAAM,IAAIK,KAAK,CACZD,OAAO,EAAEE,OAAO,IAAe,uBAAuBV,QAAQ,CAACW,MAAM,EACxE,CAAC;IACH;IAEA,OAAO;MAAEC,IAAI,EAAER,YAAY;MAAES,KAAK,EAAE;IAAK,CAAC;EAC5C,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZ,MAAMC,YAAY,GAAGD,GAAG,YAAYL,KAAK,GAAGK,GAAG,CAACJ,OAAO,GAAG,mBAAmB;IAC7E,OAAO;MAAEE,IAAI,EAAE,IAAI;MAAEC,KAAK,EAAEE;IAAa,CAAC;EAC5C;AACF,CAAC","ignoreList":[]}
@@ -16,7 +16,15 @@ export declare class BivoCollect {
16
16
  setField(fieldName: string, value: string, onStateChange?: (state: FieldState) => void, required?: boolean, regex?: RegExp, errorMsg?: string): void;
17
17
  validateField(fieldName: string, value: string, required?: boolean, regex?: RegExp, errorMsg?: string): string;
18
18
  isSubmitDisabled(fieldNames: string[]): boolean;
19
- submit(endpoint: string, token: string): Promise<any>;
19
+ submit(endpoint: string, token: string): Promise<{
20
+ success: boolean;
21
+ error: string;
22
+ data?: undefined;
23
+ } | {
24
+ success: boolean;
25
+ data: unknown;
26
+ error?: undefined;
27
+ }>;
20
28
  }
21
29
  export {};
22
30
  //# sourceMappingURL=Collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collector.d.ts","sourceRoot":"","sources":["../../../../src/core/Collector.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,qBAAa,WAAW;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;gBAEhF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,MAAM;IAK5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAAE,QAAQ,GAAE,OAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAUpJ,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAoErG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE;IAQ/B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAoB7C"}
1
+ {"version":3,"file":"Collector.d.ts","sourceRoot":"","sources":["../../../../src/core/Collector.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,qBAAa,WAAW;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;gBAEhF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,MAAM;IAK5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAAE,QAAQ,GAAE,OAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAUpJ,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAoErG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE;IAQ/B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;CAyB7C"}
@@ -0,0 +1,13 @@
1
+ type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2
+ interface FetchPayload extends Omit<RequestInit, "method" | "headers" | "body"> {
3
+ method?: HttpMethod;
4
+ headers?: Record<string, string>;
5
+ body?: Record<string, unknown> | string | null;
6
+ }
7
+ interface FetchResult<T> {
8
+ data: T | null;
9
+ error: string | null;
10
+ }
11
+ export declare const fetchData: <T = unknown>(url: string, payload?: FetchPayload) => Promise<FetchResult<T>>;
12
+ export {};
13
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9D,UAAU,YAAa,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7E,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,UAAU,WAAW,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,SAAS,GAAU,CAAC,GAAG,OAAO,EACzC,KAAK,MAAM,EACX,UAAS,YAAiB,KACzB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAyCxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@test-glide/payment-react-native",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "bivo payment",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,3 +1,4 @@
1
+ import { fetchData } from "../utils/fetch";
1
2
  import { formatCardYear, formatString } from "../utils/utils";
2
3
 
3
4
 
@@ -41,20 +42,20 @@ export class BivoCollect {
41
42
 
42
43
  // Default validations
43
44
  switch (fieldName) {
44
- case "cardNumber": {
45
+ case "card": {
45
46
  const digits = trimmedValue.replace(/\D/g, "");
46
47
  if (digits.length < 12) return "Invalid card number";
47
48
  break;
48
49
  }
49
50
 
50
- case "cvc": {
51
+ case "cvv": {
51
52
  if (!/^\d{3,4}$/.test(trimmedValue)) {
52
- return "Invalid CVC";
53
+ return "Invalid CVV";
53
54
  }
54
55
  break;
55
56
  }
56
57
 
57
- case "expiryDate": {
58
+ case "exp": {
58
59
  // Format check MM/YY
59
60
  if (!/^\d{2}\/\d{2}$/.test(trimmedValue)) {
60
61
  return "Invalid expiry";
@@ -104,21 +105,26 @@ export class BivoCollect {
104
105
  async submit(endpoint: string, token: string) {
105
106
  console.log("Submitting form:", this.form, this.errors);
106
107
  const expiry = this.form.expiryDate?.split("/") || [];
107
- const payload = {
108
- token,
109
- pan: formatString(this.form.cardNumber || ""),
110
- expiry_month: Number(expiry[0] || 0),
111
- expiry_year: formatCardYear(expiry[1] || ""),
112
- cvv: this.form.cvc ? formatString(this.form.cvc) : null,
113
- name: this.form.cardHolderName || null,
114
- };
115
108
 
116
109
  // Replace fetchData with your API call
117
- const response = await fetch(endpoint, {
110
+ const response = await fetchData(endpoint, {
118
111
  method: "POST",
119
- headers: { "Content-Type": "application/json" },
120
- body: JSON.stringify(payload),
112
+ body: {
113
+ token,
114
+ pan:formatString(this.form.cardNumber || ""),
115
+ expiry_month: Number(expiry[0] || 0) || null,
116
+ expiry_year: formatCardYear(expiry[1] || "") || null,
117
+ cvv: this.form.cvc ? formatString(this.form.cvc) : null,
118
+ address: {
119
+ postal_code: this.form.zipCode ? formatString(this.form.zipCode) : null,
120
+ },
121
+ },
121
122
  });
122
- return response.json();
123
+ if (response.error) {
124
+ return{ success: false, error: response.error };
125
+ } else {
126
+ return{ success: true, data: response.data };
127
+ }
128
+ // return response.json();
123
129
  }
124
130
  }
@@ -0,0 +1,58 @@
1
+ type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
2
+
3
+ interface FetchPayload extends Omit<RequestInit, "method" | "headers" | "body"> {
4
+ method?: HttpMethod;
5
+ headers?: Record<string, string>;
6
+ body?: Record<string, unknown> | string | null;
7
+ }
8
+
9
+ interface FetchResult<T> {
10
+ data: T | null;
11
+ error: string | null;
12
+ }
13
+
14
+ export const fetchData = async <T = unknown>(
15
+ url: string,
16
+ payload: FetchPayload = {}
17
+ ): Promise<FetchResult<T>> => {
18
+ const { method = "GET", headers = {}, body = null, ...options } = payload;
19
+
20
+ try {
21
+ const config: RequestInit = {
22
+ method,
23
+ headers: {
24
+ Accept: "*/*",
25
+ "Content-Type": "application/json",
26
+ ...headers,
27
+ },
28
+ ...options,
29
+ };
30
+
31
+ if (body && ["POST", "PUT", "PATCH", "DELETE"].includes(method.toUpperCase())) {
32
+ config.body = typeof body === "string" ? body : JSON.stringify(body);
33
+ }
34
+
35
+ const response = await fetch(url, config);
36
+
37
+ const contentType = response.headers.get("content-type");
38
+ let responseData: T;
39
+
40
+ if (contentType?.includes("application/json")) {
41
+ responseData = await response.json() as T;
42
+ } else {
43
+ responseData = await response.text() as T;
44
+ }
45
+
46
+ if (!response.ok) {
47
+ const errData = responseData as Record<string, unknown>;
48
+ throw new Error(
49
+ (errData?.message as string) || `HTTP error! status: ${response.status}`
50
+ );
51
+ }
52
+
53
+ return { data: responseData, error: null };
54
+ } catch (err) {
55
+ const errorMessage = err instanceof Error ? err.message : "An error occurred";
56
+ return { data: null, error: errorMessage };
57
+ }
58
+ };