@cohostvip/cohost-react 0.1.7 → 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.
@@ -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
@@ -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,9 @@
1
+ import { Tokenizer } from "./types";
2
+ declare global {
3
+ interface Window {
4
+ Accept?: any;
5
+ }
6
+ }
7
+ declare const authnetTokenizer: Tokenizer;
8
+ export { authnetTokenizer };
9
+ //# sourceMappingURL=authnet.d.ts.map
@@ -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.7",
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.7"
30
+ "@cohostvip/cohost-node": "0.1.8"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@testing-library/jest-dom": "6.6.3",