@capibox/bridge-nextjs-client 0.0.47 → 0.0.49
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 +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +44 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -26
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1610,6 +1610,14 @@ declare const server: {
|
|
|
1610
1610
|
[key: string]: string[];
|
|
1611
1611
|
};
|
|
1612
1612
|
}) => Promise<next_server.NextResponse<any> | undefined>;
|
|
1613
|
+
funnels: {
|
|
1614
|
+
get: () => Promise<SdkRemoteFunnel[]>;
|
|
1615
|
+
getTemplates: ({ angle, version, searchParams }: {
|
|
1616
|
+
angle: string;
|
|
1617
|
+
version: string;
|
|
1618
|
+
searchParams?: next_navigation.ReadonlyURLSearchParams;
|
|
1619
|
+
}) => Promise<SdkRemoteFunnel>;
|
|
1620
|
+
};
|
|
1613
1621
|
};
|
|
1614
1622
|
|
|
1615
1623
|
export { type SdkRemoteFunnel, browser, server };
|
package/dist/index.d.ts
CHANGED
|
@@ -1610,6 +1610,14 @@ declare const server: {
|
|
|
1610
1610
|
[key: string]: string[];
|
|
1611
1611
|
};
|
|
1612
1612
|
}) => Promise<next_server.NextResponse<any> | undefined>;
|
|
1613
|
+
funnels: {
|
|
1614
|
+
get: () => Promise<SdkRemoteFunnel[]>;
|
|
1615
|
+
getTemplates: ({ angle, version, searchParams }: {
|
|
1616
|
+
angle: string;
|
|
1617
|
+
version: string;
|
|
1618
|
+
searchParams?: next_navigation.ReadonlyURLSearchParams;
|
|
1619
|
+
}) => Promise<SdkRemoteFunnel>;
|
|
1620
|
+
};
|
|
1613
1621
|
};
|
|
1614
1622
|
|
|
1615
1623
|
export { type SdkRemoteFunnel, browser, server };
|
package/dist/index.js
CHANGED
|
@@ -291,7 +291,7 @@ var serverProxyHeaders = () => {
|
|
|
291
291
|
};
|
|
292
292
|
|
|
293
293
|
// src/server/middleware.ts
|
|
294
|
-
var
|
|
294
|
+
var import_memory_cache3 = __toESM(require("memory-cache"));
|
|
295
295
|
|
|
296
296
|
// src/server/cache/cache.ts
|
|
297
297
|
var CACHE_KEY_FUNNELS = "funnels-data";
|
|
@@ -381,11 +381,29 @@ var fillSplitItemUrlsRange = (item) => {
|
|
|
381
381
|
});
|
|
382
382
|
};
|
|
383
383
|
|
|
384
|
+
// src/browser/funnels/get-capibox-templates.ts
|
|
385
|
+
var import_memory_cache2 = __toESM(require("memory-cache"));
|
|
386
|
+
var getCapiboxTemplates = () => __async(null, null, function* () {
|
|
387
|
+
const cachedResponse = import_memory_cache2.default.get(CACHE_KEY_FUNNELS);
|
|
388
|
+
if (cachedResponse) {
|
|
389
|
+
return cachedResponse;
|
|
390
|
+
} else {
|
|
391
|
+
const funnelRes = yield fetch(`${getBackendUrl()}/funnels/funnel`, {
|
|
392
|
+
headers: {
|
|
393
|
+
"project-key": `${process.env.CAPIBOX_API_KEY}`
|
|
394
|
+
}
|
|
395
|
+
});
|
|
396
|
+
const responseBody = yield funnelRes.json();
|
|
397
|
+
import_memory_cache2.default.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);
|
|
398
|
+
return responseBody;
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
|
|
384
402
|
// src/server/middleware.ts
|
|
385
403
|
var middleware = (req, options) => __async(null, null, function* () {
|
|
386
404
|
if (req.nextUrl.pathname.startsWith("/app/clear-cache")) {
|
|
387
|
-
|
|
388
|
-
|
|
405
|
+
import_memory_cache3.default.del(CACHE_KEY_FUNNELS);
|
|
406
|
+
import_memory_cache3.default.del(CACHE_KEY_SPLIT);
|
|
389
407
|
const res = import_server.NextResponse.json({ s: (/* @__PURE__ */ new Date()).getTime() });
|
|
390
408
|
res.headers.append("Access-Control-Allow-Credentials", "true");
|
|
391
409
|
res.headers.append("Access-Control-Allow-Origin", "*");
|
|
@@ -419,20 +437,10 @@ var middleware = (req, options) => __async(null, null, function* () {
|
|
|
419
437
|
}
|
|
420
438
|
if (req.nextUrl.pathname.startsWith("/api-client-proxy")) {
|
|
421
439
|
if (req.nextUrl.pathname === "/api-client-proxy/funnels/funnel") {
|
|
422
|
-
const
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
return res;
|
|
427
|
-
} else {
|
|
428
|
-
const funnelRes = yield fetch(`${getBackendUrl()}${req.nextUrl.pathname.replace("/api-client-proxy", "")}`, {
|
|
429
|
-
headers: {
|
|
430
|
-
"project-key": `${process.env.CAPIBOX_API_KEY}`
|
|
431
|
-
}
|
|
432
|
-
});
|
|
433
|
-
const responseBody = yield funnelRes.json();
|
|
434
|
-
import_memory_cache2.default.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);
|
|
435
|
-
}
|
|
440
|
+
const capiboxTemplates = yield getCapiboxTemplates();
|
|
441
|
+
const res = import_server.NextResponse.json(capiboxTemplates);
|
|
442
|
+
res.headers.set("X-Cache", "HIT");
|
|
443
|
+
return res;
|
|
436
444
|
}
|
|
437
445
|
let urlClone = req.nextUrl.clone();
|
|
438
446
|
const targetUrl = new URL(getBackendUrl());
|
|
@@ -671,15 +679,21 @@ var trackEvent = (type, uuid, options) => __async(null, null, function* () {
|
|
|
671
679
|
|
|
672
680
|
// src/browser/funnels/get.ts
|
|
673
681
|
var getFunnels = () => __async(null, null, function* () {
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
682
|
+
let response = [];
|
|
683
|
+
if (typeof window == "undefined") {
|
|
684
|
+
response = yield getCapiboxTemplates();
|
|
685
|
+
} else {
|
|
686
|
+
const res = yield $apiClient.GET("/funnels/funnel", {
|
|
687
|
+
params: {
|
|
688
|
+
header: {
|
|
689
|
+
"project-key": "Frontend"
|
|
690
|
+
}
|
|
678
691
|
}
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
692
|
+
});
|
|
693
|
+
if (!res || !res.data) return [];
|
|
694
|
+
response = res.data;
|
|
695
|
+
}
|
|
696
|
+
const tmpFunnels = response;
|
|
683
697
|
const output = [];
|
|
684
698
|
for (const funnel of tmpFunnels) {
|
|
685
699
|
output.push({
|
|
@@ -997,7 +1011,11 @@ var browser = {
|
|
|
997
1011
|
}
|
|
998
1012
|
};
|
|
999
1013
|
var server = {
|
|
1000
|
-
middleware
|
|
1014
|
+
middleware,
|
|
1015
|
+
funnels: {
|
|
1016
|
+
get: getFunnels,
|
|
1017
|
+
getTemplates
|
|
1018
|
+
}
|
|
1001
1019
|
};
|
|
1002
1020
|
if (typeof window !== "undefined") {
|
|
1003
1021
|
window.capibox = browser;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/lib/api.ts","../src/browser/mail/send-to-recipient.ts","../src/browser/mail/send-to-support.ts","../src/browser/session/append.ts","../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/_utils/browser-get-cookie.ts","../src/browser/session/create.ts","../src/browser/_utils/browser-fetch-utils.ts","../src/browser/crm-auth/sign-in.ts","../src/browser/crm-auth/sign-out.ts","../src/browser/crm-auth/veirfy.ts","../src/browser/hooks/useParamsLandingPage.ts","../src/browser/ga/ga-track-event.ts","../src/browser/realtime/track-event.ts","../src/browser/funnels/get.ts","../src/browser/verify/email/verify-email.ts","../src/browser/verify/phone/verify-phone.ts","../src/browser/session/get.ts","../src/browser/quiz/get.ts","../src/browser/capi/facebook-s2s.ts","../src/browser/payments/create-session.ts","../src/browser/payments/paypal/paypal-start-order.ts","../src/browser/payments/paypal/paypal-capture-order.ts","../src/browser/trustpilot/get-link.ts","../src/browser/trustpilot/send-invintation.ts","../src/browser/payments/yuno/yuno-create-payment.ts","../src/browser/funnels/get-templates.ts"],"sourcesContent":["import {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {appendSession} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {createSession} from \"./browser/session/create\";\nimport {signIn} from \"./browser/crm-auth/sign-in\";\nimport {signOut} from \"./browser/crm-auth/sign-out\";\nimport {verify} from \"./browser/crm-auth/veirfy\";\nimport {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {trackEvent} from \"./browser/realtime/track-event\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {verifyEmail} from \"./browser/verify/email/verify-email\";\nimport {verifyPhone} from \"./browser/verify/phone/verify-phone\";\nimport {getSession} from \"./browser/session/get\";\nimport {getQuiz} from \"./browser/quiz/get\";\nimport {facebookS2S} from \"./browser/capi/facebook-s2s\";\nimport {createSession as createSessionPayments} from \"./browser/payments/create-session\";\nimport {paypalStartOrder} from \"./browser/payments/paypal/paypal-start-order\";\nimport {paypalCaptureOrder} from \"./browser/payments/paypal/paypal-capture-order\";\nimport {trustpilotGetLink} from \"./browser/trustpilot/get-link\";\nimport {trustpilotSendInvitation} from \"./browser/trustpilot/send-invintation\";\nimport {yunoCreatePayment} from \"./browser/payments/yuno/yuno-create-payment\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\n\nexport {SdkRemoteFunnel} from \"./browser/funnels/get\";\n\nconst browser = {\n capi: {\n facebook: facebookS2S,\n },\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append: appendSession,\n create: createSession,\n get: getSession,\n },\n crmAuth: {\n signIn,\n signOut,\n verify,\n },\n hooks: {\n useParamsLandingPage\n },\n realtime: {\n trackEvent\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n verify: {\n email: verifyEmail,\n phone: verifyPhone,\n },\n quiz: {\n get: getQuiz,\n },\n payments: {\n createSession: createSessionPayments,\n paypal: {\n startOrder: paypalStartOrder,\n captureOrder: paypalCaptureOrder,\n },\n yuno: {\n createPayment: yunoCreatePayment,\n }\n },\n trustpilot: {\n getLink: trustpilotGetLink,\n sendInvitation: trustpilotSendInvitation,\n }\n}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.47","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 {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToRecipient = async (data: components['schemas']['SendMailToRecipientDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-recipient',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToSupport = async (data: components['schemas']['SendMailToSupportDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-support',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const appendSession = async (\n uuid: string,\n body: components['schemas']['AppendSessionDto'],\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.PUT(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {NextRequest, NextResponse, userAgent} from \"next/server\";\nimport {getClientIp} from \"./_utils/client-ip\";\nimport {CRM_AUTH_SIGN_IN_PATH, CRM_AUTH_SIGN_OUT_PATH, CRM_AUTH_VERIFY_PATH} from \"../browser/crm-auth/path\";\nimport {serverProxyHeaders} from \"./_utils/server-fetch-utils\";\nimport cache from 'memory-cache';\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"./cache/cache\";\nimport {getSplitItemForReq} from \"./split/get-split-item\";\nimport {trimChar} from \"./_utils/trim-char\";\nimport {getSplitItemUrlWinner} from \"./split/get-split-winner\";\nimport {getBackendUrl} from \"./_utils/backend-url\";\n\ntype Templates = {\n [key: string]: string[]\n}\n\ntype Options = {\n templates?: Templates,\n}\n\nexport const middleware = async (\n req: NextRequest,\n options?: Options,\n) => {\n if (req.nextUrl.pathname.startsWith('/app/clear-cache')) {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n\n const res = NextResponse.json({s: new Date().getTime()})\n\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n return res;\n }\n\n if (options?.templates && req.nextUrl.pathname.startsWith('/app/get-templates')) {\n const res = NextResponse.json({\n success: true,\n\n data: options.templates,\n })\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n\n return res\n }\n\n // SPLIT TEST\n const input = await getSplitItemForReq({req});\n if (input) {\n const currentSplit = getSplitItemUrlWinner(input);\n\n return NextResponse.redirect(\n new URL(`/${trimChar(currentSplit.url, '/')}${req.nextUrl.search}`, req.url),\n )\n }\n\n if (req.nextUrl.pathname.startsWith('/api-client-proxy')) {\n if (req.nextUrl.pathname === '/api-client-proxy/funnels/funnel') {\n const cachedResponse = cache.get(CACHE_KEY_FUNNELS);\n if (cachedResponse) {\n const res = NextResponse.json(cachedResponse);\n res.headers.set('X-Cache', 'HIT');\n return res;\n } else {\n const funnelRes = await fetch(`${getBackendUrl()}${req.nextUrl.pathname.replace('/api-client-proxy', '')}`, {\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n })\n const responseBody = await funnelRes.json();\n cache.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);\n }\n }\n\n let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(getBackendUrl())\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('project-key', `${process.env.CAPIBOX_API_KEY}`)\n\n if (req.nextUrl.pathname.includes('/realtime/')) {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {device, browser, os} = userAgent(req)\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-os', `${os.name} / ${os.version}`)\n requestHeaders.set('x-browser', `${browser.name} / ${browser.version}`)\n requestHeaders.set('x-device', device.type ? device.type : '-')\n const anUuidV3Cookie = req.cookies.get('an_uuid_v3');\n if (anUuidV3Cookie) {\n requestHeaders.set('x-realtime', anUuidV3Cookie?.value)\n }\n }\n if (req.nextUrl.pathname === '/api-client-proxy/session') {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {ua} = userAgent(req);\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ua)\n }\n\n urlClone.protocol = targetUrl.protocol\n urlClone.hostname = targetUrl.hostname\n urlClone.port = targetUrl.port\n urlClone.pathname = urlClone.pathname.replace(/^\\/api-client-proxy/, '');\n\n return NextResponse.rewrite(urlClone, {\n headers: requestHeaders,\n })\n }\n\n // crm auth\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_IN_PATH) {\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/sign-in',\n {\n method: 'POST',\n body: JSON.stringify(await req.json()),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!!resJson.action && !!resJson.token && resJson.action === 'logged-in') {\n result.cookies.set({\n name: \"token\",\n value: resJson.token,\n maxAge: 60 * 60 * 24 * 30,\n httpOnly: true,\n });\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_VERIFY_PATH) {\n const tokenCookie = req.cookies.get('token')\n if (!tokenCookie || !tokenCookie.value) {\n return NextResponse.json({success: 0})\n }\n\n const payload = {\n data: {\n token: tokenCookie.value,\n }\n }\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/check',\n {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!('id' in resJson && resJson.id > 0)) {\n result.cookies.delete(\"token\");\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_OUT_PATH) {\n const res = NextResponse.json({success: 1});\n res.cookies.delete(\"token\");\n return res;\n }\n}","\"use strict\";\n\nconst regexes = {\n ipv4: /^(?:(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$/,\n ipv6: /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i\n};\n\nfunction not(func: any) {\n return function () {\n return !func.apply(null, Array.prototype.slice.call(arguments));\n };\n}\n\nfunction existy(value: any) {\n return value != null;\n}\n\nfunction ip(value: any) {\n return existy(value) && regexes.ipv4.test(value) || regexes.ipv6.test(value);\n}\n\nfunction object(value: any) {\n return Object(value) === value;\n}\n\nfunction string(value: any) {\n return Object.prototype.toString.call(value) === '[object String]';\n}\n\nconst is = {\n existy: existy,\n ip: ip,\n object: object,\n string: string,\n not: {\n existy: not(existy),\n ip: not(ip),\n object: not(object),\n string: not(string)\n }\n};\nexport default is;\n","import is from \"./is\";\n\nfunction getClientIpFromXForwardedFor(value: any) {\n if (!is.existy(value)) {\n return null;\n }\n\n const forwardedIps = value.split(',').map(function (e: string) {\n const ip = e.trim();\n\n if (ip.includes(':')) {\n const splitted = ip.split(':');\n if (splitted.length === 2) {\n return splitted[0];\n }\n }\n return ip;\n });\n\n for (let i = 0; i < forwardedIps.length; i++) {\n if (is.ip(forwardedIps[i])) {\n return forwardedIps[i];\n }\n }\n\n return null;\n}\n\nexport function getClientIp(req: {\n headers?: {\n [key: string]: string\n },\n connection?: {\n remoteAddress?: string,\n socket?: {\n remoteAddress?: string,\n },\n },\n socket?: {\n remoteAddress?: string,\n },\n info?: {\n remoteAddress?: string,\n },\n requestContext?: {\n identity?: {\n sourceIp?: string,\n }\n },\n}) {\n if (req.headers) {\n if (is.ip(req.headers['x-client-ip'])) {\n return req.headers['x-client-ip'];\n }\n\n const xForwardedFor = getClientIpFromXForwardedFor(req.headers['x-forwarded-for']);\n\n if (is.ip(req.headers['cf-connecting-ip'])) {\n return req.headers['cf-connecting-ip'];\n }\n\n if (is.ip(req.headers['fastly-client-ip'])) {\n return req.headers['fastly-client-ip'];\n }\n\n if (is.ip(req.headers['true-client-ip'])) {\n return req.headers['true-client-ip'];\n }\n\n if (is.ip(req.headers['x-real-ip'])) {\n return req.headers['x-real-ip'];\n }\n\n if (is.ip(req.headers['x-cluster-client-ip'])) {\n return req.headers['x-cluster-client-ip'];\n }\n\n if (is.ip(req.headers['x-forwarded'])) {\n return req.headers['x-forwarded'];\n }\n\n if (is.ip(req.headers['forwarded-for'])) {\n return req.headers['forwarded-for'];\n }\n\n if (is.ip(xForwardedFor)) {\n return xForwardedFor;\n }\n\n if (is.ip(req.headers.forwarded)) {\n return req.headers.forwarded;\n }\n\n if (is.ip(req.headers['x-appengine-user-ip'])) {\n return req.headers['x-appengine-user-ip'];\n }\n }\n\n if (is.existy(req.connection) && !!req.connection) {\n if (is.ip(req.connection.remoteAddress)) {\n return req.connection.remoteAddress;\n }\n\n if (is.existy(req.connection.socket) && !!req.connection.socket && !!req.connection.socket.remoteAddress && is.ip(req.connection.socket.remoteAddress)) {\n return req.connection.socket.remoteAddress;\n }\n }\n\n if (is.existy(req.socket) && !!req.socket && !!req.socket.remoteAddress && is.ip(req.socket.remoteAddress)) {\n return req.socket.remoteAddress;\n }\n\n if (is.existy(req.info) && !!req.info && !!req.info.remoteAddress && is.ip(req.info.remoteAddress)) {\n return req.info.remoteAddress;\n }\n\n if (is.existy(req.requestContext) && !!req.requestContext && is.existy(req.requestContext.identity) && !!req.requestContext.identity && !!req.requestContext.identity.sourceIp && is.ip(req.requestContext.identity.sourceIp)) {\n return req.requestContext.identity.sourceIp;\n }\n\n if (req.headers) {\n if (is.ip(req.headers['Cf-Pseudo-IPv4'])) {\n return req.headers['Cf-Pseudo-IPv4'];\n }\n }\n\n return \"127.0.0.2\";\n}\n\n","export const CRM_AUTH_SIGN_IN_PATH = '/api/crm-auth/sign-in';\nexport const CRM_AUTH_SIGN_OUT_PATH = '/api/crm-auth/sign-out';\nexport const CRM_AUTH_VERIFY_PATH = '/api/crm-auth/verify';","import {NextRequest} from \"next/server\";\n// import {endpoint} from \"@capibox/bridge-interface\";\n\n// export const serverProxyPostRequest = async (req: NextRequest) => {\n// const res = await fetch(\n// req.nextUrl.pathname.replace(\n// endpoint.MAIN_ENDPOINT,\n// 'https://api.capibox.com'\n// ),\n// {\n// method: 'POST',\n// body: JSON.stringify(await req.json()),\n// headers: serverProxyHeaders(),\n// }\n// )\n// return await res.json();\n// }\n\nexport const serverProxyHeaders = () => {\n return {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_ENV}`.toLowerCase() === 'prod' ? `${process.env.CAPIBOX_API_KEY}` : 'dev'\n }\n}","export const CACHE_KEY_FUNNELS = 'funnels-data';\nexport const CACHE_KEY_SPLIT = 'split-data';","import cache from \"memory-cache\";\nimport {CACHE_KEY_SPLIT} from \"../cache/cache\";\nimport {components} from \"../../lib/api.def\";\nimport {getBackendUrl} from \"../_utils/backend-url\";\n\nexport const getSplitData = async (): Promise<components['schemas']['SplitResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_SPLIT);\n\n if (cachedResponse) {\n return cachedResponse;\n } else {\n try {\n const res = await fetch(`${getBackendUrl()}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n let resJson: components['schemas']['SplitResponseDto'][] = [];\n if (res.ok) {\n resJson = await res.json();\n }\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n } catch (e) {\n return [];\n }\n }\n};","export const getBackendUrl = () => {\n return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : 'https://api.capibox.com';\n}","export const trimChar = (string: string, charToRemove: string) => {\n while (string.charAt(0) == charToRemove) {\n string = string.substring(1)\n }\n\n while (string.charAt(string.length - 1) == charToRemove) {\n string = string.substring(0, string.length - 1)\n }\n\n return string\n}\n","import {getSplitData} from \"./get-split-data\";\nimport {NextRequest} from \"next/server\";\nimport {trimChar} from \"../_utils/trim-char\";\n\nexport const getSplitItemForPath = async ({path}: { path: string }) => {\n\n const splits = await getSplitData();\n\n // TODO make url required\n const inputs = splits.filter(i => i.active)\n .map((i) => `/${trimChar((i.url ? i.url : ''), '/')}`)\n\n const inputIndex = inputs.indexOf(path)\n if (inputIndex >= 0) {\n return splits[inputIndex]\n }\n return undefined;\n}\n\nexport const getSplitItemForReq = async ({req}: { req: NextRequest }) => {\n return await getSplitItemForPath({path: req.nextUrl.pathname});\n}","import {components} from \"../../lib/api.def\";\n\nexport type SplitItemUrlWithRange = {\n range: {\n start: number,\n finish: number,\n }\n} & components['schemas']['SplitItemDto'];\n\nexport const getSplitItemUrlWinner = (item: components['schemas']['SplitResponseDto']) => {\n const splitValues = fillSplitItemUrlsRange(item);\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = splitValues[0]\n }\n return currentSplit;\n}\n\n// TODO make splits required\nexport const fillSplitItemUrlsRange = (item: components['schemas']['SplitResponseDto']): SplitItemUrlWithRange[] => {\n const splits = item.splits ? item.splits : [];\n return splits.map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.split)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.split,\n },\n }\n });\n}","export const getCookie = (name: string) => {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n const res = parts.pop();\n if (res) {\n return res.split(';').shift();\n }\n }\n return '';\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\nimport {getCookie} from \"../_utils/browser-get-cookie\";\n\ntype CreateSessionDto = {\n language: string;\n email?: string;\n currency: string;\n} & Omit<components['schemas']['CreateSessionBridgeDto'],\n 'origin' | 'referer' | 'cookies' | 'slug' | 'query' | 'ip' | 'user-agent'\n | 'analyticsId' | 'analyticsIdv3'\n>;\n\nexport const createSession = async ({language, email, currency, quiz, ...data}: CreateSessionDto): Promise<\n components['schemas']['SessionResponseDto']\n> => {\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n const cookies = window.document.cookie\n const referer = window.document.referrer\n const origin = window.location.origin\n const slug = window.location.pathname\n\n const res = await $apiClient.POST(\n '/session',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: {\n ...data,\n origin,\n referer,\n cookies,\n query: params,\n slug,\n analyticsId: getCookie('an_uuid'),\n analyticsIdv3: getCookie('an_uuid_v3'),\n extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email,\n quiz: quiz ? quiz : undefined\n }\n }\n }\n );\n if (!res.data) {\n throw new Error('Failed to create session.')\n }\n return res.data.data;\n}","export const fetchJsonPostOptions = (data: any) => {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n}","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_IN_PATH} from \"./path\";\n\nexport const signIn = async (data: any): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_SIGN_IN_PATH,\n fetchJsonPostOptions(data)\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_OUT_PATH} from \"./path\";\n\nexport const signOut = async (): Promise<{ success: 1 }> => {\n const res = await fetch(\n CRM_AUTH_SIGN_OUT_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_VERIFY_PATH} from \"./path\";\n\nexport const verify = async (): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_VERIFY_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\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}","export const gaTrackEvent = (eventName: string, options?: any) => {\n try {\n // @ts-ignore\n window.dataLayer.push({\n event: eventName,\n ...options\n })\n } catch (e) {\n }\n}","import {gaTrackEvent} from \"../ga/ga-track-event\";\nimport {$apiClient} from \"../../lib/api\";\nimport { components } from \"../../lib/api.def\";\n\ntype Options = {\n ga?: any,\n skipGa?: boolean\n path?: {\n pathname?: string,\n referer?: string,\n origin?: string,\n length?: number\n },\n attr?: {[key: string]: string | number},\n eventData?: {[key: string]: string | number},\n skipEvent?: boolean\n}\n\nexport const trackEvent = async (\n type: string,\n uuid?: string,\n options?: Options\n) => {\n try {\n const skipGa = !!(!!options && options.skipGa);\n if (!skipGa) {\n const gaOptions = !!options && !!options.ga ? options.ga : undefined;\n gaTrackEvent(type, gaOptions)\n }\n\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n\n const pathLength = !!options && !!options.path && !!options.path.length ?\n options.path.length :\n 3\n\n const pathname = !!options && !!options.path && !!options.path.pathname ?\n options.path.pathname :\n window.location.pathname.split('/').slice(1, pathLength).join('/')\n\n const referer = !!options && !!options.path && !!options.path.referer ?\n options.path.referer :\n window.document.referrer\n\n const origin = !!options && !!options.path && !!options.path.origin ?\n options.path.origin :\n window.location.origin\n\n const eventData: components['schemas']['TrackRealtimeEventDto'] = {\n type,\n uuid,\n\n pathname:pathname,\n referer: referer,\n origin: origin,\n query: params,\n attr: options?.attr,\n eventData: options?.eventData\n }\n\n await $apiClient.POST('/realtime/events/track-event', {\n body: eventData\n })\n } catch (e) {\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 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\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = res.data;\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 {$apiClient} from \"../../../lib/api\";\n\nexport const verifyEmail = async (email: string) => {\n const res = await $apiClient.GET(\n '/verify/email',\n {\n params: {\n query: {\n email,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\n\nexport const verifyPhone = async (phone: string) => {\n const res = await $apiClient.GET(\n '/verify/phone',\n {\n params: {\n query: {\n phone,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSession = async (\n uuid: string,\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.GET(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getQuiz = async (\n uuid: string,\n): Promise<components['schemas']['QuizResponseDto']> => {\n const res = await $apiClient.GET(\n '/quiz/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const facebookS2S = async (data: components['schemas']['FbCapiPayloadSessionBridge']) => {\n await $apiClient.POST('/analytics/capi/facebook/event', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n return {success: true};\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const createSession = async (\n data: components[\"schemas\"][\"PaymentCreateSessionBridgeRequestDto\"]\n) => {\n const res = await $apiClient.POST('/payments/create-session', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalStartOrder = async (uuid: string) => {\n\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/start',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalCaptureOrder = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/capture',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const trustpilotGetLink = async (data: components['schemas']['CreateTrustpilotInvitationLinkDto']): Promise<components['schemas']['CreateTrustpilotInvitationLinkResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/get-link', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {components} from \"../../lib/api.def\";\nimport {$apiClient} from \"../../lib/api\";\n\nexport const trustpilotSendInvitation = async (data: components['schemas']['SendTrustpilotInvitationDto']): Promise<components['schemas']['SendTrustpilotInvitationResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/send-invitation', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const yunoCreatePayment = async (dto: components['schemas']['YunoCreatePaymentDto']) => {\n\n const res = await $apiClient.POST(\n '/payments/yuno/create-payment',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n },\n body: dto\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\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}\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}"],"mappings":"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","names":["createFetchClient","ip","import_memory_cache","cache","string","cache","ip","browser","createSession","createSession"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/lib/api.ts","../src/browser/mail/send-to-recipient.ts","../src/browser/mail/send-to-support.ts","../src/browser/session/append.ts","../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/funnels/get-capibox-templates.ts","../src/browser/_utils/browser-get-cookie.ts","../src/browser/session/create.ts","../src/browser/_utils/browser-fetch-utils.ts","../src/browser/crm-auth/sign-in.ts","../src/browser/crm-auth/sign-out.ts","../src/browser/crm-auth/veirfy.ts","../src/browser/hooks/useParamsLandingPage.ts","../src/browser/ga/ga-track-event.ts","../src/browser/realtime/track-event.ts","../src/browser/funnels/get.ts","../src/browser/verify/email/verify-email.ts","../src/browser/verify/phone/verify-phone.ts","../src/browser/session/get.ts","../src/browser/quiz/get.ts","../src/browser/capi/facebook-s2s.ts","../src/browser/payments/create-session.ts","../src/browser/payments/paypal/paypal-start-order.ts","../src/browser/payments/paypal/paypal-capture-order.ts","../src/browser/trustpilot/get-link.ts","../src/browser/trustpilot/send-invintation.ts","../src/browser/payments/yuno/yuno-create-payment.ts","../src/browser/funnels/get-templates.ts"],"sourcesContent":["import {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {appendSession} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {createSession} from \"./browser/session/create\";\nimport {signIn} from \"./browser/crm-auth/sign-in\";\nimport {signOut} from \"./browser/crm-auth/sign-out\";\nimport {verify} from \"./browser/crm-auth/veirfy\";\nimport {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {trackEvent} from \"./browser/realtime/track-event\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {verifyEmail} from \"./browser/verify/email/verify-email\";\nimport {verifyPhone} from \"./browser/verify/phone/verify-phone\";\nimport {getSession} from \"./browser/session/get\";\nimport {getQuiz} from \"./browser/quiz/get\";\nimport {facebookS2S} from \"./browser/capi/facebook-s2s\";\nimport {createSession as createSessionPayments} from \"./browser/payments/create-session\";\nimport {paypalStartOrder} from \"./browser/payments/paypal/paypal-start-order\";\nimport {paypalCaptureOrder} from \"./browser/payments/paypal/paypal-capture-order\";\nimport {trustpilotGetLink} from \"./browser/trustpilot/get-link\";\nimport {trustpilotSendInvitation} from \"./browser/trustpilot/send-invintation\";\nimport {yunoCreatePayment} from \"./browser/payments/yuno/yuno-create-payment\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\n\nexport {SdkRemoteFunnel} from \"./browser/funnels/get\";\n\nconst browser = {\n capi: {\n facebook: facebookS2S,\n },\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append: appendSession,\n create: createSession,\n get: getSession,\n },\n crmAuth: {\n signIn,\n signOut,\n verify,\n },\n hooks: {\n useParamsLandingPage\n },\n realtime: {\n trackEvent\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n verify: {\n email: verifyEmail,\n phone: verifyPhone,\n },\n quiz: {\n get: getQuiz,\n },\n payments: {\n createSession: createSessionPayments,\n paypal: {\n startOrder: paypalStartOrder,\n captureOrder: paypalCaptureOrder,\n },\n yuno: {\n createPayment: yunoCreatePayment,\n }\n },\n trustpilot: {\n getLink: trustpilotGetLink,\n sendInvitation: trustpilotSendInvitation,\n }\n}\n\nconst server = {\n middleware,\n funnels: {\n get: getFunnels,\n getTemplates\n }\n}\n\nexport {\n browser,\n server\n}\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.49","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 {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToRecipient = async (data: components['schemas']['SendMailToRecipientDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-recipient',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToSupport = async (data: components['schemas']['SendMailToSupportDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-support',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const appendSession = async (\n uuid: string,\n body: components['schemas']['AppendSessionDto'],\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.PUT(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {NextRequest, NextResponse, userAgent} from \"next/server\";\nimport {getClientIp} from \"./_utils/client-ip\";\nimport {CRM_AUTH_SIGN_IN_PATH, CRM_AUTH_SIGN_OUT_PATH, CRM_AUTH_VERIFY_PATH} from \"../browser/crm-auth/path\";\nimport {serverProxyHeaders} from \"./_utils/server-fetch-utils\";\nimport cache from 'memory-cache';\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"./cache/cache\";\nimport {getSplitItemForReq} from \"./split/get-split-item\";\nimport {trimChar} from \"./_utils/trim-char\";\nimport {getSplitItemUrlWinner} from \"./split/get-split-winner\";\nimport {getBackendUrl} from \"./_utils/backend-url\";\nimport {getCapiboxTemplates} from \"../browser/funnels/get-capibox-templates\";\n\ntype Templates = {\n [key: string]: string[]\n}\n\ntype Options = {\n templates?: Templates,\n}\n\nexport const middleware = async (\n req: NextRequest,\n options?: Options,\n) => {\n if (req.nextUrl.pathname.startsWith('/app/clear-cache')) {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n\n const res = NextResponse.json({s: new Date().getTime()})\n\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n return res;\n }\n\n if (options?.templates && req.nextUrl.pathname.startsWith('/app/get-templates')) {\n const res = NextResponse.json({\n success: true,\n\n data: options.templates,\n })\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n\n return res\n }\n\n // SPLIT TEST\n const input = await getSplitItemForReq({req});\n if (input) {\n const currentSplit = getSplitItemUrlWinner(input);\n\n return NextResponse.redirect(\n new URL(`/${trimChar(currentSplit.url, '/')}${req.nextUrl.search}`, req.url),\n )\n }\n\n if (req.nextUrl.pathname.startsWith('/api-client-proxy')) {\n if (req.nextUrl.pathname === '/api-client-proxy/funnels/funnel') {\n const capiboxTemplates = await getCapiboxTemplates();\n const res = NextResponse.json(capiboxTemplates);\n res.headers.set('X-Cache', 'HIT');\n return res;\n }\n\n let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(getBackendUrl())\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('project-key', `${process.env.CAPIBOX_API_KEY}`)\n\n if (req.nextUrl.pathname.includes('/realtime/')) {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {device, browser, os} = userAgent(req)\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-os', `${os.name} / ${os.version}`)\n requestHeaders.set('x-browser', `${browser.name} / ${browser.version}`)\n requestHeaders.set('x-device', device.type ? device.type : '-')\n const anUuidV3Cookie = req.cookies.get('an_uuid_v3');\n if (anUuidV3Cookie) {\n requestHeaders.set('x-realtime', anUuidV3Cookie?.value)\n }\n }\n if (req.nextUrl.pathname === '/api-client-proxy/session') {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {ua} = userAgent(req);\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ua)\n }\n\n urlClone.protocol = targetUrl.protocol\n urlClone.hostname = targetUrl.hostname\n urlClone.port = targetUrl.port\n urlClone.pathname = urlClone.pathname.replace(/^\\/api-client-proxy/, '');\n\n return NextResponse.rewrite(urlClone, {\n headers: requestHeaders,\n })\n }\n\n // crm auth\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_IN_PATH) {\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/sign-in',\n {\n method: 'POST',\n body: JSON.stringify(await req.json()),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!!resJson.action && !!resJson.token && resJson.action === 'logged-in') {\n result.cookies.set({\n name: \"token\",\n value: resJson.token,\n maxAge: 60 * 60 * 24 * 30,\n httpOnly: true,\n });\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_VERIFY_PATH) {\n const tokenCookie = req.cookies.get('token')\n if (!tokenCookie || !tokenCookie.value) {\n return NextResponse.json({success: 0})\n }\n\n const payload = {\n data: {\n token: tokenCookie.value,\n }\n }\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/check',\n {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!('id' in resJson && resJson.id > 0)) {\n result.cookies.delete(\"token\");\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_OUT_PATH) {\n const res = NextResponse.json({success: 1});\n res.cookies.delete(\"token\");\n return res;\n }\n}","\"use strict\";\n\nconst regexes = {\n ipv4: /^(?:(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$/,\n ipv6: /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i\n};\n\nfunction not(func: any) {\n return function () {\n return !func.apply(null, Array.prototype.slice.call(arguments));\n };\n}\n\nfunction existy(value: any) {\n return value != null;\n}\n\nfunction ip(value: any) {\n return existy(value) && regexes.ipv4.test(value) || regexes.ipv6.test(value);\n}\n\nfunction object(value: any) {\n return Object(value) === value;\n}\n\nfunction string(value: any) {\n return Object.prototype.toString.call(value) === '[object String]';\n}\n\nconst is = {\n existy: existy,\n ip: ip,\n object: object,\n string: string,\n not: {\n existy: not(existy),\n ip: not(ip),\n object: not(object),\n string: not(string)\n }\n};\nexport default is;\n","import is from \"./is\";\n\nfunction getClientIpFromXForwardedFor(value: any) {\n if (!is.existy(value)) {\n return null;\n }\n\n const forwardedIps = value.split(',').map(function (e: string) {\n const ip = e.trim();\n\n if (ip.includes(':')) {\n const splitted = ip.split(':');\n if (splitted.length === 2) {\n return splitted[0];\n }\n }\n return ip;\n });\n\n for (let i = 0; i < forwardedIps.length; i++) {\n if (is.ip(forwardedIps[i])) {\n return forwardedIps[i];\n }\n }\n\n return null;\n}\n\nexport function getClientIp(req: {\n headers?: {\n [key: string]: string\n },\n connection?: {\n remoteAddress?: string,\n socket?: {\n remoteAddress?: string,\n },\n },\n socket?: {\n remoteAddress?: string,\n },\n info?: {\n remoteAddress?: string,\n },\n requestContext?: {\n identity?: {\n sourceIp?: string,\n }\n },\n}) {\n if (req.headers) {\n if (is.ip(req.headers['x-client-ip'])) {\n return req.headers['x-client-ip'];\n }\n\n const xForwardedFor = getClientIpFromXForwardedFor(req.headers['x-forwarded-for']);\n\n if (is.ip(req.headers['cf-connecting-ip'])) {\n return req.headers['cf-connecting-ip'];\n }\n\n if (is.ip(req.headers['fastly-client-ip'])) {\n return req.headers['fastly-client-ip'];\n }\n\n if (is.ip(req.headers['true-client-ip'])) {\n return req.headers['true-client-ip'];\n }\n\n if (is.ip(req.headers['x-real-ip'])) {\n return req.headers['x-real-ip'];\n }\n\n if (is.ip(req.headers['x-cluster-client-ip'])) {\n return req.headers['x-cluster-client-ip'];\n }\n\n if (is.ip(req.headers['x-forwarded'])) {\n return req.headers['x-forwarded'];\n }\n\n if (is.ip(req.headers['forwarded-for'])) {\n return req.headers['forwarded-for'];\n }\n\n if (is.ip(xForwardedFor)) {\n return xForwardedFor;\n }\n\n if (is.ip(req.headers.forwarded)) {\n return req.headers.forwarded;\n }\n\n if (is.ip(req.headers['x-appengine-user-ip'])) {\n return req.headers['x-appengine-user-ip'];\n }\n }\n\n if (is.existy(req.connection) && !!req.connection) {\n if (is.ip(req.connection.remoteAddress)) {\n return req.connection.remoteAddress;\n }\n\n if (is.existy(req.connection.socket) && !!req.connection.socket && !!req.connection.socket.remoteAddress && is.ip(req.connection.socket.remoteAddress)) {\n return req.connection.socket.remoteAddress;\n }\n }\n\n if (is.existy(req.socket) && !!req.socket && !!req.socket.remoteAddress && is.ip(req.socket.remoteAddress)) {\n return req.socket.remoteAddress;\n }\n\n if (is.existy(req.info) && !!req.info && !!req.info.remoteAddress && is.ip(req.info.remoteAddress)) {\n return req.info.remoteAddress;\n }\n\n if (is.existy(req.requestContext) && !!req.requestContext && is.existy(req.requestContext.identity) && !!req.requestContext.identity && !!req.requestContext.identity.sourceIp && is.ip(req.requestContext.identity.sourceIp)) {\n return req.requestContext.identity.sourceIp;\n }\n\n if (req.headers) {\n if (is.ip(req.headers['Cf-Pseudo-IPv4'])) {\n return req.headers['Cf-Pseudo-IPv4'];\n }\n }\n\n return \"127.0.0.2\";\n}\n\n","export const CRM_AUTH_SIGN_IN_PATH = '/api/crm-auth/sign-in';\nexport const CRM_AUTH_SIGN_OUT_PATH = '/api/crm-auth/sign-out';\nexport const CRM_AUTH_VERIFY_PATH = '/api/crm-auth/verify';","import {NextRequest} from \"next/server\";\n// import {endpoint} from \"@capibox/bridge-interface\";\n\n// export const serverProxyPostRequest = async (req: NextRequest) => {\n// const res = await fetch(\n// req.nextUrl.pathname.replace(\n// endpoint.MAIN_ENDPOINT,\n// 'https://api.capibox.com'\n// ),\n// {\n// method: 'POST',\n// body: JSON.stringify(await req.json()),\n// headers: serverProxyHeaders(),\n// }\n// )\n// return await res.json();\n// }\n\nexport const serverProxyHeaders = () => {\n return {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_ENV}`.toLowerCase() === 'prod' ? `${process.env.CAPIBOX_API_KEY}` : 'dev'\n }\n}","export const CACHE_KEY_FUNNELS = 'funnels-data';\nexport const CACHE_KEY_SPLIT = 'split-data';","import cache from \"memory-cache\";\nimport {CACHE_KEY_SPLIT} from \"../cache/cache\";\nimport {components} from \"../../lib/api.def\";\nimport {getBackendUrl} from \"../_utils/backend-url\";\n\nexport const getSplitData = async (): Promise<components['schemas']['SplitResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_SPLIT);\n\n if (cachedResponse) {\n return cachedResponse;\n } else {\n try {\n const res = await fetch(`${getBackendUrl()}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n let resJson: components['schemas']['SplitResponseDto'][] = [];\n if (res.ok) {\n resJson = await res.json();\n }\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n } catch (e) {\n return [];\n }\n }\n};","export const getBackendUrl = () => {\n return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : 'https://api.capibox.com';\n}","export const trimChar = (string: string, charToRemove: string) => {\n while (string.charAt(0) == charToRemove) {\n string = string.substring(1)\n }\n\n while (string.charAt(string.length - 1) == charToRemove) {\n string = string.substring(0, string.length - 1)\n }\n\n return string\n}\n","import {getSplitData} from \"./get-split-data\";\nimport {NextRequest} from \"next/server\";\nimport {trimChar} from \"../_utils/trim-char\";\n\nexport const getSplitItemForPath = async ({path}: { path: string }) => {\n\n const splits = await getSplitData();\n\n // TODO make url required\n const inputs = splits.filter(i => i.active)\n .map((i) => `/${trimChar((i.url ? i.url : ''), '/')}`)\n\n const inputIndex = inputs.indexOf(path)\n if (inputIndex >= 0) {\n return splits[inputIndex]\n }\n return undefined;\n}\n\nexport const getSplitItemForReq = async ({req}: { req: NextRequest }) => {\n return await getSplitItemForPath({path: req.nextUrl.pathname});\n}","import {components} from \"../../lib/api.def\";\n\nexport type SplitItemUrlWithRange = {\n range: {\n start: number,\n finish: number,\n }\n} & components['schemas']['SplitItemDto'];\n\nexport const getSplitItemUrlWinner = (item: components['schemas']['SplitResponseDto']) => {\n const splitValues = fillSplitItemUrlsRange(item);\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = splitValues[0]\n }\n return currentSplit;\n}\n\n// TODO make splits required\nexport const fillSplitItemUrlsRange = (item: components['schemas']['SplitResponseDto']): SplitItemUrlWithRange[] => {\n const splits = item.splits ? item.splits : [];\n return splits.map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.split)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.split,\n },\n }\n });\n}","import cache from \"memory-cache\";\nimport {CACHE_KEY_FUNNELS} from \"../../server/cache/cache\";\nimport {getBackendUrl} from \"../../server/_utils/backend-url\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getCapiboxTemplates = async (): Promise<components['schemas']['FunnelResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_FUNNELS);\n if (cachedResponse) {\n return cachedResponse;\n } else {\n const funnelRes = await fetch(`${getBackendUrl()}/funnels/funnel`, {\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n })\n const responseBody = await funnelRes.json();\n cache.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);\n return responseBody;\n }\n}","export const getCookie = (name: string) => {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n const res = parts.pop();\n if (res) {\n return res.split(';').shift();\n }\n }\n return '';\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\nimport {getCookie} from \"../_utils/browser-get-cookie\";\n\ntype CreateSessionDto = {\n language: string;\n email?: string;\n currency: string;\n} & Omit<components['schemas']['CreateSessionBridgeDto'],\n 'origin' | 'referer' | 'cookies' | 'slug' | 'query' | 'ip' | 'user-agent'\n | 'analyticsId' | 'analyticsIdv3'\n>;\n\nexport const createSession = async ({language, email, currency, quiz, ...data}: CreateSessionDto): Promise<\n components['schemas']['SessionResponseDto']\n> => {\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n const cookies = window.document.cookie\n const referer = window.document.referrer\n const origin = window.location.origin\n const slug = window.location.pathname\n\n const res = await $apiClient.POST(\n '/session',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: {\n ...data,\n origin,\n referer,\n cookies,\n query: params,\n slug,\n analyticsId: getCookie('an_uuid'),\n analyticsIdv3: getCookie('an_uuid_v3'),\n extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email,\n quiz: quiz ? quiz : undefined\n }\n }\n }\n );\n if (!res.data) {\n throw new Error('Failed to create session.')\n }\n return res.data.data;\n}","export const fetchJsonPostOptions = (data: any) => {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n}","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_IN_PATH} from \"./path\";\n\nexport const signIn = async (data: any): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_SIGN_IN_PATH,\n fetchJsonPostOptions(data)\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_OUT_PATH} from \"./path\";\n\nexport const signOut = async (): Promise<{ success: 1 }> => {\n const res = await fetch(\n CRM_AUTH_SIGN_OUT_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_VERIFY_PATH} from \"./path\";\n\nexport const verify = async (): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_VERIFY_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\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}","export const gaTrackEvent = (eventName: string, options?: any) => {\n try {\n // @ts-ignore\n window.dataLayer.push({\n event: eventName,\n ...options\n })\n } catch (e) {\n }\n}","import {gaTrackEvent} from \"../ga/ga-track-event\";\nimport {$apiClient} from \"../../lib/api\";\nimport { components } from \"../../lib/api.def\";\n\ntype Options = {\n ga?: any,\n skipGa?: boolean\n path?: {\n pathname?: string,\n referer?: string,\n origin?: string,\n length?: number\n },\n attr?: {[key: string]: string | number},\n eventData?: {[key: string]: string | number},\n skipEvent?: boolean\n}\n\nexport const trackEvent = async (\n type: string,\n uuid?: string,\n options?: Options\n) => {\n try {\n const skipGa = !!(!!options && options.skipGa);\n if (!skipGa) {\n const gaOptions = !!options && !!options.ga ? options.ga : undefined;\n gaTrackEvent(type, gaOptions)\n }\n\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n\n const pathLength = !!options && !!options.path && !!options.path.length ?\n options.path.length :\n 3\n\n const pathname = !!options && !!options.path && !!options.path.pathname ?\n options.path.pathname :\n window.location.pathname.split('/').slice(1, pathLength).join('/')\n\n const referer = !!options && !!options.path && !!options.path.referer ?\n options.path.referer :\n window.document.referrer\n\n const origin = !!options && !!options.path && !!options.path.origin ?\n options.path.origin :\n window.location.origin\n\n const eventData: components['schemas']['TrackRealtimeEventDto'] = {\n type,\n uuid,\n\n pathname:pathname,\n referer: referer,\n origin: origin,\n query: params,\n attr: options?.attr,\n eventData: options?.eventData\n }\n\n await $apiClient.POST('/realtime/events/track-event', {\n body: eventData\n })\n } catch (e) {\n }\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\nimport {getCapiboxTemplates} from \"./get-capibox-templates\";\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 if (typeof window == \"undefined\") {\n response = await getCapiboxTemplates();\n } else {\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\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 {$apiClient} from \"../../../lib/api\";\n\nexport const verifyEmail = async (email: string) => {\n const res = await $apiClient.GET(\n '/verify/email',\n {\n params: {\n query: {\n email,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\n\nexport const verifyPhone = async (phone: string) => {\n const res = await $apiClient.GET(\n '/verify/phone',\n {\n params: {\n query: {\n phone,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSession = async (\n uuid: string,\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.GET(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getQuiz = async (\n uuid: string,\n): Promise<components['schemas']['QuizResponseDto']> => {\n const res = await $apiClient.GET(\n '/quiz/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const facebookS2S = async (data: components['schemas']['FbCapiPayloadSessionBridge']) => {\n await $apiClient.POST('/analytics/capi/facebook/event', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n return {success: true};\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const createSession = async (\n data: components[\"schemas\"][\"PaymentCreateSessionBridgeRequestDto\"]\n) => {\n const res = await $apiClient.POST('/payments/create-session', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalStartOrder = async (uuid: string) => {\n\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/start',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalCaptureOrder = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/capture',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const trustpilotGetLink = async (data: components['schemas']['CreateTrustpilotInvitationLinkDto']): Promise<components['schemas']['CreateTrustpilotInvitationLinkResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/get-link', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {components} from \"../../lib/api.def\";\nimport {$apiClient} from \"../../lib/api\";\n\nexport const trustpilotSendInvitation = async (data: components['schemas']['SendTrustpilotInvitationDto']): Promise<components['schemas']['SendTrustpilotInvitationResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/send-invitation', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const yunoCreatePayment = async (dto: components['schemas']['YunoCreatePaymentDto']) => {\n\n const res = await $apiClient.POST(\n '/payments/yuno/create-payment',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n },\n body: dto\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\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}\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}"],"mappings":"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","names":["createFetchClient","ip","import_memory_cache","cache","string","import_memory_cache","cache","cache","ip","browser","createSession","createSession"]}
|
package/dist/index.mjs
CHANGED
|
@@ -257,7 +257,7 @@ var serverProxyHeaders = () => {
|
|
|
257
257
|
};
|
|
258
258
|
|
|
259
259
|
// src/server/middleware.ts
|
|
260
|
-
import
|
|
260
|
+
import cache3 from "memory-cache";
|
|
261
261
|
|
|
262
262
|
// src/server/cache/cache.ts
|
|
263
263
|
var CACHE_KEY_FUNNELS = "funnels-data";
|
|
@@ -347,11 +347,29 @@ var fillSplitItemUrlsRange = (item) => {
|
|
|
347
347
|
});
|
|
348
348
|
};
|
|
349
349
|
|
|
350
|
+
// src/browser/funnels/get-capibox-templates.ts
|
|
351
|
+
import cache2 from "memory-cache";
|
|
352
|
+
var getCapiboxTemplates = () => __async(null, null, function* () {
|
|
353
|
+
const cachedResponse = cache2.get(CACHE_KEY_FUNNELS);
|
|
354
|
+
if (cachedResponse) {
|
|
355
|
+
return cachedResponse;
|
|
356
|
+
} else {
|
|
357
|
+
const funnelRes = yield fetch(`${getBackendUrl()}/funnels/funnel`, {
|
|
358
|
+
headers: {
|
|
359
|
+
"project-key": `${process.env.CAPIBOX_API_KEY}`
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
const responseBody = yield funnelRes.json();
|
|
363
|
+
cache2.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);
|
|
364
|
+
return responseBody;
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
|
|
350
368
|
// src/server/middleware.ts
|
|
351
369
|
var middleware = (req, options) => __async(null, null, function* () {
|
|
352
370
|
if (req.nextUrl.pathname.startsWith("/app/clear-cache")) {
|
|
353
|
-
|
|
354
|
-
|
|
371
|
+
cache3.del(CACHE_KEY_FUNNELS);
|
|
372
|
+
cache3.del(CACHE_KEY_SPLIT);
|
|
355
373
|
const res = NextResponse.json({ s: (/* @__PURE__ */ new Date()).getTime() });
|
|
356
374
|
res.headers.append("Access-Control-Allow-Credentials", "true");
|
|
357
375
|
res.headers.append("Access-Control-Allow-Origin", "*");
|
|
@@ -385,20 +403,10 @@ var middleware = (req, options) => __async(null, null, function* () {
|
|
|
385
403
|
}
|
|
386
404
|
if (req.nextUrl.pathname.startsWith("/api-client-proxy")) {
|
|
387
405
|
if (req.nextUrl.pathname === "/api-client-proxy/funnels/funnel") {
|
|
388
|
-
const
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
return res;
|
|
393
|
-
} else {
|
|
394
|
-
const funnelRes = yield fetch(`${getBackendUrl()}${req.nextUrl.pathname.replace("/api-client-proxy", "")}`, {
|
|
395
|
-
headers: {
|
|
396
|
-
"project-key": `${process.env.CAPIBOX_API_KEY}`
|
|
397
|
-
}
|
|
398
|
-
});
|
|
399
|
-
const responseBody = yield funnelRes.json();
|
|
400
|
-
cache2.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);
|
|
401
|
-
}
|
|
406
|
+
const capiboxTemplates = yield getCapiboxTemplates();
|
|
407
|
+
const res = NextResponse.json(capiboxTemplates);
|
|
408
|
+
res.headers.set("X-Cache", "HIT");
|
|
409
|
+
return res;
|
|
402
410
|
}
|
|
403
411
|
let urlClone = req.nextUrl.clone();
|
|
404
412
|
const targetUrl = new URL(getBackendUrl());
|
|
@@ -637,15 +645,21 @@ var trackEvent = (type, uuid, options) => __async(null, null, function* () {
|
|
|
637
645
|
|
|
638
646
|
// src/browser/funnels/get.ts
|
|
639
647
|
var getFunnels = () => __async(null, null, function* () {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
648
|
+
let response = [];
|
|
649
|
+
if (typeof window == "undefined") {
|
|
650
|
+
response = yield getCapiboxTemplates();
|
|
651
|
+
} else {
|
|
652
|
+
const res = yield $apiClient.GET("/funnels/funnel", {
|
|
653
|
+
params: {
|
|
654
|
+
header: {
|
|
655
|
+
"project-key": "Frontend"
|
|
656
|
+
}
|
|
644
657
|
}
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
658
|
+
});
|
|
659
|
+
if (!res || !res.data) return [];
|
|
660
|
+
response = res.data;
|
|
661
|
+
}
|
|
662
|
+
const tmpFunnels = response;
|
|
649
663
|
const output = [];
|
|
650
664
|
for (const funnel of tmpFunnels) {
|
|
651
665
|
output.push({
|
|
@@ -963,7 +977,11 @@ var browser = {
|
|
|
963
977
|
}
|
|
964
978
|
};
|
|
965
979
|
var server = {
|
|
966
|
-
middleware
|
|
980
|
+
middleware,
|
|
981
|
+
funnels: {
|
|
982
|
+
get: getFunnels,
|
|
983
|
+
getTemplates
|
|
984
|
+
}
|
|
967
985
|
};
|
|
968
986
|
if (typeof window !== "undefined") {
|
|
969
987
|
window.capibox = browser;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/api.ts","../src/browser/mail/send-to-recipient.ts","../src/browser/mail/send-to-support.ts","../src/browser/session/append.ts","../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/_utils/browser-get-cookie.ts","../src/browser/session/create.ts","../src/browser/_utils/browser-fetch-utils.ts","../src/browser/crm-auth/sign-in.ts","../src/browser/crm-auth/sign-out.ts","../src/browser/crm-auth/veirfy.ts","../src/browser/hooks/useParamsLandingPage.ts","../src/browser/ga/ga-track-event.ts","../src/browser/realtime/track-event.ts","../src/browser/funnels/get.ts","../src/browser/verify/email/verify-email.ts","../src/browser/verify/phone/verify-phone.ts","../src/browser/session/get.ts","../src/browser/quiz/get.ts","../src/browser/capi/facebook-s2s.ts","../src/browser/payments/create-session.ts","../src/browser/payments/paypal/paypal-start-order.ts","../src/browser/payments/paypal/paypal-capture-order.ts","../src/browser/trustpilot/get-link.ts","../src/browser/trustpilot/send-invintation.ts","../src/browser/payments/yuno/yuno-create-payment.ts","../src/browser/funnels/get-templates.ts","../src/index.ts"],"sourcesContent":["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 {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToRecipient = async (data: components['schemas']['SendMailToRecipientDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-recipient',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToSupport = async (data: components['schemas']['SendMailToSupportDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-support',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const appendSession = async (\n uuid: string,\n body: components['schemas']['AppendSessionDto'],\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.PUT(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {NextRequest, NextResponse, userAgent} from \"next/server\";\nimport {getClientIp} from \"./_utils/client-ip\";\nimport {CRM_AUTH_SIGN_IN_PATH, CRM_AUTH_SIGN_OUT_PATH, CRM_AUTH_VERIFY_PATH} from \"../browser/crm-auth/path\";\nimport {serverProxyHeaders} from \"./_utils/server-fetch-utils\";\nimport cache from 'memory-cache';\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"./cache/cache\";\nimport {getSplitItemForReq} from \"./split/get-split-item\";\nimport {trimChar} from \"./_utils/trim-char\";\nimport {getSplitItemUrlWinner} from \"./split/get-split-winner\";\nimport {getBackendUrl} from \"./_utils/backend-url\";\n\ntype Templates = {\n [key: string]: string[]\n}\n\ntype Options = {\n templates?: Templates,\n}\n\nexport const middleware = async (\n req: NextRequest,\n options?: Options,\n) => {\n if (req.nextUrl.pathname.startsWith('/app/clear-cache')) {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n\n const res = NextResponse.json({s: new Date().getTime()})\n\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n return res;\n }\n\n if (options?.templates && req.nextUrl.pathname.startsWith('/app/get-templates')) {\n const res = NextResponse.json({\n success: true,\n\n data: options.templates,\n })\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n\n return res\n }\n\n // SPLIT TEST\n const input = await getSplitItemForReq({req});\n if (input) {\n const currentSplit = getSplitItemUrlWinner(input);\n\n return NextResponse.redirect(\n new URL(`/${trimChar(currentSplit.url, '/')}${req.nextUrl.search}`, req.url),\n )\n }\n\n if (req.nextUrl.pathname.startsWith('/api-client-proxy')) {\n if (req.nextUrl.pathname === '/api-client-proxy/funnels/funnel') {\n const cachedResponse = cache.get(CACHE_KEY_FUNNELS);\n if (cachedResponse) {\n const res = NextResponse.json(cachedResponse);\n res.headers.set('X-Cache', 'HIT');\n return res;\n } else {\n const funnelRes = await fetch(`${getBackendUrl()}${req.nextUrl.pathname.replace('/api-client-proxy', '')}`, {\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n })\n const responseBody = await funnelRes.json();\n cache.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);\n }\n }\n\n let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(getBackendUrl())\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('project-key', `${process.env.CAPIBOX_API_KEY}`)\n\n if (req.nextUrl.pathname.includes('/realtime/')) {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {device, browser, os} = userAgent(req)\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-os', `${os.name} / ${os.version}`)\n requestHeaders.set('x-browser', `${browser.name} / ${browser.version}`)\n requestHeaders.set('x-device', device.type ? device.type : '-')\n const anUuidV3Cookie = req.cookies.get('an_uuid_v3');\n if (anUuidV3Cookie) {\n requestHeaders.set('x-realtime', anUuidV3Cookie?.value)\n }\n }\n if (req.nextUrl.pathname === '/api-client-proxy/session') {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {ua} = userAgent(req);\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ua)\n }\n\n urlClone.protocol = targetUrl.protocol\n urlClone.hostname = targetUrl.hostname\n urlClone.port = targetUrl.port\n urlClone.pathname = urlClone.pathname.replace(/^\\/api-client-proxy/, '');\n\n return NextResponse.rewrite(urlClone, {\n headers: requestHeaders,\n })\n }\n\n // crm auth\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_IN_PATH) {\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/sign-in',\n {\n method: 'POST',\n body: JSON.stringify(await req.json()),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!!resJson.action && !!resJson.token && resJson.action === 'logged-in') {\n result.cookies.set({\n name: \"token\",\n value: resJson.token,\n maxAge: 60 * 60 * 24 * 30,\n httpOnly: true,\n });\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_VERIFY_PATH) {\n const tokenCookie = req.cookies.get('token')\n if (!tokenCookie || !tokenCookie.value) {\n return NextResponse.json({success: 0})\n }\n\n const payload = {\n data: {\n token: tokenCookie.value,\n }\n }\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/check',\n {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!('id' in resJson && resJson.id > 0)) {\n result.cookies.delete(\"token\");\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_OUT_PATH) {\n const res = NextResponse.json({success: 1});\n res.cookies.delete(\"token\");\n return res;\n }\n}","\"use strict\";\n\nconst regexes = {\n ipv4: /^(?:(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$/,\n ipv6: /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i\n};\n\nfunction not(func: any) {\n return function () {\n return !func.apply(null, Array.prototype.slice.call(arguments));\n };\n}\n\nfunction existy(value: any) {\n return value != null;\n}\n\nfunction ip(value: any) {\n return existy(value) && regexes.ipv4.test(value) || regexes.ipv6.test(value);\n}\n\nfunction object(value: any) {\n return Object(value) === value;\n}\n\nfunction string(value: any) {\n return Object.prototype.toString.call(value) === '[object String]';\n}\n\nconst is = {\n existy: existy,\n ip: ip,\n object: object,\n string: string,\n not: {\n existy: not(existy),\n ip: not(ip),\n object: not(object),\n string: not(string)\n }\n};\nexport default is;\n","import is from \"./is\";\n\nfunction getClientIpFromXForwardedFor(value: any) {\n if (!is.existy(value)) {\n return null;\n }\n\n const forwardedIps = value.split(',').map(function (e: string) {\n const ip = e.trim();\n\n if (ip.includes(':')) {\n const splitted = ip.split(':');\n if (splitted.length === 2) {\n return splitted[0];\n }\n }\n return ip;\n });\n\n for (let i = 0; i < forwardedIps.length; i++) {\n if (is.ip(forwardedIps[i])) {\n return forwardedIps[i];\n }\n }\n\n return null;\n}\n\nexport function getClientIp(req: {\n headers?: {\n [key: string]: string\n },\n connection?: {\n remoteAddress?: string,\n socket?: {\n remoteAddress?: string,\n },\n },\n socket?: {\n remoteAddress?: string,\n },\n info?: {\n remoteAddress?: string,\n },\n requestContext?: {\n identity?: {\n sourceIp?: string,\n }\n },\n}) {\n if (req.headers) {\n if (is.ip(req.headers['x-client-ip'])) {\n return req.headers['x-client-ip'];\n }\n\n const xForwardedFor = getClientIpFromXForwardedFor(req.headers['x-forwarded-for']);\n\n if (is.ip(req.headers['cf-connecting-ip'])) {\n return req.headers['cf-connecting-ip'];\n }\n\n if (is.ip(req.headers['fastly-client-ip'])) {\n return req.headers['fastly-client-ip'];\n }\n\n if (is.ip(req.headers['true-client-ip'])) {\n return req.headers['true-client-ip'];\n }\n\n if (is.ip(req.headers['x-real-ip'])) {\n return req.headers['x-real-ip'];\n }\n\n if (is.ip(req.headers['x-cluster-client-ip'])) {\n return req.headers['x-cluster-client-ip'];\n }\n\n if (is.ip(req.headers['x-forwarded'])) {\n return req.headers['x-forwarded'];\n }\n\n if (is.ip(req.headers['forwarded-for'])) {\n return req.headers['forwarded-for'];\n }\n\n if (is.ip(xForwardedFor)) {\n return xForwardedFor;\n }\n\n if (is.ip(req.headers.forwarded)) {\n return req.headers.forwarded;\n }\n\n if (is.ip(req.headers['x-appengine-user-ip'])) {\n return req.headers['x-appengine-user-ip'];\n }\n }\n\n if (is.existy(req.connection) && !!req.connection) {\n if (is.ip(req.connection.remoteAddress)) {\n return req.connection.remoteAddress;\n }\n\n if (is.existy(req.connection.socket) && !!req.connection.socket && !!req.connection.socket.remoteAddress && is.ip(req.connection.socket.remoteAddress)) {\n return req.connection.socket.remoteAddress;\n }\n }\n\n if (is.existy(req.socket) && !!req.socket && !!req.socket.remoteAddress && is.ip(req.socket.remoteAddress)) {\n return req.socket.remoteAddress;\n }\n\n if (is.existy(req.info) && !!req.info && !!req.info.remoteAddress && is.ip(req.info.remoteAddress)) {\n return req.info.remoteAddress;\n }\n\n if (is.existy(req.requestContext) && !!req.requestContext && is.existy(req.requestContext.identity) && !!req.requestContext.identity && !!req.requestContext.identity.sourceIp && is.ip(req.requestContext.identity.sourceIp)) {\n return req.requestContext.identity.sourceIp;\n }\n\n if (req.headers) {\n if (is.ip(req.headers['Cf-Pseudo-IPv4'])) {\n return req.headers['Cf-Pseudo-IPv4'];\n }\n }\n\n return \"127.0.0.2\";\n}\n\n","export const CRM_AUTH_SIGN_IN_PATH = '/api/crm-auth/sign-in';\nexport const CRM_AUTH_SIGN_OUT_PATH = '/api/crm-auth/sign-out';\nexport const CRM_AUTH_VERIFY_PATH = '/api/crm-auth/verify';","import {NextRequest} from \"next/server\";\n// import {endpoint} from \"@capibox/bridge-interface\";\n\n// export const serverProxyPostRequest = async (req: NextRequest) => {\n// const res = await fetch(\n// req.nextUrl.pathname.replace(\n// endpoint.MAIN_ENDPOINT,\n// 'https://api.capibox.com'\n// ),\n// {\n// method: 'POST',\n// body: JSON.stringify(await req.json()),\n// headers: serverProxyHeaders(),\n// }\n// )\n// return await res.json();\n// }\n\nexport const serverProxyHeaders = () => {\n return {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_ENV}`.toLowerCase() === 'prod' ? `${process.env.CAPIBOX_API_KEY}` : 'dev'\n }\n}","export const CACHE_KEY_FUNNELS = 'funnels-data';\nexport const CACHE_KEY_SPLIT = 'split-data';","import cache from \"memory-cache\";\nimport {CACHE_KEY_SPLIT} from \"../cache/cache\";\nimport {components} from \"../../lib/api.def\";\nimport {getBackendUrl} from \"../_utils/backend-url\";\n\nexport const getSplitData = async (): Promise<components['schemas']['SplitResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_SPLIT);\n\n if (cachedResponse) {\n return cachedResponse;\n } else {\n try {\n const res = await fetch(`${getBackendUrl()}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n let resJson: components['schemas']['SplitResponseDto'][] = [];\n if (res.ok) {\n resJson = await res.json();\n }\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n } catch (e) {\n return [];\n }\n }\n};","export const getBackendUrl = () => {\n return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : 'https://api.capibox.com';\n}","export const trimChar = (string: string, charToRemove: string) => {\n while (string.charAt(0) == charToRemove) {\n string = string.substring(1)\n }\n\n while (string.charAt(string.length - 1) == charToRemove) {\n string = string.substring(0, string.length - 1)\n }\n\n return string\n}\n","import {getSplitData} from \"./get-split-data\";\nimport {NextRequest} from \"next/server\";\nimport {trimChar} from \"../_utils/trim-char\";\n\nexport const getSplitItemForPath = async ({path}: { path: string }) => {\n\n const splits = await getSplitData();\n\n // TODO make url required\n const inputs = splits.filter(i => i.active)\n .map((i) => `/${trimChar((i.url ? i.url : ''), '/')}`)\n\n const inputIndex = inputs.indexOf(path)\n if (inputIndex >= 0) {\n return splits[inputIndex]\n }\n return undefined;\n}\n\nexport const getSplitItemForReq = async ({req}: { req: NextRequest }) => {\n return await getSplitItemForPath({path: req.nextUrl.pathname});\n}","import {components} from \"../../lib/api.def\";\n\nexport type SplitItemUrlWithRange = {\n range: {\n start: number,\n finish: number,\n }\n} & components['schemas']['SplitItemDto'];\n\nexport const getSplitItemUrlWinner = (item: components['schemas']['SplitResponseDto']) => {\n const splitValues = fillSplitItemUrlsRange(item);\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = splitValues[0]\n }\n return currentSplit;\n}\n\n// TODO make splits required\nexport const fillSplitItemUrlsRange = (item: components['schemas']['SplitResponseDto']): SplitItemUrlWithRange[] => {\n const splits = item.splits ? item.splits : [];\n return splits.map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.split)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.split,\n },\n }\n });\n}","export const getCookie = (name: string) => {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n const res = parts.pop();\n if (res) {\n return res.split(';').shift();\n }\n }\n return '';\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\nimport {getCookie} from \"../_utils/browser-get-cookie\";\n\ntype CreateSessionDto = {\n language: string;\n email?: string;\n currency: string;\n} & Omit<components['schemas']['CreateSessionBridgeDto'],\n 'origin' | 'referer' | 'cookies' | 'slug' | 'query' | 'ip' | 'user-agent'\n | 'analyticsId' | 'analyticsIdv3'\n>;\n\nexport const createSession = async ({language, email, currency, quiz, ...data}: CreateSessionDto): Promise<\n components['schemas']['SessionResponseDto']\n> => {\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n const cookies = window.document.cookie\n const referer = window.document.referrer\n const origin = window.location.origin\n const slug = window.location.pathname\n\n const res = await $apiClient.POST(\n '/session',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: {\n ...data,\n origin,\n referer,\n cookies,\n query: params,\n slug,\n analyticsId: getCookie('an_uuid'),\n analyticsIdv3: getCookie('an_uuid_v3'),\n extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email,\n quiz: quiz ? quiz : undefined\n }\n }\n }\n );\n if (!res.data) {\n throw new Error('Failed to create session.')\n }\n return res.data.data;\n}","export const fetchJsonPostOptions = (data: any) => {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n}","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_IN_PATH} from \"./path\";\n\nexport const signIn = async (data: any): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_SIGN_IN_PATH,\n fetchJsonPostOptions(data)\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_OUT_PATH} from \"./path\";\n\nexport const signOut = async (): Promise<{ success: 1 }> => {\n const res = await fetch(\n CRM_AUTH_SIGN_OUT_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_VERIFY_PATH} from \"./path\";\n\nexport const verify = async (): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_VERIFY_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\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}","export const gaTrackEvent = (eventName: string, options?: any) => {\n try {\n // @ts-ignore\n window.dataLayer.push({\n event: eventName,\n ...options\n })\n } catch (e) {\n }\n}","import {gaTrackEvent} from \"../ga/ga-track-event\";\nimport {$apiClient} from \"../../lib/api\";\nimport { components } from \"../../lib/api.def\";\n\ntype Options = {\n ga?: any,\n skipGa?: boolean\n path?: {\n pathname?: string,\n referer?: string,\n origin?: string,\n length?: number\n },\n attr?: {[key: string]: string | number},\n eventData?: {[key: string]: string | number},\n skipEvent?: boolean\n}\n\nexport const trackEvent = async (\n type: string,\n uuid?: string,\n options?: Options\n) => {\n try {\n const skipGa = !!(!!options && options.skipGa);\n if (!skipGa) {\n const gaOptions = !!options && !!options.ga ? options.ga : undefined;\n gaTrackEvent(type, gaOptions)\n }\n\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n\n const pathLength = !!options && !!options.path && !!options.path.length ?\n options.path.length :\n 3\n\n const pathname = !!options && !!options.path && !!options.path.pathname ?\n options.path.pathname :\n window.location.pathname.split('/').slice(1, pathLength).join('/')\n\n const referer = !!options && !!options.path && !!options.path.referer ?\n options.path.referer :\n window.document.referrer\n\n const origin = !!options && !!options.path && !!options.path.origin ?\n options.path.origin :\n window.location.origin\n\n const eventData: components['schemas']['TrackRealtimeEventDto'] = {\n type,\n uuid,\n\n pathname:pathname,\n referer: referer,\n origin: origin,\n query: params,\n attr: options?.attr,\n eventData: options?.eventData\n }\n\n await $apiClient.POST('/realtime/events/track-event', {\n body: eventData\n })\n } catch (e) {\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 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\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = res.data;\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 {$apiClient} from \"../../../lib/api\";\n\nexport const verifyEmail = async (email: string) => {\n const res = await $apiClient.GET(\n '/verify/email',\n {\n params: {\n query: {\n email,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\n\nexport const verifyPhone = async (phone: string) => {\n const res = await $apiClient.GET(\n '/verify/phone',\n {\n params: {\n query: {\n phone,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSession = async (\n uuid: string,\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.GET(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getQuiz = async (\n uuid: string,\n): Promise<components['schemas']['QuizResponseDto']> => {\n const res = await $apiClient.GET(\n '/quiz/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const facebookS2S = async (data: components['schemas']['FbCapiPayloadSessionBridge']) => {\n await $apiClient.POST('/analytics/capi/facebook/event', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n return {success: true};\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const createSession = async (\n data: components[\"schemas\"][\"PaymentCreateSessionBridgeRequestDto\"]\n) => {\n const res = await $apiClient.POST('/payments/create-session', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalStartOrder = async (uuid: string) => {\n\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/start',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalCaptureOrder = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/capture',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const trustpilotGetLink = async (data: components['schemas']['CreateTrustpilotInvitationLinkDto']): Promise<components['schemas']['CreateTrustpilotInvitationLinkResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/get-link', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {components} from \"../../lib/api.def\";\nimport {$apiClient} from \"../../lib/api\";\n\nexport const trustpilotSendInvitation = async (data: components['schemas']['SendTrustpilotInvitationDto']): Promise<components['schemas']['SendTrustpilotInvitationResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/send-invitation', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const yunoCreatePayment = async (dto: components['schemas']['YunoCreatePaymentDto']) => {\n\n const res = await $apiClient.POST(\n '/payments/yuno/create-payment',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n },\n body: dto\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\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}\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 {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {appendSession} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {createSession} from \"./browser/session/create\";\nimport {signIn} from \"./browser/crm-auth/sign-in\";\nimport {signOut} from \"./browser/crm-auth/sign-out\";\nimport {verify} from \"./browser/crm-auth/veirfy\";\nimport {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {trackEvent} from \"./browser/realtime/track-event\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {verifyEmail} from \"./browser/verify/email/verify-email\";\nimport {verifyPhone} from \"./browser/verify/phone/verify-phone\";\nimport {getSession} from \"./browser/session/get\";\nimport {getQuiz} from \"./browser/quiz/get\";\nimport {facebookS2S} from \"./browser/capi/facebook-s2s\";\nimport {createSession as createSessionPayments} from \"./browser/payments/create-session\";\nimport {paypalStartOrder} from \"./browser/payments/paypal/paypal-start-order\";\nimport {paypalCaptureOrder} from \"./browser/payments/paypal/paypal-capture-order\";\nimport {trustpilotGetLink} from \"./browser/trustpilot/get-link\";\nimport {trustpilotSendInvitation} from \"./browser/trustpilot/send-invintation\";\nimport {yunoCreatePayment} from \"./browser/payments/yuno/yuno-create-payment\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\n\nexport {SdkRemoteFunnel} from \"./browser/funnels/get\";\n\nconst browser = {\n capi: {\n facebook: facebookS2S,\n },\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append: appendSession,\n create: createSession,\n get: getSession,\n },\n crmAuth: {\n signIn,\n signOut,\n verify,\n },\n hooks: {\n useParamsLandingPage\n },\n realtime: {\n trackEvent\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n verify: {\n email: verifyEmail,\n phone: verifyPhone,\n },\n quiz: {\n get: getQuiz,\n },\n payments: {\n createSession: createSessionPayments,\n paypal: {\n startOrder: paypalStartOrder,\n captureOrder: paypalCaptureOrder,\n },\n yuno: {\n createPayment: yunoCreatePayment,\n }\n },\n trustpilot: {\n getLink: trustpilotGetLink,\n sendInvitation: trustpilotSendInvitation,\n }\n}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.47"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,uBAAuB;AAG9B,IAAM,WAAW;AAEV,IAAM,aAAa,kBAAyB;AAAA,EAC/C,SAAS;AAAA,EACT,SAAS;AAAA,IACL,eAAe;AAAA,EACnB;AACJ,CAAC;;;ACPM,IAAM,kBAAkB,CAAO,SAAiH;AACnJ,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,IAAI,KAAK;AAAA,EAC7B;AACA,SAAO,IAAI;AACf;;;AChBO,IAAM,gBAAgB,CAAO,SAA+G;AAC/I,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,IAAI,KAAK;AAAA,EAC7B;AACA,SAAO,IAAI;AACf;;;AChBO,IAAM,gBAAgB,CACzB,MACA,SACuD;AACvD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,MAAM;AAAA,UACF;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,SAAO,IAAI,KAAK;AACpB;;;ACzBA,SAAqB,cAAc,iBAAgB;;;ACEnD,IAAM,UAAU;AAAA,EACZ,MAAM;AAAA,EACN,MAAM;AACV;AAEA,SAAS,IAAI,MAAW;AACpB,SAAO,WAAY;AACf,WAAO,CAAC,KAAK,MAAM,MAAM,MAAM,UAAU,MAAM,KAAK,SAAS,CAAC;AAAA,EAClE;AACJ;AAEA,SAAS,OAAO,OAAY;AACxB,SAAO,SAAS;AACpB;AAEA,SAAS,GAAG,OAAY;AACpB,SAAO,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK;AAC/E;AAEA,SAAS,OAAO,OAAY;AACxB,SAAO,OAAO,KAAK,MAAM;AAC7B;AAEA,SAAS,OAAO,OAAY;AACxB,SAAO,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AACrD;AAEA,IAAM,KAAK;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AAAA,IACD,QAAQ,IAAI,MAAM;AAAA,IAClB,IAAI,IAAI,EAAE;AAAA,IACV,QAAQ,IAAI,MAAM;AAAA,IAClB,QAAQ,IAAI,MAAM;AAAA,EACtB;AACJ;AACA,IAAO,aAAQ;;;ACvCf,SAAS,6BAA6B,OAAY;AAC9C,MAAI,CAAC,WAAG,OAAO,KAAK,GAAG;AACnB,WAAO;AAAA,EACX;AAEA,QAAM,eAAe,MAAM,MAAM,GAAG,EAAE,IAAI,SAAU,GAAW;AAC3D,UAAMA,MAAK,EAAE,KAAK;AAElB,QAAIA,IAAG,SAAS,GAAG,GAAG;AAClB,YAAM,WAAWA,IAAG,MAAM,GAAG;AAC7B,UAAI,SAAS,WAAW,GAAG;AACvB,eAAO,SAAS,CAAC;AAAA,MACrB;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,CAAC;AAED,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,QAAI,WAAG,GAAG,aAAa,CAAC,CAAC,GAAG;AACxB,aAAO,aAAa,CAAC;AAAA,IACzB;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,YAAY,KAqBzB;AACC,MAAI,IAAI,SAAS;AACb,QAAI,WAAG,GAAG,IAAI,QAAQ,aAAa,CAAC,GAAG;AACnC,aAAO,IAAI,QAAQ,aAAa;AAAA,IACpC;AAEA,UAAM,gBAAgB,6BAA6B,IAAI,QAAQ,iBAAiB,CAAC;AAEjF,QAAI,WAAG,GAAG,IAAI,QAAQ,kBAAkB,CAAC,GAAG;AACxC,aAAO,IAAI,QAAQ,kBAAkB;AAAA,IACzC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,kBAAkB,CAAC,GAAG;AACxC,aAAO,IAAI,QAAQ,kBAAkB;AAAA,IACzC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,gBAAgB,CAAC,GAAG;AACtC,aAAO,IAAI,QAAQ,gBAAgB;AAAA,IACvC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,WAAW,CAAC,GAAG;AACjC,aAAO,IAAI,QAAQ,WAAW;AAAA,IAClC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,qBAAqB,CAAC,GAAG;AAC3C,aAAO,IAAI,QAAQ,qBAAqB;AAAA,IAC5C;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,aAAa,CAAC,GAAG;AACnC,aAAO,IAAI,QAAQ,aAAa;AAAA,IACpC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,eAAe,CAAC,GAAG;AACrC,aAAO,IAAI,QAAQ,eAAe;AAAA,IACtC;AAEA,QAAI,WAAG,GAAG,aAAa,GAAG;AACtB,aAAO;AAAA,IACX;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,SAAS,GAAG;AAC9B,aAAO,IAAI,QAAQ;AAAA,IACvB;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,qBAAqB,CAAC,GAAG;AAC3C,aAAO,IAAI,QAAQ,qBAAqB;AAAA,IAC5C;AAAA,EACJ;AAEA,MAAI,WAAG,OAAO,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,YAAY;AAC/C,QAAI,WAAG,GAAG,IAAI,WAAW,aAAa,GAAG;AACrC,aAAO,IAAI,WAAW;AAAA,IAC1B;AAEA,QAAI,WAAG,OAAO,IAAI,WAAW,MAAM,KAAK,CAAC,CAAC,IAAI,WAAW,UAAU,CAAC,CAAC,IAAI,WAAW,OAAO,iBAAiB,WAAG,GAAG,IAAI,WAAW,OAAO,aAAa,GAAG;AACpJ,aAAO,IAAI,WAAW,OAAO;AAAA,IACjC;AAAA,EACJ;AAEA,MAAI,WAAG,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,OAAO,iBAAiB,WAAG,GAAG,IAAI,OAAO,aAAa,GAAG;AACxG,WAAO,IAAI,OAAO;AAAA,EACtB;AAEA,MAAI,WAAG,OAAO,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,KAAK,iBAAiB,WAAG,GAAG,IAAI,KAAK,aAAa,GAAG;AAChG,WAAO,IAAI,KAAK;AAAA,EACpB;AAEA,MAAI,WAAG,OAAO,IAAI,cAAc,KAAK,CAAC,CAAC,IAAI,kBAAkB,WAAG,OAAO,IAAI,eAAe,QAAQ,KAAK,CAAC,CAAC,IAAI,eAAe,YAAY,CAAC,CAAC,IAAI,eAAe,SAAS,YAAY,WAAG,GAAG,IAAI,eAAe,SAAS,QAAQ,GAAG;AAC3N,WAAO,IAAI,eAAe,SAAS;AAAA,EACvC;AAEA,MAAI,IAAI,SAAS;AACb,QAAI,WAAG,GAAG,IAAI,QAAQ,gBAAgB,CAAC,GAAG;AACtC,aAAO,IAAI,QAAQ,gBAAgB;AAAA,IACvC;AAAA,EACJ;AAEA,SAAO;AACX;;;AC/HO,IAAM,wBAAwB;AAC9B,IAAM,yBAAyB;AAC/B,IAAM,uBAAuB;;;ACgB7B,IAAM,qBAAqB,MAAM;AACpC,SAAO;AAAA,IACH,gBAAgB;AAAA,IAChB,iBAAiB,GAAG,QAAQ,IAAI,WAAW,GAAG,YAAY,MAAM,SAAS,GAAG,QAAQ,IAAI,eAAe,KAAK;AAAA,EAChH;AACJ;;;AJnBA,OAAOC,YAAW;;;AKJX,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;;;ACD/B,OAAO,WAAW;;;ACAX,IAAM,gBAAgB,MAAM;AAC/B,SAAO,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,qBAAqB;AAC7E;;;ADGO,IAAM,eAAe,MAAkE;AAC1F,QAAM,iBAAiB,MAAM,IAAI,eAAe;AAEhD,MAAI,gBAAgB;AAChB,WAAO;AAAA,EACX,OAAO;AACH,QAAI;AACA,YAAM,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,kBAAkB;AAAA,QACxD,SAAS;AAAA,UACL,gBAAgB;AAAA,UAChB,iBAAiB,GAAG,QAAQ,IAAI,eAAe;AAAA,QACnD;AAAA,MACJ,CAAC;AACD,UAAI,UAAuD,CAAC;AAC5D,UAAI,IAAI,IAAI;AACR,kBAAU,MAAM,IAAI,KAAK;AAAA,MAC7B;AACA,YAAM,IAAI,iBAAiB,SAAS,UAAU;AAE9C,aAAO;AAAA,IACX,SAAS,GAAG;AACR,aAAO,CAAC;AAAA,IACZ;AAAA,EACJ;AACJ;;;AE7BO,IAAM,WAAW,CAACC,SAAgB,iBAAyB;AAC9D,SAAOA,QAAO,OAAO,CAAC,KAAK,cAAc;AACrC,IAAAA,UAASA,QAAO,UAAU,CAAC;AAAA,EAC/B;AAEA,SAAOA,QAAO,OAAOA,QAAO,SAAS,CAAC,KAAK,cAAc;AACrD,IAAAA,UAASA,QAAO,UAAU,GAAGA,QAAO,SAAS,CAAC;AAAA,EAClD;AAEA,SAAOA;AACX;;;ACNO,IAAM,sBAAsB,CAAO,OAA6B,eAA7B,KAA6B,WAA7B,EAAC,KAAI,GAAwB;AAEnE,QAAM,SAAS,MAAM,aAAa;AAGlC,QAAM,SAAS,OAAO,OAAO,OAAK,EAAE,MAAM,EACrC,IAAI,CAAC,MAAM,IAAI,SAAU,EAAE,MAAM,EAAE,MAAM,IAAK,GAAG,CAAC,EAAE;AAEzD,QAAM,aAAa,OAAO,QAAQ,IAAI;AACtC,MAAI,cAAc,GAAG;AACjB,WAAO,OAAO,UAAU;AAAA,EAC5B;AACA,SAAO;AACX;AAEO,IAAM,qBAAqB,CAAO,OAAgC,eAAhC,KAAgC,WAAhC,EAAC,IAAG,GAA4B;AACrE,SAAO,MAAM,oBAAoB,EAAC,MAAM,IAAI,QAAQ,SAAQ,CAAC;AACjE;;;ACZO,IAAM,wBAAwB,CAAC,SAAoD;AACtF,QAAM,cAAc,uBAAuB,IAAI;AAE/C,QAAM,SAAQ,oBAAI,KAAK,GAAE,QAAQ;AACjC,QAAM,WAAW,QAAQ;AAEzB,MAAI,eAAe,YAAY;AAAA,IAC3B,CAAC,MAAM,EAAE,MAAM,SAAS,YAAY,EAAE,MAAM,SAAS;AAAA,EACzD;AACA,MAAI,CAAC,cAAc;AACf,mBAAe,YAAY,CAAC;AAAA,EAChC;AACA,SAAO;AACX;AAGO,IAAM,yBAAyB,CAAC,SAA6E;AAChH,QAAM,SAAS,KAAK,SAAS,KAAK,SAAS,CAAC;AAC5C,SAAO,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS;AACjC,UAAM,aAAa,KACd,MAAM,GAAG,CAAC,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,EAClB,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAE9B,WAAO,iCACA,OADA;AAAA,MAEH,OAAO;AAAA,QACH,OAAO;AAAA,QACP,QAAQ,aAAa,KAAK;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;;;AVtBO,IAAM,aAAa,CACtB,KACA,YACC;AACD,MAAI,IAAI,QAAQ,SAAS,WAAW,kBAAkB,GAAG;AACrD,IAAAC,OAAM,IAAI,iBAAiB;AAC3B,IAAAA,OAAM,IAAI,eAAe;AAEzB,UAAM,MAAM,aAAa,KAAK,EAAC,IAAG,oBAAI,KAAK,GAAE,QAAQ,EAAC,CAAC;AAEvD,QAAI,QAAQ,OAAO,oCAAoC,MAAM;AAC7D,QAAI,QAAQ,OAAO,+BAA+B,GAAG;AACrD,QAAI,QAAQ,OAAO,gCAAgC,2BAA2B;AAC9E,QAAI,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAEA,OAAI,mCAAS,cAAa,IAAI,QAAQ,SAAS,WAAW,oBAAoB,GAAG;AAC7E,UAAM,MAAM,aAAa,KAAK;AAAA,MAC1B,SAAS;AAAA,MAET,MAAM,QAAQ;AAAA,IAClB,CAAC;AACD,QAAI,QAAQ,OAAO,oCAAoC,MAAM;AAC7D,QAAI,QAAQ,OAAO,+BAA+B,GAAG;AACrD,QAAI,QAAQ,OAAO,gCAAgC,2BAA2B;AAC9E,QAAI,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAGA,QAAM,QAAQ,MAAM,mBAAmB,EAAC,IAAG,CAAC;AAC5C,MAAI,OAAO;AACP,UAAM,eAAe,sBAAsB,KAAK;AAEhD,WAAO,aAAa;AAAA,MAChB,IAAI,IAAI,IAAI,SAAS,aAAa,KAAK,GAAG,CAAC,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI,GAAG;AAAA,IAC/E;AAAA,EACJ;AAEA,MAAI,IAAI,QAAQ,SAAS,WAAW,mBAAmB,GAAG;AACtD,QAAI,IAAI,QAAQ,aAAa,oCAAoC;AAC7D,YAAM,iBAAiBA,OAAM,IAAI,iBAAiB;AAClD,UAAI,gBAAgB;AAChB,cAAM,MAAM,aAAa,KAAK,cAAc;AAC5C,YAAI,QAAQ,IAAI,WAAW,KAAK;AAChC,eAAO;AAAA,MACX,OAAO;AACH,cAAM,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,IAAI,QAAQ,SAAS,QAAQ,qBAAqB,EAAE,CAAC,IAAI;AAAA,UACxG,SAAS;AAAA,YACL,eAAe,GAAG,QAAQ,IAAI,eAAe;AAAA,UACjD;AAAA,QACJ,CAAC;AACD,cAAM,eAAe,MAAM,UAAU,KAAK;AAC1C,QAAAA,OAAM,IAAI,mBAAmB,cAAc,UAAU;AAAA,MACzD;AAAA,IACJ;AAEA,QAAI,WAAW,IAAI,QAAQ,MAAM;AAEjC,UAAM,YAAY,IAAI,IAAI,cAAc,CAAC;AACzC,UAAM,iBAAiB,IAAI,QAAQ,IAAI,OAAO;AAC9C,mBAAe,IAAI,QAAQ,UAAU,QAAQ;AAC7C,mBAAe,IAAI,eAAe,GAAG,QAAQ,IAAI,eAAe,EAAE;AAElE,QAAI,IAAI,QAAQ,SAAS,SAAS,YAAY,GAAG;AAC7C,YAAMC,MAAK,YAAY,EAAC,SAAS,OAAO,YAAY,IAAI,OAAO,EAAC,CAAC;AACjE,YAAM,EAAC,QAAQ,SAAAC,UAAS,GAAE,IAAI,UAAU,GAAG;AAC3C,qBAAe,IAAI,eAAeD,GAAE;AACpC,qBAAe,IAAI,QAAQ,GAAG,GAAG,IAAI,MAAM,GAAG,OAAO,EAAE;AACvD,qBAAe,IAAI,aAAa,GAAGC,SAAQ,IAAI,MAAMA,SAAQ,OAAO,EAAE;AACtE,qBAAe,IAAI,YAAY,OAAO,OAAO,OAAO,OAAO,GAAG;AAC9D,YAAM,iBAAiB,IAAI,QAAQ,IAAI,YAAY;AACnD,UAAI,gBAAgB;AAChB,uBAAe,IAAI,cAAc,iDAAgB,KAAK;AAAA,MAC1D;AAAA,IACJ;AACA,QAAI,IAAI,QAAQ,aAAa,6BAA6B;AACtD,YAAMD,MAAK,YAAY,EAAC,SAAS,OAAO,YAAY,IAAI,OAAO,EAAC,CAAC;AACjE,YAAM,EAAC,GAAE,IAAI,UAAU,GAAG;AAC1B,qBAAe,IAAI,eAAeA,GAAE;AACpC,qBAAe,IAAI,gBAAgB,EAAE;AAAA,IACzC;AAEA,aAAS,WAAW,UAAU;AAC9B,aAAS,WAAW,UAAU;AAC9B,aAAS,OAAO,UAAU;AAC1B,aAAS,WAAW,SAAS,SAAS,QAAQ,uBAAuB,EAAE;AAEvE,WAAO,aAAa,QAAQ,UAAU;AAAA,MAClC,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AAGA,MAAI,IAAI,QAAQ,aAAa,uBAAuB;AAChD,UAAM,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,QACI,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,MAAM,IAAI,KAAK,CAAC;AAAA,QACrC,SAAS,mBAAmB;AAAA,MAChC;AAAA,IACJ;AACA,UAAM,UAAU,MAAM,IAAI,KAAK;AAE/B,UAAM,SAAS,aAAa,KAAK,OAAO;AACxC,QAAI,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,QAAQ,SAAS,QAAQ,WAAW,aAAa;AACvE,aAAO,QAAQ,IAAI;AAAA,QACf,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,QAAQ,KAAK,KAAK,KAAK;AAAA,QACvB,UAAU;AAAA,MACd,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,QAAQ,aAAa,sBAAsB;AAC/C,UAAM,cAAc,IAAI,QAAQ,IAAI,OAAO;AAC3C,QAAI,CAAC,eAAe,CAAC,YAAY,OAAO;AACpC,aAAO,aAAa,KAAK,EAAC,SAAS,EAAC,CAAC;AAAA,IACzC;AAEA,UAAM,UAAU;AAAA,MACZ,MAAM;AAAA,QACF,OAAO,YAAY;AAAA,MACvB;AAAA,IACJ;AACA,UAAM,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,QACI,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,OAAO;AAAA,QAC5B,SAAS,mBAAmB;AAAA,MAChC;AAAA,IACJ;AACA,UAAM,UAAU,MAAM,IAAI,KAAK;AAE/B,UAAM,SAAS,aAAa,KAAK,OAAO;AACxC,QAAI,EAAE,QAAQ,WAAW,QAAQ,KAAK,IAAI;AACtC,aAAO,QAAQ,OAAO,OAAO;AAAA,IACjC;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,QAAQ,aAAa,wBAAwB;AACjD,UAAM,MAAM,aAAa,KAAK,EAAC,SAAS,EAAC,CAAC;AAC1C,QAAI,QAAQ,OAAO,OAAO;AAC1B,WAAO;AAAA,EACX;AACJ;;;AW/KO,IAAM,YAAY,CAAC,SAAiB;AACvC,QAAM,QAAQ,KAAK,SAAS,MAAM;AAClC,QAAM,QAAQ,MAAM,MAAM,KAAK,IAAI,GAAG;AACtC,MAAI,MAAM,WAAW,GAAG;AACpB,UAAM,MAAM,MAAM,IAAI;AACtB,QAAI,KAAK;AACL,aAAO,IAAI,MAAM,GAAG,EAAE,MAAM;AAAA,IAChC;AAAA,EACJ;AACA,SAAO;AACX;;;ACGO,IAAM,gBAAgB,CAAO,OAE/B;AAF+B,eAAC,YAAU,OAAO,UAAU,KAbhE,IAaoC,IAAqC,iBAArC,IAAqC,CAApC,YAAU,SAAO,YAAU;AAG5D,QAAM,kBAAkB,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAClE,QAAM,SAAS,OAAO,YAAY,gBAAgB,QAAQ,CAAC;AAC3D,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,SAAS;AAC/B,QAAM,OAAO,OAAO,SAAS;AAE7B,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,MACA,MAAM,iCACC,OADD;AAAA,QAEF;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA,aAAa,UAAU,SAAS;AAAA,QAChC,eAAe,UAAU,YAAY;AAAA,QACrC,WAAW,iCACJ,KAAK,YADD;AAAA,UAEP;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM,OAAO,OAAO;AAAA,QACxB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,SAAO,IAAI,KAAK;AACpB;;;ACtDO,IAAM,uBAAuB,CAAC,SAAc;AAC/C,SAAO;AAAA,IACH,QAAQ;AAAA,IACR,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,SAAS;AAAA,MACL,gBAAgB;AAAA,IACpB;AAAA,EACJ;AACJ;;;ACLO,IAAM,SAAS,CAAO,SAA4B;AACrD,QAAM,MAAM,MAAM;AAAA,IACd;AAAA,IACA,qBAAqB,IAAI;AAAA,EAC7B;AACA,SAAO,MAAM,IAAI,KAAK;AAC1B;;;ACNO,IAAM,UAAU,MAAqC;AACxD,QAAM,MAAM,MAAM;AAAA,IACd;AAAA,IACA,qBAAqB,CAAC,CAAC;AAAA,EAC3B;AACA,SAAO,MAAM,IAAI,KAAK;AAC1B;;;ACNO,IAAM,SAAS,MAA0B;AAC5C,QAAM,MAAM,MAAM;AAAA,IACd;AAAA,IACA,qBAAqB,CAAC,CAAC;AAAA,EAC3B;AACA,SAAO,MAAM,IAAI,KAAK;AAC1B;;;ACTA,SAAQ,iBAAgB;AAiBjB,IAAM,uBAAuB,MAAiC;AAjBrE;AAkBI,QAAM,SAAS,UAA6B;AAE5C,QAAM,UAAS,YAAO,YAAP,YAAkB,QAAQ,YAAY;AACrD,QAAM,YAAW,YAAO,aAAP,YAAmB,KAAK,YAAY;AAErD,SAAO;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,MAAM;AAAA,MACF,MAAM,IAAI,KAAK,IAAI,OAAO;AAAA,MAC1B,YAAY,UAAU,UAAU,YAAY,MAAM,KAAK,IAAI,KAAK,IAAI,OAAO;AAAA,IAC/E;AAAA,EACJ;AACJ;;;ACjCO,IAAM,eAAe,CAAC,WAAmB,YAAkB;AAC9D,MAAI;AAEA,WAAO,UAAU,KAAK;AAAA,MAClB,OAAO;AAAA,OACJ,QACN;AAAA,EACL,SAAS,GAAG;AAAA,EACZ;AACJ;;;ACSO,IAAM,aAAa,CACtB,MACA,MACA,YACC;AACD,MAAI;AACA,UAAM,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,QAAQ;AACvC,QAAI,CAAC,QAAQ;AACT,YAAM,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,KAAK,QAAQ,KAAK;AAC3D,mBAAa,MAAM,SAAS;AAAA,IAChC;AAEA,UAAM,kBAAkB,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAClE,UAAM,SAAS,OAAO,YAAY,gBAAgB,QAAQ,CAAC;AAE3D,UAAM,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,KAAK,SAC7D,QAAQ,KAAK,SACb;AAEJ,UAAM,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,KAAK,WAC3D,QAAQ,KAAK,WACb,OAAO,SAAS,SAAS,MAAM,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,KAAK,GAAG;AAErE,UAAM,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,KAAK,UAC1D,QAAQ,KAAK,UACb,OAAO,SAAS;AAEpB,UAAM,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,KAAK,SACzD,QAAQ,KAAK,SACb,OAAO,SAAS;AAEpB,UAAM,YAA4D;AAAA,MAC9D;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,MAAM,mCAAS;AAAA,MACf,WAAW,mCAAS;AAAA,IACxB;AAEA,UAAM,WAAW,KAAK,gCAAgC;AAAA,MAClD,MAAM;AAAA,IACV,CAAC;AAAA,EACL,SAAS,GAAG;AAAA,EACZ;AACJ;;;AC5CO,IAAM,aAAa,MAAwC;AAC9D,QAAM,MAAM,MAAM,WAAW,IAAI,mBAAmB;AAAA,IAChD,QAAQ;AAAA,MACJ,QAAQ;AAAA,QACJ,eAAe;AAAA,MACnB;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,MAAI,CAAC,OAAO,CAAC,IAAI,KAAM,QAAO,CAAC;AAE/B,QAAM,aAA2D,IAAI;AACrE,QAAM,SAA4B,CAAC;AACnC,aAAW,UAAU,YAAY;AAC7B,WAAO,KAAK;AAAA,MACR,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MAEjB,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,MAEhB,kBAAkB,OAAO;AAAA,MACzB,kBAAkB,OAAO;AAAA,MACzB,oBAAoB,OAAO;AAAA,MAC3B,mBAAmB,OAAO;AAAA,MAC1B,sBAAsB,OAAO;AAAA,MAC7B,uBAAuB,OAAO;AAAA,MAC9B,oBAAoB,OAAO;AAAA,MAE3B,SAAS,OAAO;AAAA,MAChB,eAAe,OAAO;AAAA,IAC1B,CAAC;AAAA,EACL;AACA,SAAO;AACX;;;ACrDO,IAAM,cAAc,CAAO,UAAkB;AAChD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,OAAO;AAAA,UACH;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,IAAI;AACf;;;ACfO,IAAM,cAAc,CAAO,UAAkB;AAChD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,OAAO;AAAA,UACH;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,IAAI;AACf;;;ACdO,IAAM,aAAa,CACtB,SACuD;AACvD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,MAAM;AAAA,UACF;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,SAAO,IAAI,KAAK;AACpB;;;ACpBO,IAAM,UAAU,CACnB,SACoD;AACpD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,MAAM;AAAA,UACF;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,SAAO,IAAI,KAAK;AACpB;;;ACpBO,IAAM,cAAc,CAAO,SAA8D;AAC5F,QAAM,WAAW,KAAK,kCAAkC;AAAA,IACpD,QAAQ;AAAA,MACJ,QAAQ;AAAA,QACJ,eAAe;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AACD,SAAO,EAAC,SAAS,KAAI;AACzB;;;ACVO,IAAME,iBAAgB,CACzB,SACC;AACD,QAAM,MAAM,MAAM,WAAW,KAAK,4BAA4B;AAAA,IAC1D,QAAQ;AAAA,MACJ,QAAQ;AAAA,QACJ,eAAe;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AACD,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,IAAI;AACf;;;AChBO,IAAM,mBAAmB,CAAO,SAAiB;AAEpD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,QACA,MAAM;AAAA,UACF,IAAI;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AAAA,EAAC;AACL,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,IAAI;AAEf;;;ACnBO,IAAM,qBAAqB,CAAO,SAAiB;AACtD,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,QACA,MAAM;AAAA,UACF,IAAI;AAAA,QACR;AAAA,MACJ;AAAA,IACJ;AAAA,EAAC;AACL,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,IAAI;AACf;;;AChBO,IAAM,oBAAoB,CAAO,SAAkJ;AACtL,QAAM,MAAM,MAAM,WAAW,KAAK,wBAAwB;AAAA,IACtD,QAAQ;AAAA,MACJ,QAAQ;AAAA,QACJ,eAAe;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AACD,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,IAAI;AACf;;;ACbO,IAAM,2BAA2B,CAAO,SAAsI;AACjL,QAAM,MAAM,MAAM,WAAW,KAAK,+BAA+B;AAAA,IAC7D,QAAQ;AAAA,MACJ,QAAQ;AAAA,QACJ,eAAe;AAAA,MACnB;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,EACV,CAAC;AACD,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,IAAI;AACf;;;ACbO,IAAM,oBAAoB,CAAO,QAAuD;AAE3F,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,MACI,QAAQ;AAAA,QACJ,QAAQ;AAAA,UACJ,eAAe;AAAA,QACnB;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EAAC;AACL,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,SAAO,IAAI;AAEf;;;ACdA,IAAM,kBAAqC;AAAA,EACvC,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,oBAAoB;AACxB;AAQO,IAAM,eAAe,CAAO,OAEuC,eAFvC,KAEuC,WAFvC;AAAA,EACI;AAAA,EAAO;AAAA,EAAS;AACpB,GAAuC;AACtE,QAAM,cAAc,MAAM,WAAW;AAErC,QAAM,sBAAsB,YAAY,OAAO,CAAC,MAAM;AAClD,SACK,EAAE,aAAa,WAAW,EAAE,aAAa,WACzC,EAAE,YAAY,SAAS,EAAE,YAAY,QACxC;AACE,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX,CAAC;AACD,MAAI,oBAAoB,SAAS,GAAG;AAChC,UAAM,YAA6B,KAAK;AAAA,MACpC,KAAK,UAAU,oBAAoB,oBAAoB,SAAS,CAAC,CAAC;AAAA,IACtE;AACA,QAAI,cAAc;AACd,YAAM,OAAO,OAAO,KAAK,eAAe;AACxC,iBAAW,OAAO,MAAM;AACpB,YAAI,aAAa,IAAI,GAAG,GAAG;AAEvB,oBAAU,GAAG,IAAI,aAAa,IAAI,GAAG;AAAA,QACzC;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACA,SAAO,iCACA,kBADA;AAAA,IAEH,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACJ;AACJ;;;ACjCA,IAAM,UAAU;AAAA,EACZ,MAAM;AAAA,IACF,UAAU;AAAA,EACd;AAAA,EACA,MAAM;AAAA,IACF;AAAA,IACA;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,EACT;AAAA,EACA,SAAS;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,OAAO;AAAA,IACH;AAAA,EACJ;AAAA,EACA,UAAU;AAAA,IACN;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACL,KAAK;AAAA,IACL;AAAA,EACJ;AAAA,EACA,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACF,KAAK;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACN,eAAeC;AAAA,IACf,QAAQ;AAAA,MACJ,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB;AAAA,IACA,MAAM;AAAA,MACF,eAAe;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,YAAY;AAAA,IACR,SAAS;AAAA,IACT,gBAAgB;AAAA,EACpB;AACJ;AAEA,IAAM,SAAS;AAAA,EACX;AACJ;AAOA,IAAI,OAAO,WAAW,aAAa;AAE/B,SAAO,UAAU;AACrB;","names":["ip","cache","string","cache","ip","browser","createSession","createSession"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/api.ts","../src/browser/mail/send-to-recipient.ts","../src/browser/mail/send-to-support.ts","../src/browser/session/append.ts","../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/funnels/get-capibox-templates.ts","../src/browser/_utils/browser-get-cookie.ts","../src/browser/session/create.ts","../src/browser/_utils/browser-fetch-utils.ts","../src/browser/crm-auth/sign-in.ts","../src/browser/crm-auth/sign-out.ts","../src/browser/crm-auth/veirfy.ts","../src/browser/hooks/useParamsLandingPage.ts","../src/browser/ga/ga-track-event.ts","../src/browser/realtime/track-event.ts","../src/browser/funnels/get.ts","../src/browser/verify/email/verify-email.ts","../src/browser/verify/phone/verify-phone.ts","../src/browser/session/get.ts","../src/browser/quiz/get.ts","../src/browser/capi/facebook-s2s.ts","../src/browser/payments/create-session.ts","../src/browser/payments/paypal/paypal-start-order.ts","../src/browser/payments/paypal/paypal-capture-order.ts","../src/browser/trustpilot/get-link.ts","../src/browser/trustpilot/send-invintation.ts","../src/browser/payments/yuno/yuno-create-payment.ts","../src/browser/funnels/get-templates.ts","../src/index.ts"],"sourcesContent":["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 {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToRecipient = async (data: components['schemas']['SendMailToRecipientDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-recipient',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {components} from '../../lib/api.def'\nimport {$apiClient} from \"../../lib/api\";\n\nexport const sendToSupport = async (data: components['schemas']['SendMailToSupportDto']): Promise<components['schemas']['SendMailResponseDto']> => {\n const res = await $apiClient.POST(\n '/mail/send-to-support',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: data,\n }\n )\n if (!res.data) {\n throw new Error(res.error)\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const appendSession = async (\n uuid: string,\n body: components['schemas']['AppendSessionDto'],\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.PUT(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {NextRequest, NextResponse, userAgent} from \"next/server\";\nimport {getClientIp} from \"./_utils/client-ip\";\nimport {CRM_AUTH_SIGN_IN_PATH, CRM_AUTH_SIGN_OUT_PATH, CRM_AUTH_VERIFY_PATH} from \"../browser/crm-auth/path\";\nimport {serverProxyHeaders} from \"./_utils/server-fetch-utils\";\nimport cache from 'memory-cache';\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"./cache/cache\";\nimport {getSplitItemForReq} from \"./split/get-split-item\";\nimport {trimChar} from \"./_utils/trim-char\";\nimport {getSplitItemUrlWinner} from \"./split/get-split-winner\";\nimport {getBackendUrl} from \"./_utils/backend-url\";\nimport {getCapiboxTemplates} from \"../browser/funnels/get-capibox-templates\";\n\ntype Templates = {\n [key: string]: string[]\n}\n\ntype Options = {\n templates?: Templates,\n}\n\nexport const middleware = async (\n req: NextRequest,\n options?: Options,\n) => {\n if (req.nextUrl.pathname.startsWith('/app/clear-cache')) {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n\n const res = NextResponse.json({s: new Date().getTime()})\n\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n return res;\n }\n\n if (options?.templates && req.nextUrl.pathname.startsWith('/app/get-templates')) {\n const res = NextResponse.json({\n success: true,\n\n data: options.templates,\n })\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n\n return res\n }\n\n // SPLIT TEST\n const input = await getSplitItemForReq({req});\n if (input) {\n const currentSplit = getSplitItemUrlWinner(input);\n\n return NextResponse.redirect(\n new URL(`/${trimChar(currentSplit.url, '/')}${req.nextUrl.search}`, req.url),\n )\n }\n\n if (req.nextUrl.pathname.startsWith('/api-client-proxy')) {\n if (req.nextUrl.pathname === '/api-client-proxy/funnels/funnel') {\n const capiboxTemplates = await getCapiboxTemplates();\n const res = NextResponse.json(capiboxTemplates);\n res.headers.set('X-Cache', 'HIT');\n return res;\n }\n\n let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(getBackendUrl())\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('project-key', `${process.env.CAPIBOX_API_KEY}`)\n\n if (req.nextUrl.pathname.includes('/realtime/')) {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {device, browser, os} = userAgent(req)\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-os', `${os.name} / ${os.version}`)\n requestHeaders.set('x-browser', `${browser.name} / ${browser.version}`)\n requestHeaders.set('x-device', device.type ? device.type : '-')\n const anUuidV3Cookie = req.cookies.get('an_uuid_v3');\n if (anUuidV3Cookie) {\n requestHeaders.set('x-realtime', anUuidV3Cookie?.value)\n }\n }\n if (req.nextUrl.pathname === '/api-client-proxy/session') {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {ua} = userAgent(req);\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ua)\n }\n\n urlClone.protocol = targetUrl.protocol\n urlClone.hostname = targetUrl.hostname\n urlClone.port = targetUrl.port\n urlClone.pathname = urlClone.pathname.replace(/^\\/api-client-proxy/, '');\n\n return NextResponse.rewrite(urlClone, {\n headers: requestHeaders,\n })\n }\n\n // crm auth\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_IN_PATH) {\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/sign-in',\n {\n method: 'POST',\n body: JSON.stringify(await req.json()),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!!resJson.action && !!resJson.token && resJson.action === 'logged-in') {\n result.cookies.set({\n name: \"token\",\n value: resJson.token,\n maxAge: 60 * 60 * 24 * 30,\n httpOnly: true,\n });\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_VERIFY_PATH) {\n const tokenCookie = req.cookies.get('token')\n if (!tokenCookie || !tokenCookie.value) {\n return NextResponse.json({success: 0})\n }\n\n const payload = {\n data: {\n token: tokenCookie.value,\n }\n }\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/check',\n {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!('id' in resJson && resJson.id > 0)) {\n result.cookies.delete(\"token\");\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_OUT_PATH) {\n const res = NextResponse.json({success: 1});\n res.cookies.delete(\"token\");\n return res;\n }\n}","\"use strict\";\n\nconst regexes = {\n ipv4: /^(?:(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$/,\n ipv6: /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i\n};\n\nfunction not(func: any) {\n return function () {\n return !func.apply(null, Array.prototype.slice.call(arguments));\n };\n}\n\nfunction existy(value: any) {\n return value != null;\n}\n\nfunction ip(value: any) {\n return existy(value) && regexes.ipv4.test(value) || regexes.ipv6.test(value);\n}\n\nfunction object(value: any) {\n return Object(value) === value;\n}\n\nfunction string(value: any) {\n return Object.prototype.toString.call(value) === '[object String]';\n}\n\nconst is = {\n existy: existy,\n ip: ip,\n object: object,\n string: string,\n not: {\n existy: not(existy),\n ip: not(ip),\n object: not(object),\n string: not(string)\n }\n};\nexport default is;\n","import is from \"./is\";\n\nfunction getClientIpFromXForwardedFor(value: any) {\n if (!is.existy(value)) {\n return null;\n }\n\n const forwardedIps = value.split(',').map(function (e: string) {\n const ip = e.trim();\n\n if (ip.includes(':')) {\n const splitted = ip.split(':');\n if (splitted.length === 2) {\n return splitted[0];\n }\n }\n return ip;\n });\n\n for (let i = 0; i < forwardedIps.length; i++) {\n if (is.ip(forwardedIps[i])) {\n return forwardedIps[i];\n }\n }\n\n return null;\n}\n\nexport function getClientIp(req: {\n headers?: {\n [key: string]: string\n },\n connection?: {\n remoteAddress?: string,\n socket?: {\n remoteAddress?: string,\n },\n },\n socket?: {\n remoteAddress?: string,\n },\n info?: {\n remoteAddress?: string,\n },\n requestContext?: {\n identity?: {\n sourceIp?: string,\n }\n },\n}) {\n if (req.headers) {\n if (is.ip(req.headers['x-client-ip'])) {\n return req.headers['x-client-ip'];\n }\n\n const xForwardedFor = getClientIpFromXForwardedFor(req.headers['x-forwarded-for']);\n\n if (is.ip(req.headers['cf-connecting-ip'])) {\n return req.headers['cf-connecting-ip'];\n }\n\n if (is.ip(req.headers['fastly-client-ip'])) {\n return req.headers['fastly-client-ip'];\n }\n\n if (is.ip(req.headers['true-client-ip'])) {\n return req.headers['true-client-ip'];\n }\n\n if (is.ip(req.headers['x-real-ip'])) {\n return req.headers['x-real-ip'];\n }\n\n if (is.ip(req.headers['x-cluster-client-ip'])) {\n return req.headers['x-cluster-client-ip'];\n }\n\n if (is.ip(req.headers['x-forwarded'])) {\n return req.headers['x-forwarded'];\n }\n\n if (is.ip(req.headers['forwarded-for'])) {\n return req.headers['forwarded-for'];\n }\n\n if (is.ip(xForwardedFor)) {\n return xForwardedFor;\n }\n\n if (is.ip(req.headers.forwarded)) {\n return req.headers.forwarded;\n }\n\n if (is.ip(req.headers['x-appengine-user-ip'])) {\n return req.headers['x-appengine-user-ip'];\n }\n }\n\n if (is.existy(req.connection) && !!req.connection) {\n if (is.ip(req.connection.remoteAddress)) {\n return req.connection.remoteAddress;\n }\n\n if (is.existy(req.connection.socket) && !!req.connection.socket && !!req.connection.socket.remoteAddress && is.ip(req.connection.socket.remoteAddress)) {\n return req.connection.socket.remoteAddress;\n }\n }\n\n if (is.existy(req.socket) && !!req.socket && !!req.socket.remoteAddress && is.ip(req.socket.remoteAddress)) {\n return req.socket.remoteAddress;\n }\n\n if (is.existy(req.info) && !!req.info && !!req.info.remoteAddress && is.ip(req.info.remoteAddress)) {\n return req.info.remoteAddress;\n }\n\n if (is.existy(req.requestContext) && !!req.requestContext && is.existy(req.requestContext.identity) && !!req.requestContext.identity && !!req.requestContext.identity.sourceIp && is.ip(req.requestContext.identity.sourceIp)) {\n return req.requestContext.identity.sourceIp;\n }\n\n if (req.headers) {\n if (is.ip(req.headers['Cf-Pseudo-IPv4'])) {\n return req.headers['Cf-Pseudo-IPv4'];\n }\n }\n\n return \"127.0.0.2\";\n}\n\n","export const CRM_AUTH_SIGN_IN_PATH = '/api/crm-auth/sign-in';\nexport const CRM_AUTH_SIGN_OUT_PATH = '/api/crm-auth/sign-out';\nexport const CRM_AUTH_VERIFY_PATH = '/api/crm-auth/verify';","import {NextRequest} from \"next/server\";\n// import {endpoint} from \"@capibox/bridge-interface\";\n\n// export const serverProxyPostRequest = async (req: NextRequest) => {\n// const res = await fetch(\n// req.nextUrl.pathname.replace(\n// endpoint.MAIN_ENDPOINT,\n// 'https://api.capibox.com'\n// ),\n// {\n// method: 'POST',\n// body: JSON.stringify(await req.json()),\n// headers: serverProxyHeaders(),\n// }\n// )\n// return await res.json();\n// }\n\nexport const serverProxyHeaders = () => {\n return {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_ENV}`.toLowerCase() === 'prod' ? `${process.env.CAPIBOX_API_KEY}` : 'dev'\n }\n}","export const CACHE_KEY_FUNNELS = 'funnels-data';\nexport const CACHE_KEY_SPLIT = 'split-data';","import cache from \"memory-cache\";\nimport {CACHE_KEY_SPLIT} from \"../cache/cache\";\nimport {components} from \"../../lib/api.def\";\nimport {getBackendUrl} from \"../_utils/backend-url\";\n\nexport const getSplitData = async (): Promise<components['schemas']['SplitResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_SPLIT);\n\n if (cachedResponse) {\n return cachedResponse;\n } else {\n try {\n const res = await fetch(`${getBackendUrl()}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n let resJson: components['schemas']['SplitResponseDto'][] = [];\n if (res.ok) {\n resJson = await res.json();\n }\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n } catch (e) {\n return [];\n }\n }\n};","export const getBackendUrl = () => {\n return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : 'https://api.capibox.com';\n}","export const trimChar = (string: string, charToRemove: string) => {\n while (string.charAt(0) == charToRemove) {\n string = string.substring(1)\n }\n\n while (string.charAt(string.length - 1) == charToRemove) {\n string = string.substring(0, string.length - 1)\n }\n\n return string\n}\n","import {getSplitData} from \"./get-split-data\";\nimport {NextRequest} from \"next/server\";\nimport {trimChar} from \"../_utils/trim-char\";\n\nexport const getSplitItemForPath = async ({path}: { path: string }) => {\n\n const splits = await getSplitData();\n\n // TODO make url required\n const inputs = splits.filter(i => i.active)\n .map((i) => `/${trimChar((i.url ? i.url : ''), '/')}`)\n\n const inputIndex = inputs.indexOf(path)\n if (inputIndex >= 0) {\n return splits[inputIndex]\n }\n return undefined;\n}\n\nexport const getSplitItemForReq = async ({req}: { req: NextRequest }) => {\n return await getSplitItemForPath({path: req.nextUrl.pathname});\n}","import {components} from \"../../lib/api.def\";\n\nexport type SplitItemUrlWithRange = {\n range: {\n start: number,\n finish: number,\n }\n} & components['schemas']['SplitItemDto'];\n\nexport const getSplitItemUrlWinner = (item: components['schemas']['SplitResponseDto']) => {\n const splitValues = fillSplitItemUrlsRange(item);\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = splitValues[0]\n }\n return currentSplit;\n}\n\n// TODO make splits required\nexport const fillSplitItemUrlsRange = (item: components['schemas']['SplitResponseDto']): SplitItemUrlWithRange[] => {\n const splits = item.splits ? item.splits : [];\n return splits.map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.split)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.split,\n },\n }\n });\n}","import cache from \"memory-cache\";\nimport {CACHE_KEY_FUNNELS} from \"../../server/cache/cache\";\nimport {getBackendUrl} from \"../../server/_utils/backend-url\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getCapiboxTemplates = async (): Promise<components['schemas']['FunnelResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_FUNNELS);\n if (cachedResponse) {\n return cachedResponse;\n } else {\n const funnelRes = await fetch(`${getBackendUrl()}/funnels/funnel`, {\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n })\n const responseBody = await funnelRes.json();\n cache.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);\n return responseBody;\n }\n}","export const getCookie = (name: string) => {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) {\n const res = parts.pop();\n if (res) {\n return res.split(';').shift();\n }\n }\n return '';\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\nimport {getCookie} from \"../_utils/browser-get-cookie\";\n\ntype CreateSessionDto = {\n language: string;\n email?: string;\n currency: string;\n} & Omit<components['schemas']['CreateSessionBridgeDto'],\n 'origin' | 'referer' | 'cookies' | 'slug' | 'query' | 'ip' | 'user-agent'\n | 'analyticsId' | 'analyticsIdv3'\n>;\n\nexport const createSession = async ({language, email, currency, quiz, ...data}: CreateSessionDto): Promise<\n components['schemas']['SessionResponseDto']\n> => {\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n const cookies = window.document.cookie\n const referer = window.document.referrer\n const origin = window.location.origin\n const slug = window.location.pathname\n\n const res = await $apiClient.POST(\n '/session',\n {\n params: {\n header: {\n 'project-key': \"Frontend\"\n }\n },\n body: {\n ...data,\n origin,\n referer,\n cookies,\n query: params,\n slug,\n analyticsId: getCookie('an_uuid'),\n analyticsIdv3: getCookie('an_uuid_v3'),\n extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email,\n quiz: quiz ? quiz : undefined\n }\n }\n }\n );\n if (!res.data) {\n throw new Error('Failed to create session.')\n }\n return res.data.data;\n}","export const fetchJsonPostOptions = (data: any) => {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n}","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_IN_PATH} from \"./path\";\n\nexport const signIn = async (data: any): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_SIGN_IN_PATH,\n fetchJsonPostOptions(data)\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_SIGN_OUT_PATH} from \"./path\";\n\nexport const signOut = async (): Promise<{ success: 1 }> => {\n const res = await fetch(\n CRM_AUTH_SIGN_OUT_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\n","import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\nimport {CRM_AUTH_VERIFY_PATH} from \"./path\";\n\nexport const verify = async (): Promise<any> => {\n const res = await fetch(\n CRM_AUTH_VERIFY_PATH,\n fetchJsonPostOptions({})\n )\n return await res.json();\n}\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}","export const gaTrackEvent = (eventName: string, options?: any) => {\n try {\n // @ts-ignore\n window.dataLayer.push({\n event: eventName,\n ...options\n })\n } catch (e) {\n }\n}","import {gaTrackEvent} from \"../ga/ga-track-event\";\nimport {$apiClient} from \"../../lib/api\";\nimport { components } from \"../../lib/api.def\";\n\ntype Options = {\n ga?: any,\n skipGa?: boolean\n path?: {\n pathname?: string,\n referer?: string,\n origin?: string,\n length?: number\n },\n attr?: {[key: string]: string | number},\n eventData?: {[key: string]: string | number},\n skipEvent?: boolean\n}\n\nexport const trackEvent = async (\n type: string,\n uuid?: string,\n options?: Options\n) => {\n try {\n const skipGa = !!(!!options && options.skipGa);\n if (!skipGa) {\n const gaOptions = !!options && !!options.ga ? options.ga : undefined;\n gaTrackEvent(type, gaOptions)\n }\n\n const urlSearchParams = new URLSearchParams(window.location.search)\n const params = Object.fromEntries(urlSearchParams.entries())\n\n const pathLength = !!options && !!options.path && !!options.path.length ?\n options.path.length :\n 3\n\n const pathname = !!options && !!options.path && !!options.path.pathname ?\n options.path.pathname :\n window.location.pathname.split('/').slice(1, pathLength).join('/')\n\n const referer = !!options && !!options.path && !!options.path.referer ?\n options.path.referer :\n window.document.referrer\n\n const origin = !!options && !!options.path && !!options.path.origin ?\n options.path.origin :\n window.location.origin\n\n const eventData: components['schemas']['TrackRealtimeEventDto'] = {\n type,\n uuid,\n\n pathname:pathname,\n referer: referer,\n origin: origin,\n query: params,\n attr: options?.attr,\n eventData: options?.eventData\n }\n\n await $apiClient.POST('/realtime/events/track-event', {\n body: eventData\n })\n } catch (e) {\n }\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\nimport {getCapiboxTemplates} from \"./get-capibox-templates\";\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 if (typeof window == \"undefined\") {\n response = await getCapiboxTemplates();\n } else {\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\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 {$apiClient} from \"../../../lib/api\";\n\nexport const verifyEmail = async (email: string) => {\n const res = await $apiClient.GET(\n '/verify/email',\n {\n params: {\n query: {\n email,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\n\nexport const verifyPhone = async (phone: string) => {\n const res = await $apiClient.GET(\n '/verify/phone',\n {\n params: {\n query: {\n phone,\n },\n header: {\n 'project-key': 'FrontEnd'\n }\n }\n }\n )\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSession = async (\n uuid: string,\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.GET(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getQuiz = async (\n uuid: string,\n): Promise<components['schemas']['QuizResponseDto']> => {\n const res = await $apiClient.GET(\n '/quiz/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': \"Frontend\"\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const facebookS2S = async (data: components['schemas']['FbCapiPayloadSessionBridge']) => {\n await $apiClient.POST('/analytics/capi/facebook/event', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n return {success: true};\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const createSession = async (\n data: components[\"schemas\"][\"PaymentCreateSessionBridgeRequestDto\"]\n) => {\n const res = await $apiClient.POST('/payments/create-session', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalStartOrder = async (uuid: string) => {\n\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/start',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n\n};","import {$apiClient} from \"../../../lib/api\";\n\nexport const paypalCaptureOrder = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/payments/paypal/order/{id}/capture',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n path: {\n id: uuid,\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const trustpilotGetLink = async (data: components['schemas']['CreateTrustpilotInvitationLinkDto']): Promise<components['schemas']['CreateTrustpilotInvitationLinkResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/get-link', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {components} from \"../../lib/api.def\";\nimport {$apiClient} from \"../../lib/api\";\n\nexport const trustpilotSendInvitation = async (data: components['schemas']['SendTrustpilotInvitationDto']): Promise<components['schemas']['SendTrustpilotInvitationResponseDto']> => {\n const res = await $apiClient.POST('/trustpilot/send-invitation', {\n params: {\n header: {\n 'project-key': 'Frontend'\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const yunoCreatePayment = async (dto: components['schemas']['YunoCreatePaymentDto']) => {\n\n const res = await $apiClient.POST(\n '/payments/yuno/create-payment',\n {\n params: {\n header: {\n 'project-key': 'Frontend'\n },\n },\n body: dto\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\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}\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 {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {appendSession} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {createSession} from \"./browser/session/create\";\nimport {signIn} from \"./browser/crm-auth/sign-in\";\nimport {signOut} from \"./browser/crm-auth/sign-out\";\nimport {verify} from \"./browser/crm-auth/veirfy\";\nimport {useParamsLandingPage} from \"./browser/hooks/useParamsLandingPage\";\nimport {trackEvent} from \"./browser/realtime/track-event\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {verifyEmail} from \"./browser/verify/email/verify-email\";\nimport {verifyPhone} from \"./browser/verify/phone/verify-phone\";\nimport {getSession} from \"./browser/session/get\";\nimport {getQuiz} from \"./browser/quiz/get\";\nimport {facebookS2S} from \"./browser/capi/facebook-s2s\";\nimport {createSession as createSessionPayments} from \"./browser/payments/create-session\";\nimport {paypalStartOrder} from \"./browser/payments/paypal/paypal-start-order\";\nimport {paypalCaptureOrder} from \"./browser/payments/paypal/paypal-capture-order\";\nimport {trustpilotGetLink} from \"./browser/trustpilot/get-link\";\nimport {trustpilotSendInvitation} from \"./browser/trustpilot/send-invintation\";\nimport {yunoCreatePayment} from \"./browser/payments/yuno/yuno-create-payment\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\n\nexport {SdkRemoteFunnel} from \"./browser/funnels/get\";\n\nconst browser = {\n capi: {\n facebook: facebookS2S,\n },\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append: appendSession,\n create: createSession,\n get: getSession,\n },\n crmAuth: {\n signIn,\n signOut,\n verify,\n },\n hooks: {\n useParamsLandingPage\n },\n realtime: {\n trackEvent\n },\n funnels: {\n get: getFunnels,\n getTemplates: getTemplates\n },\n verify: {\n email: verifyEmail,\n phone: verifyPhone,\n },\n quiz: {\n get: getQuiz,\n },\n payments: {\n createSession: createSessionPayments,\n paypal: {\n startOrder: paypalStartOrder,\n captureOrder: paypalCaptureOrder,\n },\n yuno: {\n createPayment: yunoCreatePayment,\n }\n },\n trustpilot: {\n getLink: trustpilotGetLink,\n sendInvitation: trustpilotSendInvitation,\n }\n}\n\nconst server = {\n middleware,\n funnels: {\n get: getFunnels,\n getTemplates\n }\n}\n\nexport {\n browser,\n server\n}\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.capibox = browser;\n}\n// v.0.0.49"],"mappings":"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","names":["ip","cache","string","cache","cache","cache","ip","browser","createSession","createSession"]}
|