@capibox/bridge-server 0.0.77 → 0.0.83

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.js CHANGED
@@ -458,13 +458,14 @@ var getFunnels = () => __async(null, null, function* () {
458
458
  checkout: funnel.version,
459
459
  angle: funnel.angle,
460
460
  version: funnel.version,
461
- homePageTemplate: funnel.home_page,
462
- quizPageTemplate: funnel.quiz_page,
463
- resultPageTemplate: funnel.results_page,
464
- emailPageTemplate: funnel.email_page,
465
- checkoutPageTemplate: funnel.checkout_page,
466
- paymentWindowTemplate: funnel.payment_window,
467
- upsellPageTemplate: funnel.upsell_page,
461
+ homePageTemplate: funnel.home_page || "Default",
462
+ quizPageTemplate: funnel.quiz_page || "Default",
463
+ resultPageTemplate: funnel.results_page || "Default",
464
+ emailPageTemplate: funnel.email_page || "Default",
465
+ checkoutPageTemplate: funnel.checkout_page || "Default",
466
+ paymentWindowTemplate: funnel.payment_window || "Default",
467
+ upsellPageTemplate: funnel.upsell_page || "Default",
468
+ thankYouPageTemplate: funnel.thankyou_page_template || "Default",
468
469
  options: funnel.options,
469
470
  upsellOptions: funnel.upsell_options
470
471
  });
@@ -783,7 +784,7 @@ var cancelSubscriptionById = (id, data) => __async(null, null, function* () {
783
784
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/{id}/cancel", {
784
785
  params: {
785
786
  header: {
786
- "project-key": "Frontend"
787
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
787
788
  },
788
789
  path: {
789
790
  id
@@ -802,7 +803,7 @@ var cancelSubscriptionsByOrderId = (uuid, data) => __async(null, null, function*
802
803
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/order/{orderId}/cancel", {
803
804
  params: {
804
805
  header: {
805
- "project-key": "Frontend"
806
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
806
807
  },
807
808
  path: {
808
809
  orderId: uuid
@@ -821,7 +822,7 @@ var subscriptionApplyDiscount = (data) => __async(null, null, function* () {
821
822
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/discount", {
822
823
  params: {
823
824
  header: {
824
- "project-key": "Frontend"
825
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
825
826
  }
826
827
  },
827
828
  body: data
@@ -837,7 +838,7 @@ var subscriptionPause = (data) => __async(null, null, function* () {
837
838
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/pause", {
838
839
  params: {
839
840
  header: {
840
- "project-key": "Frontend"
841
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
841
842
  }
842
843
  },
843
844
  body: data
@@ -853,7 +854,7 @@ var fillSubscriptionCancelRequest = (data) => __async(null, null, function* () {
853
854
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscription-cancel-requests", {
854
855
  params: {
855
856
  header: {
856
- "project-key": "Frontend"
857
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
857
858
  }
858
859
  },
859
860
  body: data
@@ -864,6 +865,27 @@ var fillSubscriptionCancelRequest = (data) => __async(null, null, function* () {
864
865
  return res.data;
865
866
  });
866
867
 
868
+ // src/server/subscription/get-subscriptions-by-order-id.ts
869
+ var getSubscriptionsByOrderId = (uuid) => __async(null, null, function* () {
870
+ const res = yield $apiClient.GET(
871
+ "/dynamic-public/subscriptions-management/subscriptions/info-by-orderid",
872
+ {
873
+ params: {
874
+ header: {
875
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
876
+ },
877
+ query: {
878
+ orderId: uuid
879
+ }
880
+ }
881
+ }
882
+ );
883
+ if (!res.data) {
884
+ throw new Error("Failed to get subscriptions by order id.");
885
+ }
886
+ return res.data;
887
+ });
888
+
867
889
  // src/index.ts
868
890
  var server = {
869
891
  middleware,
@@ -902,7 +924,8 @@ var server = {
902
924
  cancelByOrderId: cancelSubscriptionsByOrderId,
903
925
  applyDiscount: subscriptionApplyDiscount,
904
926
  pause: subscriptionPause,
905
- fillCancellationRequest: fillSubscriptionCancelRequest
927
+ fillCancellationRequest: fillSubscriptionCancelRequest,
928
+ get: getSubscriptionsByOrderId
906
929
  }
907
930
  };
908
931
  // Annotate the CommonJS export names for ESM import in node:
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/funnels/get-capibox-templates.ts","../src/browser/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"],"sourcesContent":["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\";\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 },\n subscription: {\n cancelById: cancelSubscriptionById,\n cancelByOrderId: cancelSubscriptionsByOrderId,\n applyDiscount: subscriptionApplyDiscount,\n pause: subscriptionPause,\n fillCancellationRequest: fillSubscriptionCancelRequest,\n }\n}\n\nexport {\n server\n}\n\n// v.0.0.77","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\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,\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 {getFunnels, SdkRemoteFunnel} from \"./get\";\nimport {ReadonlyURLSearchParams} from \"next/navigation\";\n\n\ntype SdkRemoteTemplate = Omit<SdkRemoteFunnel, \"checkout\" | \"angle\" | \"landing\" | \"version\" | \"options\" | \"upsellOptions\">\n\nconst defaultTemplate: SdkRemoteTemplate = {\n homePageTemplate: 'Default',\n quizPageTemplate: 'Default',\n resultPageTemplate: 'Default',\n emailPageTemplate: 'Default',\n checkoutPageTemplate: 'Default',\n paymentWindowTemplate: 'Default',\n upsellPageTemplate: 'Default',\n}\n\ntype Props = {\n angle: string,\n version: string,\n searchParams?: ReadonlyURLSearchParams\n}\n\nexport const getTemplates = async ({\n angle, version, searchParams\n }: Props): Promise<SdkRemoteFunnel> => {\n const funnelsData = await getFunnels();\n\n const filteredFunnelsData = funnelsData.filter((a) => {\n if (\n (a.checkout === version || a.checkout === 'any') &&\n (a.landing === angle || a.landing === 'any')\n ) {\n return true\n }\n return false\n })\n if (filteredFunnelsData.length > 0) {\n const _flowData: SdkRemoteFunnel = JSON.parse(\n JSON.stringify(filteredFunnelsData[filteredFunnelsData.length - 1])\n )\n if (searchParams) {\n const keys = Object.keys(defaultTemplate)\n for (const key of keys) {\n if (searchParams.get(key)) {\n // @ts-ignore\n _flowData[key] = searchParams.get(key);\n }\n }\n }\n\n return _flowData;\n }\n return {\n ...defaultTemplate,\n landing: angle,\n checkout: version,\n angle,\n version,\n }\n}","import 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': 'Frontend'\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': 'Frontend'\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': 'Frontend'\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': 'Frontend'\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': 'Frontend'\n },\n },\n body: data\n });\n if (!res.data) {\n throw new Error('Failed to fill request.')\n }\n return res.data;\n};"],"mappings":"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","names":["ip","import_memory_cache","cache","string","import_memory_cache","cache","cache","ip","createFetchClient","import_memory_cache","cache"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/server/middleware.ts","../src/server/_utils/is.ts","../src/server/_utils/client-ip.ts","../src/browser/crm-auth/path.ts","../src/server/_utils/server-fetch-utils.ts","../src/server/cache/cache.ts","../src/server/split/get-split-data.ts","../src/server/_utils/backend-url.ts","../src/server/_utils/trim-char.ts","../src/server/split/get-split-item.ts","../src/server/split/get-split-winner.ts","../src/browser/funnels/get-capibox-templates.ts","../src/browser/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"],"sourcesContent":["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\";\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 },\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.83","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}\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};"],"mappings":"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","names":["ip","import_memory_cache","cache","string","import_memory_cache","cache","cache","ip","createFetchClient","import_memory_cache","cache"]}
package/dist/index.mjs CHANGED
@@ -425,13 +425,14 @@ var getFunnels = () => __async(null, null, function* () {
425
425
  checkout: funnel.version,
426
426
  angle: funnel.angle,
427
427
  version: funnel.version,
428
- homePageTemplate: funnel.home_page,
429
- quizPageTemplate: funnel.quiz_page,
430
- resultPageTemplate: funnel.results_page,
431
- emailPageTemplate: funnel.email_page,
432
- checkoutPageTemplate: funnel.checkout_page,
433
- paymentWindowTemplate: funnel.payment_window,
434
- upsellPageTemplate: funnel.upsell_page,
428
+ homePageTemplate: funnel.home_page || "Default",
429
+ quizPageTemplate: funnel.quiz_page || "Default",
430
+ resultPageTemplate: funnel.results_page || "Default",
431
+ emailPageTemplate: funnel.email_page || "Default",
432
+ checkoutPageTemplate: funnel.checkout_page || "Default",
433
+ paymentWindowTemplate: funnel.payment_window || "Default",
434
+ upsellPageTemplate: funnel.upsell_page || "Default",
435
+ thankYouPageTemplate: funnel.thankyou_page_template || "Default",
435
436
  options: funnel.options,
436
437
  upsellOptions: funnel.upsell_options
437
438
  });
@@ -750,7 +751,7 @@ var cancelSubscriptionById = (id, data) => __async(null, null, function* () {
750
751
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/{id}/cancel", {
751
752
  params: {
752
753
  header: {
753
- "project-key": "Frontend"
754
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
754
755
  },
755
756
  path: {
756
757
  id
@@ -769,7 +770,7 @@ var cancelSubscriptionsByOrderId = (uuid, data) => __async(null, null, function*
769
770
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/order/{orderId}/cancel", {
770
771
  params: {
771
772
  header: {
772
- "project-key": "Frontend"
773
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
773
774
  },
774
775
  path: {
775
776
  orderId: uuid
@@ -788,7 +789,7 @@ var subscriptionApplyDiscount = (data) => __async(null, null, function* () {
788
789
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/discount", {
789
790
  params: {
790
791
  header: {
791
- "project-key": "Frontend"
792
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
792
793
  }
793
794
  },
794
795
  body: data
@@ -804,7 +805,7 @@ var subscriptionPause = (data) => __async(null, null, function* () {
804
805
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscriptions/pause", {
805
806
  params: {
806
807
  header: {
807
- "project-key": "Frontend"
808
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
808
809
  }
809
810
  },
810
811
  body: data
@@ -820,7 +821,7 @@ var fillSubscriptionCancelRequest = (data) => __async(null, null, function* () {
820
821
  const res = yield $apiClient.POST("/dynamic-public/subscriptions-management/subscription-cancel-requests", {
821
822
  params: {
822
823
  header: {
823
- "project-key": "Frontend"
824
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
824
825
  }
825
826
  },
826
827
  body: data
@@ -831,6 +832,27 @@ var fillSubscriptionCancelRequest = (data) => __async(null, null, function* () {
831
832
  return res.data;
832
833
  });
833
834
 
835
+ // src/server/subscription/get-subscriptions-by-order-id.ts
836
+ var getSubscriptionsByOrderId = (uuid) => __async(null, null, function* () {
837
+ const res = yield $apiClient.GET(
838
+ "/dynamic-public/subscriptions-management/subscriptions/info-by-orderid",
839
+ {
840
+ params: {
841
+ header: {
842
+ "project-key": `${process.env.CAPIBOX_API_KEY}`
843
+ },
844
+ query: {
845
+ orderId: uuid
846
+ }
847
+ }
848
+ }
849
+ );
850
+ if (!res.data) {
851
+ throw new Error("Failed to get subscriptions by order id.");
852
+ }
853
+ return res.data;
854
+ });
855
+
834
856
  // src/index.ts
835
857
  var server = {
836
858
  middleware,
@@ -869,7 +891,8 @@ var server = {
869
891
  cancelByOrderId: cancelSubscriptionsByOrderId,
870
892
  applyDiscount: subscriptionApplyDiscount,
871
893
  pause: subscriptionPause,
872
- fillCancellationRequest: fillSubscriptionCancelRequest
894
+ fillCancellationRequest: fillSubscriptionCancelRequest,
895
+ get: getSubscriptionsByOrderId
873
896
  }
874
897
  };
875
898
  export {