@capibox/bridge-nextjs-client 0.0.27 → 0.0.29
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 +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +43 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +43 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -106,6 +106,11 @@ interface components {
|
|
|
106
106
|
* @example 123e4567-e89b-12d3-a456-426614174000
|
|
107
107
|
*/
|
|
108
108
|
uuid: string;
|
|
109
|
+
/**
|
|
110
|
+
* @description The unique UUID for development purposes
|
|
111
|
+
* @example 123e4567-e89b-12d3-a456-426614174001
|
|
112
|
+
*/
|
|
113
|
+
uuidDev?: string;
|
|
109
114
|
/**
|
|
110
115
|
* @description The URL of the project
|
|
111
116
|
* @example https://myproject.example.com
|
|
@@ -137,11 +142,6 @@ interface components {
|
|
|
137
142
|
* @example My Awesome Project
|
|
138
143
|
*/
|
|
139
144
|
title: string;
|
|
140
|
-
/**
|
|
141
|
-
* @description The unique UUID of the project used for authentication
|
|
142
|
-
* @example 123e4567-e89b-12d3-a456-426614174000
|
|
143
|
-
*/
|
|
144
|
-
uuid: string;
|
|
145
145
|
/**
|
|
146
146
|
* @description The URL of the project
|
|
147
147
|
* @example https://myproject.example.com
|
|
@@ -171,11 +171,6 @@ interface components {
|
|
|
171
171
|
* @example My Awesome Project
|
|
172
172
|
*/
|
|
173
173
|
title?: string;
|
|
174
|
-
/**
|
|
175
|
-
* @description The unique UUID of the project used for authentication
|
|
176
|
-
* @example 123e4567-e89b-12d3-a456-426614174000
|
|
177
|
-
*/
|
|
178
|
-
uuid?: string;
|
|
179
174
|
/**
|
|
180
175
|
* @description The URL of the project
|
|
181
176
|
* @example https://myproject.example.com
|
|
@@ -819,6 +814,7 @@ declare const browser: {
|
|
|
819
814
|
referer?: string;
|
|
820
815
|
slug: string;
|
|
821
816
|
}, "origin" | "referer" | "cookies" | "slug" | "query" | "ip" | "user-agent">) => Promise<components["schemas"]["SessionResponseDto"]>;
|
|
817
|
+
get: (uuid: string) => Promise<components["schemas"]["SessionResponseDto"]>;
|
|
822
818
|
};
|
|
823
819
|
crmAuth: {
|
|
824
820
|
signIn: (data: any) => Promise<any>;
|
|
@@ -871,6 +867,10 @@ declare const browser: {
|
|
|
871
867
|
valid: boolean;
|
|
872
868
|
error?: string;
|
|
873
869
|
} | undefined>;
|
|
870
|
+
phone: (phone: string) => Promise<{
|
|
871
|
+
valid: boolean;
|
|
872
|
+
error: string;
|
|
873
|
+
} | undefined>;
|
|
874
874
|
};
|
|
875
875
|
};
|
|
876
876
|
declare const server: {
|
package/dist/index.d.ts
CHANGED
|
@@ -106,6 +106,11 @@ interface components {
|
|
|
106
106
|
* @example 123e4567-e89b-12d3-a456-426614174000
|
|
107
107
|
*/
|
|
108
108
|
uuid: string;
|
|
109
|
+
/**
|
|
110
|
+
* @description The unique UUID for development purposes
|
|
111
|
+
* @example 123e4567-e89b-12d3-a456-426614174001
|
|
112
|
+
*/
|
|
113
|
+
uuidDev?: string;
|
|
109
114
|
/**
|
|
110
115
|
* @description The URL of the project
|
|
111
116
|
* @example https://myproject.example.com
|
|
@@ -137,11 +142,6 @@ interface components {
|
|
|
137
142
|
* @example My Awesome Project
|
|
138
143
|
*/
|
|
139
144
|
title: string;
|
|
140
|
-
/**
|
|
141
|
-
* @description The unique UUID of the project used for authentication
|
|
142
|
-
* @example 123e4567-e89b-12d3-a456-426614174000
|
|
143
|
-
*/
|
|
144
|
-
uuid: string;
|
|
145
145
|
/**
|
|
146
146
|
* @description The URL of the project
|
|
147
147
|
* @example https://myproject.example.com
|
|
@@ -171,11 +171,6 @@ interface components {
|
|
|
171
171
|
* @example My Awesome Project
|
|
172
172
|
*/
|
|
173
173
|
title?: string;
|
|
174
|
-
/**
|
|
175
|
-
* @description The unique UUID of the project used for authentication
|
|
176
|
-
* @example 123e4567-e89b-12d3-a456-426614174000
|
|
177
|
-
*/
|
|
178
|
-
uuid?: string;
|
|
179
174
|
/**
|
|
180
175
|
* @description The URL of the project
|
|
181
176
|
* @example https://myproject.example.com
|
|
@@ -819,6 +814,7 @@ declare const browser: {
|
|
|
819
814
|
referer?: string;
|
|
820
815
|
slug: string;
|
|
821
816
|
}, "origin" | "referer" | "cookies" | "slug" | "query" | "ip" | "user-agent">) => Promise<components["schemas"]["SessionResponseDto"]>;
|
|
817
|
+
get: (uuid: string) => Promise<components["schemas"]["SessionResponseDto"]>;
|
|
822
818
|
};
|
|
823
819
|
crmAuth: {
|
|
824
820
|
signIn: (data: any) => Promise<any>;
|
|
@@ -871,6 +867,10 @@ declare const browser: {
|
|
|
871
867
|
valid: boolean;
|
|
872
868
|
error?: string;
|
|
873
869
|
} | undefined>;
|
|
870
|
+
phone: (phone: string) => Promise<{
|
|
871
|
+
valid: boolean;
|
|
872
|
+
error: string;
|
|
873
|
+
} | undefined>;
|
|
874
874
|
};
|
|
875
875
|
};
|
|
876
876
|
declare const server: {
|
package/dist/index.js
CHANGED
|
@@ -698,6 +698,45 @@ var verifyEmail = (email) => __async(null, null, function* () {
|
|
|
698
698
|
return res.data;
|
|
699
699
|
});
|
|
700
700
|
|
|
701
|
+
// src/browser/verify/phone/verify-phone.ts
|
|
702
|
+
var verifyPhone = (phone) => __async(null, null, function* () {
|
|
703
|
+
const res = yield $apiClient.GET(
|
|
704
|
+
"/verify/phone",
|
|
705
|
+
{
|
|
706
|
+
params: {
|
|
707
|
+
query: {
|
|
708
|
+
phone
|
|
709
|
+
},
|
|
710
|
+
header: {
|
|
711
|
+
"project-key": "FrontEnd"
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
);
|
|
716
|
+
return res.data;
|
|
717
|
+
});
|
|
718
|
+
|
|
719
|
+
// src/browser/session/get.ts
|
|
720
|
+
var getSession = (uuid) => __async(null, null, function* () {
|
|
721
|
+
const res = yield $apiClient.GET(
|
|
722
|
+
"/session/{uuid}",
|
|
723
|
+
{
|
|
724
|
+
params: {
|
|
725
|
+
path: {
|
|
726
|
+
uuid
|
|
727
|
+
},
|
|
728
|
+
header: {
|
|
729
|
+
"project-key": "Frontend"
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
);
|
|
734
|
+
if (!res.data) {
|
|
735
|
+
throw new Error("Failed to append session.");
|
|
736
|
+
}
|
|
737
|
+
return res.data.data;
|
|
738
|
+
});
|
|
739
|
+
|
|
701
740
|
// src/index.ts
|
|
702
741
|
var browser = {
|
|
703
742
|
mail: {
|
|
@@ -706,7 +745,8 @@ var browser = {
|
|
|
706
745
|
},
|
|
707
746
|
session: {
|
|
708
747
|
append: appendSession,
|
|
709
|
-
create: createSession
|
|
748
|
+
create: createSession,
|
|
749
|
+
get: getSession
|
|
710
750
|
},
|
|
711
751
|
crmAuth: {
|
|
712
752
|
signIn,
|
|
@@ -723,7 +763,8 @@ var browser = {
|
|
|
723
763
|
get: getFunnels
|
|
724
764
|
},
|
|
725
765
|
verify: {
|
|
726
|
-
email: verifyEmail
|
|
766
|
+
email: verifyEmail,
|
|
767
|
+
phone: verifyPhone
|
|
727
768
|
}
|
|
728
769
|
};
|
|
729
770
|
var server = {
|
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/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"],"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\";\n\nconst browser = {\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append: appendSession,\n create: createSession,\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 },\n verify: {\n email: verifyEmail,\n }\n}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.27","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 requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ip)\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 // // mail\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_RECIPIENT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_SUPPORT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n //\n // // session\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_CREATE) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_APPEND) {\n // const jsonData: dto.AppendSessionBrowserPublicDtoType = await req.json();\n // const proxyBody: dto.AppendSessionDtoType = {\n // email: jsonData.email,\n // language: jsonData.language,\n // currency: jsonData.currency,\n // };\n //\n // const res = await fetch(\n // req.nextUrl.pathname.replace(\n // endpoint.MAIN_ENDPOINT,\n // 'https://api.capibox.com'\n // ).replace('/append', `/${jsonData.uuid}`),\n // {\n // method: 'PUT',\n // body: JSON.stringify(proxyBody),\n // headers: serverProxyHeaders(),\n // }\n // )\n // return await res.json();\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 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 }\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 {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\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>;\n\nexport const createSession = async ({language, email, currency, ...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 extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email\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\ntype OutputFunnel = {\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<OutputFunnel[]> => {\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: OutputFunnel[] = [];\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}"],"mappings":"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","names":["createFetchClient","ip","import_memory_cache","cache","string","cache","ip","browser"]}
|
|
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/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"],"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\";\n\nconst browser = {\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 },\n verify: {\n email: verifyEmail,\n phone: verifyPhone,\n }\n}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.29","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 requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ip)\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 // // mail\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_RECIPIENT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_SUPPORT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n //\n // // session\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_CREATE) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_APPEND) {\n // const jsonData: dto.AppendSessionBrowserPublicDtoType = await req.json();\n // const proxyBody: dto.AppendSessionDtoType = {\n // email: jsonData.email,\n // language: jsonData.language,\n // currency: jsonData.currency,\n // };\n //\n // const res = await fetch(\n // req.nextUrl.pathname.replace(\n // endpoint.MAIN_ENDPOINT,\n // 'https://api.capibox.com'\n // ).replace('/append', `/${jsonData.uuid}`),\n // {\n // method: 'PUT',\n // body: JSON.stringify(proxyBody),\n // headers: serverProxyHeaders(),\n // }\n // )\n // return await res.json();\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 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 }\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 {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\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>;\n\nexport const createSession = async ({language, email, currency, ...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 extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email\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\ntype OutputFunnel = {\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<OutputFunnel[]> => {\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: OutputFunnel[] = [];\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}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,2BAA8B;AAG9B,IAAM,WAAW;AAEV,IAAM,iBAAa,qBAAAA,SAAyB;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,oBAAmD;;;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,UAAMC,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,IAAAC,uBAAkB;;;AKJX,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;;;ACD/B,0BAAkB;;;ACAX,IAAM,gBAAgB,MAAM;AAC/B,SAAO,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,qBAAqB;AAC7E;;;ADGO,IAAM,eAAe,MAAkE;AAC1F,QAAM,iBAAiB,oBAAAC,QAAM,IAAI,eAAe;AAEhD,MAAI,gBAAgB;AAChB,WAAO;AAAA,EACX,OAAO;AACH,UAAM,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,kBAAkB;AAAA,MACxD,SAAS;AAAA,QACL,gBAAgB;AAAA,QAChB,iBAAiB,GAAG,QAAQ,IAAI,eAAe;AAAA,MACnD;AAAA,IACJ,CAAC;AACD,QAAI,UAAuD,CAAC;AAC5D,QAAI,IAAI,IAAI;AACR,gBAAU,MAAM,IAAI,KAAK;AAAA,IAC7B;AACA,wBAAAA,QAAM,IAAI,iBAAiB,SAAS,UAAU;AAE9C,WAAO;AAAA,EACX;AACJ;;;AEzBO,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,yBAAAC,QAAM,IAAI,iBAAiB;AAC3B,yBAAAA,QAAM,IAAI,eAAe;AAEzB,UAAM,MAAM,2BAAa,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,2BAAa,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,2BAAa;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,iBAAiB,qBAAAA,QAAM,IAAI,iBAAiB;AAClD,UAAI,gBAAgB;AAChB,cAAM,MAAM,2BAAa,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,6BAAAA,QAAM,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,QAAI,yBAAU,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,qBAAe,IAAI,eAAeA,GAAE;AACpC,qBAAe,IAAI,gBAAgBA,GAAE;AAAA,IACzC;AAEA,aAAS,WAAW,UAAU;AAC9B,aAAS,WAAW,UAAU;AAC9B,aAAS,OAAO,UAAU;AAC1B,aAAS,WAAW,SAAS,SAAS,QAAQ,uBAAuB,EAAE;AAEvE,WAAO,2BAAa,QAAQ,UAAU;AAAA,MAClC,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AAqCA,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,2BAAa,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,2BAAa,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,2BAAa,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,2BAAa,KAAK,EAAC,SAAS,EAAC,CAAC;AAC1C,QAAI,QAAQ,OAAO,OAAO;AAC1B,WAAO;AAAA,EACX;AACJ;;;AWrMO,IAAM,gBAAgB,CAAO,OAE/B;AAF+B,eAAC,YAAU,OAAO,SAXtD,IAWoC,IAA+B,iBAA/B,IAA+B,CAA9B,YAAU,SAAO;AAGlD,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,WAAW,iCACJ,KAAK,YADD;AAAA,UAEP;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,SAAO,IAAI,KAAK;AACpB;;;ACjDO,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,wBAAwB;AAiBjB,IAAM,uBAAuB,MAAiC;AAjBrE;AAkBI,QAAM,aAAS,6BAA6B;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,MAAqC;AAC3D,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,SAAyB,CAAC;AAChC,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;;;A3BRA,IAAM,UAAU;AAAA,EACZ,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,EACT;AAAA,EACA,QAAQ;AAAA,IACJ,OAAO;AAAA,IACP,OAAO;AAAA,EACX;AACJ;AAEA,IAAM,SAAS;AAAA,EACX;AACJ;","names":["createFetchClient","ip","import_memory_cache","cache","string","cache","ip","browser"]}
|
package/dist/index.mjs
CHANGED
|
@@ -664,6 +664,45 @@ var verifyEmail = (email) => __async(null, null, function* () {
|
|
|
664
664
|
return res.data;
|
|
665
665
|
});
|
|
666
666
|
|
|
667
|
+
// src/browser/verify/phone/verify-phone.ts
|
|
668
|
+
var verifyPhone = (phone) => __async(null, null, function* () {
|
|
669
|
+
const res = yield $apiClient.GET(
|
|
670
|
+
"/verify/phone",
|
|
671
|
+
{
|
|
672
|
+
params: {
|
|
673
|
+
query: {
|
|
674
|
+
phone
|
|
675
|
+
},
|
|
676
|
+
header: {
|
|
677
|
+
"project-key": "FrontEnd"
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
);
|
|
682
|
+
return res.data;
|
|
683
|
+
});
|
|
684
|
+
|
|
685
|
+
// src/browser/session/get.ts
|
|
686
|
+
var getSession = (uuid) => __async(null, null, function* () {
|
|
687
|
+
const res = yield $apiClient.GET(
|
|
688
|
+
"/session/{uuid}",
|
|
689
|
+
{
|
|
690
|
+
params: {
|
|
691
|
+
path: {
|
|
692
|
+
uuid
|
|
693
|
+
},
|
|
694
|
+
header: {
|
|
695
|
+
"project-key": "Frontend"
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
);
|
|
700
|
+
if (!res.data) {
|
|
701
|
+
throw new Error("Failed to append session.");
|
|
702
|
+
}
|
|
703
|
+
return res.data.data;
|
|
704
|
+
});
|
|
705
|
+
|
|
667
706
|
// src/index.ts
|
|
668
707
|
var browser = {
|
|
669
708
|
mail: {
|
|
@@ -672,7 +711,8 @@ var browser = {
|
|
|
672
711
|
},
|
|
673
712
|
session: {
|
|
674
713
|
append: appendSession,
|
|
675
|
-
create: createSession
|
|
714
|
+
create: createSession,
|
|
715
|
+
get: getSession
|
|
676
716
|
},
|
|
677
717
|
crmAuth: {
|
|
678
718
|
signIn,
|
|
@@ -689,7 +729,8 @@ var browser = {
|
|
|
689
729
|
get: getFunnels
|
|
690
730
|
},
|
|
691
731
|
verify: {
|
|
692
|
-
email: verifyEmail
|
|
732
|
+
email: verifyEmail,
|
|
733
|
+
phone: verifyPhone
|
|
693
734
|
}
|
|
694
735
|
};
|
|
695
736
|
var server = {
|
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/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/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 requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ip)\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 // // mail\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_RECIPIENT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_SUPPORT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n //\n // // session\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_CREATE) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_APPEND) {\n // const jsonData: dto.AppendSessionBrowserPublicDtoType = await req.json();\n // const proxyBody: dto.AppendSessionDtoType = {\n // email: jsonData.email,\n // language: jsonData.language,\n // currency: jsonData.currency,\n // };\n //\n // const res = await fetch(\n // req.nextUrl.pathname.replace(\n // endpoint.MAIN_ENDPOINT,\n // 'https://api.capibox.com'\n // ).replace('/append', `/${jsonData.uuid}`),\n // {\n // method: 'PUT',\n // body: JSON.stringify(proxyBody),\n // headers: serverProxyHeaders(),\n // }\n // )\n // return await res.json();\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 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 }\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 {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\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>;\n\nexport const createSession = async ({language, email, currency, ...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 extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email\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\ntype OutputFunnel = {\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<OutputFunnel[]> => {\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: OutputFunnel[] = [];\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 {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\";\n\nconst browser = {\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append: appendSession,\n create: createSession,\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 },\n verify: {\n email: verifyEmail,\n }\n}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.27"],"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,UAAM,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,kBAAkB;AAAA,MACxD,SAAS;AAAA,QACL,gBAAgB;AAAA,QAChB,iBAAiB,GAAG,QAAQ,IAAI,eAAe;AAAA,MACnD;AAAA,IACJ,CAAC;AACD,QAAI,UAAuD,CAAC;AAC5D,QAAI,IAAI,IAAI;AACR,gBAAU,MAAM,IAAI,KAAK;AAAA,IAC7B;AACA,UAAM,IAAI,iBAAiB,SAAS,UAAU;AAE9C,WAAO;AAAA,EACX;AACJ;;;AEzBO,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,qBAAe,IAAI,eAAeA,GAAE;AACpC,qBAAe,IAAI,gBAAgBA,GAAE;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;AAqCA,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;;;AWrMO,IAAM,gBAAgB,CAAO,OAE/B;AAF+B,eAAC,YAAU,OAAO,SAXtD,IAWoC,IAA+B,iBAA/B,IAA+B,CAA9B,YAAU,SAAO;AAGlD,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,WAAW,iCACJ,KAAK,YADD;AAAA,UAEP;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,IAAI,MAAM;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,SAAO,IAAI,KAAK;AACpB;;;ACjDO,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,MAAqC;AAC3D,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,SAAyB,CAAC;AAChC,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;;;ACJA,IAAM,UAAU;AAAA,EACZ,MAAM;AAAA,IACF;AAAA,IACA;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;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,EACT;AAAA,EACA,QAAQ;AAAA,IACJ,OAAO;AAAA,EACX;AACJ;AAEA,IAAM,SAAS;AAAA,EACX;AACJ;","names":["ip","cache","string","cache","ip","browser"]}
|
|
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/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/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 requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ip)\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 // // mail\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_RECIPIENT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_MAIL_SEND_TO_SUPPORT) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n //\n // // session\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_CREATE) {\n // return NextResponse.json(await serverProxyPostRequest(req));\n // }\n // if (req.nextUrl.pathname === endpoint.ENDPOINT_SESSION_APPEND) {\n // const jsonData: dto.AppendSessionBrowserPublicDtoType = await req.json();\n // const proxyBody: dto.AppendSessionDtoType = {\n // email: jsonData.email,\n // language: jsonData.language,\n // currency: jsonData.currency,\n // };\n //\n // const res = await fetch(\n // req.nextUrl.pathname.replace(\n // endpoint.MAIN_ENDPOINT,\n // 'https://api.capibox.com'\n // ).replace('/append', `/${jsonData.uuid}`),\n // {\n // method: 'PUT',\n // body: JSON.stringify(proxyBody),\n // headers: serverProxyHeaders(),\n // }\n // )\n // return await res.json();\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 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 }\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 {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\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>;\n\nexport const createSession = async ({language, email, currency, ...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 extraData: {\n ...data.extraData,\n language: language,\n currency: currency,\n email: email\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\ntype OutputFunnel = {\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<OutputFunnel[]> => {\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: OutputFunnel[] = [];\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 {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\";\n\nconst browser = {\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 },\n verify: {\n email: verifyEmail,\n phone: verifyPhone,\n }\n}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.29"],"mappings":"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","names":["ip","cache","string","cache","ip","browser"]}
|