@cohostvip/cohost-react 0.1.6 → 0.1.8
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/CohostCheckoutContext.d.ts +1 -0
- package/dist/context/CohostCheckoutContext.d.ts.map +1 -1
- package/dist/context/CohostCheckoutContext.js +13 -0
- 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
|
@@ -13,6 +13,7 @@ export type CohostCheckoutContextType = {
|
|
|
13
13
|
placeOrder: () => Promise<CartSession | undefined>;
|
|
14
14
|
processPayment: (data: unknown) => Promise<unknown>;
|
|
15
15
|
applyCoupon: (code: string) => Promise<void>;
|
|
16
|
+
removeCoupon: (id: string) => Promise<void>;
|
|
16
17
|
};
|
|
17
18
|
export declare const CohostCheckoutContext: React.Context<CohostCheckoutContextType | null>;
|
|
18
19
|
export declare const CohostCheckoutProvider: React.FC<CohostCheckoutProviderProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CohostCheckoutContext.d.ts","sourceRoot":"","sources":["../../src/context/CohostCheckoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,MAAM,2BAA2B,GAAG;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,UAAU,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CohostCheckoutContext.d.ts","sourceRoot":"","sources":["../../src/context/CohostCheckoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,MAAM,MAAM,2BAA2B,GAAG;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvD,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,UAAU,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAGF,eAAO,MAAM,qBAAqB,iDAAwD,CAAC;AAE3F,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAgJxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,yBAIpC,CAAC"}
|
|
@@ -20,6 +20,18 @@ export const CohostCheckoutProvider = ({ cartSessionId, children, }) => {
|
|
|
20
20
|
}
|
|
21
21
|
catch (error) {
|
|
22
22
|
console.error("Error applying coupon:", error);
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const removeCoupon = async (id) => {
|
|
27
|
+
assertCartSession();
|
|
28
|
+
try {
|
|
29
|
+
const updatedCart = await client.cart.deleteCoupon(cartSessionId, id);
|
|
30
|
+
setCartSession(updatedCart);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error("Error removing coupon:", error);
|
|
34
|
+
throw error;
|
|
23
35
|
}
|
|
24
36
|
};
|
|
25
37
|
const joinGroup = async (groupId) => {
|
|
@@ -103,6 +115,7 @@ export const CohostCheckoutProvider = ({ cartSessionId, children, }) => {
|
|
|
103
115
|
joinGroup,
|
|
104
116
|
processPayment,
|
|
105
117
|
applyCoupon,
|
|
118
|
+
removeCoupon,
|
|
106
119
|
}, children: children }));
|
|
107
120
|
};
|
|
108
121
|
/**
|
|
@@ -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 } 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,MAAM,iCAAiC,CAAC;AACzE,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 } 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.8",
|
|
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.8"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@testing-library/jest-dom": "6.6.3",
|