@capibox/bridge-nextjs-client 0.0.18 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -682,7 +682,11 @@ declare const browser: {
682
682
  };
683
683
  };
684
684
  declare const server: {
685
- middleware: (req: next_server.NextRequest) => Promise<next_server.NextResponse<any> | undefined>;
685
+ middleware: (req: next_server.NextRequest, options?: {
686
+ templates?: {
687
+ [key: string]: string[];
688
+ };
689
+ }) => Promise<next_server.NextResponse<any> | undefined>;
686
690
  };
687
691
 
688
692
  export { browser, server };
package/dist/index.d.ts CHANGED
@@ -682,7 +682,11 @@ declare const browser: {
682
682
  };
683
683
  };
684
684
  declare const server: {
685
- middleware: (req: next_server.NextRequest) => Promise<next_server.NextResponse<any> | undefined>;
685
+ middleware: (req: next_server.NextRequest, options?: {
686
+ templates?: {
687
+ [key: string]: string[];
688
+ };
689
+ }) => Promise<next_server.NextResponse<any> | undefined>;
686
690
  };
687
691
 
688
692
  export { browser, server };
package/dist/index.js CHANGED
@@ -269,12 +269,19 @@ var CACHE_KEY_SPLIT = "split-data";
269
269
 
270
270
  // src/server/split/get-split-data.ts
271
271
  var import_memory_cache = __toESM(require("memory-cache"));
272
+
273
+ // src/server/_utils/backend-url.ts
274
+ var getBackendUrl = () => {
275
+ return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : "https://api.capibox.com";
276
+ };
277
+
278
+ // src/server/split/get-split-data.ts
272
279
  var getSplitData = () => __async(null, null, function* () {
273
280
  const cachedResponse = import_memory_cache.default.get(CACHE_KEY_SPLIT);
274
281
  if (cachedResponse) {
275
282
  return cachedResponse;
276
283
  } else {
277
- const res = yield fetch(`${process.env.BACKEND_URL}/funnels/split`, {
284
+ const res = yield fetch(`${getBackendUrl()}/funnels/split`, {
278
285
  headers: {
279
286
  "Content-Type": "application/json",
280
287
  "Authorization": `${process.env.CAPIBOX_API_KEY}`
@@ -338,7 +345,7 @@ var fillSplitItemUrlsRange = (item) => {
338
345
  };
339
346
 
340
347
  // src/server/middleware.ts
341
- var middleware = (req) => __async(null, null, function* () {
348
+ var middleware = (req, options) => __async(null, null, function* () {
342
349
  if (req.nextUrl.pathname.startsWith("/app/clear-cache")) {
343
350
  import_memory_cache2.default.del(CACHE_KEY_FUNNELS);
344
351
  import_memory_cache2.default.del(CACHE_KEY_SPLIT);
@@ -352,6 +359,20 @@ var middleware = (req) => __async(null, null, function* () {
352
359
  );
353
360
  return res;
354
361
  }
362
+ if ((options == null ? void 0 : options.templates) && req.nextUrl.pathname.startsWith("/app/get-templates")) {
363
+ const res = import_server.NextResponse.json({
364
+ success: true,
365
+ data: options.templates
366
+ });
367
+ res.headers.append("Access-Control-Allow-Credentials", "true");
368
+ res.headers.append("Access-Control-Allow-Origin", "*");
369
+ res.headers.append("Access-Control-Allow-Methods", "GET,DELETE,PATCH,POST,PUT");
370
+ res.headers.append(
371
+ "Access-Control-Allow-Headers",
372
+ "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version"
373
+ );
374
+ return res;
375
+ }
355
376
  const input = yield getSplitItemForReq({ req });
356
377
  if (input) {
357
378
  const currentSplit = getSplitItemUrlWinner(input);
@@ -361,7 +382,7 @@ var middleware = (req) => __async(null, null, function* () {
361
382
  }
362
383
  if (req.nextUrl.pathname.startsWith("/api-client-proxy")) {
363
384
  let urlClone = req.nextUrl.clone();
364
- const targetUrl = new URL(`${process.env.BACKEND_URL}`);
385
+ const targetUrl = new URL(getBackendUrl());
365
386
  const requestHeaders = new Headers(req.headers);
366
387
  requestHeaders.set("host", targetUrl.hostname);
367
388
  requestHeaders.set("authorization", `${process.env.CAPIBOX_API_KEY}`);
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/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"],"sourcesContent":["import {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {append} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {create} 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\";\n\nconst browser = {\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append,\n create,\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}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.18","import createFetchClient from \"openapi-fetch\";\nimport createClient from \"openapi-react-query\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n authorization: \"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 authorization: \"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 authorization: \"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 {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const append = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_APPEND,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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\";\n\n\nexport const middleware = async (req: NextRequest) => {\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 // 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 let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(`${process.env.BACKEND_URL}`)\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('authorization', `${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\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\";\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(`${process.env.BACKEND_URL}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n const resJson: components['schemas']['SplitResponseDto'][] = await res.json();\n\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n }\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 {dto, endpoint} from \"@capibox/bridge-interface\";\n// import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const create = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_CREATE,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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 authorization: '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}"],"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"],"sourcesContent":["import {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {append} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {create} 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\";\n\nconst browser = {\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append,\n create,\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}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.20","import createFetchClient from \"openapi-fetch\";\nimport createClient from \"openapi-react-query\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n authorization: \"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 authorization: \"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 authorization: \"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 {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const append = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_APPEND,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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 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('authorization', `${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\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 const resJson: components['schemas']['SplitResponseDto'][] = 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 {dto, endpoint} from \"@capibox/bridge-interface\";\n// import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const create = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_CREATE,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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 authorization: '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}"],"mappings":"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","names":["createFetchClient","ip","import_memory_cache","cache","string","cache","ip","browser"]}
package/dist/index.mjs CHANGED
@@ -235,12 +235,19 @@ var CACHE_KEY_SPLIT = "split-data";
235
235
 
236
236
  // src/server/split/get-split-data.ts
237
237
  import cache from "memory-cache";
238
+
239
+ // src/server/_utils/backend-url.ts
240
+ var getBackendUrl = () => {
241
+ return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : "https://api.capibox.com";
242
+ };
243
+
244
+ // src/server/split/get-split-data.ts
238
245
  var getSplitData = () => __async(null, null, function* () {
239
246
  const cachedResponse = cache.get(CACHE_KEY_SPLIT);
240
247
  if (cachedResponse) {
241
248
  return cachedResponse;
242
249
  } else {
243
- const res = yield fetch(`${process.env.BACKEND_URL}/funnels/split`, {
250
+ const res = yield fetch(`${getBackendUrl()}/funnels/split`, {
244
251
  headers: {
245
252
  "Content-Type": "application/json",
246
253
  "Authorization": `${process.env.CAPIBOX_API_KEY}`
@@ -304,7 +311,7 @@ var fillSplitItemUrlsRange = (item) => {
304
311
  };
305
312
 
306
313
  // src/server/middleware.ts
307
- var middleware = (req) => __async(null, null, function* () {
314
+ var middleware = (req, options) => __async(null, null, function* () {
308
315
  if (req.nextUrl.pathname.startsWith("/app/clear-cache")) {
309
316
  cache2.del(CACHE_KEY_FUNNELS);
310
317
  cache2.del(CACHE_KEY_SPLIT);
@@ -318,6 +325,20 @@ var middleware = (req) => __async(null, null, function* () {
318
325
  );
319
326
  return res;
320
327
  }
328
+ if ((options == null ? void 0 : options.templates) && req.nextUrl.pathname.startsWith("/app/get-templates")) {
329
+ const res = NextResponse.json({
330
+ success: true,
331
+ data: options.templates
332
+ });
333
+ res.headers.append("Access-Control-Allow-Credentials", "true");
334
+ res.headers.append("Access-Control-Allow-Origin", "*");
335
+ res.headers.append("Access-Control-Allow-Methods", "GET,DELETE,PATCH,POST,PUT");
336
+ res.headers.append(
337
+ "Access-Control-Allow-Headers",
338
+ "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version"
339
+ );
340
+ return res;
341
+ }
321
342
  const input = yield getSplitItemForReq({ req });
322
343
  if (input) {
323
344
  const currentSplit = getSplitItemUrlWinner(input);
@@ -327,7 +348,7 @@ var middleware = (req) => __async(null, null, function* () {
327
348
  }
328
349
  if (req.nextUrl.pathname.startsWith("/api-client-proxy")) {
329
350
  let urlClone = req.nextUrl.clone();
330
- const targetUrl = new URL(`${process.env.BACKEND_URL}`);
351
+ const targetUrl = new URL(getBackendUrl());
331
352
  const requestHeaders = new Headers(req.headers);
332
353
  requestHeaders.set("host", targetUrl.hostname);
333
354
  requestHeaders.set("authorization", `${process.env.CAPIBOX_API_KEY}`);
@@ -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/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/index.ts"],"sourcesContent":["import createFetchClient from \"openapi-fetch\";\nimport createClient from \"openapi-react-query\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n authorization: \"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 authorization: \"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 authorization: \"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 {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const append = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_APPEND,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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\";\n\n\nexport const middleware = async (req: NextRequest) => {\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 // 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 let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(`${process.env.BACKEND_URL}`)\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('authorization', `${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\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\";\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(`${process.env.BACKEND_URL}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n const resJson: components['schemas']['SplitResponseDto'][] = await res.json();\n\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n }\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 {dto, endpoint} from \"@capibox/bridge-interface\";\n// import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const create = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_CREATE,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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 authorization: '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 {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {append} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {create} 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\";\n\nconst browser = {\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append,\n create,\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}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.18"],"mappings":"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","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/index.ts"],"sourcesContent":["import createFetchClient from \"openapi-fetch\";\nimport createClient from \"openapi-react-query\";\nimport type {paths} from \"./api.def\";\n\nconst endpoint = '/api-client-proxy';\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: endpoint,\n headers: {\n authorization: \"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 authorization: \"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 authorization: \"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 {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const append = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_APPEND,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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 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('authorization', `${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\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 const resJson: components['schemas']['SplitResponseDto'][] = 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 {dto, endpoint} from \"@capibox/bridge-interface\";\n// import {fetchJsonPostOptions} from \"../_utils/browser-fetch-utils\";\n\nexport const create = async (): Promise<void> => {\n // const res = await fetch(\n // endpoint.ENDPOINT_SESSION_CREATE,\n // fetchJsonPostOptions(data)\n // )\n // return await res.json();\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 authorization: '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 {sendToRecipient} from \"./browser/mail/send-to-recipient\";\nimport {sendToSupport} from \"./browser/mail/send-to-support\";\nimport {append} from \"./browser/session/append\";\nimport {middleware} from \"./server/middleware\";\nimport {create} 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\";\n\nconst browser = {\n mail: {\n sendToRecipient,\n sendToSupport,\n },\n session: {\n append,\n create,\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}\n\nconst server = {\n middleware\n}\n\nexport {\n browser,\n server\n}\n// v.0.0.20"],"mappings":"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","names":["ip","cache","string","cache","ip","browser"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capibox/bridge-nextjs-client",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",