@cohostvip/cohost-react 0.1.7 → 0.1.9
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.
- package/dist/context/PaymentElementContext.d.ts +15 -0
- package/dist/context/PaymentElementContext.d.ts.map +1 -0
- package/dist/context/PaymentElementContext.js +50 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/lib/tokenizers/authnet.d.ts +9 -0
- package/dist/lib/tokenizers/authnet.d.ts.map +1 -0
- package/dist/lib/tokenizers/authnet.js +45 -0
- package/dist/lib/tokenizers/types.d.ts +12 -0
- package/dist/lib/tokenizers/types.d.ts.map +1 -0
- package/dist/lib/tokenizers/types.js +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { CreditCardInformation } from '../lib/tokenizers/types';
|
|
3
|
+
export type PaymentElementProviderProps = {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export type PaymentElementContextType = {
|
|
7
|
+
tokenizeCard: (cardInfo: CreditCardInformation) => Promise<any>;
|
|
8
|
+
};
|
|
9
|
+
export declare const PaymentElementProvider: React.FC<PaymentElementProviderProps>;
|
|
10
|
+
/**
|
|
11
|
+
* Hook to access the current PaymentElementContext
|
|
12
|
+
* Must be used inside a <PaymentElementProvider>
|
|
13
|
+
*/
|
|
14
|
+
export declare const usePaymentElement: () => PaymentElementContextType;
|
|
15
|
+
//# sourceMappingURL=PaymentElementContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentElementContext.d.ts","sourceRoot":"","sources":["../../src/context/PaymentElementContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAa,MAAM,yBAAyB,CAAC;AAG3E,MAAM,MAAM,2BAA2B,GAAG;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,YAAY,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACnE,CAAC;AAUF,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAkDxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,yBAIpC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useEffect, useState } from 'react';
|
|
3
|
+
import { useCohostCheckout } from './CohostCheckoutContext';
|
|
4
|
+
import { authnetTokenizer } from '../lib/tokenizers/authnet';
|
|
5
|
+
const PaymentElementContext = createContext(null);
|
|
6
|
+
const tokenizers = {
|
|
7
|
+
'authnet': authnetTokenizer
|
|
8
|
+
};
|
|
9
|
+
export const PaymentElementProvider = ({ children }) => {
|
|
10
|
+
const { cartSession } = useCohostCheckout();
|
|
11
|
+
const [paymentIntent, setPaymentIntent] = useState(null);
|
|
12
|
+
const [tokenizer, setTokenizer] = useState(null);
|
|
13
|
+
const tokenizeCard = async (cardInfo) => {
|
|
14
|
+
if (!tokenizer) {
|
|
15
|
+
throw new Error("Tokenizer not found");
|
|
16
|
+
}
|
|
17
|
+
const paymentIntent = cartSession?.meta?.paymentIntent;
|
|
18
|
+
if (!paymentIntent) {
|
|
19
|
+
throw new Error("Payment intent not found");
|
|
20
|
+
}
|
|
21
|
+
return await tokenizer.tokenize(cardInfo, paymentIntent);
|
|
22
|
+
};
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!tokenizer) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
tokenizer.registerScripts();
|
|
28
|
+
}, [tokenizer]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (paymentIntent?.provider) {
|
|
31
|
+
setTokenizer(tokenizers[paymentIntent.provider] || null);
|
|
32
|
+
}
|
|
33
|
+
}, [paymentIntent]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
setPaymentIntent(cartSession?.meta?.paymentIntent || null);
|
|
36
|
+
}, [cartSession]);
|
|
37
|
+
return (_jsx(PaymentElementContext.Provider, { value: {
|
|
38
|
+
tokenizeCard
|
|
39
|
+
}, children: children }));
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Hook to access the current PaymentElementContext
|
|
43
|
+
* Must be used inside a <PaymentElementProvider>
|
|
44
|
+
*/
|
|
45
|
+
export const usePaymentElement = () => {
|
|
46
|
+
const ctx = useContext(PaymentElementContext);
|
|
47
|
+
if (!ctx)
|
|
48
|
+
throw new Error("usePaymentElement must be used within a PaymentElementProvider");
|
|
49
|
+
return ctx;
|
|
50
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { CohostCheckoutProvider, CohostCheckoutContext, useCohostCheckout } from './context/CohostCheckoutContext';
|
|
2
2
|
export { CohostEventProvider, useCohostEvent } from './context/CohostEventContext';
|
|
3
3
|
export { CohostProvider, type CohostProviderProps } from './context/CohostContext';
|
|
4
|
+
export { PaymentElementProvider, usePaymentElement } from './context/PaymentElementContext';
|
|
5
|
+
export { CreditCardInformation } from './lib/tokenizers/types';
|
|
4
6
|
export { useCohost } from './hooks/useCohost';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { CohostCheckoutProvider, CohostCheckoutContext, useCohostCheckout } from './context/CohostCheckoutContext';
|
|
2
2
|
export { CohostEventProvider, useCohostEvent } from './context/CohostEventContext';
|
|
3
3
|
export { CohostProvider } from './context/CohostContext';
|
|
4
|
+
export { PaymentElementProvider, usePaymentElement } from './context/PaymentElementContext';
|
|
4
5
|
export { useCohost } from './hooks/useCohost';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authnet.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenizers/authnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,MAAM,CAAC,EAAE,GAAG,CAAC;KAChB;CACJ;AAiDD,QAAA,MAAM,gBAAgB,EAAE,SAGvB,CAAA;AACD,OAAO,EACH,gBAAgB,EACnB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const tokenizeCard = async (cardInfo, paymentIntent) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
const cardNumber = cardInfo.cardNumber.replace(/\s/g, '');
|
|
4
|
+
const expMonth = `${cardInfo.month}`.padStart(2, '0');
|
|
5
|
+
const expYear = cardInfo.year < 100 ? `20${cardInfo.year}` : `${cardInfo.year}`;
|
|
6
|
+
const cardData = {
|
|
7
|
+
cardNumber,
|
|
8
|
+
month: expMonth,
|
|
9
|
+
year: expYear,
|
|
10
|
+
cardCode: cardInfo.cardCode,
|
|
11
|
+
nameOnCard: cardInfo.nameOnCard,
|
|
12
|
+
};
|
|
13
|
+
const secureData = {
|
|
14
|
+
authData: {
|
|
15
|
+
apiLoginID: paymentIntent.apiLoginId,
|
|
16
|
+
clientKey: paymentIntent.publicClientKey,
|
|
17
|
+
},
|
|
18
|
+
cardData
|
|
19
|
+
};
|
|
20
|
+
window.Accept?.dispatchData(secureData, (response) => {
|
|
21
|
+
if (response.messages.resultCode === "Error") {
|
|
22
|
+
reject(response.messages.message[0].text);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
resolve(response);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const registerScripts = () => {
|
|
31
|
+
const scriptId = 'authnet-accept-js';
|
|
32
|
+
// Only add if not already in the DOM
|
|
33
|
+
if (!document.getElementById(scriptId)) {
|
|
34
|
+
const script = document.createElement('script');
|
|
35
|
+
script.id = scriptId;
|
|
36
|
+
script.src = 'https://jstest.authorize.net/v1/Accept.js';
|
|
37
|
+
script.async = true;
|
|
38
|
+
document.body.appendChild(script);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const authnetTokenizer = {
|
|
42
|
+
tokenize: tokenizeCard,
|
|
43
|
+
registerScripts
|
|
44
|
+
};
|
|
45
|
+
export { authnetTokenizer };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface CreditCardInformation {
|
|
2
|
+
cardNumber: string;
|
|
3
|
+
month: number;
|
|
4
|
+
year: number;
|
|
5
|
+
cardCode: string;
|
|
6
|
+
nameOnCard: string;
|
|
7
|
+
}
|
|
8
|
+
export type Tokenizer = {
|
|
9
|
+
tokenize: (cardInfo: CreditCardInformation, paymentIntent: any) => Promise<any>;
|
|
10
|
+
registerScripts: () => void;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenizers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAChF,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cohostvip/cohost-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "React bindings for the Cohost API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@cohostvip/cohost-node": "0.1.
|
|
30
|
+
"@cohostvip/cohost-node": "0.1.9"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@testing-library/jest-dom": "6.6.3",
|