@c15t/nextjs 1.3.2 → 1.3.3
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/components/consent-manager-provider/index.cjs +1 -1
- package/dist/components/consent-manager-provider/index.d.ts.map +1 -1
- package/dist/components/consent-manager-provider/index.js +1 -1
- package/dist/components/consent-manager-provider/utils/headers.cjs +1 -0
- package/dist/components/consent-manager-provider/utils/headers.d.ts +2 -0
- package/dist/components/consent-manager-provider/utils/headers.d.ts.map +1 -0
- package/dist/components/consent-manager-provider/utils/headers.js +1 -0
- package/dist/components/consent-manager-provider/utils/headers.test.cjs +1 -0
- package/dist/components/consent-manager-provider/utils/headers.test.d.ts +2 -0
- package/dist/components/consent-manager-provider/utils/headers.test.d.ts.map +1 -0
- package/dist/components/consent-manager-provider/utils/headers.test.js +1 -0
- package/dist/components/consent-manager-provider/utils/initial-data.cjs +1 -0
- package/dist/components/consent-manager-provider/utils/initial-data.d.ts +5 -0
- package/dist/components/consent-manager-provider/utils/initial-data.d.ts.map +1 -0
- package/dist/components/consent-manager-provider/utils/initial-data.js +1 -0
- package/dist/components/consent-manager-provider/utils/initial-data.test.cjs +1 -0
- package/dist/components/consent-manager-provider/utils/initial-data.test.d.ts +2 -0
- package/dist/components/consent-manager-provider/utils/initial-data.test.d.ts.map +1 -0
- package/dist/components/consent-manager-provider/utils/initial-data.test.js +1 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.cjs +1 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.d.ts +6 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.d.ts.map +1 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.js +1 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.test.cjs +1 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.test.d.ts +2 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.test.d.ts.map +1 -0
- package/dist/components/consent-manager-provider/utils/normalize-url.test.js +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ConsentManagerProvider:()=>ConsentManagerProvider});let jsx_runtime_namespaceObject=require("react/jsx-runtime"),react_namespaceObject=require("@c15t/react"),initial_data_cjs_namespaceObject=require("./utils/initial-data.cjs");function ConsentManagerProvider({children:e,options:_}){let r;return r="c15t"===_.mode?(0,initial_data_cjs_namespaceObject.getC15TInitialData)(_.backendURL):Promise.resolve(void 0),(0,jsx_runtime_namespaceObject.jsx)(react_namespaceObject.ConsentManagerProvider,{options:{..._,store:{..._.store,_initialData:r}},children:e})}for(var __webpack_i__ in exports.ConsentManagerProvider=__webpack_exports__.ConsentManagerProvider,__webpack_exports__)-1===["ConsentManagerProvider"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/consent-manager-provider/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/consent-manager-provider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,2BAA2B,EAChC,MAAM,aAAa,CAAC;AAOrB,wBAAgB,sBAAsB,CAAC,EACtC,QAAQ,EACR,OAAO,GACP,EAAE,2BAA2B,2CA0B7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as
|
|
1
|
+
import*as t from"react/jsx-runtime";import*as r from"@c15t/react";import*as e from"./utils/initial-data.js";function i({children:i,options:o}){let a;return a="c15t"===o.mode?(0,e.getC15TInitialData)(o.backendURL):Promise.resolve(void 0),(0,t.jsx)(r.ConsentManagerProvider,{options:{...o,store:{...o.store,_initialData:a}},children:i})}export{i as ConsentManagerProvider};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{extractRelevantHeaders:()=>extractRelevantHeaders});let LOCATION_HEADERS=["cf-ipcountry","x-vercel-ip-country","x-amz-cf-ipcountry","x-country-code","x-vercel-ip-country-region","x-region-code","accept-language","user-agent"];function extractRelevantHeaders(e){let _={};for(let r of LOCATION_HEADERS){let t=e.get(r);t&&(_[r]=t)}return _}for(var __webpack_i__ in exports.extractRelevantHeaders=__webpack_exports__.extractRelevantHeaders,__webpack_exports__)-1===["extractRelevantHeaders"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../../../src/components/consent-manager-provider/utils/headers.ts"],"names":[],"mappings":"AAWA,wBAAgB,sBAAsB,CACrC,WAAW,EAAE,OAAO,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=["cf-ipcountry","x-vercel-ip-country","x-amz-cf-ipcountry","x-country-code","x-vercel-ip-country-region","x-region-code","accept-language","user-agent"];function t(t){let r={};for(let c of e){let e=t.get(c);e&&(r[c]=e)}return r}export{t as extractRelevantHeaders};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let external_vitest_namespaceObject=require("vitest"),external_headers_cjs_namespaceObject=require("./headers.cjs");for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("extractRelevantHeaders",()=>{(0,external_vitest_namespaceObject.it)("should extract all relevant headers when present",()=>{let e=new Headers;e.set("cf-ipcountry","US"),e.set("x-vercel-ip-country","GB"),e.set("x-amz-cf-ipcountry","DE"),e.set("x-country-code","FR"),e.set("x-vercel-ip-country-region","CA-ON"),e.set("x-region-code","WEST"),e.set("accept-language","en-US,en;q=0.9"),e.set("user-agent","Mozilla/5.0");let t=(0,external_headers_cjs_namespaceObject.extractRelevantHeaders)(e);(0,external_vitest_namespaceObject.expect)(t).toEqual({"cf-ipcountry":"US","x-vercel-ip-country":"GB","x-amz-cf-ipcountry":"DE","x-country-code":"FR","x-vercel-ip-country-region":"CA-ON","x-region-code":"WEST","accept-language":"en-US,en;q=0.9","user-agent":"Mozilla/5.0"})}),(0,external_vitest_namespaceObject.it)("should only extract headers that are present",()=>{let e=new Headers;e.set("cf-ipcountry","US"),e.set("user-agent","Mozilla/5.0");let t=(0,external_headers_cjs_namespaceObject.extractRelevantHeaders)(e);(0,external_vitest_namespaceObject.expect)(t).toEqual({"cf-ipcountry":"US","user-agent":"Mozilla/5.0"})}),(0,external_vitest_namespaceObject.it)("should return empty object when no relevant headers are present",()=>{let e=new Headers;e.set("irrelevant-header","some-value");let t=(0,external_headers_cjs_namespaceObject.extractRelevantHeaders)(e);(0,external_vitest_namespaceObject.expect)(t).toEqual({})}),(0,external_vitest_namespaceObject.it)("should handle empty Headers object",()=>{let e=new Headers,t=(0,external_headers_cjs_namespaceObject.extractRelevantHeaders)(e);(0,external_vitest_namespaceObject.expect)(t).toEqual({})})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.test.d.ts","sourceRoot":"","sources":["../../../../src/components/consent-manager-provider/utils/headers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"vitest";import*as t from"./headers.js";(0,e.describe)("extractRelevantHeaders",()=>{(0,e.it)("should extract all relevant headers when present",()=>{let r=new Headers;r.set("cf-ipcountry","US"),r.set("x-vercel-ip-country","GB"),r.set("x-amz-cf-ipcountry","DE"),r.set("x-country-code","FR"),r.set("x-vercel-ip-country-region","CA-ON"),r.set("x-region-code","WEST"),r.set("accept-language","en-US,en;q=0.9"),r.set("user-agent","Mozilla/5.0");let a=(0,t.extractRelevantHeaders)(r);(0,e.expect)(a).toEqual({"cf-ipcountry":"US","x-vercel-ip-country":"GB","x-amz-cf-ipcountry":"DE","x-country-code":"FR","x-vercel-ip-country-region":"CA-ON","x-region-code":"WEST","accept-language":"en-US,en;q=0.9","user-agent":"Mozilla/5.0"})}),(0,e.it)("should only extract headers that are present",()=>{let r=new Headers;r.set("cf-ipcountry","US"),r.set("user-agent","Mozilla/5.0");let a=(0,t.extractRelevantHeaders)(r);(0,e.expect)(a).toEqual({"cf-ipcountry":"US","user-agent":"Mozilla/5.0"})}),(0,e.it)("should return empty object when no relevant headers are present",()=>{let r=new Headers;r.set("irrelevant-header","some-value");let a=(0,t.extractRelevantHeaders)(r);(0,e.expect)(a).toEqual({})}),(0,e.it)("should handle empty Headers object",()=>{let r=new Headers,a=(0,t.extractRelevantHeaders)(r);(0,e.expect)(a).toEqual({})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{getC15TInitialData:()=>getC15TInitialData});let headers_namespaceObject=require("next/headers"),external_headers_cjs_namespaceObject=require("./headers.cjs"),external_normalize_url_cjs_namespaceObject=require("./normalize-url.cjs");async function getC15TInitialData(e){let _=await (0,headers_namespaceObject.headers)(),r=(0,external_headers_cjs_namespaceObject.extractRelevantHeaders)(_);if(0===Object.keys(r).length)return;let a=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)(e,_);if(a)try{let e=await fetch(`${a}/show-consent-banner`,{method:"GET",headers:r});if(e.ok)return await e.json()}catch{}}for(var __webpack_i__ in exports.getC15TInitialData=__webpack_exports__.getC15TInitialData,__webpack_exports__)-1===["getC15TInitialData"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ContractsOutputs } from '@c15t/backend/contracts';
|
|
2
|
+
type ShowConsentBanner = ContractsOutputs['consent']['showBanner'] | undefined;
|
|
3
|
+
export declare function getC15TInitialData(backendURL: string): Promise<ShowConsentBanner>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=initial-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initial-data.d.ts","sourceRoot":"","sources":["../../../../src/components/consent-manager-provider/utils/initial-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,KAAK,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;AAE/E,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"next/headers";import*as t from"./headers.js";import*as a from"./normalize-url.js";async function r(r){let n=await (0,e.headers)(),o=(0,t.extractRelevantHeaders)(n);if(0===Object.keys(o).length)return;let s=(0,a.normalizeBackendURL)(r,n);if(s)try{let e=await fetch(`${s}/show-consent-banner`,{method:"GET",headers:o});if(e.ok)return await e.json()}catch{}}export{r as getC15TInitialData};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let external_vitest_namespaceObject=require("vitest"),external_headers_cjs_namespaceObject=require("./headers.cjs"),external_initial_data_cjs_namespaceObject=require("./initial-data.cjs"),external_normalize_url_cjs_namespaceObject=require("./normalize-url.cjs");for(var __webpack_i__ in external_vitest_namespaceObject.vi.mock("next/headers",()=>({headers:()=>new Headers({"x-forwarded-proto":"https","x-forwarded-host":"example.com",cookie:"test=123"})})),external_vitest_namespaceObject.vi.mock("./headers",()=>({extractRelevantHeaders:external_vitest_namespaceObject.vi.fn()})),external_vitest_namespaceObject.vi.mock("./normalize-url",()=>({normalizeBackendURL:external_vitest_namespaceObject.vi.fn()})),(0,external_vitest_namespaceObject.describe)("getC15TInitialData",()=>{let e={"x-forwarded-proto":"https","x-forwarded-host":"example.com",cookie:"test=123"},t=external_vitest_namespaceObject.vi.fn();(0,external_vitest_namespaceObject.beforeEach)(()=>{external_vitest_namespaceObject.vi.clearAllMocks(),external_vitest_namespaceObject.vi.stubGlobal("fetch",t),external_headers_cjs_namespaceObject.extractRelevantHeaders.mockReturnValue(e),external_normalize_url_cjs_namespaceObject.normalizeBackendURL.mockReturnValue("https://api.example.com")}),(0,external_vitest_namespaceObject.afterEach)(()=>{external_vitest_namespaceObject.vi.unstubAllGlobals()}),(0,external_vitest_namespaceObject.it)("should return undefined when normalized URL is not available",async()=>{external_normalize_url_cjs_namespaceObject.normalizeBackendURL.mockReturnValue(null);let e=await (0,external_initial_data_cjs_namespaceObject.getC15TInitialData)("https://example.com");(0,external_vitest_namespaceObject.expect)(e).toBeUndefined()}),(0,external_vitest_namespaceObject.it)("should return undefined when no relevant headers are present",async()=>{external_headers_cjs_namespaceObject.extractRelevantHeaders.mockReturnValue({});let e=await (0,external_initial_data_cjs_namespaceObject.getC15TInitialData)("https://example.com");(0,external_vitest_namespaceObject.expect)(e).toBeUndefined()}),(0,external_vitest_namespaceObject.it)("should successfully fetch and return consent banner data",async()=>{let a={showConsentBanner:!0,jurisdiction:{message:"Please accept cookies",code:"GDPR"},location:{countryCode:"US",regionCode:"CA"},translations:{language:"en",translations:{common:{acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize",save:"Save"},cookieBanner:{title:"Cookie Preferences",description:"We use cookies to improve your experience"},consentManagerDialog:{title:"Manage Cookie Preferences",description:"Customize your cookie preferences"},consentTypes:{necessary:{title:"Necessary",description:"Required for the website to function"},experience:{title:"Experience",description:"Enhance your browsing experience"},functionality:{title:"Functionality",description:"Enable specific functionality"},marketing:{title:"Marketing",description:"Help us improve our marketing"},measurement:{title:"Measurement",description:"Help us measure performance"}}}}};t.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(a)});let n=await (0,external_initial_data_cjs_namespaceObject.getC15TInitialData)("https://example.com");(0,external_vitest_namespaceObject.expect)(t).toHaveBeenCalledWith("https://api.example.com/show-consent-banner",{method:"GET",headers:e}),(0,external_vitest_namespaceObject.expect)(n).toEqual(a)}),(0,external_vitest_namespaceObject.it)("should handle fetch failure gracefully",async()=>{t.mockRejectedValueOnce(Error("Network error"));let e=await (0,external_initial_data_cjs_namespaceObject.getC15TInitialData)("https://example.com");(0,external_vitest_namespaceObject.expect)(e).toBeUndefined()}),(0,external_vitest_namespaceObject.it)("should handle non-ok response gracefully",async()=>{t.mockResolvedValueOnce({ok:!1,status:500,statusText:"Internal Server Error"});let e=await (0,external_initial_data_cjs_namespaceObject.getC15TInitialData)("https://example.com");(0,external_vitest_namespaceObject.expect)(e).toBeUndefined()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initial-data.test.d.ts","sourceRoot":"","sources":["../../../../src/components/consent-manager-provider/utils/initial-data.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"vitest";import*as t from"./headers.js";import*as a from"./initial-data.js";import*as o from"./normalize-url.js";e.vi.mock("next/headers",()=>({headers:()=>new Headers({"x-forwarded-proto":"https","x-forwarded-host":"example.com",cookie:"test=123"})})),e.vi.mock("./headers",()=>({extractRelevantHeaders:e.vi.fn()})),e.vi.mock("./normalize-url",()=>({normalizeBackendURL:e.vi.fn()})),(0,e.describe)("getC15TInitialData",()=>{let n={"x-forwarded-proto":"https","x-forwarded-host":"example.com",cookie:"test=123"},r=e.vi.fn();(0,e.beforeEach)(()=>{e.vi.clearAllMocks(),e.vi.stubGlobal("fetch",r),t.extractRelevantHeaders.mockReturnValue(n),o.normalizeBackendURL.mockReturnValue("https://api.example.com")}),(0,e.afterEach)(()=>{e.vi.unstubAllGlobals()}),(0,e.it)("should return undefined when normalized URL is not available",async()=>{o.normalizeBackendURL.mockReturnValue(null);let t=await (0,a.getC15TInitialData)("https://example.com");(0,e.expect)(t).toBeUndefined()}),(0,e.it)("should return undefined when no relevant headers are present",async()=>{t.extractRelevantHeaders.mockReturnValue({});let o=await (0,a.getC15TInitialData)("https://example.com");(0,e.expect)(o).toBeUndefined()}),(0,e.it)("should successfully fetch and return consent banner data",async()=>{let t={showConsentBanner:!0,jurisdiction:{message:"Please accept cookies",code:"GDPR"},location:{countryCode:"US",regionCode:"CA"},translations:{language:"en",translations:{common:{acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize",save:"Save"},cookieBanner:{title:"Cookie Preferences",description:"We use cookies to improve your experience"},consentManagerDialog:{title:"Manage Cookie Preferences",description:"Customize your cookie preferences"},consentTypes:{necessary:{title:"Necessary",description:"Required for the website to function"},experience:{title:"Experience",description:"Enhance your browsing experience"},functionality:{title:"Functionality",description:"Enable specific functionality"},marketing:{title:"Marketing",description:"Help us improve our marketing"},measurement:{title:"Measurement",description:"Help us measure performance"}}}}};r.mockResolvedValueOnce({ok:!0,json:()=>Promise.resolve(t)});let o=await (0,a.getC15TInitialData)("https://example.com");(0,e.expect)(r).toHaveBeenCalledWith("https://api.example.com/show-consent-banner",{method:"GET",headers:n}),(0,e.expect)(o).toEqual(t)}),(0,e.it)("should handle fetch failure gracefully",async()=>{r.mockRejectedValueOnce(Error("Network error"));let t=await (0,a.getC15TInitialData)("https://example.com");(0,e.expect)(t).toBeUndefined()}),(0,e.it)("should handle non-ok response gracefully",async()=>{r.mockResolvedValueOnce({ok:!1,status:500,statusText:"Internal Server Error"});let t=await (0,a.getC15TInitialData)("https://example.com");(0,e.expect)(t).toBeUndefined()})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,r)=>{for(var _ in r)__webpack_require__.o(r,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:r[_]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{normalizeBackendURL:()=>normalizeBackendURL,validateBackendURL:()=>validateBackendURL});let ABSOLUTE_URL_REGEX=/^https?:\/\//;function validateBackendURL(e){if(ABSOLUTE_URL_REGEX.test(e))return new URL(e),{isAbsolute:!0,normalizedURL:e};if(e.startsWith("/"))return{isAbsolute:!1,normalizedURL:e};throw Error(`Invalid URL format: ${e}. URL must be absolute (https://...) or relative starting with (/)`)}function normalizeBackendURL(e,r){try{let{normalizedURL:_,isAbsolute:t}=validateBackendURL(e);if(t)return _;let a=r.get("referer"),n=r.get("x-forwarded-proto")||"https",o=r.get("x-forwarded-host")||r.get("host");if(o)return`${n}://${o}${_}`;if(a){let e=new URL(a);return`${e.protocol}//${e.host}${_}`}return"development"===process.env.NODE_ENV&&console.warn("Could not determine base URL for relative backend URL"),null}catch(e){return"development"===process.env.NODE_ENV&&console.warn("Invalid backend URL:",e),null}}for(var __webpack_i__ in exports.normalizeBackendURL=__webpack_exports__.normalizeBackendURL,exports.validateBackendURL=__webpack_exports__.validateBackendURL,__webpack_exports__)-1===["normalizeBackendURL","validateBackendURL"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-url.d.ts","sourceRoot":"","sources":["../../../../src/components/consent-manager-provider/utils/normalize-url.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACtB,CAwBA;AAED,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,GAClB,MAAM,GAAG,IAAI,CAgCf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=/^https?:\/\//;function t(t){if(e.test(t))return new URL(t),{isAbsolute:!0,normalizedURL:t};if(t.startsWith("/"))return{isAbsolute:!1,normalizedURL:t};throw Error(`Invalid URL format: ${t}. URL must be absolute (https://...) or relative starting with (/)`)}function r(e,r){try{let{normalizedURL:n,isAbsolute:o}=t(e);if(o)return n;let l=r.get("referer"),a=r.get("x-forwarded-proto")||"https",s=r.get("x-forwarded-host")||r.get("host");if(s)return`${a}://${s}${n}`;if(l){let e=new URL(l);return`${e.protocol}//${e.host}${n}`}return"development"===process.env.NODE_ENV&&console.warn("Could not determine base URL for relative backend URL"),null}catch(e){return"development"===process.env.NODE_ENV&&console.warn("Invalid backend URL:",e),null}}export{r as normalizeBackendURL,t as validateBackendURL};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let external_vitest_namespaceObject=require("vitest"),external_normalize_url_cjs_namespaceObject=require("./normalize-url.cjs");for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("validateBackendURL",()=>{(0,external_vitest_namespaceObject.it)("should validate absolute URLs correctly",()=>{for(let e of["http://example.com","https://example.com","http://localhost:3000","https://api.example.com/path"]){let t=(0,external_normalize_url_cjs_namespaceObject.validateBackendURL)(e);(0,external_vitest_namespaceObject.expect)(t.isAbsolute).toBe(!0),(0,external_vitest_namespaceObject.expect)(t.normalizedURL).toBe(e)}}),(0,external_vitest_namespaceObject.it)("should throw error for invalid absolute URLs",()=>{for(let e of["ftp://example.com","ws://example.com","not-a-url://","http:/invalid-url"])(0,external_vitest_namespaceObject.expect)(()=>(0,external_normalize_url_cjs_namespaceObject.validateBackendURL)(e)).toThrow()}),(0,external_vitest_namespaceObject.it)("should validate relative URLs correctly",()=>{for(let{input:e,expected:t}of[{input:"/api/c15t",expected:"/api/c15t"},{input:"/path/to/api",expected:"/path/to/api"}]){let a=(0,external_normalize_url_cjs_namespaceObject.validateBackendURL)(e);(0,external_vitest_namespaceObject.expect)(a.isAbsolute).toBe(!1),(0,external_vitest_namespaceObject.expect)(a.normalizedURL).toBe(t)}}),(0,external_vitest_namespaceObject.it)("should throw error for invalid relative URLs",()=>{for(let e of["not-a-url","http://","https://","api/c15t"])(0,external_vitest_namespaceObject.expect)(()=>(0,external_normalize_url_cjs_namespaceObject.validateBackendURL)(e)).toThrow()})}),(0,external_vitest_namespaceObject.describe)("normalizeBackendURL",()=>{let e=e=>({get:t=>e[t.toLowerCase()]||null});(0,external_vitest_namespaceObject.it)("should return absolute URLs unchanged",()=>{let t="https://example.com/api",a=e({}),c=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)(t,a);(0,external_vitest_namespaceObject.expect)(c).toBe(t)}),(0,external_vitest_namespaceObject.it)("should construct URL from x-forwarded headers",()=>{let t=e({"x-forwarded-proto":"https","x-forwarded-host":"example.com"}),a=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)("/api/c15t",t);(0,external_vitest_namespaceObject.expect)(a).toBe("https://example.com/api/c15t")}),(0,external_vitest_namespaceObject.it)("should use host header when x-forwarded-host is not available",()=>{let t=e({host:"example.com"}),a=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)("/api/c15t",t);(0,external_vitest_namespaceObject.expect)(a).toBe("https://example.com/api/c15t")}),(0,external_vitest_namespaceObject.it)("should use referer when host headers are not available",()=>{let t=e({referer:"https://example.com/some/path"}),a=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)("/api/c15t",t);(0,external_vitest_namespaceObject.expect)(a).toBe("https://example.com/api/c15t")}),(0,external_vitest_namespaceObject.it)("should return null when no headers are available to determine base URL",()=>{let t=e({}),a=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)("/api/c15t",t);(0,external_vitest_namespaceObject.expect)(a).toBeNull()}),(0,external_vitest_namespaceObject.it)("should return null for invalid URLs",()=>{let t=e({host:"example.com"}),a=(0,external_normalize_url_cjs_namespaceObject.normalizeBackendURL)("not-a-url://",t);(0,external_vitest_namespaceObject.expect)(a).toBeNull()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-url.test.d.ts","sourceRoot":"","sources":["../../../../src/components/consent-manager-provider/utils/normalize-url.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"vitest";import*as t from"./normalize-url.js";(0,e.describe)("validateBackendURL",()=>{(0,e.it)("should validate absolute URLs correctly",()=>{for(let a of["http://example.com","https://example.com","http://localhost:3000","https://api.example.com/path"]){let o=(0,t.validateBackendURL)(a);(0,e.expect)(o.isAbsolute).toBe(!0),(0,e.expect)(o.normalizedURL).toBe(a)}}),(0,e.it)("should throw error for invalid absolute URLs",()=>{for(let a of["ftp://example.com","ws://example.com","not-a-url://","http:/invalid-url"])(0,e.expect)(()=>(0,t.validateBackendURL)(a)).toThrow()}),(0,e.it)("should validate relative URLs correctly",()=>{for(let{input:a,expected:o}of[{input:"/api/c15t",expected:"/api/c15t"},{input:"/path/to/api",expected:"/path/to/api"}]){let l=(0,t.validateBackendURL)(a);(0,e.expect)(l.isAbsolute).toBe(!1),(0,e.expect)(l.normalizedURL).toBe(o)}}),(0,e.it)("should throw error for invalid relative URLs",()=>{for(let a of["not-a-url","http://","https://","api/c15t"])(0,e.expect)(()=>(0,t.validateBackendURL)(a)).toThrow()})}),(0,e.describe)("normalizeBackendURL",()=>{let a=e=>({get:t=>e[t.toLowerCase()]||null});(0,e.it)("should return absolute URLs unchanged",()=>{let o="https://example.com/api",l=a({}),r=(0,t.normalizeBackendURL)(o,l);(0,e.expect)(r).toBe(o)}),(0,e.it)("should construct URL from x-forwarded headers",()=>{let o=a({"x-forwarded-proto":"https","x-forwarded-host":"example.com"}),l=(0,t.normalizeBackendURL)("/api/c15t",o);(0,e.expect)(l).toBe("https://example.com/api/c15t")}),(0,e.it)("should use host header when x-forwarded-host is not available",()=>{let o=a({host:"example.com"}),l=(0,t.normalizeBackendURL)("/api/c15t",o);(0,e.expect)(l).toBe("https://example.com/api/c15t")}),(0,e.it)("should use referer when host headers are not available",()=>{let o=a({referer:"https://example.com/some/path"}),l=(0,t.normalizeBackendURL)("/api/c15t",o);(0,e.expect)(l).toBe("https://example.com/api/c15t")}),(0,e.it)("should return null when no headers are available to determine base URL",()=>{let o=a({}),l=(0,t.normalizeBackendURL)("/api/c15t",o);(0,e.expect)(l).toBeNull()}),(0,e.it)("should return null for invalid URLs",()=>{let o=a({host:"example.com"}),l=(0,t.normalizeBackendURL)("not-a-url://",o);(0,e.expect)(l).toBeNull()})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c15t/nextjs",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"description": "Next.js integration for C15T consent management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"sideEffects": false,
|
|
20
20
|
"license": "GPL-3.0-only",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@c15t/react": "1.3.
|
|
22
|
+
"@c15t/react": "1.3.3",
|
|
23
23
|
"@c15t/translations": "1.3.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|