@capibox/bridge-server 0.0.90 → 0.0.92
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 +603 -10618
- package/dist/index.d.ts +603 -10618
- package/dist/index.js +107 -614
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -614
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/funnels/get-capibox-templates.ts","../src/browser/funnels/get.ts","../src/browser/funnels/get-templates.ts","../src/lib/api.ts","../src/server/session/get.ts","../src/server/capi/snapchat-s2s.ts","../src/server/funnels/clear-cache.ts","../src/server/capi/tiktok-s2s.ts","../src/server/capi/facebook-s2s.ts","../src/server/session/append.ts","../src/server/session/getByEmail.ts","../src/server/klaviyo/klaviyo-send-event.ts","../src/server/klaviyo/klaviyo-send-bulk.ts","../src/server/realtime/realtime-utm-order-data.ts","../src/server/order/order-get-by-uuid.ts","../src/server/order/order-get-by-email.ts","../src/server/payments/payment-first-payment.ts","../src/server/payments/payment-last-payments.ts","../src/server/subscription/cancel-subscription-by-id.ts","../src/server/subscription/cancel-subscriptions-by-order-id.ts","../src/server/subscription/subscription-apply-discount.ts","../src/server/subscription/subscription-pause.ts","../src/server/subscription/fill-subscription-cancel-request.ts","../src/server/subscription/get-subscriptions-by-order-id.ts","../src/server/payments/primer/primer-refund-payment.ts","../src/server/payments/paypal/paypal-refund-payment.ts","../src/server/payments/payments-refund.ts","../src/server/payments/tax/get-tax-percent.ts","../src/server/payments/tax/tax-calculate-amount.ts","../src/index.ts"],"sourcesContent":["import {NextRequest, NextResponse, userAgent} from \"next/server\";\nimport {getClientIp} from \"./_utils/client-ip\";\nimport {CRM_AUTH_SIGN_IN_PATH, CRM_AUTH_SIGN_OUT_PATH, CRM_AUTH_VERIFY_PATH} from \"../browser/crm-auth/path\";\nimport {serverProxyHeaders} from \"./_utils/server-fetch-utils\";\nimport cache from 'memory-cache';\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"./cache/cache\";\nimport {getSplitItemForReq} from \"./split/get-split-item\";\nimport {trimChar} from \"./_utils/trim-char\";\nimport {getSplitItemUrlWinner} from \"./split/get-split-winner\";\nimport {getBackendUrl} from \"./_utils/backend-url\";\nimport {getCapiboxTemplates} from \"../browser/funnels/get-capibox-templates\";\n\ntype Templates = {\n [key: string]: string[]\n}\n\ntype Options = {\n templates?: Templates,\n onCrmTokenCheck?: (res: any) => Promise<any>,\n}\n\nexport const middleware = async (\n req: NextRequest,\n options?: Options,\n) => {\n if (req.nextUrl.pathname.startsWith('/app/clear-cache')) {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n\n const res = NextResponse.json({s: new Date().getTime()})\n\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n return res;\n }\n\n if (options?.templates && req.nextUrl.pathname.startsWith('/app/get-templates')) {\n const res = NextResponse.json({\n success: true,\n\n data: options.templates,\n })\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n\n return res\n }\n\n // SPLIT TEST\n const input = await getSplitItemForReq({req});\n if (input) {\n const currentSplit = getSplitItemUrlWinner(input);\n\n return NextResponse.redirect(\n new URL(`/${trimChar(currentSplit.url, '/')}${req.nextUrl.search}`, req.url),\n )\n }\n\n if (req.nextUrl.pathname.startsWith('/api-client-proxy')) {\n if (req.nextUrl.pathname === '/api-client-proxy/funnels/funnel') {\n const capiboxTemplates = await getCapiboxTemplates();\n const res = NextResponse.json(capiboxTemplates);\n res.headers.set('X-Cache', 'HIT');\n return res;\n }\n\n let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(getBackendUrl())\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('project-key', `${process.env.CAPIBOX_API_KEY}`)\n\n if (req.nextUrl.pathname.includes('/realtime/')) {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {device, browser, os} = userAgent(req)\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-os', `${os.name} / ${os.version}`)\n requestHeaders.set('x-browser', `${browser.name} / ${browser.version}`)\n requestHeaders.set('x-device', device.type ? device.type : '-')\n const anUuidV3Cookie = req.cookies.get('an_uuid_v3');\n if (anUuidV3Cookie) {\n requestHeaders.set('x-realtime', anUuidV3Cookie?.value)\n }\n }\n if (req.nextUrl.pathname === '/api-client-proxy/session') {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {ua} = userAgent(req);\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ua)\n }\n\n urlClone.protocol = targetUrl.protocol\n urlClone.hostname = targetUrl.hostname\n urlClone.port = targetUrl.port\n urlClone.pathname = urlClone.pathname.replace(/^\\/api-client-proxy/, '');\n\n return NextResponse.rewrite(urlClone, {\n request: {\n headers: requestHeaders,\n },\n })\n }\n\n // crm auth\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_IN_PATH) {\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/sign-in',\n {\n method: 'POST',\n body: JSON.stringify(await req.json()),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!!resJson.action && !!resJson.token && resJson.action === 'logged-in') {\n result.cookies.set({\n name: \"token\",\n value: resJson.token,\n maxAge: 60 * 60 * 24 * 30,\n httpOnly: true,\n });\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_VERIFY_PATH) {\n const tokenCookie = req.cookies.get('token')\n if (!tokenCookie || !tokenCookie.value) {\n return NextResponse.json({success: 0})\n }\n\n const payload = {\n data: {\n token: tokenCookie.value,\n }\n }\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/check',\n {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: serverProxyHeaders(),\n }\n )\n let resJson = await res.json();\n\n if (options?.onCrmTokenCheck) {\n resJson = await options.onCrmTokenCheck(resJson);\n }\n\n const result = NextResponse.json(resJson);\n if (!('id' in resJson && resJson.id > 0)) {\n result.cookies.delete(\"token\");\n }\n\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_OUT_PATH) {\n const res = NextResponse.json({success: 1});\n res.cookies.delete(\"token\");\n return res;\n }\n}","\"use strict\";\n\nconst regexes = {\n ipv4: /^(?:(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$/,\n ipv6: /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i\n};\n\nfunction not(func: any) {\n return function () {\n return !func.apply(null, Array.prototype.slice.call(arguments));\n };\n}\n\nfunction existy(value: any) {\n return value != null;\n}\n\nfunction ip(value: any) {\n return existy(value) && regexes.ipv4.test(value) || regexes.ipv6.test(value);\n}\n\nfunction object(value: any) {\n return Object(value) === value;\n}\n\nfunction string(value: any) {\n return Object.prototype.toString.call(value) === '[object String]';\n}\n\nconst is = {\n existy: existy,\n ip: ip,\n object: object,\n string: string,\n not: {\n existy: not(existy),\n ip: not(ip),\n object: not(object),\n string: not(string)\n }\n};\nexport default is;\n","import is from \"./is\";\n\nfunction getClientIpFromXForwardedFor(value: any) {\n if (!is.existy(value)) {\n return null;\n }\n\n const forwardedIps = value.split(',').map(function (e: string) {\n const ip = e.trim();\n\n if (ip.includes(':')) {\n const splitted = ip.split(':');\n if (splitted.length === 2) {\n return splitted[0];\n }\n }\n return ip;\n });\n\n for (let i = 0; i < forwardedIps.length; i++) {\n if (is.ip(forwardedIps[i])) {\n return forwardedIps[i];\n }\n }\n\n return null;\n}\n\nexport function getClientIp(req: {\n headers?: {\n [key: string]: string\n },\n connection?: {\n remoteAddress?: string,\n socket?: {\n remoteAddress?: string,\n },\n },\n socket?: {\n remoteAddress?: string,\n },\n info?: {\n remoteAddress?: string,\n },\n requestContext?: {\n identity?: {\n sourceIp?: string,\n }\n },\n}) {\n if (req.headers) {\n if (is.ip(req.headers['x-client-ip'])) {\n return req.headers['x-client-ip'];\n }\n\n const xForwardedFor = getClientIpFromXForwardedFor(req.headers['x-forwarded-for']);\n\n if (is.ip(req.headers['cf-connecting-ip'])) {\n return req.headers['cf-connecting-ip'];\n }\n\n if (is.ip(req.headers['fastly-client-ip'])) {\n return req.headers['fastly-client-ip'];\n }\n\n if (is.ip(req.headers['true-client-ip'])) {\n return req.headers['true-client-ip'];\n }\n\n if (is.ip(req.headers['x-real-ip'])) {\n return req.headers['x-real-ip'];\n }\n\n if (is.ip(req.headers['x-cluster-client-ip'])) {\n return req.headers['x-cluster-client-ip'];\n }\n\n if (is.ip(req.headers['x-forwarded'])) {\n return req.headers['x-forwarded'];\n }\n\n if (is.ip(req.headers['forwarded-for'])) {\n return req.headers['forwarded-for'];\n }\n\n if (is.ip(xForwardedFor)) {\n return xForwardedFor;\n }\n\n if (is.ip(req.headers.forwarded)) {\n return req.headers.forwarded;\n }\n\n if (is.ip(req.headers['x-appengine-user-ip'])) {\n return req.headers['x-appengine-user-ip'];\n }\n }\n\n if (is.existy(req.connection) && !!req.connection) {\n if (is.ip(req.connection.remoteAddress)) {\n return req.connection.remoteAddress;\n }\n\n if (is.existy(req.connection.socket) && !!req.connection.socket && !!req.connection.socket.remoteAddress && is.ip(req.connection.socket.remoteAddress)) {\n return req.connection.socket.remoteAddress;\n }\n }\n\n if (is.existy(req.socket) && !!req.socket && !!req.socket.remoteAddress && is.ip(req.socket.remoteAddress)) {\n return req.socket.remoteAddress;\n }\n\n if (is.existy(req.info) && !!req.info && !!req.info.remoteAddress && is.ip(req.info.remoteAddress)) {\n return req.info.remoteAddress;\n }\n\n if (is.existy(req.requestContext) && !!req.requestContext && is.existy(req.requestContext.identity) && !!req.requestContext.identity && !!req.requestContext.identity.sourceIp && is.ip(req.requestContext.identity.sourceIp)) {\n return req.requestContext.identity.sourceIp;\n }\n\n if (req.headers) {\n if (is.ip(req.headers['Cf-Pseudo-IPv4'])) {\n return req.headers['Cf-Pseudo-IPv4'];\n }\n }\n\n return \"127.0.0.2\";\n}\n\n","export const CRM_AUTH_SIGN_IN_PATH = '/api/crm-auth/sign-in';\nexport const CRM_AUTH_SIGN_OUT_PATH = '/api/crm-auth/sign-out';\nexport const CRM_AUTH_VERIFY_PATH = '/api/crm-auth/verify';","import {NextRequest} from \"next/server\";\n// import {endpoint} from \"@capibox/bridge-interface\";\n\n// export const serverProxyPostRequest = async (req: NextRequest) => {\n// const res = await fetch(\n// req.nextUrl.pathname.replace(\n// endpoint.MAIN_ENDPOINT,\n// 'https://api.capibox.com'\n// ),\n// {\n// method: 'POST',\n// body: JSON.stringify(await req.json()),\n// headers: serverProxyHeaders(),\n// }\n// )\n// return await res.json();\n// }\n\nexport const serverProxyHeaders = () => {\n return {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_ENV}`.toLowerCase() === 'prod' ? `${process.env.CAPIBOX_API_KEY}` : 'dev'\n }\n}","export const CACHE_KEY_FUNNELS = 'funnels-data';\nexport const CACHE_KEY_SPLIT = 'split-data';","import cache from \"memory-cache\";\nimport {CACHE_KEY_SPLIT} from \"../cache/cache\";\nimport {components} from \"../../lib/api.def\";\nimport {getBackendUrl} from \"../_utils/backend-url\";\n\nexport const getSplitData = async (): Promise<components['schemas']['SplitResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_SPLIT);\n\n if (cachedResponse) {\n return cachedResponse;\n } else {\n try {\n const res = await fetch(`${getBackendUrl()}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n let resJson: components['schemas']['SplitResponseDto'][] = [];\n if (res.ok) {\n resJson = await res.json();\n }\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n } catch (e) {\n return [];\n }\n }\n};","export const getBackendUrl = () => {\n return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : 'https://api.capibox.com';\n}","export const trimChar = (string: string, charToRemove: string) => {\n while (string.charAt(0) == charToRemove) {\n string = string.substring(1)\n }\n\n while (string.charAt(string.length - 1) == charToRemove) {\n string = string.substring(0, string.length - 1)\n }\n\n return string\n}\n","import {getSplitData} from \"./get-split-data\";\nimport {NextRequest} from \"next/server\";\nimport {trimChar} from \"../_utils/trim-char\";\n\nexport const getSplitItemForPath = async ({path}: { path: string }) => {\n\n const splits = await getSplitData();\n\n // TODO make url required\n const inputs = splits.filter(i => i.active)\n .map((i) => `/${trimChar((i.url ? i.url : ''), '/')}`)\n\n const inputIndex = inputs.indexOf(path)\n if (inputIndex >= 0) {\n return splits[inputIndex]\n }\n return undefined;\n}\n\nexport const getSplitItemForReq = async ({req}: { req: NextRequest }) => {\n return await getSplitItemForPath({path: req.nextUrl.pathname});\n}","import {components} from \"../../lib/api.def\";\n\nexport type SplitItemUrlWithRange = {\n range: {\n start: number,\n finish: number,\n }\n} & components['schemas']['SplitItemDto'];\n\nexport const getSplitItemUrlWinner = (item: components['schemas']['SplitResponseDto']) => {\n const splitValues = fillSplitItemUrlsRange(item);\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = splitValues[0]\n }\n return currentSplit;\n}\n\n// TODO make splits required\nexport const fillSplitItemUrlsRange = (item: components['schemas']['SplitResponseDto']): SplitItemUrlWithRange[] => {\n const splits = item.splits ? item.splits : [];\n return splits.map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.split)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.split,\n },\n }\n });\n}","import cache from \"memory-cache\";\nimport {CACHE_KEY_FUNNELS} from \"../../server/cache/cache\";\nimport {getBackendUrl} from \"../../server/_utils/backend-url\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getCapiboxTemplates = async (): Promise<components['schemas']['FunnelResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_FUNNELS);\n if (cachedResponse) {\n return cachedResponse;\n } else {\n const funnelRes = await fetch(`${getBackendUrl()}/funnels/funnel`, {\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n })\n const responseBody = await funnelRes.json();\n cache.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);\n return responseBody;\n }\n}","import {components} from \"../../lib/api.def\";\nimport {getCapiboxTemplates} from \"./get-capibox-templates\";\n\nexport type SdkRemoteFunnel = {\n checkout: string,\n landing: string,\n\n angle: string,\n version: string,\n\n homePageTemplate: string,\n quizPageTemplate: string,\n resultPageTemplate: string,\n emailPageTemplate: string,\n checkoutPageTemplate: string,\n paymentWindowTemplate: string,\n upsellPageTemplate: string,\n thankYouPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = await getCapiboxTemplates();\n const output: SdkRemoteFunnel[] = [];\n for (const funnel of tmpFunnels) {\n output.push({\n landing: funnel.angle,\n checkout: funnel.version,\n\n angle: funnel.angle,\n version: funnel.version,\n\n homePageTemplate: funnel.home_page || 'Default',\n quizPageTemplate: funnel.quiz_page || 'Default',\n resultPageTemplate: funnel.results_page || 'Default',\n emailPageTemplate: funnel.email_page || 'Default',\n checkoutPageTemplate: funnel.checkout_page || 'Default',\n paymentWindowTemplate: funnel.payment_window || 'Default',\n upsellPageTemplate: funnel.upsell_page || 'Default',\n thankYouPageTemplate: funnel.thankyou_page_template || 'Default',\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n}","import {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n thankYouPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import createFetchClient from \"openapi-fetch\";\nimport type {paths} from \"./api.def\";\nimport {getBackendUrl} from \"../server/_utils/backend-url\";\n\nexport const $apiClient = createFetchClient<paths>({\n baseUrl: getBackendUrl(),\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n});","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSession = async (\n uuid: string,\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.GET(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to get session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const snapchatS2s = async (data: components['schemas']['SnapchatCapiBridgeDto']) => {\n await $apiClient.POST('/analytics/capi/snapchat/event', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n body: data\n });\n return {success: true};\n}","import cache from \"memory-cache\";\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"../cache/cache\";\n\nexport const funnelsClearCache = () => {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const tiktokS2S = async (data: components['schemas']['TiktokCapiPayloadSessionBridge']) => {\n await $apiClient.POST('/analytics/capi/tiktok/event', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n body: data\n });\n return {success: true};\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const facebookS2S = async (data: components['schemas']['FbCapiPayloadSessionBridge']) => {\n await $apiClient.POST('/analytics/capi/facebook/event', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n body: data\n });\n return {success: true};\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const appendSession = async (\n uuid: string,\n body: components['schemas']['AppendSessionDto'],\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.PUT(\n '/session/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n body\n }\n );\n if (!res.data) {\n throw new Error('Failed to append session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSessionByEmail = async (\n email: string,\n): Promise<components['schemas']['SessionResponseDto']> => {\n const res = await $apiClient.GET(\n '/session/email/{email}',\n {\n params: {\n path: {\n uuid: email\n },\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n }\n );\n if (!res.data) {\n throw new Error('Failed to get session.')\n }\n return res.data.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const klaviyoSendEvent = async (dto: components[\"schemas\"][\"CreateEventDto\"]) => {\n const res = await $apiClient.POST(\n '/dynamic-public-direct/klaviyo/events',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n\n },\n body: dto\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const klaviyoSendBulk = async (dto: components[\"schemas\"][\"CreateBulkEventDto\"]) => {\n const res = await $apiClient.POST(\n '/dynamic-public-direct/klaviyo/events/bulk',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n\n },\n body: dto\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\n\nexport const realtimeUtmOrderData = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/realtime/events/utm-data/{uuid}',\n {\n params: {\n path: {\n uuid\n },\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n }\n }\n );\n if (!res.data) {\n throw new Error('Failed to get realtime utm data.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const orderGetByUuid = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/dynamic-public/orders-management/report-item/order/{orderId}',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n path: {\n orderId: uuid\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to get order by uuid.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const orderGetByEmail = async (email: string) => {\n const res = await $apiClient.GET(\n '/dynamic-public/orders-management/report-item/email/{email}',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n path: {\n email\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to get order by email.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\n\nexport const paymentFirstPayment = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/dynamic-public/payments-management/payments/first-payment',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n query: {\n referenceId: uuid\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to get first payment.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const paymentLastPayments = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/dynamic-public/payments-management/payments/last-5-payments',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n query: {\n referenceId: uuid\n }\n },\n });\n if (!res.data) {\n throw new Error('Failed to get last payments.')\n }\n return res.data;\n}","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const cancelSubscriptionById = async (id: number, data: components[\"schemas\"][\"CancelSubscriptionDto\"]) => {\n const res = await $apiClient.POST('/dynamic-public/subscriptions-management/subscriptions/{id}/cancel', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n path: {\n id: id\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to cancel subscription.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const cancelSubscriptionsByOrderId = async (uuid: string, data: components[\"schemas\"][\"CancelSubscriptionDto\"]) => {\n const res = await $apiClient.POST('/dynamic-public/subscriptions-management/subscriptions/order/{orderId}/cancel', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n path: {\n orderId: uuid\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to cancel subscription.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const subscriptionApplyDiscount = async (data: components[\"schemas\"][\"DiscountSubscriptionDto\"]) => {\n const res = await $apiClient.POST('/dynamic-public/subscriptions-management/subscriptions/discount', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to apply discount.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const subscriptionPause = async (data: components[\"schemas\"][\"PauseSubscriptionDto\"]) => {\n const res = await $apiClient.POST('/dynamic-public/subscriptions-management/subscriptions/pause', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to pause subscription.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const fillSubscriptionCancelRequest = async (data: components[\"schemas\"][\"CreateSubscriptionCancelRequestDto\"]) => {\n const res = await $apiClient.POST('/dynamic-public/subscriptions-management/subscription-cancel-requests', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to fill request.')\n }\n return res.data;\n};","import {$apiClient} from \"../../lib/api\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getSubscriptionsByOrderId = async (uuid: string) => {\n const res = await $apiClient.GET(\n '/dynamic-public/subscriptions-management/subscriptions/info-by-orderid',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n },\n query: {\n orderId: uuid,\n },\n }\n }\n );\n if (!res.data) {\n throw new Error('Failed to get subscriptions by order id.')\n }\n return res.data;\n};","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const primerRefundPayment = async (transactionId: string, source: string, dto: components['schemas']['PrimerPaymentRefundPaymentRequestDto']) => {\n const res = await $apiClient.POST(\n '/dynamic-public/payments-primer/v1/primer-payment/{transactionId}/refund-or-cancel',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`,\n 'x-source': source,\n },\n path: {\n transactionId\n }\n },\n body: dto,\n });\n if (!res.data) {\n throw new Error('Failed to refund primer payment.')\n }\n return res.data;\n}","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const paypalRefundPayment = async (source: string, dto: components['schemas']['PaymentRefundRequestDto']) => {\n const res = await $apiClient.POST(\n '/dynamic-public/payments-paypal/payments/refund',\n {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`,\n 'x-source': source\n },\n },\n body: dto,\n });\n if (!res.data) {\n throw new Error('Failed to refund paypal payment.')\n }\n return res.data;\n}","import {primerRefundPayment} from \"./primer/primer-refund-payment\";\nimport {paypalRefundPayment} from \"./paypal/paypal-refund-payment\";\n\nexport const paymentsRefund = async ({\n source,\n transactionId,\n amount,\n reason,\n orderId,\n currency\n }: {\n amount: number,\n reason?: string,\n source: string,\n transactionId: string,\n orderId: string,\n currency: string\n}) => {\n\n if (source.startsWith('primer')) {\n return await primerRefundPayment(transactionId, source, {\n amount,\n reason,\n })\n } else if (source.startsWith('paypal')) {\n return await paypalRefundPayment(source,\n {\n amount,\n orderId,\n transactionId,\n currency\n })\n }\n throw new Error('Unknown payment source');\n};","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const getTaxPercent = async (\n data: components[\"schemas\"][\"TaxPercentCountryStateRequestDto\"]\n) => {\n const res = await $apiClient.POST('/dynamic-public/tax/tax/get', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to get tax percent.')\n }\n return res.data;\n};","import {$apiClient} from \"../../../lib/api\";\nimport {components} from \"../../../lib/api.def\";\n\nexport const taxCalculateAmount = async (\n data: components[\"schemas\"][\"TaxValueCountryStateRequestDto\"]\n) => {\n const res = await $apiClient.POST('/dynamic-public/tax/tax/calculate', {\n params: {\n header: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to create payment session.')\n }\n return res.data;\n};","import {middleware} from \"./server/middleware\";\nimport {getFunnels} from \"./browser/funnels/get\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\nimport {getSession} from \"./server/session/get\";\nimport {snapchatS2s} from \"./server/capi/snapchat-s2s\";\nimport {funnelsClearCache} from \"./server/funnels/clear-cache\";\nimport {tiktokS2S} from \"./server/capi/tiktok-s2s\";\nimport {facebookS2S} from \"./server/capi/facebook-s2s\";\nimport {appendSession} from \"./server/session/append\";\nimport {getSessionByEmail} from \"./server/session/getByEmail\";\nimport {klaviyoSendEvent} from \"./server/klaviyo/klaviyo-send-event\";\nimport {klaviyoSendBulk} from \"./server/klaviyo/klaviyo-send-bulk\";\nimport {realtimeUtmOrderData} from \"./server/realtime/realtime-utm-order-data\";\nimport {orderGetByUuid} from \"./server/order/order-get-by-uuid\";\nimport {orderGetByEmail} from \"./server/order/order-get-by-email\";\nimport {paymentFirstPayment} from \"./server/payments/payment-first-payment\";\nimport {paymentLastPayments} from \"./server/payments/payment-last-payments\";\nimport {cancelSubscriptionById} from \"./server/subscription/cancel-subscription-by-id\";\nimport {cancelSubscriptionsByOrderId} from \"./server/subscription/cancel-subscriptions-by-order-id\";\nimport {subscriptionApplyDiscount} from \"./server/subscription/subscription-apply-discount\";\nimport {subscriptionPause} from \"./server/subscription/subscription-pause\";\nimport {fillSubscriptionCancelRequest} from \"./server/subscription/fill-subscription-cancel-request\";\nimport {getSubscriptionsByOrderId} from \"./server/subscription/get-subscriptions-by-order-id\";\nimport {primerRefundPayment} from \"./server/payments/primer/primer-refund-payment\";\nimport {paypalRefundPayment} from \"./server/payments/paypal/paypal-refund-payment\";\nimport {paymentsRefund} from \"./server/payments/payments-refund\";\nimport {getTaxPercent} from \"./server/payments/tax/get-tax-percent\";\nimport {taxCalculateAmount} from \"./server/payments/tax/tax-calculate-amount\";\n\n\nexport {SdkRemoteFunnel} from \"./browser/funnels/get\";\n\nconst server = {\n middleware,\n funnels: {\n get: getFunnels,\n getTemplates,\n clearCache: funnelsClearCache,\n },\n session: {\n get: getSession,\n append: appendSession,\n getByEmail: getSessionByEmail,\n },\n capi: {\n snapchat: snapchatS2s,\n tiktok: tiktokS2S,\n facebook: facebookS2S,\n },\n klaviyo: {\n send: klaviyoSendEvent,\n sendBulk: klaviyoSendBulk,\n },\n realtime: {\n orderUtmData: realtimeUtmOrderData,\n },\n order: {\n getByUuid: orderGetByUuid,\n getByEmail: orderGetByEmail\n },\n payments: {\n firstPayment: paymentFirstPayment,\n last5Payments: paymentLastPayments,\n refund: paymentsRefund,\n primer: {\n refund: primerRefundPayment,\n },\n paypal: {\n refund: paypalRefundPayment,\n },\n tax: {\n getPercent: getTaxPercent,\n calculate: taxCalculateAmount,\n }\n },\n subscription: {\n cancelById: cancelSubscriptionById,\n cancelByOrderId: cancelSubscriptionsByOrderId,\n applyDiscount: subscriptionApplyDiscount,\n pause: subscriptionPause,\n fillCancellationRequest: fillSubscriptionCancelRequest,\n get: getSubscriptionsByOrderId,\n }\n}\n\nexport {\n server\n}\n\n// v.0.0.90"],"mappings":"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","names":["ip","cache","string","cache","cache","cache","ip","cache","cache"]}
|
|
1
|
+
{"version":3,"sources":["../src/browser/funnels/get-capibox-templates.ts","../src/server/cache/cache.ts","../src/server/_utils/backend-url.ts","../src/browser/funnels/get.ts","../src/browser/funnels/get-templates.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/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/server/funnels/clear-cache.ts","../src/index.ts"],"sourcesContent":["import cache from \"memory-cache\";\nimport {CACHE_KEY_FUNNELS} from \"../../server/cache/cache\";\nimport {getBackendUrl} from \"../../server/_utils/backend-url\";\nimport {components} from \"../../lib/api.def\";\n\nexport const getCapiboxTemplates = async (): Promise<components['schemas']['FunnelResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_FUNNELS);\n if (cachedResponse) {\n return cachedResponse;\n } else {\n const funnelRes = await fetch(`${getBackendUrl()}/funnels/funnel`, {\n headers: {\n 'project-key': `${process.env.CAPIBOX_API_KEY}`\n }\n })\n const responseBody = await funnelRes.json();\n cache.put(CACHE_KEY_FUNNELS, responseBody, 2147483647);\n return responseBody;\n }\n}","export const CACHE_KEY_FUNNELS = 'funnels-data';\nexport const CACHE_KEY_SPLIT = 'split-data';","export const getBackendUrl = () => {\n return process.env.CLIENT_BACKEND_URL ? process.env.CLIENT_BACKEND_URL : 'https://api.capibox.com';\n}","import {components} from \"../../lib/api.def\";\nimport {getCapiboxTemplates} from \"./get-capibox-templates\";\n\nexport type SdkRemoteFunnel = {\n checkout: string,\n landing: string,\n\n angle: string,\n version: string,\n\n homePageTemplate: string,\n quizPageTemplate: string,\n resultPageTemplate: string,\n emailPageTemplate: string,\n checkoutPageTemplate: string,\n paymentWindowTemplate: string,\n upsellPageTemplate: string,\n thankYouPageTemplate: string,\n\n options?: any,\n upsellOptions?: any,\n}\n\nexport const getFunnels = async (): Promise<SdkRemoteFunnel[]> => {\n const tmpFunnels: components['schemas']['FunnelResponseDto'][] = await getCapiboxTemplates();\n const output: SdkRemoteFunnel[] = [];\n for (const funnel of tmpFunnels) {\n output.push({\n landing: funnel.angle,\n checkout: funnel.version,\n\n angle: funnel.angle,\n version: funnel.version,\n\n homePageTemplate: funnel.home_page || 'Default',\n quizPageTemplate: funnel.quiz_page || 'Default',\n resultPageTemplate: funnel.results_page || 'Default',\n emailPageTemplate: funnel.email_page || 'Default',\n checkoutPageTemplate: funnel.checkout_page || 'Default',\n paymentWindowTemplate: funnel.payment_window || 'Default',\n upsellPageTemplate: funnel.upsell_page || 'Default',\n thankYouPageTemplate: funnel.thankyou_page_template || 'Default',\n\n options: funnel.options,\n upsellOptions: funnel.upsell_options,\n });\n }\n return output;\n}","import {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n thankYouPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import {NextRequest, NextResponse, userAgent} from \"next/server\";\nimport {getClientIp} from \"./_utils/client-ip\";\nimport {CRM_AUTH_SIGN_IN_PATH, CRM_AUTH_SIGN_OUT_PATH, CRM_AUTH_VERIFY_PATH} from \"../browser/crm-auth/path\";\nimport {serverProxyHeaders} from \"./_utils/server-fetch-utils\";\nimport cache from 'memory-cache';\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"./cache/cache\";\nimport {getSplitItemForReq} from \"./split/get-split-item\";\nimport {trimChar} from \"./_utils/trim-char\";\nimport {getSplitItemUrlWinner} from \"./split/get-split-winner\";\nimport {getBackendUrl} from \"./_utils/backend-url\";\nimport {getCapiboxTemplates} from \"../browser/funnels/get-capibox-templates\";\n\ntype Templates = {\n [key: string]: string[]\n}\n\ntype Options = {\n templates?: Templates,\n onCrmTokenCheck?: (res: any) => Promise<any>,\n}\n\nexport const middleware = async (\n req: NextRequest,\n options?: Options,\n) => {\n if (req.nextUrl.pathname.startsWith('/app/clear-cache')) {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n\n const res = NextResponse.json({s: new Date().getTime()})\n\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n return res;\n }\n\n if (options?.templates && req.nextUrl.pathname.startsWith('/app/get-templates')) {\n const res = NextResponse.json({\n success: true,\n\n data: options.templates,\n })\n res.headers.append('Access-Control-Allow-Credentials', \"true\")\n res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin\n res.headers.append('Access-Control-Allow-Methods', 'GET,DELETE,PATCH,POST,PUT')\n res.headers.append(\n 'Access-Control-Allow-Headers',\n 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'\n )\n\n return res\n }\n\n // SPLIT TEST\n const input = await getSplitItemForReq({req});\n if (input) {\n const currentSplit = getSplitItemUrlWinner(input);\n\n return NextResponse.redirect(\n new URL(`/${trimChar(currentSplit.url, '/')}${req.nextUrl.search}`, req.url),\n )\n }\n\n if (req.nextUrl.pathname.startsWith('/api-client-proxy')) {\n if (req.nextUrl.pathname === '/api-client-proxy/funnels/funnel') {\n const capiboxTemplates = await getCapiboxTemplates();\n const res = NextResponse.json(capiboxTemplates);\n res.headers.set('X-Cache', 'HIT');\n return res;\n }\n\n let urlClone = req.nextUrl.clone();\n\n const targetUrl = new URL(getBackendUrl())\n const requestHeaders = new Headers(req.headers)\n requestHeaders.set('host', targetUrl.hostname)\n requestHeaders.set('project-key', `${process.env.CAPIBOX_API_KEY}`)\n\n if (req.nextUrl.pathname.includes('/realtime/')) {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {device, browser, os} = userAgent(req)\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-os', `${os.name} / ${os.version}`)\n requestHeaders.set('x-browser', `${browser.name} / ${browser.version}`)\n requestHeaders.set('x-device', device.type ? device.type : '-')\n const anUuidV3Cookie = req.cookies.get('an_uuid_v3');\n if (anUuidV3Cookie) {\n requestHeaders.set('x-realtime', anUuidV3Cookie?.value)\n }\n }\n if (req.nextUrl.pathname === '/api-client-proxy/session') {\n const ip = getClientIp({headers: Object.fromEntries(req.headers)})\n const {ua} = userAgent(req);\n requestHeaders.set('x-client-ip', ip)\n requestHeaders.set('x-user-agent', ua)\n }\n\n urlClone.protocol = targetUrl.protocol\n urlClone.hostname = targetUrl.hostname\n urlClone.port = targetUrl.port\n urlClone.pathname = urlClone.pathname.replace(/^\\/api-client-proxy/, '');\n\n return NextResponse.rewrite(urlClone, {\n request: {\n headers: requestHeaders,\n },\n })\n }\n\n // crm auth\n if (req.nextUrl.pathname === CRM_AUTH_SIGN_IN_PATH) {\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/sign-in',\n {\n method: 'POST',\n body: JSON.stringify(await req.json()),\n headers: serverProxyHeaders(),\n }\n )\n const resJson = await res.json();\n\n const result = NextResponse.json(resJson);\n if (!!resJson.action && !!resJson.token && resJson.action === 'logged-in') {\n result.cookies.set({\n name: \"token\",\n value: resJson.token,\n maxAge: 60 * 60 * 24 * 30,\n httpOnly: true,\n });\n }\n return result;\n }\n if (req.nextUrl.pathname === CRM_AUTH_VERIFY_PATH) {\n const tokenCookie = req.cookies.get('token')\n if (!tokenCookie || !tokenCookie.value) {\n return NextResponse.json({success: 0})\n }\n\n const payload = {\n data: {\n token: tokenCookie.value,\n }\n }\n const res = await fetch(\n 'https://auth.crm.apidata.app/api/check',\n {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: serverProxyHeaders(),\n }\n )\n let resJson = await res.json();\n\n if (options?.onCrmTokenCheck) {\n resJson = await options.onCrmTokenCheck(resJson);\n }\n\n const result = NextResponse.json(resJson);\n if (!('id' in resJson && resJson.id > 0)) {\n result.cookies.delete(\"token\");\n }\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}","import cache from \"memory-cache\";\nimport {CACHE_KEY_SPLIT} from \"../cache/cache\";\nimport {components} from \"../../lib/api.def\";\nimport {getBackendUrl} from \"../_utils/backend-url\";\n\nexport const getSplitData = async (): Promise<components['schemas']['SplitResponseDto'][]> => {\n const cachedResponse = cache.get(CACHE_KEY_SPLIT);\n\n if (cachedResponse) {\n return cachedResponse;\n } else {\n try {\n const res = await fetch(`${getBackendUrl()}/funnels/split`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `${process.env.CAPIBOX_API_KEY}`\n },\n });\n let resJson: components['schemas']['SplitResponseDto'][] = [];\n if (res.ok) {\n resJson = await res.json();\n }\n cache.put(CACHE_KEY_SPLIT, resJson, 2147483647);\n\n return resJson;\n } catch (e) {\n return [];\n }\n }\n};","export const trimChar = (string: string, charToRemove: string) => {\n while (string.charAt(0) == charToRemove) {\n string = string.substring(1)\n }\n\n while (string.charAt(string.length - 1) == charToRemove) {\n string = string.substring(0, string.length - 1)\n }\n\n return string\n}\n","import {getSplitData} from \"./get-split-data\";\nimport {NextRequest} from \"next/server\";\nimport {trimChar} from \"../_utils/trim-char\";\n\nexport const getSplitItemForPath = async ({path}: { path: string }) => {\n\n const splits = await getSplitData();\n\n // TODO make url required\n const inputs = splits.filter(i => i.active)\n .map((i) => `/${trimChar((i.url ? i.url : ''), '/')}`)\n\n const inputIndex = inputs.indexOf(path)\n if (inputIndex >= 0) {\n return splits[inputIndex]\n }\n return undefined;\n}\n\nexport const getSplitItemForReq = async ({req}: { req: NextRequest }) => {\n return await getSplitItemForPath({path: req.nextUrl.pathname});\n}","import {components} from \"../../lib/api.def\";\n\nexport type SplitItemUrlWithRange = {\n range: {\n start: number,\n finish: number,\n }\n} & components['schemas']['SplitItemDto'];\n\nexport const getSplitItemUrlWinner = (item: components['schemas']['SplitResponseDto']) => {\n const splitValues = fillSplitItemUrlsRange(item);\n\n const _time = new Date().getTime()\n const _seed100 = _time % 100\n\n let currentSplit = splitValues.find(\n (e) => e.range.start <= _seed100 && e.range.finish > _seed100,\n )\n if (!currentSplit) {\n currentSplit = splitValues[0]\n }\n return currentSplit;\n}\n\n// TODO make splits required\nexport const fillSplitItemUrlsRange = (item: components['schemas']['SplitResponseDto']): SplitItemUrlWithRange[] => {\n const splits = item.splits ? item.splits : [];\n return splits.map((curr, i, data) => {\n const minPercent = data\n .slice(0, i)\n .map((a) => a.split)\n .reduce((a, b) => a + b, 0)\n\n return {\n ...curr,\n range: {\n start: minPercent,\n finish: minPercent + curr.split,\n },\n }\n });\n}","import cache from \"memory-cache\";\nimport {CACHE_KEY_FUNNELS, CACHE_KEY_SPLIT} from \"../cache/cache\";\n\nexport const funnelsClearCache = () => {\n cache.del(CACHE_KEY_FUNNELS);\n cache.del(CACHE_KEY_SPLIT);\n}","import {getFunnels} from \"./browser/funnels/get\";\nimport {getTemplates} from \"./browser/funnels/get-templates\";\nimport {middleware} from \"./server/middleware\";\nimport {funnelsClearCache} from \"./server/funnels/clear-cache\";\n\nimport {server as serverSdk} from '@capibox/bridge-server-sdk'\n\nexport {SdkRemoteFunnel} from \"./browser/funnels/get\";\n\nconst server = {\n middleware,\n ...serverSdk,\n funnels: {\n get: getFunnels,\n getTemplates,\n clearCache: funnelsClearCache,\n },\n}\n\nexport {\n server\n}\n\n// v.0.0.92"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;;;ACAX,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;;;ACDxB,IAAM,gBAAgB,MAAM;AAC/B,SAAO,QAAQ,IAAI,qBAAqB,QAAQ,IAAI,qBAAqB;AAC7E;;;AFGO,IAAM,sBAAsB,MAAmE;AAClG,QAAM,iBAAiB,MAAM,IAAI,iBAAiB;AAClD,MAAI,gBAAgB;AAChB,WAAO;AAAA,EACX,OAAO;AACH,UAAM,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,mBAAmB;AAAA,MAC/D,SAAS;AAAA,QACL,eAAe,GAAG,QAAQ,IAAI,eAAe;AAAA,MACjD;AAAA,IACJ,CAAC;AACD,UAAM,eAAe,MAAM,UAAU,KAAK;AAC1C,UAAM,IAAI,mBAAmB,cAAc,UAAU;AACrD,WAAO;AAAA,EACX;AACJ;;;AGIO,IAAM,aAAa,MAAwC;AAC9D,QAAM,aAA2D,MAAM,oBAAoB;AAC3F,QAAM,SAA4B,CAAC;AACnC,aAAW,UAAU,YAAY;AAC7B,WAAO,KAAK;AAAA,MACR,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MAEjB,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,MAEhB,kBAAkB,OAAO,aAAa;AAAA,MACtC,kBAAkB,OAAO,aAAa;AAAA,MACtC,oBAAoB,OAAO,gBAAgB;AAAA,MAC3C,mBAAmB,OAAO,cAAc;AAAA,MACxC,sBAAsB,OAAO,iBAAiB;AAAA,MAC9C,uBAAuB,OAAO,kBAAkB;AAAA,MAChD,oBAAoB,OAAO,eAAe;AAAA,MAC1C,sBAAsB,OAAO,0BAA0B;AAAA,MAEvD,SAAS,OAAO;AAAA,MAChB,eAAe,OAAO;AAAA,IAC1B,CAAC;AAAA,EACL;AACA,SAAO;AACX;;;AC1CA,IAAM,kBAAqC;AAAA,EACvC,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,sBAAsB;AAC1B;AAQO,IAAM,eAAe,CAAO,OAEuC,eAFvC,KAEuC,WAFvC;AAAA,EACI;AAAA,EAAO;AAAA,EAAS;AACpB,GAAuC;AACtE,QAAM,cAAc,MAAM,WAAW;AAErC,QAAM,sBAAsB,YAAY,OAAO,CAAC,MAAM;AAClD,SACK,EAAE,aAAa,WAAW,EAAE,aAAa,WACzC,EAAE,YAAY,SAAS,EAAE,YAAY,QACxC;AACE,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX,CAAC;AACD,MAAI,oBAAoB,SAAS,GAAG;AAChC,UAAM,YAA6B,KAAK;AAAA,MACpC,KAAK,UAAU,oBAAoB,oBAAoB,SAAS,CAAC,CAAC;AAAA,IACtE;AACA,QAAI,cAAc;AACd,YAAM,OAAO,OAAO,KAAK,eAAe;AACxC,iBAAW,OAAO,MAAM;AACpB,YAAI,aAAa,IAAI,GAAG,GAAG;AAEvB,oBAAU,GAAG,IAAI,aAAa,IAAI,GAAG;AAAA,QACzC;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACA,SAAO,iCACA,kBADA;AAAA,IAEH,SAAS;AAAA,IACT,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACJ;AACJ;;;AC5DA,SAAqB,cAAc,iBAAgB;;;ACEnD,IAAM,UAAU;AAAA,EACZ,MAAM;AAAA,EACN,MAAM;AACV;AAEA,SAAS,IAAI,MAAW;AACpB,SAAO,WAAY;AACf,WAAO,CAAC,KAAK,MAAM,MAAM,MAAM,UAAU,MAAM,KAAK,SAAS,CAAC;AAAA,EAClE;AACJ;AAEA,SAAS,OAAO,OAAY;AACxB,SAAO,SAAS;AACpB;AAEA,SAAS,GAAG,OAAY;AACpB,SAAO,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK;AAC/E;AAEA,SAAS,OAAO,OAAY;AACxB,SAAO,OAAO,KAAK,MAAM;AAC7B;AAEA,SAAS,OAAO,OAAY;AACxB,SAAO,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AACrD;AAEA,IAAM,KAAK;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK;AAAA,IACD,QAAQ,IAAI,MAAM;AAAA,IAClB,IAAI,IAAI,EAAE;AAAA,IACV,QAAQ,IAAI,MAAM;AAAA,IAClB,QAAQ,IAAI,MAAM;AAAA,EACtB;AACJ;AACA,IAAO,aAAQ;;;ACvCf,SAAS,6BAA6B,OAAY;AAC9C,MAAI,CAAC,WAAG,OAAO,KAAK,GAAG;AACnB,WAAO;AAAA,EACX;AAEA,QAAM,eAAe,MAAM,MAAM,GAAG,EAAE,IAAI,SAAU,GAAW;AAC3D,UAAMA,MAAK,EAAE,KAAK;AAElB,QAAIA,IAAG,SAAS,GAAG,GAAG;AAClB,YAAM,WAAWA,IAAG,MAAM,GAAG;AAC7B,UAAI,SAAS,WAAW,GAAG;AACvB,eAAO,SAAS,CAAC;AAAA,MACrB;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,CAAC;AAED,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,QAAI,WAAG,GAAG,aAAa,CAAC,CAAC,GAAG;AACxB,aAAO,aAAa,CAAC;AAAA,IACzB;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,SAAS,YAAY,KAqBzB;AACC,MAAI,IAAI,SAAS;AACb,QAAI,WAAG,GAAG,IAAI,QAAQ,aAAa,CAAC,GAAG;AACnC,aAAO,IAAI,QAAQ,aAAa;AAAA,IACpC;AAEA,UAAM,gBAAgB,6BAA6B,IAAI,QAAQ,iBAAiB,CAAC;AAEjF,QAAI,WAAG,GAAG,IAAI,QAAQ,kBAAkB,CAAC,GAAG;AACxC,aAAO,IAAI,QAAQ,kBAAkB;AAAA,IACzC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,kBAAkB,CAAC,GAAG;AACxC,aAAO,IAAI,QAAQ,kBAAkB;AAAA,IACzC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,gBAAgB,CAAC,GAAG;AACtC,aAAO,IAAI,QAAQ,gBAAgB;AAAA,IACvC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,WAAW,CAAC,GAAG;AACjC,aAAO,IAAI,QAAQ,WAAW;AAAA,IAClC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,qBAAqB,CAAC,GAAG;AAC3C,aAAO,IAAI,QAAQ,qBAAqB;AAAA,IAC5C;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,aAAa,CAAC,GAAG;AACnC,aAAO,IAAI,QAAQ,aAAa;AAAA,IACpC;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,eAAe,CAAC,GAAG;AACrC,aAAO,IAAI,QAAQ,eAAe;AAAA,IACtC;AAEA,QAAI,WAAG,GAAG,aAAa,GAAG;AACtB,aAAO;AAAA,IACX;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,SAAS,GAAG;AAC9B,aAAO,IAAI,QAAQ;AAAA,IACvB;AAEA,QAAI,WAAG,GAAG,IAAI,QAAQ,qBAAqB,CAAC,GAAG;AAC3C,aAAO,IAAI,QAAQ,qBAAqB;AAAA,IAC5C;AAAA,EACJ;AAEA,MAAI,WAAG,OAAO,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,YAAY;AAC/C,QAAI,WAAG,GAAG,IAAI,WAAW,aAAa,GAAG;AACrC,aAAO,IAAI,WAAW;AAAA,IAC1B;AAEA,QAAI,WAAG,OAAO,IAAI,WAAW,MAAM,KAAK,CAAC,CAAC,IAAI,WAAW,UAAU,CAAC,CAAC,IAAI,WAAW,OAAO,iBAAiB,WAAG,GAAG,IAAI,WAAW,OAAO,aAAa,GAAG;AACpJ,aAAO,IAAI,WAAW,OAAO;AAAA,IACjC;AAAA,EACJ;AAEA,MAAI,WAAG,OAAO,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,OAAO,iBAAiB,WAAG,GAAG,IAAI,OAAO,aAAa,GAAG;AACxG,WAAO,IAAI,OAAO;AAAA,EACtB;AAEA,MAAI,WAAG,OAAO,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,KAAK,iBAAiB,WAAG,GAAG,IAAI,KAAK,aAAa,GAAG;AAChG,WAAO,IAAI,KAAK;AAAA,EACpB;AAEA,MAAI,WAAG,OAAO,IAAI,cAAc,KAAK,CAAC,CAAC,IAAI,kBAAkB,WAAG,OAAO,IAAI,eAAe,QAAQ,KAAK,CAAC,CAAC,IAAI,eAAe,YAAY,CAAC,CAAC,IAAI,eAAe,SAAS,YAAY,WAAG,GAAG,IAAI,eAAe,SAAS,QAAQ,GAAG;AAC3N,WAAO,IAAI,eAAe,SAAS;AAAA,EACvC;AAEA,MAAI,IAAI,SAAS;AACb,QAAI,WAAG,GAAG,IAAI,QAAQ,gBAAgB,CAAC,GAAG;AACtC,aAAO,IAAI,QAAQ,gBAAgB;AAAA,IACvC;AAAA,EACJ;AAEA,SAAO;AACX;;;AC/HO,IAAM,wBAAwB;AAC9B,IAAM,yBAAyB;AAC/B,IAAM,uBAAuB;;;ACgB7B,IAAM,qBAAqB,MAAM;AACpC,SAAO;AAAA,IACH,gBAAgB;AAAA,IAChB,iBAAiB,GAAG,QAAQ,IAAI,WAAW,GAAG,YAAY,MAAM,SAAS,GAAG,QAAQ,IAAI,eAAe,KAAK;AAAA,EAChH;AACJ;;;AJnBA,OAAOC,YAAW;;;AKJlB,OAAOC,YAAW;AAKX,IAAM,eAAe,MAAkE;AAC1F,QAAM,iBAAiBC,OAAM,IAAI,eAAe;AAEhD,MAAI,gBAAgB;AAChB,WAAO;AAAA,EACX,OAAO;AACH,QAAI;AACA,YAAM,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,kBAAkB;AAAA,QACxD,SAAS;AAAA,UACL,gBAAgB;AAAA,UAChB,iBAAiB,GAAG,QAAQ,IAAI,eAAe;AAAA,QACnD;AAAA,MACJ,CAAC;AACD,UAAI,UAAuD,CAAC;AAC5D,UAAI,IAAI,IAAI;AACR,kBAAU,MAAM,IAAI,KAAK;AAAA,MAC7B;AACA,MAAAA,OAAM,IAAI,iBAAiB,SAAS,UAAU;AAE9C,aAAO;AAAA,IACX,SAAS,GAAG;AACR,aAAO,CAAC;AAAA,IACZ;AAAA,EACJ;AACJ;;;AC7BO,IAAM,WAAW,CAACC,SAAgB,iBAAyB;AAC9D,SAAOA,QAAO,OAAO,CAAC,KAAK,cAAc;AACrC,IAAAA,UAASA,QAAO,UAAU,CAAC;AAAA,EAC/B;AAEA,SAAOA,QAAO,OAAOA,QAAO,SAAS,CAAC,KAAK,cAAc;AACrD,IAAAA,UAASA,QAAO,UAAU,GAAGA,QAAO,SAAS,CAAC;AAAA,EAClD;AAEA,SAAOA;AACX;;;ACNO,IAAM,sBAAsB,CAAO,OAA6B,eAA7B,KAA6B,WAA7B,EAAC,KAAI,GAAwB;AAEnE,QAAM,SAAS,MAAM,aAAa;AAGlC,QAAM,SAAS,OAAO,OAAO,OAAK,EAAE,MAAM,EACrC,IAAI,CAAC,MAAM,IAAI,SAAU,EAAE,MAAM,EAAE,MAAM,IAAK,GAAG,CAAC,EAAE;AAEzD,QAAM,aAAa,OAAO,QAAQ,IAAI;AACtC,MAAI,cAAc,GAAG;AACjB,WAAO,OAAO,UAAU;AAAA,EAC5B;AACA,SAAO;AACX;AAEO,IAAM,qBAAqB,CAAO,OAAgC,eAAhC,KAAgC,WAAhC,EAAC,IAAG,GAA4B;AACrE,SAAO,MAAM,oBAAoB,EAAC,MAAM,IAAI,QAAQ,SAAQ,CAAC;AACjE;;;ACZO,IAAM,wBAAwB,CAAC,SAAoD;AACtF,QAAM,cAAc,uBAAuB,IAAI;AAE/C,QAAM,SAAQ,oBAAI,KAAK,GAAE,QAAQ;AACjC,QAAM,WAAW,QAAQ;AAEzB,MAAI,eAAe,YAAY;AAAA,IAC3B,CAAC,MAAM,EAAE,MAAM,SAAS,YAAY,EAAE,MAAM,SAAS;AAAA,EACzD;AACA,MAAI,CAAC,cAAc;AACf,mBAAe,YAAY,CAAC;AAAA,EAChC;AACA,SAAO;AACX;AAGO,IAAM,yBAAyB,CAAC,SAA6E;AAChH,QAAM,SAAS,KAAK,SAAS,KAAK,SAAS,CAAC;AAC5C,SAAO,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS;AACjC,UAAM,aAAa,KACd,MAAM,GAAG,CAAC,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,EAClB,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAE9B,WAAO,iCACA,OADA;AAAA,MAEH,OAAO;AAAA,QACH,OAAO;AAAA,QACP,QAAQ,aAAa,KAAK;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;;;ARpBO,IAAM,aAAa,CACtB,KACA,YACC;AACD,MAAI,IAAI,QAAQ,SAAS,WAAW,kBAAkB,GAAG;AACrD,IAAAC,OAAM,IAAI,iBAAiB;AAC3B,IAAAA,OAAM,IAAI,eAAe;AAEzB,UAAM,MAAM,aAAa,KAAK,EAAC,IAAG,oBAAI,KAAK,GAAE,QAAQ,EAAC,CAAC;AAEvD,QAAI,QAAQ,OAAO,oCAAoC,MAAM;AAC7D,QAAI,QAAQ,OAAO,+BAA+B,GAAG;AACrD,QAAI,QAAQ,OAAO,gCAAgC,2BAA2B;AAC9E,QAAI,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAEA,OAAI,mCAAS,cAAa,IAAI,QAAQ,SAAS,WAAW,oBAAoB,GAAG;AAC7E,UAAM,MAAM,aAAa,KAAK;AAAA,MAC1B,SAAS;AAAA,MAET,MAAM,QAAQ;AAAA,IAClB,CAAC;AACD,QAAI,QAAQ,OAAO,oCAAoC,MAAM;AAC7D,QAAI,QAAQ,OAAO,+BAA+B,GAAG;AACrD,QAAI,QAAQ,OAAO,gCAAgC,2BAA2B;AAC9E,QAAI,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAGA,QAAM,QAAQ,MAAM,mBAAmB,EAAC,IAAG,CAAC;AAC5C,MAAI,OAAO;AACP,UAAM,eAAe,sBAAsB,KAAK;AAEhD,WAAO,aAAa;AAAA,MAChB,IAAI,IAAI,IAAI,SAAS,aAAa,KAAK,GAAG,CAAC,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI,GAAG;AAAA,IAC/E;AAAA,EACJ;AAEA,MAAI,IAAI,QAAQ,SAAS,WAAW,mBAAmB,GAAG;AACtD,QAAI,IAAI,QAAQ,aAAa,oCAAoC;AAC7D,YAAM,mBAAmB,MAAM,oBAAoB;AACnD,YAAM,MAAM,aAAa,KAAK,gBAAgB;AAC9C,UAAI,QAAQ,IAAI,WAAW,KAAK;AAChC,aAAO;AAAA,IACX;AAEA,QAAI,WAAW,IAAI,QAAQ,MAAM;AAEjC,UAAM,YAAY,IAAI,IAAI,cAAc,CAAC;AACzC,UAAM,iBAAiB,IAAI,QAAQ,IAAI,OAAO;AAC9C,mBAAe,IAAI,QAAQ,UAAU,QAAQ;AAC7C,mBAAe,IAAI,eAAe,GAAG,QAAQ,IAAI,eAAe,EAAE;AAElE,QAAI,IAAI,QAAQ,SAAS,SAAS,YAAY,GAAG;AAC7C,YAAMC,MAAK,YAAY,EAAC,SAAS,OAAO,YAAY,IAAI,OAAO,EAAC,CAAC;AACjE,YAAM,EAAC,QAAQ,SAAS,GAAE,IAAI,UAAU,GAAG;AAC3C,qBAAe,IAAI,eAAeA,GAAE;AACpC,qBAAe,IAAI,QAAQ,GAAG,GAAG,IAAI,MAAM,GAAG,OAAO,EAAE;AACvD,qBAAe,IAAI,aAAa,GAAG,QAAQ,IAAI,MAAM,QAAQ,OAAO,EAAE;AACtE,qBAAe,IAAI,YAAY,OAAO,OAAO,OAAO,OAAO,GAAG;AAC9D,YAAM,iBAAiB,IAAI,QAAQ,IAAI,YAAY;AACnD,UAAI,gBAAgB;AAChB,uBAAe,IAAI,cAAc,iDAAgB,KAAK;AAAA,MAC1D;AAAA,IACJ;AACA,QAAI,IAAI,QAAQ,aAAa,6BAA6B;AACtD,YAAMA,MAAK,YAAY,EAAC,SAAS,OAAO,YAAY,IAAI,OAAO,EAAC,CAAC;AACjE,YAAM,EAAC,GAAE,IAAI,UAAU,GAAG;AAC1B,qBAAe,IAAI,eAAeA,GAAE;AACpC,qBAAe,IAAI,gBAAgB,EAAE;AAAA,IACzC;AAEA,aAAS,WAAW,UAAU;AAC9B,aAAS,WAAW,UAAU;AAC9B,aAAS,OAAO,UAAU;AAC1B,aAAS,WAAW,SAAS,SAAS,QAAQ,uBAAuB,EAAE;AAEvE,WAAO,aAAa,QAAQ,UAAU;AAAA,MAClC,SAAS;AAAA,QACL,SAAS;AAAA,MACb;AAAA,IACJ,CAAC;AAAA,EACL;AAGA,MAAI,IAAI,QAAQ,aAAa,uBAAuB;AAChD,UAAM,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,QACI,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,MAAM,IAAI,KAAK,CAAC;AAAA,QACrC,SAAS,mBAAmB;AAAA,MAChC;AAAA,IACJ;AACA,UAAM,UAAU,MAAM,IAAI,KAAK;AAE/B,UAAM,SAAS,aAAa,KAAK,OAAO;AACxC,QAAI,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC,QAAQ,SAAS,QAAQ,WAAW,aAAa;AACvE,aAAO,QAAQ,IAAI;AAAA,QACf,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,QAAQ,KAAK,KAAK,KAAK;AAAA,QACvB,UAAU;AAAA,MACd,CAAC;AAAA,IACL;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,QAAQ,aAAa,sBAAsB;AAC/C,UAAM,cAAc,IAAI,QAAQ,IAAI,OAAO;AAC3C,QAAI,CAAC,eAAe,CAAC,YAAY,OAAO;AACpC,aAAO,aAAa,KAAK,EAAC,SAAS,EAAC,CAAC;AAAA,IACzC;AAEA,UAAM,UAAU;AAAA,MACZ,MAAM;AAAA,QACF,OAAO,YAAY;AAAA,MACvB;AAAA,IACJ;AACA,UAAM,MAAM,MAAM;AAAA,MACd;AAAA,MACA;AAAA,QACI,QAAQ;AAAA,QACR,MAAM,KAAK,UAAU,OAAO;AAAA,QAC5B,SAAS,mBAAmB;AAAA,MAChC;AAAA,IACJ;AACA,QAAI,UAAU,MAAM,IAAI,KAAK;AAE7B,QAAI,mCAAS,iBAAiB;AAC1B,gBAAU,MAAM,QAAQ,gBAAgB,OAAO;AAAA,IACnD;AAEA,UAAM,SAAS,aAAa,KAAK,OAAO;AACxC,QAAI,EAAE,QAAQ,WAAW,QAAQ,KAAK,IAAI;AACtC,aAAO,QAAQ,OAAO,OAAO;AAAA,IACjC;AAEA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,QAAQ,aAAa,wBAAwB;AACjD,UAAM,MAAM,aAAa,KAAK,EAAC,SAAS,EAAC,CAAC;AAC1C,QAAI,QAAQ,OAAO,OAAO;AAC1B,WAAO;AAAA,EACX;AACJ;;;AS9KA,OAAOC,YAAW;AAGX,IAAM,oBAAoB,MAAM;AACnC,EAAAC,OAAM,IAAI,iBAAiB;AAC3B,EAAAA,OAAM,IAAI,eAAe;AAC7B;;;ACDA,SAAQ,UAAU,iBAAgB;AAIlC,IAAM,SAAS;AAAA,EACX;AAAA,GACG,YAFQ;AAAA,EAGX,SAAS;AAAA,IACL,KAAK;AAAA,IACL;AAAA,IACA,YAAY;AAAA,EAChB;AACJ;","names":["ip","cache","cache","cache","string","cache","ip","cache","cache"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capibox/bridge-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.92",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"typescript": "^5.8.3"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"@capibox/bridge-server-sdk": "^0.0.92",
|
|
27
28
|
"memory-cache": "^0.2.0",
|
|
28
29
|
"openapi-fetch": "^0.14.0",
|
|
29
30
|
"zod": "^3.24.1"
|