@capibox/bridge-nextjs-client 0.0.71 → 0.0.74

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/index.d.mts CHANGED
@@ -835,6 +835,22 @@ declare const browser: {
835
835
  delay: number;
836
836
  }) => Promise<true>;
837
837
  };
838
+ firstPayment: (uuid: string) => Promise<{
839
+ source: string;
840
+ chargeId: string;
841
+ total: number;
842
+ currency: string;
843
+ date: string;
844
+ type: string;
845
+ }>;
846
+ last5Payments: (uuid: string) => Promise<{
847
+ source: string;
848
+ chargeId: string;
849
+ total: number;
850
+ currency: string;
851
+ date: string;
852
+ type: string;
853
+ }[]>;
838
854
  };
839
855
  trustpilot: {
840
856
  getLink: (data: {
@@ -890,33 +906,51 @@ declare const browser: {
890
906
  transactionId: string;
891
907
  userId: string;
892
908
  }) => Promise<{
893
- data: {
894
- id: number;
895
- uuid: string;
896
- transactionId: string;
897
- userId: string;
898
- trustpilotLink?: string;
899
- postbackUrl?: string;
900
- status: string;
901
- createdAt: string;
902
- updatedAt: string;
903
- };
909
+ id: number;
910
+ project: string;
911
+ slug: string;
912
+ ip: string;
913
+ country: string;
914
+ isEu: boolean;
915
+ referer: string;
916
+ useragent: string;
917
+ origin: string;
918
+ cookies: Record<string, never>;
919
+ query: Record<string, never>;
920
+ createdAt?: string;
921
+ updatedAt?: string;
922
+ uuid: string;
923
+ extraData: Record<string, never>;
924
+ email: string;
925
+ analyticsId: string;
926
+ state: string;
927
+ isPurchased: boolean;
928
+ device?: Record<string, never>;
904
929
  }>;
905
930
  update: (uuid: string, dto: {
906
931
  trustpilotLink?: string;
907
932
  status?: "created" | "completed";
908
933
  }) => Promise<{
909
- data: {
910
- id: number;
911
- uuid: string;
912
- transactionId: string;
913
- userId: string;
914
- trustpilotLink?: string;
915
- postbackUrl?: string;
916
- status: string;
917
- createdAt: string;
918
- updatedAt: string;
919
- };
934
+ id: number;
935
+ project: string;
936
+ slug: string;
937
+ ip: string;
938
+ country: string;
939
+ isEu: boolean;
940
+ referer: string;
941
+ useragent: string;
942
+ origin: string;
943
+ cookies: Record<string, never>;
944
+ query: Record<string, never>;
945
+ createdAt?: string;
946
+ updatedAt?: string;
947
+ uuid: string;
948
+ extraData: Record<string, never>;
949
+ email: string;
950
+ analyticsId: string;
951
+ state: string;
952
+ isPurchased: boolean;
953
+ device?: Record<string, never>;
920
954
  }>;
921
955
  };
922
956
  klaviyo: {
@@ -949,6 +983,85 @@ declare const browser: {
949
983
  }[];
950
984
  }) => Promise<never>;
951
985
  };
986
+ order: {
987
+ getByUuid: (uuid: string) => Promise<{
988
+ id: number;
989
+ orderId: string;
990
+ country: string;
991
+ origin: string;
992
+ gender: string;
993
+ language: string;
994
+ slug: string;
995
+ email: string;
996
+ }>;
997
+ getByEmail: (email: string) => Promise<{
998
+ id: number;
999
+ orderId: string;
1000
+ country: string;
1001
+ origin: string;
1002
+ gender: string;
1003
+ language: string;
1004
+ slug: string;
1005
+ email: string;
1006
+ }[]>;
1007
+ };
1008
+ subscription: {
1009
+ cancelById: (id: number, data: {
1010
+ reason: string;
1011
+ }) => Promise<{}>;
1012
+ cancelByOrderId: (uuid: string, data: {
1013
+ reason: string;
1014
+ }) => Promise<{}>;
1015
+ applyDiscount: (data: {
1016
+ subscriptionId: number;
1017
+ dateFrom: string | number;
1018
+ dateTo: string | number;
1019
+ discount: number;
1020
+ description?: string;
1021
+ }) => Promise<{
1022
+ id: number;
1023
+ subscriptionId: number;
1024
+ total: number;
1025
+ dateFrom: string;
1026
+ dateTo: string;
1027
+ description?: Record<string, never> | null;
1028
+ }>;
1029
+ pause: (data: {
1030
+ subscriptionId: number;
1031
+ dateFrom: string | number;
1032
+ dateTo: string | number;
1033
+ description?: string;
1034
+ }) => Promise<{
1035
+ id: number;
1036
+ subscriptionId: number;
1037
+ total: number;
1038
+ dateFrom: string;
1039
+ dateTo: string;
1040
+ description?: Record<string, never> | null;
1041
+ }>;
1042
+ fillCancellationRequest: (data: {
1043
+ subscriptionId?: Record<string, never> | null;
1044
+ email: string;
1045
+ topic1: string;
1046
+ topic2: string;
1047
+ description: string;
1048
+ action: string;
1049
+ status: number;
1050
+ }) => Promise<{
1051
+ message: string;
1052
+ request: {
1053
+ id: number;
1054
+ subscriptionId: Record<string, never> | null;
1055
+ email: string;
1056
+ topic1: string;
1057
+ topic2: string;
1058
+ description: string;
1059
+ action: string;
1060
+ status: number;
1061
+ createdAt: Record<string, never> | null;
1062
+ };
1063
+ }>;
1064
+ };
952
1065
  abTool: {
953
1066
  upSellNavigation: {
954
1067
  configItemIndexBySlug: (config: UpSellConfigType, template: string, slug: string) => number;
package/dist/index.d.ts CHANGED
@@ -835,6 +835,22 @@ declare const browser: {
835
835
  delay: number;
836
836
  }) => Promise<true>;
837
837
  };
838
+ firstPayment: (uuid: string) => Promise<{
839
+ source: string;
840
+ chargeId: string;
841
+ total: number;
842
+ currency: string;
843
+ date: string;
844
+ type: string;
845
+ }>;
846
+ last5Payments: (uuid: string) => Promise<{
847
+ source: string;
848
+ chargeId: string;
849
+ total: number;
850
+ currency: string;
851
+ date: string;
852
+ type: string;
853
+ }[]>;
838
854
  };
839
855
  trustpilot: {
840
856
  getLink: (data: {
@@ -890,33 +906,51 @@ declare const browser: {
890
906
  transactionId: string;
891
907
  userId: string;
892
908
  }) => Promise<{
893
- data: {
894
- id: number;
895
- uuid: string;
896
- transactionId: string;
897
- userId: string;
898
- trustpilotLink?: string;
899
- postbackUrl?: string;
900
- status: string;
901
- createdAt: string;
902
- updatedAt: string;
903
- };
909
+ id: number;
910
+ project: string;
911
+ slug: string;
912
+ ip: string;
913
+ country: string;
914
+ isEu: boolean;
915
+ referer: string;
916
+ useragent: string;
917
+ origin: string;
918
+ cookies: Record<string, never>;
919
+ query: Record<string, never>;
920
+ createdAt?: string;
921
+ updatedAt?: string;
922
+ uuid: string;
923
+ extraData: Record<string, never>;
924
+ email: string;
925
+ analyticsId: string;
926
+ state: string;
927
+ isPurchased: boolean;
928
+ device?: Record<string, never>;
904
929
  }>;
905
930
  update: (uuid: string, dto: {
906
931
  trustpilotLink?: string;
907
932
  status?: "created" | "completed";
908
933
  }) => Promise<{
909
- data: {
910
- id: number;
911
- uuid: string;
912
- transactionId: string;
913
- userId: string;
914
- trustpilotLink?: string;
915
- postbackUrl?: string;
916
- status: string;
917
- createdAt: string;
918
- updatedAt: string;
919
- };
934
+ id: number;
935
+ project: string;
936
+ slug: string;
937
+ ip: string;
938
+ country: string;
939
+ isEu: boolean;
940
+ referer: string;
941
+ useragent: string;
942
+ origin: string;
943
+ cookies: Record<string, never>;
944
+ query: Record<string, never>;
945
+ createdAt?: string;
946
+ updatedAt?: string;
947
+ uuid: string;
948
+ extraData: Record<string, never>;
949
+ email: string;
950
+ analyticsId: string;
951
+ state: string;
952
+ isPurchased: boolean;
953
+ device?: Record<string, never>;
920
954
  }>;
921
955
  };
922
956
  klaviyo: {
@@ -949,6 +983,85 @@ declare const browser: {
949
983
  }[];
950
984
  }) => Promise<never>;
951
985
  };
986
+ order: {
987
+ getByUuid: (uuid: string) => Promise<{
988
+ id: number;
989
+ orderId: string;
990
+ country: string;
991
+ origin: string;
992
+ gender: string;
993
+ language: string;
994
+ slug: string;
995
+ email: string;
996
+ }>;
997
+ getByEmail: (email: string) => Promise<{
998
+ id: number;
999
+ orderId: string;
1000
+ country: string;
1001
+ origin: string;
1002
+ gender: string;
1003
+ language: string;
1004
+ slug: string;
1005
+ email: string;
1006
+ }[]>;
1007
+ };
1008
+ subscription: {
1009
+ cancelById: (id: number, data: {
1010
+ reason: string;
1011
+ }) => Promise<{}>;
1012
+ cancelByOrderId: (uuid: string, data: {
1013
+ reason: string;
1014
+ }) => Promise<{}>;
1015
+ applyDiscount: (data: {
1016
+ subscriptionId: number;
1017
+ dateFrom: string | number;
1018
+ dateTo: string | number;
1019
+ discount: number;
1020
+ description?: string;
1021
+ }) => Promise<{
1022
+ id: number;
1023
+ subscriptionId: number;
1024
+ total: number;
1025
+ dateFrom: string;
1026
+ dateTo: string;
1027
+ description?: Record<string, never> | null;
1028
+ }>;
1029
+ pause: (data: {
1030
+ subscriptionId: number;
1031
+ dateFrom: string | number;
1032
+ dateTo: string | number;
1033
+ description?: string;
1034
+ }) => Promise<{
1035
+ id: number;
1036
+ subscriptionId: number;
1037
+ total: number;
1038
+ dateFrom: string;
1039
+ dateTo: string;
1040
+ description?: Record<string, never> | null;
1041
+ }>;
1042
+ fillCancellationRequest: (data: {
1043
+ subscriptionId?: Record<string, never> | null;
1044
+ email: string;
1045
+ topic1: string;
1046
+ topic2: string;
1047
+ description: string;
1048
+ action: string;
1049
+ status: number;
1050
+ }) => Promise<{
1051
+ message: string;
1052
+ request: {
1053
+ id: number;
1054
+ subscriptionId: Record<string, never> | null;
1055
+ email: string;
1056
+ topic1: string;
1057
+ topic2: string;
1058
+ description: string;
1059
+ action: string;
1060
+ status: number;
1061
+ createdAt: Record<string, never> | null;
1062
+ };
1063
+ }>;
1064
+ };
952
1065
  abTool: {
953
1066
  upSellNavigation: {
954
1067
  configItemIndexBySlug: (config: UpSellConfigType, template: string, slug: string) => number;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/browser/hooks/useParamsLandingPage.ts","../src/lib/api.ts","../src/browser/funnels/get.ts","../src/browser/funnels/get-templates.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigItemIndexBySlug.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugByIndex.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugBySlug.ts","../src/browser/abtool/upSellNavigation/index.ts","../src/browser/abtool/upSellTemplatesSplit/isSplitTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/getUpsellPageTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/index.ts"],"sourcesContent":["import {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\nimport {server} from '@capibox/bridge-server'\nimport {browser as clientBrowser} from '@capibox/bridge-browser'\nimport {upSellNavigation} from \"./browser/abtool/upSellNavigation\";\nimport {upSellTemplatesSplit} from \"./browser/abtool/upSellTemplatesSplit\";\n\nexport type {UpSellConfigType} from './browser/abtool/upSellNavigation/types'\nexport type {SdkRemoteFunnel} from \"./browser/funnels/get\";\nexport type {\n SDKCapiboxCartItem,\n SDKCapiboxCartResponse,\n SDKCapiboxCustomerCartResponse,\n SDKCapiboxPaymentToken,\n SDKCapiboxSessionResponse\n} from \"@capibox/bridge-browser\";\n\nconst browser = {\n abTool: {\n upSellNavigation,\n upSellTemplatesSplit,\n },\n hooks: {\n useParamsLandingPage\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n ...clientBrowser\n}\n\n\nexport {\n browser,\n server\n}\n\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.71\n","import {useParams} from 'next/navigation'\n\nexport type ParamsLandingPage = {\n landing?: string\n checkout?: string\n}\nexport type ParamsLandingPageResponse = {\n landing: string\n checkout: string\n angle: string\n version: string\n path: {\n root: string\n rootPretty: string\n }\n}\n\nexport const useParamsLandingPage = (): ParamsLandingPageResponse => {\n const params = useParams<ParamsLandingPage>();\n\n const angle = (params.landing ?? 'main').toLowerCase()\n const version = (params.checkout ?? 'a').toLowerCase()\n\n return {\n landing: angle,\n checkout: version,\n angle,\n version,\n path: {\n root: `/${angle}/${version}`,\n rootPretty: angle === 'main' && version === 'a' ? '' : `/${angle}/${version}`\n }\n }\n}","import createFetchClient from \"openapi-fetch\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n 'project-key': \"Frontend\"\n },\n});","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport type SdkRemoteFunnel = {\n checkout: string,\n landing: string,\n\n angle: string,\n version: string,\n\n homePageTemplate: string,\n quizPageTemplate: string,\n resultPageTemplate: string,\n emailPageTemplate: string,\n checkoutPageTemplate: string,\n paymentWindowTemplate: string,\n upsellPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n let response: components['schemas']['FunnelResponseDto'][] = [];\n\n const res = await $apiClient.GET('/funnels/funnel', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n }\n });\n if (!res || !res.data) return [];\n response = res.data;\n\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = response;\n const output: SdkRemoteFunnel[] = [];\n for (const funnel of tmpFunnels) {\n output.push({\n landing: funnel.angle,\n checkout: funnel.version,\n\n angle: funnel.angle,\n version: funnel.version,\n\n homePageTemplate: funnel.home_page,\n quizPageTemplate: funnel.quiz_page,\n resultPageTemplate: funnel.results_page,\n emailPageTemplate: funnel.email_page,\n checkoutPageTemplate: funnel.checkout_page,\n paymentWindowTemplate: funnel.payment_window,\n upsellPageTemplate: funnel.upsell_page,\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n}","import {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigItemIndexBySlug = (config: UpSellConfigType, template: string, slug: string) => {\n const slugs = config[template] || []\n return slugs.findIndex(el => el === slug || (Array.isArray(el) && el.map(s => s.slug).indexOf(slug) >= 0))\n}\n","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigNextSlugByIndex = (config: UpSellConfigType, template: string, currentIndex: number, currentSlug?: string) : string | undefined => {\n const slugs = config[template] || []\n const nextIndex = currentIndex + 1;\n\n if (nextIndex > -1 && nextIndex < slugs.length) {\n const path = slugs[nextIndex]\n if (Array.isArray(path)) {\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n const splitValues = path.filter(f => {\n if (!currentSlug) return true;\n if (!f.ignoreAfter) return true;\n return f.ignoreAfter !== currentSlug;\n }).map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n })\n if (splitValues.length === 0) {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n let winner = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!winner) {\n winner = splitValues[0]\n }\n if (winner.slug === '') {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n return winner.slug;\n } else {\n return path;\n }\n }\n return undefined;\n}","import {UpSellConfigType} from \"./types\";\nimport {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\n\nexport const getUpsellConfigNextSlugBySlug = (config: UpSellConfigType, template: string, currentSlug: string) : string | undefined => {\n const currentIndex = getUpsellConfigItemIndexBySlug(config, template, currentSlug)\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex, currentSlug)\n}\n","import {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\nimport {getUpsellConfigNextSlugBySlug} from \"./getUpsellConfigNextSlugBySlug\";\n\nexport const upSellNavigation = {\n configItemIndexBySlug: getUpsellConfigItemIndexBySlug,\n nextPathByConfigItemIndex: getUpsellConfigNextSlugByIndex,\n nextPathByConfigItemSlug: getUpsellConfigNextSlugBySlug,\n}","import {UpSellConfigItemValue} from \"../upSellNavigation/types\";\n\nexport const isSplitTemplate = (items: UpSellConfigItemValue[]) => {\n if (items.length > 0 && Array.isArray(items[0]) && ('splitTemplates' in items[0][0])) {\n return true;\n }\n return false;\n}","import {UpSellConfigType} from \"../upSellNavigation/types\";\nimport {isSplitTemplate} from \"./isSplitTemplate\";\n\nexport const getUpsellPageTemplate = (config: UpSellConfigType, template: string) => {\n const items = config[template] || []\n if (isSplitTemplate(items) && Array.isArray(items[0])) {\n const itemsWithRange = items[0].map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n });\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = itemsWithRange.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = itemsWithRange[0]\n }\n return currentSplit.slug;\n }\n return template;\n}","import {getUpsellPageTemplate} from \"./getUpsellPageTemplate\";\n\nexport const upSellTemplatesSplit = {\n getTemplate: getUpsellPageTemplate,\n}"],"mappings":"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","names":["createFetchClient","clientBrowser"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/browser/hooks/useParamsLandingPage.ts","../src/lib/api.ts","../src/browser/funnels/get.ts","../src/browser/funnels/get-templates.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigItemIndexBySlug.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugByIndex.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugBySlug.ts","../src/browser/abtool/upSellNavigation/index.ts","../src/browser/abtool/upSellTemplatesSplit/isSplitTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/getUpsellPageTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/index.ts"],"sourcesContent":["import {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\nimport {server} from '@capibox/bridge-server'\nimport {browser as clientBrowser} from '@capibox/bridge-browser'\nimport {upSellNavigation} from \"./browser/abtool/upSellNavigation\";\nimport {upSellTemplatesSplit} from \"./browser/abtool/upSellTemplatesSplit\";\n\nexport type {UpSellConfigType} from './browser/abtool/upSellNavigation/types'\nexport type {SdkRemoteFunnel} from \"./browser/funnels/get\";\nexport type {\n SDKCapiboxCartItem,\n SDKCapiboxCartResponse,\n SDKCapiboxCustomerCartResponse,\n SDKCapiboxPaymentToken,\n SDKCapiboxSessionResponse\n} from \"@capibox/bridge-browser\";\n\nconst browser = {\n abTool: {\n upSellNavigation,\n upSellTemplatesSplit,\n },\n hooks: {\n useParamsLandingPage\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n ...clientBrowser\n}\n\n\nexport {\n browser,\n server\n}\n\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.74","import {useParams} from 'next/navigation'\n\nexport type ParamsLandingPage = {\n landing?: string\n checkout?: string\n}\nexport type ParamsLandingPageResponse = {\n landing: string\n checkout: string\n angle: string\n version: string\n path: {\n root: string\n rootPretty: string\n }\n}\n\nexport const useParamsLandingPage = (): ParamsLandingPageResponse => {\n const params = useParams<ParamsLandingPage>();\n\n const angle = (params.landing ?? 'main').toLowerCase()\n const version = (params.checkout ?? 'a').toLowerCase()\n\n return {\n landing: angle,\n checkout: version,\n angle,\n version,\n path: {\n root: `/${angle}/${version}`,\n rootPretty: angle === 'main' && version === 'a' ? '' : `/${angle}/${version}`\n }\n }\n}","import createFetchClient from \"openapi-fetch\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n 'project-key': \"Frontend\"\n },\n});","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport type SdkRemoteFunnel = {\n checkout: string,\n landing: string,\n\n angle: string,\n version: string,\n\n homePageTemplate: string,\n quizPageTemplate: string,\n resultPageTemplate: string,\n emailPageTemplate: string,\n checkoutPageTemplate: string,\n paymentWindowTemplate: string,\n upsellPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n let response: components['schemas']['FunnelResponseDto'][] = [];\n\n const res = await $apiClient.GET('/funnels/funnel', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n }\n });\n if (!res || !res.data) return [];\n response = res.data;\n\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = response;\n const output: SdkRemoteFunnel[] = [];\n for (const funnel of tmpFunnels) {\n output.push({\n landing: funnel.angle,\n checkout: funnel.version,\n\n angle: funnel.angle,\n version: funnel.version,\n\n homePageTemplate: funnel.home_page,\n quizPageTemplate: funnel.quiz_page,\n resultPageTemplate: funnel.results_page,\n emailPageTemplate: funnel.email_page,\n checkoutPageTemplate: funnel.checkout_page,\n paymentWindowTemplate: funnel.payment_window,\n upsellPageTemplate: funnel.upsell_page,\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n}","import {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigItemIndexBySlug = (config: UpSellConfigType, template: string, slug: string) => {\n const slugs = config[template] || []\n return slugs.findIndex(el => el === slug || (Array.isArray(el) && el.map(s => s.slug).indexOf(slug) >= 0))\n}\n","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigNextSlugByIndex = (config: UpSellConfigType, template: string, currentIndex: number, currentSlug?: string) : string | undefined => {\n const slugs = config[template] || []\n const nextIndex = currentIndex + 1;\n\n if (nextIndex > -1 && nextIndex < slugs.length) {\n const path = slugs[nextIndex]\n if (Array.isArray(path)) {\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n const splitValues = path.filter(f => {\n if (!currentSlug) return true;\n if (!f.ignoreAfter) return true;\n return f.ignoreAfter !== currentSlug;\n }).map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n })\n if (splitValues.length === 0) {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n let winner = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!winner) {\n winner = splitValues[0]\n }\n if (winner.slug === '') {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n return winner.slug;\n } else {\n return path;\n }\n }\n return undefined;\n}","import {UpSellConfigType} from \"./types\";\nimport {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\n\nexport const getUpsellConfigNextSlugBySlug = (config: UpSellConfigType, template: string, currentSlug: string) : string | undefined => {\n const currentIndex = getUpsellConfigItemIndexBySlug(config, template, currentSlug)\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex, currentSlug)\n}\n","import {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\nimport {getUpsellConfigNextSlugBySlug} from \"./getUpsellConfigNextSlugBySlug\";\n\nexport const upSellNavigation = {\n configItemIndexBySlug: getUpsellConfigItemIndexBySlug,\n nextPathByConfigItemIndex: getUpsellConfigNextSlugByIndex,\n nextPathByConfigItemSlug: getUpsellConfigNextSlugBySlug,\n}","import {UpSellConfigItemValue} from \"../upSellNavigation/types\";\n\nexport const isSplitTemplate = (items: UpSellConfigItemValue[]) => {\n if (items.length > 0 && Array.isArray(items[0]) && ('splitTemplates' in items[0][0])) {\n return true;\n }\n return false;\n}","import {UpSellConfigType} from \"../upSellNavigation/types\";\nimport {isSplitTemplate} from \"./isSplitTemplate\";\n\nexport const getUpsellPageTemplate = (config: UpSellConfigType, template: string) => {\n const items = config[template] || []\n if (isSplitTemplate(items) && Array.isArray(items[0])) {\n const itemsWithRange = items[0].map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n });\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = itemsWithRange.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = itemsWithRange[0]\n }\n return currentSplit.slug;\n }\n return template;\n}","import {getUpsellPageTemplate} from \"./getUpsellPageTemplate\";\n\nexport const upSellTemplatesSplit = {\n getTemplate: getUpsellPageTemplate,\n}"],"mappings":"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","names":["createFetchClient","clientBrowser"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser/hooks/useParamsLandingPage.ts","../src/lib/api.ts","../src/browser/funnels/get.ts","../src/browser/funnels/get-templates.ts","../src/index.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigItemIndexBySlug.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugByIndex.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugBySlug.ts","../src/browser/abtool/upSellNavigation/index.ts","../src/browser/abtool/upSellTemplatesSplit/isSplitTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/getUpsellPageTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/index.ts"],"sourcesContent":["import {useParams} from 'next/navigation'\n\nexport type ParamsLandingPage = {\n landing?: string\n checkout?: string\n}\nexport type ParamsLandingPageResponse = {\n landing: string\n checkout: string\n angle: string\n version: string\n path: {\n root: string\n rootPretty: string\n }\n}\n\nexport const useParamsLandingPage = (): ParamsLandingPageResponse => {\n const params = useParams<ParamsLandingPage>();\n\n const angle = (params.landing ?? 'main').toLowerCase()\n const version = (params.checkout ?? 'a').toLowerCase()\n\n return {\n landing: angle,\n checkout: version,\n angle,\n version,\n path: {\n root: `/${angle}/${version}`,\n rootPretty: angle === 'main' && version === 'a' ? '' : `/${angle}/${version}`\n }\n }\n}","import createFetchClient from \"openapi-fetch\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n 'project-key': \"Frontend\"\n },\n});","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport type SdkRemoteFunnel = {\n checkout: string,\n landing: string,\n\n angle: string,\n version: string,\n\n homePageTemplate: string,\n quizPageTemplate: string,\n resultPageTemplate: string,\n emailPageTemplate: string,\n checkoutPageTemplate: string,\n paymentWindowTemplate: string,\n upsellPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n let response: components['schemas']['FunnelResponseDto'][] = [];\n\n const res = await $apiClient.GET('/funnels/funnel', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n }\n });\n if (!res || !res.data) return [];\n response = res.data;\n\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = response;\n const output: SdkRemoteFunnel[] = [];\n for (const funnel of tmpFunnels) {\n output.push({\n landing: funnel.angle,\n checkout: funnel.version,\n\n angle: funnel.angle,\n version: funnel.version,\n\n homePageTemplate: funnel.home_page,\n quizPageTemplate: funnel.quiz_page,\n resultPageTemplate: funnel.results_page,\n emailPageTemplate: funnel.email_page,\n checkoutPageTemplate: funnel.checkout_page,\n paymentWindowTemplate: funnel.payment_window,\n upsellPageTemplate: funnel.upsell_page,\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n}","import {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\nimport {server} from '@capibox/bridge-server'\nimport {browser as clientBrowser} from '@capibox/bridge-browser'\nimport {upSellNavigation} from \"./browser/abtool/upSellNavigation\";\nimport {upSellTemplatesSplit} from \"./browser/abtool/upSellTemplatesSplit\";\n\nexport type {UpSellConfigType} from './browser/abtool/upSellNavigation/types'\nexport type {SdkRemoteFunnel} from \"./browser/funnels/get\";\nexport type {\n SDKCapiboxCartItem,\n SDKCapiboxCartResponse,\n SDKCapiboxCustomerCartResponse,\n SDKCapiboxPaymentToken,\n SDKCapiboxSessionResponse\n} from \"@capibox/bridge-browser\";\n\nconst browser = {\n abTool: {\n upSellNavigation,\n upSellTemplatesSplit,\n },\n hooks: {\n useParamsLandingPage\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n ...clientBrowser\n}\n\n\nexport {\n browser,\n server\n}\n\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.71\n","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigItemIndexBySlug = (config: UpSellConfigType, template: string, slug: string) => {\n const slugs = config[template] || []\n return slugs.findIndex(el => el === slug || (Array.isArray(el) && el.map(s => s.slug).indexOf(slug) >= 0))\n}\n","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigNextSlugByIndex = (config: UpSellConfigType, template: string, currentIndex: number, currentSlug?: string) : string | undefined => {\n const slugs = config[template] || []\n const nextIndex = currentIndex + 1;\n\n if (nextIndex > -1 && nextIndex < slugs.length) {\n const path = slugs[nextIndex]\n if (Array.isArray(path)) {\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n const splitValues = path.filter(f => {\n if (!currentSlug) return true;\n if (!f.ignoreAfter) return true;\n return f.ignoreAfter !== currentSlug;\n }).map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n })\n if (splitValues.length === 0) {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n let winner = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!winner) {\n winner = splitValues[0]\n }\n if (winner.slug === '') {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n return winner.slug;\n } else {\n return path;\n }\n }\n return undefined;\n}","import {UpSellConfigType} from \"./types\";\nimport {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\n\nexport const getUpsellConfigNextSlugBySlug = (config: UpSellConfigType, template: string, currentSlug: string) : string | undefined => {\n const currentIndex = getUpsellConfigItemIndexBySlug(config, template, currentSlug)\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex, currentSlug)\n}\n","import {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\nimport {getUpsellConfigNextSlugBySlug} from \"./getUpsellConfigNextSlugBySlug\";\n\nexport const upSellNavigation = {\n configItemIndexBySlug: getUpsellConfigItemIndexBySlug,\n nextPathByConfigItemIndex: getUpsellConfigNextSlugByIndex,\n nextPathByConfigItemSlug: getUpsellConfigNextSlugBySlug,\n}","import {UpSellConfigItemValue} from \"../upSellNavigation/types\";\n\nexport const isSplitTemplate = (items: UpSellConfigItemValue[]) => {\n if (items.length > 0 && Array.isArray(items[0]) && ('splitTemplates' in items[0][0])) {\n return true;\n }\n return false;\n}","import {UpSellConfigType} from \"../upSellNavigation/types\";\nimport {isSplitTemplate} from \"./isSplitTemplate\";\n\nexport const getUpsellPageTemplate = (config: UpSellConfigType, template: string) => {\n const items = config[template] || []\n if (isSplitTemplate(items) && Array.isArray(items[0])) {\n const itemsWithRange = items[0].map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n });\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = itemsWithRange.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = itemsWithRange[0]\n }\n return currentSplit.slug;\n }\n return template;\n}","import {getUpsellPageTemplate} from \"./getUpsellPageTemplate\";\n\nexport const upSellTemplatesSplit = {\n getTemplate: getUpsellPageTemplate,\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/browser/hooks/useParamsLandingPage.ts","../src/lib/api.ts","../src/browser/funnels/get.ts","../src/browser/funnels/get-templates.ts","../src/index.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigItemIndexBySlug.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugByIndex.ts","../src/browser/abtool/upSellNavigation/getUpsellConfigNextSlugBySlug.ts","../src/browser/abtool/upSellNavigation/index.ts","../src/browser/abtool/upSellTemplatesSplit/isSplitTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/getUpsellPageTemplate.ts","../src/browser/abtool/upSellTemplatesSplit/index.ts"],"sourcesContent":["import {useParams} from 'next/navigation'\n\nexport type ParamsLandingPage = {\n landing?: string\n checkout?: string\n}\nexport type ParamsLandingPageResponse = {\n landing: string\n checkout: string\n angle: string\n version: string\n path: {\n root: string\n rootPretty: string\n }\n}\n\nexport const useParamsLandingPage = (): ParamsLandingPageResponse => {\n const params = useParams<ParamsLandingPage>();\n\n const angle = (params.landing ?? 'main').toLowerCase()\n const version = (params.checkout ?? 'a').toLowerCase()\n\n return {\n landing: angle,\n checkout: version,\n angle,\n version,\n path: {\n root: `/${angle}/${version}`,\n rootPretty: angle === 'main' && version === 'a' ? '' : `/${angle}/${version}`\n }\n }\n}","import createFetchClient from \"openapi-fetch\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n 'project-key': \"Frontend\"\n },\n});","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport type SdkRemoteFunnel = {\n checkout: string,\n landing: string,\n\n angle: string,\n version: string,\n\n homePageTemplate: string,\n quizPageTemplate: string,\n resultPageTemplate: string,\n emailPageTemplate: string,\n checkoutPageTemplate: string,\n paymentWindowTemplate: string,\n upsellPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n let response: components['schemas']['FunnelResponseDto'][] = [];\n\n const res = await $apiClient.GET('/funnels/funnel', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n }\n });\n if (!res || !res.data) return [];\n response = res.data;\n\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = response;\n const output: SdkRemoteFunnel[] = [];\n for (const funnel of tmpFunnels) {\n output.push({\n landing: funnel.angle,\n checkout: funnel.version,\n\n angle: funnel.angle,\n version: funnel.version,\n\n homePageTemplate: funnel.home_page,\n quizPageTemplate: funnel.quiz_page,\n resultPageTemplate: funnel.results_page,\n emailPageTemplate: funnel.email_page,\n checkoutPageTemplate: funnel.checkout_page,\n paymentWindowTemplate: funnel.payment_window,\n upsellPageTemplate: funnel.upsell_page,\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n}","import {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\nimport {server} from '@capibox/bridge-server'\nimport {browser as clientBrowser} from '@capibox/bridge-browser'\nimport {upSellNavigation} from \"./browser/abtool/upSellNavigation\";\nimport {upSellTemplatesSplit} from \"./browser/abtool/upSellTemplatesSplit\";\n\nexport type {UpSellConfigType} from './browser/abtool/upSellNavigation/types'\nexport type {SdkRemoteFunnel} from \"./browser/funnels/get\";\nexport type {\n SDKCapiboxCartItem,\n SDKCapiboxCartResponse,\n SDKCapiboxCustomerCartResponse,\n SDKCapiboxPaymentToken,\n SDKCapiboxSessionResponse\n} from \"@capibox/bridge-browser\";\n\nconst browser = {\n abTool: {\n upSellNavigation,\n upSellTemplatesSplit,\n },\n hooks: {\n useParamsLandingPage\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n ...clientBrowser\n}\n\n\nexport {\n browser,\n server\n}\n\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.74","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigItemIndexBySlug = (config: UpSellConfigType, template: string, slug: string) => {\n const slugs = config[template] || []\n return slugs.findIndex(el => el === slug || (Array.isArray(el) && el.map(s => s.slug).indexOf(slug) >= 0))\n}\n","import {UpSellConfigType} from \"./types\";\n\nexport const getUpsellConfigNextSlugByIndex = (config: UpSellConfigType, template: string, currentIndex: number, currentSlug?: string) : string | undefined => {\n const slugs = config[template] || []\n const nextIndex = currentIndex + 1;\n\n if (nextIndex > -1 && nextIndex < slugs.length) {\n const path = slugs[nextIndex]\n if (Array.isArray(path)) {\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n const splitValues = path.filter(f => {\n if (!currentSlug) return true;\n if (!f.ignoreAfter) return true;\n return f.ignoreAfter !== currentSlug;\n }).map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n })\n if (splitValues.length === 0) {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n let winner = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!winner) {\n winner = splitValues[0]\n }\n if (winner.slug === '') {\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex + 1, currentSlug);\n }\n return winner.slug;\n } else {\n return path;\n }\n }\n return undefined;\n}","import {UpSellConfigType} from \"./types\";\nimport {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\n\nexport const getUpsellConfigNextSlugBySlug = (config: UpSellConfigType, template: string, currentSlug: string) : string | undefined => {\n const currentIndex = getUpsellConfigItemIndexBySlug(config, template, currentSlug)\n return getUpsellConfigNextSlugByIndex(config, template, currentIndex, currentSlug)\n}\n","import {getUpsellConfigItemIndexBySlug} from \"./getUpsellConfigItemIndexBySlug\";\nimport {getUpsellConfigNextSlugByIndex} from \"./getUpsellConfigNextSlugByIndex\";\nimport {getUpsellConfigNextSlugBySlug} from \"./getUpsellConfigNextSlugBySlug\";\n\nexport const upSellNavigation = {\n configItemIndexBySlug: getUpsellConfigItemIndexBySlug,\n nextPathByConfigItemIndex: getUpsellConfigNextSlugByIndex,\n nextPathByConfigItemSlug: getUpsellConfigNextSlugBySlug,\n}","import {UpSellConfigItemValue} from \"../upSellNavigation/types\";\n\nexport const isSplitTemplate = (items: UpSellConfigItemValue[]) => {\n if (items.length > 0 && Array.isArray(items[0]) && ('splitTemplates' in items[0][0])) {\n return true;\n }\n return false;\n}","import {UpSellConfigType} from \"../upSellNavigation/types\";\nimport {isSplitTemplate} from \"./isSplitTemplate\";\n\nexport const getUpsellPageTemplate = (config: UpSellConfigType, template: string) => {\n const items = config[template] || []\n if (isSplitTemplate(items) && Array.isArray(items[0])) {\n const itemsWithRange = items[0].map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.percent)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.percent,\n },\n }\n });\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = itemsWithRange.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = itemsWithRange[0]\n }\n return currentSplit.slug;\n }\n return template;\n}","import {getUpsellPageTemplate} from \"./getUpsellPageTemplate\";\n\nexport const upSellTemplatesSplit = {\n getTemplate: getUpsellPageTemplate,\n}"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capibox/bridge-nextjs-client",
3
- "version": "0.0.71",
3
+ "version": "0.0.74",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -34,8 +34,8 @@
34
34
  "typescript": "^5.8.3"
35
35
  },
36
36
  "dependencies": {
37
- "@capibox/bridge-browser": "^0.0.71",
38
- "@capibox/bridge-server": "^0.0.71",
37
+ "@capibox/bridge-browser": "^0.0.74",
38
+ "@capibox/bridge-server": "^0.0.74",
39
39
  "@nestjs/swagger": "^11.2.0",
40
40
  "class-validator": "^0.14.2",
41
41
  "memory-cache": "^0.2.0",