@capibox/bridge-nextjs-client 0.1.2 → 0.1.3

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
@@ -547,188 +547,7 @@ declare const browser: {
547
547
  };
548
548
  description?: string;
549
549
  orderId?: string;
550
- }) => Promise<{
551
- id: string;
552
- date: string;
553
- dateUpdated: string;
554
- amount: number;
555
- currencyCode: string;
556
- customerId: string;
557
- metadata: Record<string, never>;
558
- orderId: string;
559
- status: "PENDING" | "FAILED" | "AUTHORIZED" | "SETTLING" | "PARTIALLY_SETTLED" | "SETTLED" | "DECLINED" | "CANCELLED";
560
- order: {
561
- countryCode: string;
562
- };
563
- customer: {
564
- emailAddress: string;
565
- billingAddress: {
566
- countryCode: string;
567
- };
568
- };
569
- paymentMethod: {
570
- paymentType: string;
571
- authorizationType: string;
572
- paymentMethodToken: string;
573
- isVaulted: boolean;
574
- analyticsId: string;
575
- paymentMethodType: string;
576
- paymentMethodData: {
577
- last4Digits: string;
578
- first6Digits: string;
579
- expirationMonth: string;
580
- expirationYear: string;
581
- network: string;
582
- isNetworkTokenized: boolean;
583
- binData: {
584
- [key: string]: unknown;
585
- } & {
586
- network: string;
587
- issuerCountryCode: string;
588
- issuerName: string;
589
- issuerCurrencyCode: string;
590
- regionalRestriction: string;
591
- accountNumberType: string;
592
- accountFundingType: string;
593
- prepaidReloadableIndicator: string;
594
- productUsageType: string;
595
- productCode: string;
596
- productName: string;
597
- };
598
- networkTransactionId: string;
599
- accountFundingType: string;
600
- };
601
- threeDSecureAuthentication: {
602
- responseCode: string;
603
- };
604
- };
605
- processor: {
606
- name: string;
607
- processorMerchantId: string;
608
- amountCaptured: number;
609
- amountRefunded: number;
610
- };
611
- transactions: {
612
- amount: {
613
- total: string;
614
- currency: string;
615
- details: {
616
- subtotal: string;
617
- shipping: string;
618
- insurance: string;
619
- handling_fee: string;
620
- shipping_discount: string;
621
- discount: string;
622
- };
623
- };
624
- payee: {
625
- merchant_id: string;
626
- email: string;
627
- };
628
- description: string;
629
- invoice_number: string;
630
- item_list: {
631
- items: {
632
- name: string;
633
- sku: string;
634
- description: string;
635
- price: string;
636
- currency: string;
637
- tax: string;
638
- quantity: number;
639
- image_url: string;
640
- }[];
641
- };
642
- related_resources: {
643
- sale?: {
644
- id: string;
645
- amount: {
646
- currency_code: string;
647
- value: string;
648
- };
649
- final_capture: boolean;
650
- seller_protection: {
651
- status: string;
652
- dispute_categories: string[];
653
- };
654
- seller_receivable_breakdown: {
655
- gross_amount: {
656
- currency_code: string;
657
- value: string;
658
- };
659
- paypal_fee: {
660
- currency_code: string;
661
- value: string;
662
- };
663
- net_amount: {
664
- currency_code: string;
665
- value: string;
666
- };
667
- };
668
- invoice_id?: string;
669
- custom_id?: string;
670
- status: string;
671
- supplementary_data: {
672
- related_ids: Record<string, never>;
673
- };
674
- payee: {
675
- email_address: string;
676
- merchant_id: string;
677
- };
678
- create_time: string;
679
- update_time: string;
680
- links: {
681
- href: string;
682
- rel: string;
683
- method: string;
684
- }[];
685
- };
686
- authorization?: {
687
- id: string;
688
- status: string;
689
- amount: {
690
- currency_code: string;
691
- value: string;
692
- };
693
- invoice_id?: string;
694
- seller_protection: {
695
- status: string;
696
- dispute_categories: string[];
697
- };
698
- supplementary_data: {
699
- related_ids: Record<string, never>;
700
- };
701
- payee: {
702
- email_address: string;
703
- merchant_id: string;
704
- };
705
- expiration_time: string;
706
- create_time: string;
707
- update_time: string;
708
- links: {
709
- href: string;
710
- rel: string;
711
- method: string;
712
- }[];
713
- };
714
- }[];
715
- }[];
716
- riskData: {
717
- cvvCheck: {
718
- source: string;
719
- result: string;
720
- };
721
- avsCheck: {
722
- source: string;
723
- result: {
724
- streetAddress: string;
725
- postalCode: string;
726
- };
727
- };
728
- };
729
- } | {
730
- success: boolean;
731
- }>;
550
+ }) => Promise<never>;
732
551
  chargeFromCart: ({ cartUUID, type, description, metadata, }: {
733
552
  cartUUID: string;
734
553
  type: "capture" | "authorize";
@@ -736,188 +555,7 @@ declare const browser: {
736
555
  [key: string]: any;
737
556
  };
738
557
  description?: string;
739
- }) => Promise<{
740
- id: string;
741
- date: string;
742
- dateUpdated: string;
743
- amount: number;
744
- currencyCode: string;
745
- customerId: string;
746
- metadata: Record<string, never>;
747
- orderId: string;
748
- status: "PENDING" | "FAILED" | "AUTHORIZED" | "SETTLING" | "PARTIALLY_SETTLED" | "SETTLED" | "DECLINED" | "CANCELLED";
749
- order: {
750
- countryCode: string;
751
- };
752
- customer: {
753
- emailAddress: string;
754
- billingAddress: {
755
- countryCode: string;
756
- };
757
- };
758
- paymentMethod: {
759
- paymentType: string;
760
- authorizationType: string;
761
- paymentMethodToken: string;
762
- isVaulted: boolean;
763
- analyticsId: string;
764
- paymentMethodType: string;
765
- paymentMethodData: {
766
- last4Digits: string;
767
- first6Digits: string;
768
- expirationMonth: string;
769
- expirationYear: string;
770
- network: string;
771
- isNetworkTokenized: boolean;
772
- binData: {
773
- [key: string]: unknown;
774
- } & {
775
- network: string;
776
- issuerCountryCode: string;
777
- issuerName: string;
778
- issuerCurrencyCode: string;
779
- regionalRestriction: string;
780
- accountNumberType: string;
781
- accountFundingType: string;
782
- prepaidReloadableIndicator: string;
783
- productUsageType: string;
784
- productCode: string;
785
- productName: string;
786
- };
787
- networkTransactionId: string;
788
- accountFundingType: string;
789
- };
790
- threeDSecureAuthentication: {
791
- responseCode: string;
792
- };
793
- };
794
- processor: {
795
- name: string;
796
- processorMerchantId: string;
797
- amountCaptured: number;
798
- amountRefunded: number;
799
- };
800
- transactions: {
801
- amount: {
802
- total: string;
803
- currency: string;
804
- details: {
805
- subtotal: string;
806
- shipping: string;
807
- insurance: string;
808
- handling_fee: string;
809
- shipping_discount: string;
810
- discount: string;
811
- };
812
- };
813
- payee: {
814
- merchant_id: string;
815
- email: string;
816
- };
817
- description: string;
818
- invoice_number: string;
819
- item_list: {
820
- items: {
821
- name: string;
822
- sku: string;
823
- description: string;
824
- price: string;
825
- currency: string;
826
- tax: string;
827
- quantity: number;
828
- image_url: string;
829
- }[];
830
- };
831
- related_resources: {
832
- sale?: {
833
- id: string;
834
- amount: {
835
- currency_code: string;
836
- value: string;
837
- };
838
- final_capture: boolean;
839
- seller_protection: {
840
- status: string;
841
- dispute_categories: string[];
842
- };
843
- seller_receivable_breakdown: {
844
- gross_amount: {
845
- currency_code: string;
846
- value: string;
847
- };
848
- paypal_fee: {
849
- currency_code: string;
850
- value: string;
851
- };
852
- net_amount: {
853
- currency_code: string;
854
- value: string;
855
- };
856
- };
857
- invoice_id?: string;
858
- custom_id?: string;
859
- status: string;
860
- supplementary_data: {
861
- related_ids: Record<string, never>;
862
- };
863
- payee: {
864
- email_address: string;
865
- merchant_id: string;
866
- };
867
- create_time: string;
868
- update_time: string;
869
- links: {
870
- href: string;
871
- rel: string;
872
- method: string;
873
- }[];
874
- };
875
- authorization?: {
876
- id: string;
877
- status: string;
878
- amount: {
879
- currency_code: string;
880
- value: string;
881
- };
882
- invoice_id?: string;
883
- seller_protection: {
884
- status: string;
885
- dispute_categories: string[];
886
- };
887
- supplementary_data: {
888
- related_ids: Record<string, never>;
889
- };
890
- payee: {
891
- email_address: string;
892
- merchant_id: string;
893
- };
894
- expiration_time: string;
895
- create_time: string;
896
- update_time: string;
897
- links: {
898
- href: string;
899
- rel: string;
900
- method: string;
901
- }[];
902
- };
903
- }[];
904
- }[];
905
- riskData: {
906
- cvvCheck: {
907
- source: string;
908
- result: string;
909
- };
910
- avsCheck: {
911
- source: string;
912
- result: {
913
- streetAddress: string;
914
- postalCode: string;
915
- };
916
- };
917
- };
918
- } | {
919
- success: boolean;
920
- }>;
558
+ }) => Promise<never>;
921
559
  };
922
560
  confirmPayment: (uuid: string, { cart }: {
923
561
  cart: {
package/dist/index.d.ts CHANGED
@@ -547,188 +547,7 @@ declare const browser: {
547
547
  };
548
548
  description?: string;
549
549
  orderId?: string;
550
- }) => Promise<{
551
- id: string;
552
- date: string;
553
- dateUpdated: string;
554
- amount: number;
555
- currencyCode: string;
556
- customerId: string;
557
- metadata: Record<string, never>;
558
- orderId: string;
559
- status: "PENDING" | "FAILED" | "AUTHORIZED" | "SETTLING" | "PARTIALLY_SETTLED" | "SETTLED" | "DECLINED" | "CANCELLED";
560
- order: {
561
- countryCode: string;
562
- };
563
- customer: {
564
- emailAddress: string;
565
- billingAddress: {
566
- countryCode: string;
567
- };
568
- };
569
- paymentMethod: {
570
- paymentType: string;
571
- authorizationType: string;
572
- paymentMethodToken: string;
573
- isVaulted: boolean;
574
- analyticsId: string;
575
- paymentMethodType: string;
576
- paymentMethodData: {
577
- last4Digits: string;
578
- first6Digits: string;
579
- expirationMonth: string;
580
- expirationYear: string;
581
- network: string;
582
- isNetworkTokenized: boolean;
583
- binData: {
584
- [key: string]: unknown;
585
- } & {
586
- network: string;
587
- issuerCountryCode: string;
588
- issuerName: string;
589
- issuerCurrencyCode: string;
590
- regionalRestriction: string;
591
- accountNumberType: string;
592
- accountFundingType: string;
593
- prepaidReloadableIndicator: string;
594
- productUsageType: string;
595
- productCode: string;
596
- productName: string;
597
- };
598
- networkTransactionId: string;
599
- accountFundingType: string;
600
- };
601
- threeDSecureAuthentication: {
602
- responseCode: string;
603
- };
604
- };
605
- processor: {
606
- name: string;
607
- processorMerchantId: string;
608
- amountCaptured: number;
609
- amountRefunded: number;
610
- };
611
- transactions: {
612
- amount: {
613
- total: string;
614
- currency: string;
615
- details: {
616
- subtotal: string;
617
- shipping: string;
618
- insurance: string;
619
- handling_fee: string;
620
- shipping_discount: string;
621
- discount: string;
622
- };
623
- };
624
- payee: {
625
- merchant_id: string;
626
- email: string;
627
- };
628
- description: string;
629
- invoice_number: string;
630
- item_list: {
631
- items: {
632
- name: string;
633
- sku: string;
634
- description: string;
635
- price: string;
636
- currency: string;
637
- tax: string;
638
- quantity: number;
639
- image_url: string;
640
- }[];
641
- };
642
- related_resources: {
643
- sale?: {
644
- id: string;
645
- amount: {
646
- currency_code: string;
647
- value: string;
648
- };
649
- final_capture: boolean;
650
- seller_protection: {
651
- status: string;
652
- dispute_categories: string[];
653
- };
654
- seller_receivable_breakdown: {
655
- gross_amount: {
656
- currency_code: string;
657
- value: string;
658
- };
659
- paypal_fee: {
660
- currency_code: string;
661
- value: string;
662
- };
663
- net_amount: {
664
- currency_code: string;
665
- value: string;
666
- };
667
- };
668
- invoice_id?: string;
669
- custom_id?: string;
670
- status: string;
671
- supplementary_data: {
672
- related_ids: Record<string, never>;
673
- };
674
- payee: {
675
- email_address: string;
676
- merchant_id: string;
677
- };
678
- create_time: string;
679
- update_time: string;
680
- links: {
681
- href: string;
682
- rel: string;
683
- method: string;
684
- }[];
685
- };
686
- authorization?: {
687
- id: string;
688
- status: string;
689
- amount: {
690
- currency_code: string;
691
- value: string;
692
- };
693
- invoice_id?: string;
694
- seller_protection: {
695
- status: string;
696
- dispute_categories: string[];
697
- };
698
- supplementary_data: {
699
- related_ids: Record<string, never>;
700
- };
701
- payee: {
702
- email_address: string;
703
- merchant_id: string;
704
- };
705
- expiration_time: string;
706
- create_time: string;
707
- update_time: string;
708
- links: {
709
- href: string;
710
- rel: string;
711
- method: string;
712
- }[];
713
- };
714
- }[];
715
- }[];
716
- riskData: {
717
- cvvCheck: {
718
- source: string;
719
- result: string;
720
- };
721
- avsCheck: {
722
- source: string;
723
- result: {
724
- streetAddress: string;
725
- postalCode: string;
726
- };
727
- };
728
- };
729
- } | {
730
- success: boolean;
731
- }>;
550
+ }) => Promise<never>;
732
551
  chargeFromCart: ({ cartUUID, type, description, metadata, }: {
733
552
  cartUUID: string;
734
553
  type: "capture" | "authorize";
@@ -736,188 +555,7 @@ declare const browser: {
736
555
  [key: string]: any;
737
556
  };
738
557
  description?: string;
739
- }) => Promise<{
740
- id: string;
741
- date: string;
742
- dateUpdated: string;
743
- amount: number;
744
- currencyCode: string;
745
- customerId: string;
746
- metadata: Record<string, never>;
747
- orderId: string;
748
- status: "PENDING" | "FAILED" | "AUTHORIZED" | "SETTLING" | "PARTIALLY_SETTLED" | "SETTLED" | "DECLINED" | "CANCELLED";
749
- order: {
750
- countryCode: string;
751
- };
752
- customer: {
753
- emailAddress: string;
754
- billingAddress: {
755
- countryCode: string;
756
- };
757
- };
758
- paymentMethod: {
759
- paymentType: string;
760
- authorizationType: string;
761
- paymentMethodToken: string;
762
- isVaulted: boolean;
763
- analyticsId: string;
764
- paymentMethodType: string;
765
- paymentMethodData: {
766
- last4Digits: string;
767
- first6Digits: string;
768
- expirationMonth: string;
769
- expirationYear: string;
770
- network: string;
771
- isNetworkTokenized: boolean;
772
- binData: {
773
- [key: string]: unknown;
774
- } & {
775
- network: string;
776
- issuerCountryCode: string;
777
- issuerName: string;
778
- issuerCurrencyCode: string;
779
- regionalRestriction: string;
780
- accountNumberType: string;
781
- accountFundingType: string;
782
- prepaidReloadableIndicator: string;
783
- productUsageType: string;
784
- productCode: string;
785
- productName: string;
786
- };
787
- networkTransactionId: string;
788
- accountFundingType: string;
789
- };
790
- threeDSecureAuthentication: {
791
- responseCode: string;
792
- };
793
- };
794
- processor: {
795
- name: string;
796
- processorMerchantId: string;
797
- amountCaptured: number;
798
- amountRefunded: number;
799
- };
800
- transactions: {
801
- amount: {
802
- total: string;
803
- currency: string;
804
- details: {
805
- subtotal: string;
806
- shipping: string;
807
- insurance: string;
808
- handling_fee: string;
809
- shipping_discount: string;
810
- discount: string;
811
- };
812
- };
813
- payee: {
814
- merchant_id: string;
815
- email: string;
816
- };
817
- description: string;
818
- invoice_number: string;
819
- item_list: {
820
- items: {
821
- name: string;
822
- sku: string;
823
- description: string;
824
- price: string;
825
- currency: string;
826
- tax: string;
827
- quantity: number;
828
- image_url: string;
829
- }[];
830
- };
831
- related_resources: {
832
- sale?: {
833
- id: string;
834
- amount: {
835
- currency_code: string;
836
- value: string;
837
- };
838
- final_capture: boolean;
839
- seller_protection: {
840
- status: string;
841
- dispute_categories: string[];
842
- };
843
- seller_receivable_breakdown: {
844
- gross_amount: {
845
- currency_code: string;
846
- value: string;
847
- };
848
- paypal_fee: {
849
- currency_code: string;
850
- value: string;
851
- };
852
- net_amount: {
853
- currency_code: string;
854
- value: string;
855
- };
856
- };
857
- invoice_id?: string;
858
- custom_id?: string;
859
- status: string;
860
- supplementary_data: {
861
- related_ids: Record<string, never>;
862
- };
863
- payee: {
864
- email_address: string;
865
- merchant_id: string;
866
- };
867
- create_time: string;
868
- update_time: string;
869
- links: {
870
- href: string;
871
- rel: string;
872
- method: string;
873
- }[];
874
- };
875
- authorization?: {
876
- id: string;
877
- status: string;
878
- amount: {
879
- currency_code: string;
880
- value: string;
881
- };
882
- invoice_id?: string;
883
- seller_protection: {
884
- status: string;
885
- dispute_categories: string[];
886
- };
887
- supplementary_data: {
888
- related_ids: Record<string, never>;
889
- };
890
- payee: {
891
- email_address: string;
892
- merchant_id: string;
893
- };
894
- expiration_time: string;
895
- create_time: string;
896
- update_time: string;
897
- links: {
898
- href: string;
899
- rel: string;
900
- method: string;
901
- }[];
902
- };
903
- }[];
904
- }[];
905
- riskData: {
906
- cvvCheck: {
907
- source: string;
908
- result: string;
909
- };
910
- avsCheck: {
911
- source: string;
912
- result: {
913
- streetAddress: string;
914
- postalCode: string;
915
- };
916
- };
917
- };
918
- } | {
919
- success: boolean;
920
- }>;
558
+ }) => Promise<never>;
921
559
  };
922
560
  confirmPayment: (uuid: string, { cart }: {
923
561
  cart: {
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.1.2","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 thankYouPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n try {\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 || 'Default',\n quizPageTemplate: funnel.quiz_page || 'Default',\n resultPageTemplate: funnel.results_page || 'Default',\n emailPageTemplate: funnel.email_page || 'Default',\n checkoutPageTemplate: funnel.checkout_page || 'Default',\n paymentWindowTemplate: funnel.payment_window || 'Default',\n upsellPageTemplate: funnel.upsell_page || 'Default',\n thankYouPageTemplate: funnel.thankyou_page_template || 'Default',\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n } catch (e) {\n return [];\n }\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 thankYouPageTemplate: '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 let getOverrideData = {};\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n getOverrideData[key] = searchParams.get(key);\n }\n }\n }\n return {\n ...defaultTemplate,\n ...getOverrideData,\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.1.3","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 thankYouPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n try {\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 || 'Default',\n quizPageTemplate: funnel.quiz_page || 'Default',\n resultPageTemplate: funnel.results_page || 'Default',\n emailPageTemplate: funnel.email_page || 'Default',\n checkoutPageTemplate: funnel.checkout_page || 'Default',\n paymentWindowTemplate: funnel.payment_window || 'Default',\n upsellPageTemplate: funnel.upsell_page || 'Default',\n thankYouPageTemplate: funnel.thankyou_page_template || 'Default',\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n } catch (e) {\n return [];\n }\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 thankYouPageTemplate: '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 let getOverrideData = {};\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n getOverrideData[key] = searchParams.get(key);\n }\n }\n }\n return {\n ...defaultTemplate,\n ...getOverrideData,\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 thankYouPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n try {\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 || 'Default',\n quizPageTemplate: funnel.quiz_page || 'Default',\n resultPageTemplate: funnel.results_page || 'Default',\n emailPageTemplate: funnel.email_page || 'Default',\n checkoutPageTemplate: funnel.checkout_page || 'Default',\n paymentWindowTemplate: funnel.payment_window || 'Default',\n upsellPageTemplate: funnel.upsell_page || 'Default',\n thankYouPageTemplate: funnel.thankyou_page_template || 'Default',\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n } catch (e) {\n return [];\n }\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 thankYouPageTemplate: '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 let getOverrideData = {};\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n getOverrideData[key] = searchParams.get(key);\n }\n }\n }\n return {\n ...defaultTemplate,\n ...getOverrideData,\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.1.2","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 thankYouPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n try {\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 || 'Default',\n quizPageTemplate: funnel.quiz_page || 'Default',\n resultPageTemplate: funnel.results_page || 'Default',\n emailPageTemplate: funnel.email_page || 'Default',\n checkoutPageTemplate: funnel.checkout_page || 'Default',\n paymentWindowTemplate: funnel.payment_window || 'Default',\n upsellPageTemplate: funnel.upsell_page || 'Default',\n thankYouPageTemplate: funnel.thankyou_page_template || 'Default',\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n } catch (e) {\n return [];\n }\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 thankYouPageTemplate: '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 let getOverrideData = {};\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n getOverrideData[key] = searchParams.get(key);\n }\n }\n }\n return {\n ...defaultTemplate,\n ...getOverrideData,\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.1.3","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.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -34,7 +34,7 @@
34
34
  "typescript": "^5.8.3"
35
35
  },
36
36
  "dependencies": {
37
- "@capibox/bridge-browser": "^0.1.2",
37
+ "@capibox/bridge-browser": "^0.1.3",
38
38
  "@capibox/bridge-server": "^0.1.2",
39
39
  "@nestjs/swagger": "^11.2.0",
40
40
  "class-validator": "^0.14.2",