@preprio/prepr-nextjs 1.3.0 → 1.3.2
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/LICENSE +21 -0
- package/dist/index.js +9 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 prepr
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.js
CHANGED
|
@@ -55,7 +55,7 @@ var import_headers = require("next/headers");
|
|
|
55
55
|
// package.json
|
|
56
56
|
var package_default = {
|
|
57
57
|
name: "@preprio/prepr-nextjs",
|
|
58
|
-
version: "1.2
|
|
58
|
+
version: "1.3.2",
|
|
59
59
|
description: "A next.js package containing helper functions and a preview bar to use in combination with Prepr",
|
|
60
60
|
main: "./dist/index.js",
|
|
61
61
|
types: "./dist/index.d.ts",
|
|
@@ -182,6 +182,14 @@ function PreprMiddleware(request) {
|
|
|
182
182
|
newResponse.headers.set("Prepr-Customer-Id", cookie);
|
|
183
183
|
if (process.env.PREPR_ENV === "preview") {
|
|
184
184
|
newResponse.headers.set("Prepr-Preview-Bar", "true");
|
|
185
|
+
const segmentCookie = (_c = request.cookies.get("Prepr-Segments")) == null ? void 0 : _c.value;
|
|
186
|
+
if (segmentCookie) {
|
|
187
|
+
newResponse.headers.set("Prepr-Segments", segmentCookie);
|
|
188
|
+
}
|
|
189
|
+
const abCookie = (_d = request.cookies.get("Prepr-ABtesting")) == null ? void 0 : _d.value;
|
|
190
|
+
if (abCookie) {
|
|
191
|
+
newResponse.headers.set("Prepr-ABtesting", abCookie);
|
|
192
|
+
}
|
|
185
193
|
if (request.nextUrl.searchParams.has("prepr_preview_segment")) {
|
|
186
194
|
const segments = request.nextUrl.searchParams.get(
|
|
187
195
|
"prepr_preview_segment"
|
|
@@ -208,14 +216,6 @@ function PreprMiddleware(request) {
|
|
|
208
216
|
// Set for one year
|
|
209
217
|
});
|
|
210
218
|
}
|
|
211
|
-
const segmentCookie = (_c = request.cookies.get("Prepr-Segments")) == null ? void 0 : _c.value;
|
|
212
|
-
if (segmentCookie) {
|
|
213
|
-
newResponse.headers.set("Prepr-Segments", segmentCookie);
|
|
214
|
-
}
|
|
215
|
-
const abCookie = (_d = request.cookies.get("Prepr-ABtesting")) == null ? void 0 : _d.value;
|
|
216
|
-
if (abCookie) {
|
|
217
|
-
newResponse.headers.set("Prepr-ABtesting", abCookie);
|
|
218
|
-
}
|
|
219
219
|
}
|
|
220
220
|
return newResponse;
|
|
221
221
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../package.json","../src/utils.ts"],"sourcesContent":["import { NextResponse } from 'next/server'\nimport { ipAddress } from '@vercel/functions'\nimport { headers } from 'next/headers'\nimport { getPackageVersion } from './utils'\nimport { PreprSegment } from './shared/types'\n\n/**\n *\n * @param request NextRequest object\n * @param response optional NextResponse object\n */\nexport function PreprMiddleware(request: any) {\n const newResponse = NextResponse.next()\n\n const utm_source = request.nextUrl.searchParams.get('utm_source')\n const utm_medium = request.nextUrl.searchParams.get('utm_medium')\n const utm_term = request.nextUrl.searchParams.get('utm_term')\n const utm_content = request.nextUrl.searchParams.get('utm_content')\n const utm_campaign = request.nextUrl.searchParams.get('utm_campaign')\n const initial_referral = request.headers.get('referer')\n\n const ip = ipAddress(request)\n\n if (ip) {\n newResponse.headers.set('Prepr-Visitor-IP', ip)\n }\n\n const hutkCookie = request.cookies.get('hubspotutk')?.value\n\n if (utm_source) {\n newResponse.headers.set('Prepr-Context-utm_source', utm_source)\n }\n\n if (utm_medium) {\n newResponse.headers.set('Prepr-Context-utm_medium', utm_medium)\n }\n\n if (utm_term) {\n newResponse.headers.set('Prepr-Context-utm_term', utm_term)\n }\n\n if (utm_content) {\n newResponse.headers.set('Prepr-Context-utm_content', utm_content)\n }\n\n if (utm_campaign) {\n newResponse.headers.set('Prepr-Context-utm_campaign', utm_campaign)\n }\n\n if (hutkCookie) {\n newResponse.headers.set('Prepr-Hubspot-Id', hutkCookie)\n }\n\n if (initial_referral) {\n newResponse.headers.set(\n 'prepr-context-initial_referral',\n initial_referral\n )\n }\n\n let cookie = request.cookies.get('__prepr_uid')?.value\n\n if (!cookie) {\n cookie = crypto.randomUUID()\n newResponse.cookies.set('__prepr_uid', cookie, {\n maxAge: 1 * 365 * 24 * 60, // Set for one year\n })\n newResponse.headers.set('Prepr-Customer-Id-Created', 'true')\n }\n\n newResponse.headers.set('Prepr-Customer-Id', cookie)\n\n if (process.env.PREPR_ENV === 'preview') {\n newResponse.headers.set('Prepr-Preview-Bar', 'true')\n\n if (request.nextUrl.searchParams.has('prepr_preview_segment')) {\n const segments = request.nextUrl.searchParams.get(\n 'prepr_preview_segment'\n )\n\n if (segments) {\n newResponse.headers.set('Prepr-Segments', segments)\n newResponse.cookies.set('Prepr-Segments', segments, {\n maxAge: 60, // Set for one year\n })\n }\n }\n\n if (request.nextUrl.searchParams.has('prepr_preview_ab')) {\n const ab_testing =\n request.nextUrl.searchParams.get('prepr_preview_ab')\n let value = ab_testing?.toUpperCase()\n if (value === 'B') {\n value = 'B'\n } else {\n value = 'A'\n }\n\n newResponse.headers.set('Prepr-ABtesting', value)\n newResponse.cookies.set('Prepr-ABtesting', value, {\n maxAge: 60, // Set for one year\n })\n }\n\n const segmentCookie = request.cookies.get('Prepr-Segments')?.value\n if (segmentCookie) {\n newResponse.headers.set('Prepr-Segments', segmentCookie)\n }\n\n const abCookie = request.cookies.get('Prepr-ABtesting')?.value\n if (abCookie) {\n newResponse.headers.set('Prepr-ABtesting', abCookie)\n }\n }\n\n return newResponse\n}\n\n/**\n * Returns the Prepr Customer ID from the headers\n */\nexport async function getPreprUUID() {\n const headersList = await headers()\n return headersList.get('prepr-customer-id')\n}\n\n/**\n * Retuns the active segment from the headers\n */\nexport async function getActiveSegment() {\n const headersList = await headers()\n return headersList.get('Prepr-Segments')\n}\n\n/**\n * Returns the active variant from the headers\n */\nexport async function getActiveVariant() {\n const headersList = await headers()\n return headersList.get('Prepr-ABtesting')\n}\n\n/**\n * Helper function to retrieve Prepr headers (will filter out customer ID if in preview mode)\n */\nexport async function getPreprHeaders() {\n let newHeaders: {\n [key: string]: string\n } = {}\n\n const headersList = await headers()\n\n headersList.forEach((value, key) => {\n if (key.startsWith('prepr')) {\n newHeaders[key] = value\n }\n })\n\n return newHeaders\n}\n\n/**\n * Fetches the segments from the Prepr API\n * @param token Prepr access token with scope 'segments'\n * @returns Array of PreprSegmentResponse\n */\nexport async function getPreprEnvironmentSegments(\n token: string\n): Promise<PreprSegment[]> {\n if (!token) {\n console.error(\n 'No token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n if (!token.startsWith('https://')) {\n console.error(\n 'Invalid token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n try {\n const response = await fetch(token, {\n headers: {\n 'User-Agent': `Prepr-Preview-Bar/${getPackageVersion()}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: JSON.stringify({\n query: `{\n _Segments {\n _id\n name\n }\n }`,\n }),\n })\n try {\n const json = await response.json()\n\n if (!json || !json.data || !json.data._Segments) {\n return []\n }\n\n return json.data?._Segments as PreprSegment[]\n } catch (jsonError) {\n console.error('Error parsing JSON, please contact Prepr support')\n return []\n }\n } catch (error) {\n console.error('Error fetching segments:', error)\n return []\n }\n}\n\n/**\n * Fetches all the necessary previewbar props\n * @param token Prepr access token with scope 'segments'\n * @returns Object with activeSegment, activeVariant and data\n */\nexport async function getPreviewBarProps(token: string): Promise<{\n activeSegment: string | null\n activeVariant: string | null\n data: PreprSegment[]\n}> {\n let data: PreprSegment[] = []\n let activeSegment, activeVariant\n\n // Prevent unnecessary function calling in production\n if (process.env.PREPR_ENV === 'preview') {\n data = await getPreprEnvironmentSegments(token)\n activeSegment = await getActiveSegment()\n activeVariant = await getActiveVariant()\n }\n\n return {\n activeSegment,\n activeVariant,\n data,\n }\n}\n","{\n \"name\": \"@preprio/prepr-nextjs\",\n \"version\": \"1.2.0\",\n \"description\": \"A next.js package containing helper functions and a preview bar to use in combination with Prepr\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\",\n \"package.json\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.js\"\n },\n \"./components\": {\n \"types\": \"./dist/components.d.ts\",\n \"import\": \"./dist/components.js\",\n \"require\": \"./dist/components.js\"\n },\n \"./dist/components.css\": {\n \"import\": \"./dist/components.css\",\n \"require\": \"./dist/components.css\"\n },\n \"./dist/main.css\": {\n \"import\": \"./dist/main.css\",\n \"require\": \"./dist/main.css\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\"\n },\n \"author\": \"Prepr\",\n \"license\": \"ISC\",\n \"devDependencies\": {\n \"@types/react\": \"^18.3.3\",\n \"autoprefixer\": \"^10.4.20\",\n \"postcss\": \"^8.4.47\",\n \"prettier\": \"3.3.3\",\n \"tailwindcss\": \"^3.4.13\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.2.4\",\n \"typescript\": \"^5.5.4\"\n },\n \"dependencies\": {\n \"@headlessui/react\": \"^2.1.8\",\n \"@vercel/functions\": \"^1.6.0\",\n \"classnames\": \"^2.5.1\",\n \"clsx\": \"^2.1.1\",\n \"micromatch\": \"^4.0.8\",\n \"next\": \"^15.2.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"react-icons\": \"^5.3.0\",\n \"rollup\": \"^4.22.4\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/preprio/prepr-nextjs.git\"\n },\n \"keywords\": [\n \"prepr\",\n \"nextjs\"\n ],\n \"bugs\": {\n \"url\": \"https://github.com/preprio/prepr-nextjs/issues\"\n },\n \"homepage\": \"https://github.com/preprio/prepr-nextjs#readme\"\n}\n","import pjson from '../package.json'\n\nexport function getPackageVersion() {\n return pjson.version\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../package.json","../src/utils.ts"],"sourcesContent":["import { NextResponse } from 'next/server'\nimport { ipAddress } from '@vercel/functions'\nimport { headers } from 'next/headers'\nimport { getPackageVersion } from './utils'\nimport { PreprSegment } from './shared/types'\n\n/**\n *\n * @param request NextRequest object\n * @param response optional NextResponse object\n */\nexport function PreprMiddleware(request: any) {\n const newResponse = NextResponse.next()\n\n const utm_source = request.nextUrl.searchParams.get('utm_source')\n const utm_medium = request.nextUrl.searchParams.get('utm_medium')\n const utm_term = request.nextUrl.searchParams.get('utm_term')\n const utm_content = request.nextUrl.searchParams.get('utm_content')\n const utm_campaign = request.nextUrl.searchParams.get('utm_campaign')\n const initial_referral = request.headers.get('referer')\n\n const ip = ipAddress(request)\n\n if (ip) {\n newResponse.headers.set('Prepr-Visitor-IP', ip)\n }\n\n const hutkCookie = request.cookies.get('hubspotutk')?.value\n\n if (utm_source) {\n newResponse.headers.set('Prepr-Context-utm_source', utm_source)\n }\n\n if (utm_medium) {\n newResponse.headers.set('Prepr-Context-utm_medium', utm_medium)\n }\n\n if (utm_term) {\n newResponse.headers.set('Prepr-Context-utm_term', utm_term)\n }\n\n if (utm_content) {\n newResponse.headers.set('Prepr-Context-utm_content', utm_content)\n }\n\n if (utm_campaign) {\n newResponse.headers.set('Prepr-Context-utm_campaign', utm_campaign)\n }\n\n if (hutkCookie) {\n newResponse.headers.set('Prepr-Hubspot-Id', hutkCookie)\n }\n\n if (initial_referral) {\n newResponse.headers.set(\n 'prepr-context-initial_referral',\n initial_referral\n )\n }\n\n let cookie = request.cookies.get('__prepr_uid')?.value\n\n if (!cookie) {\n cookie = crypto.randomUUID()\n newResponse.cookies.set('__prepr_uid', cookie, {\n maxAge: 1 * 365 * 24 * 60, // Set for one year\n })\n newResponse.headers.set('Prepr-Customer-Id-Created', 'true')\n }\n\n newResponse.headers.set('Prepr-Customer-Id', cookie)\n\n if (process.env.PREPR_ENV === 'preview') {\n newResponse.headers.set('Prepr-Preview-Bar', 'true')\n\n const segmentCookie = request.cookies.get('Prepr-Segments')?.value\n if (segmentCookie) {\n newResponse.headers.set('Prepr-Segments', segmentCookie)\n }\n\n const abCookie = request.cookies.get('Prepr-ABtesting')?.value\n if (abCookie) {\n newResponse.headers.set('Prepr-ABtesting', abCookie)\n }\n\n if (request.nextUrl.searchParams.has('prepr_preview_segment')) {\n const segments = request.nextUrl.searchParams.get(\n 'prepr_preview_segment'\n )\n\n if (segments) {\n newResponse.headers.set('Prepr-Segments', segments)\n newResponse.cookies.set('Prepr-Segments', segments, {\n maxAge: 60, // Set for one year\n })\n }\n }\n\n if (request.nextUrl.searchParams.has('prepr_preview_ab')) {\n const ab_testing =\n request.nextUrl.searchParams.get('prepr_preview_ab')\n let value = ab_testing?.toUpperCase()\n if (value === 'B') {\n value = 'B'\n } else {\n value = 'A'\n }\n\n newResponse.headers.set('Prepr-ABtesting', value)\n newResponse.cookies.set('Prepr-ABtesting', value, {\n maxAge: 60, // Set for one year\n })\n }\n }\n\n return newResponse\n}\n\n/**\n * Returns the Prepr Customer ID from the headers\n */\nexport async function getPreprUUID() {\n const headersList = await headers()\n return headersList.get('prepr-customer-id')\n}\n\n/**\n * Retuns the active segment from the headers\n */\nexport async function getActiveSegment() {\n const headersList = await headers()\n return headersList.get('Prepr-Segments')\n}\n\n/**\n * Returns the active variant from the headers\n */\nexport async function getActiveVariant() {\n const headersList = await headers()\n return headersList.get('Prepr-ABtesting')\n}\n\n/**\n * Helper function to retrieve Prepr headers (will filter out customer ID if in preview mode)\n */\nexport async function getPreprHeaders() {\n let newHeaders: {\n [key: string]: string\n } = {}\n\n const headersList = await headers()\n\n headersList.forEach((value, key) => {\n if (key.startsWith('prepr')) {\n newHeaders[key] = value\n }\n })\n\n return newHeaders\n}\n\n/**\n * Fetches the segments from the Prepr API\n * @param token Prepr access token with scope 'segments'\n * @returns Array of PreprSegmentResponse\n */\nexport async function getPreprEnvironmentSegments(\n token: string\n): Promise<PreprSegment[]> {\n if (!token) {\n console.error(\n 'No token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n if (!token.startsWith('https://')) {\n console.error(\n 'Invalid token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n try {\n const response = await fetch(token, {\n headers: {\n 'User-Agent': `Prepr-Preview-Bar/${getPackageVersion()}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: JSON.stringify({\n query: `{\n _Segments {\n _id\n name\n }\n }`,\n }),\n })\n try {\n const json = await response.json()\n\n if (!json || !json.data || !json.data._Segments) {\n return []\n }\n\n return json.data?._Segments as PreprSegment[]\n } catch (jsonError) {\n console.error('Error parsing JSON, please contact Prepr support')\n return []\n }\n } catch (error) {\n console.error('Error fetching segments:', error)\n return []\n }\n}\n\n/**\n * Fetches all the necessary previewbar props\n * @param token Prepr access token with scope 'segments'\n * @returns Object with activeSegment, activeVariant and data\n */\nexport async function getPreviewBarProps(token: string): Promise<{\n activeSegment: string | null\n activeVariant: string | null\n data: PreprSegment[]\n}> {\n let data: PreprSegment[] = []\n let activeSegment, activeVariant\n\n // Prevent unnecessary function calling in production\n if (process.env.PREPR_ENV === 'preview') {\n data = await getPreprEnvironmentSegments(token)\n activeSegment = await getActiveSegment()\n activeVariant = await getActiveVariant()\n }\n\n return {\n activeSegment,\n activeVariant,\n data,\n }\n}\n","{\n \"name\": \"@preprio/prepr-nextjs\",\n \"version\": \"1.3.2\",\n \"description\": \"A next.js package containing helper functions and a preview bar to use in combination with Prepr\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\",\n \"package.json\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.js\"\n },\n \"./components\": {\n \"types\": \"./dist/components.d.ts\",\n \"import\": \"./dist/components.js\",\n \"require\": \"./dist/components.js\"\n },\n \"./dist/components.css\": {\n \"import\": \"./dist/components.css\",\n \"require\": \"./dist/components.css\"\n },\n \"./dist/main.css\": {\n \"import\": \"./dist/main.css\",\n \"require\": \"./dist/main.css\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\"\n },\n \"author\": \"Prepr\",\n \"license\": \"ISC\",\n \"devDependencies\": {\n \"@types/react\": \"^18.3.3\",\n \"autoprefixer\": \"^10.4.20\",\n \"postcss\": \"^8.4.47\",\n \"prettier\": \"3.3.3\",\n \"tailwindcss\": \"^3.4.13\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.2.4\",\n \"typescript\": \"^5.5.4\"\n },\n \"dependencies\": {\n \"@headlessui/react\": \"^2.1.8\",\n \"@vercel/functions\": \"^1.6.0\",\n \"classnames\": \"^2.5.1\",\n \"clsx\": \"^2.1.1\",\n \"micromatch\": \"^4.0.8\",\n \"next\": \"^15.2.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"react-icons\": \"^5.3.0\",\n \"rollup\": \"^4.22.4\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/preprio/prepr-nextjs.git\"\n },\n \"keywords\": [\n \"prepr\",\n \"nextjs\"\n ],\n \"bugs\": {\n \"url\": \"https://github.com/preprio/prepr-nextjs/issues\"\n },\n \"homepage\": \"https://github.com/preprio/prepr-nextjs#readme\"\n}\n","import pjson from '../package.json'\n\nexport function getPackageVersion() {\n return pjson.version\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import { headers } from "next/headers";
|
|
|
10
10
|
// package.json
|
|
11
11
|
var package_default = {
|
|
12
12
|
name: "@preprio/prepr-nextjs",
|
|
13
|
-
version: "1.2
|
|
13
|
+
version: "1.3.2",
|
|
14
14
|
description: "A next.js package containing helper functions and a preview bar to use in combination with Prepr",
|
|
15
15
|
main: "./dist/index.js",
|
|
16
16
|
types: "./dist/index.d.ts",
|
|
@@ -137,6 +137,14 @@ function PreprMiddleware(request) {
|
|
|
137
137
|
newResponse.headers.set("Prepr-Customer-Id", cookie);
|
|
138
138
|
if (process.env.PREPR_ENV === "preview") {
|
|
139
139
|
newResponse.headers.set("Prepr-Preview-Bar", "true");
|
|
140
|
+
const segmentCookie = (_c = request.cookies.get("Prepr-Segments")) == null ? void 0 : _c.value;
|
|
141
|
+
if (segmentCookie) {
|
|
142
|
+
newResponse.headers.set("Prepr-Segments", segmentCookie);
|
|
143
|
+
}
|
|
144
|
+
const abCookie = (_d = request.cookies.get("Prepr-ABtesting")) == null ? void 0 : _d.value;
|
|
145
|
+
if (abCookie) {
|
|
146
|
+
newResponse.headers.set("Prepr-ABtesting", abCookie);
|
|
147
|
+
}
|
|
140
148
|
if (request.nextUrl.searchParams.has("prepr_preview_segment")) {
|
|
141
149
|
const segments = request.nextUrl.searchParams.get(
|
|
142
150
|
"prepr_preview_segment"
|
|
@@ -163,14 +171,6 @@ function PreprMiddleware(request) {
|
|
|
163
171
|
// Set for one year
|
|
164
172
|
});
|
|
165
173
|
}
|
|
166
|
-
const segmentCookie = (_c = request.cookies.get("Prepr-Segments")) == null ? void 0 : _c.value;
|
|
167
|
-
if (segmentCookie) {
|
|
168
|
-
newResponse.headers.set("Prepr-Segments", segmentCookie);
|
|
169
|
-
}
|
|
170
|
-
const abCookie = (_d = request.cookies.get("Prepr-ABtesting")) == null ? void 0 : _d.value;
|
|
171
|
-
if (abCookie) {
|
|
172
|
-
newResponse.headers.set("Prepr-ABtesting", abCookie);
|
|
173
|
-
}
|
|
174
174
|
}
|
|
175
175
|
return newResponse;
|
|
176
176
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../package.json","../src/utils.ts"],"sourcesContent":["import { NextResponse } from 'next/server'\nimport { ipAddress } from '@vercel/functions'\nimport { headers } from 'next/headers'\nimport { getPackageVersion } from './utils'\nimport { PreprSegment } from './shared/types'\n\n/**\n *\n * @param request NextRequest object\n * @param response optional NextResponse object\n */\nexport function PreprMiddleware(request: any) {\n const newResponse = NextResponse.next()\n\n const utm_source = request.nextUrl.searchParams.get('utm_source')\n const utm_medium = request.nextUrl.searchParams.get('utm_medium')\n const utm_term = request.nextUrl.searchParams.get('utm_term')\n const utm_content = request.nextUrl.searchParams.get('utm_content')\n const utm_campaign = request.nextUrl.searchParams.get('utm_campaign')\n const initial_referral = request.headers.get('referer')\n\n const ip = ipAddress(request)\n\n if (ip) {\n newResponse.headers.set('Prepr-Visitor-IP', ip)\n }\n\n const hutkCookie = request.cookies.get('hubspotutk')?.value\n\n if (utm_source) {\n newResponse.headers.set('Prepr-Context-utm_source', utm_source)\n }\n\n if (utm_medium) {\n newResponse.headers.set('Prepr-Context-utm_medium', utm_medium)\n }\n\n if (utm_term) {\n newResponse.headers.set('Prepr-Context-utm_term', utm_term)\n }\n\n if (utm_content) {\n newResponse.headers.set('Prepr-Context-utm_content', utm_content)\n }\n\n if (utm_campaign) {\n newResponse.headers.set('Prepr-Context-utm_campaign', utm_campaign)\n }\n\n if (hutkCookie) {\n newResponse.headers.set('Prepr-Hubspot-Id', hutkCookie)\n }\n\n if (initial_referral) {\n newResponse.headers.set(\n 'prepr-context-initial_referral',\n initial_referral\n )\n }\n\n let cookie = request.cookies.get('__prepr_uid')?.value\n\n if (!cookie) {\n cookie = crypto.randomUUID()\n newResponse.cookies.set('__prepr_uid', cookie, {\n maxAge: 1 * 365 * 24 * 60, // Set for one year\n })\n newResponse.headers.set('Prepr-Customer-Id-Created', 'true')\n }\n\n newResponse.headers.set('Prepr-Customer-Id', cookie)\n\n if (process.env.PREPR_ENV === 'preview') {\n newResponse.headers.set('Prepr-Preview-Bar', 'true')\n\n if (request.nextUrl.searchParams.has('prepr_preview_segment')) {\n const segments = request.nextUrl.searchParams.get(\n 'prepr_preview_segment'\n )\n\n if (segments) {\n newResponse.headers.set('Prepr-Segments', segments)\n newResponse.cookies.set('Prepr-Segments', segments, {\n maxAge: 60, // Set for one year\n })\n }\n }\n\n if (request.nextUrl.searchParams.has('prepr_preview_ab')) {\n const ab_testing =\n request.nextUrl.searchParams.get('prepr_preview_ab')\n let value = ab_testing?.toUpperCase()\n if (value === 'B') {\n value = 'B'\n } else {\n value = 'A'\n }\n\n newResponse.headers.set('Prepr-ABtesting', value)\n newResponse.cookies.set('Prepr-ABtesting', value, {\n maxAge: 60, // Set for one year\n })\n }\n\n const segmentCookie = request.cookies.get('Prepr-Segments')?.value\n if (segmentCookie) {\n newResponse.headers.set('Prepr-Segments', segmentCookie)\n }\n\n const abCookie = request.cookies.get('Prepr-ABtesting')?.value\n if (abCookie) {\n newResponse.headers.set('Prepr-ABtesting', abCookie)\n }\n }\n\n return newResponse\n}\n\n/**\n * Returns the Prepr Customer ID from the headers\n */\nexport async function getPreprUUID() {\n const headersList = await headers()\n return headersList.get('prepr-customer-id')\n}\n\n/**\n * Retuns the active segment from the headers\n */\nexport async function getActiveSegment() {\n const headersList = await headers()\n return headersList.get('Prepr-Segments')\n}\n\n/**\n * Returns the active variant from the headers\n */\nexport async function getActiveVariant() {\n const headersList = await headers()\n return headersList.get('Prepr-ABtesting')\n}\n\n/**\n * Helper function to retrieve Prepr headers (will filter out customer ID if in preview mode)\n */\nexport async function getPreprHeaders() {\n let newHeaders: {\n [key: string]: string\n } = {}\n\n const headersList = await headers()\n\n headersList.forEach((value, key) => {\n if (key.startsWith('prepr')) {\n newHeaders[key] = value\n }\n })\n\n return newHeaders\n}\n\n/**\n * Fetches the segments from the Prepr API\n * @param token Prepr access token with scope 'segments'\n * @returns Array of PreprSegmentResponse\n */\nexport async function getPreprEnvironmentSegments(\n token: string\n): Promise<PreprSegment[]> {\n if (!token) {\n console.error(\n 'No token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n if (!token.startsWith('https://')) {\n console.error(\n 'Invalid token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n try {\n const response = await fetch(token, {\n headers: {\n 'User-Agent': `Prepr-Preview-Bar/${getPackageVersion()}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: JSON.stringify({\n query: `{\n _Segments {\n _id\n name\n }\n }`,\n }),\n })\n try {\n const json = await response.json()\n\n if (!json || !json.data || !json.data._Segments) {\n return []\n }\n\n return json.data?._Segments as PreprSegment[]\n } catch (jsonError) {\n console.error('Error parsing JSON, please contact Prepr support')\n return []\n }\n } catch (error) {\n console.error('Error fetching segments:', error)\n return []\n }\n}\n\n/**\n * Fetches all the necessary previewbar props\n * @param token Prepr access token with scope 'segments'\n * @returns Object with activeSegment, activeVariant and data\n */\nexport async function getPreviewBarProps(token: string): Promise<{\n activeSegment: string | null\n activeVariant: string | null\n data: PreprSegment[]\n}> {\n let data: PreprSegment[] = []\n let activeSegment, activeVariant\n\n // Prevent unnecessary function calling in production\n if (process.env.PREPR_ENV === 'preview') {\n data = await getPreprEnvironmentSegments(token)\n activeSegment = await getActiveSegment()\n activeVariant = await getActiveVariant()\n }\n\n return {\n activeSegment,\n activeVariant,\n data,\n }\n}\n","{\n \"name\": \"@preprio/prepr-nextjs\",\n \"version\": \"1.2.0\",\n \"description\": \"A next.js package containing helper functions and a preview bar to use in combination with Prepr\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\",\n \"package.json\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.js\"\n },\n \"./components\": {\n \"types\": \"./dist/components.d.ts\",\n \"import\": \"./dist/components.js\",\n \"require\": \"./dist/components.js\"\n },\n \"./dist/components.css\": {\n \"import\": \"./dist/components.css\",\n \"require\": \"./dist/components.css\"\n },\n \"./dist/main.css\": {\n \"import\": \"./dist/main.css\",\n \"require\": \"./dist/main.css\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\"\n },\n \"author\": \"Prepr\",\n \"license\": \"ISC\",\n \"devDependencies\": {\n \"@types/react\": \"^18.3.3\",\n \"autoprefixer\": \"^10.4.20\",\n \"postcss\": \"^8.4.47\",\n \"prettier\": \"3.3.3\",\n \"tailwindcss\": \"^3.4.13\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.2.4\",\n \"typescript\": \"^5.5.4\"\n },\n \"dependencies\": {\n \"@headlessui/react\": \"^2.1.8\",\n \"@vercel/functions\": \"^1.6.0\",\n \"classnames\": \"^2.5.1\",\n \"clsx\": \"^2.1.1\",\n \"micromatch\": \"^4.0.8\",\n \"next\": \"^15.2.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"react-icons\": \"^5.3.0\",\n \"rollup\": \"^4.22.4\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/preprio/prepr-nextjs.git\"\n },\n \"keywords\": [\n \"prepr\",\n \"nextjs\"\n ],\n \"bugs\": {\n \"url\": \"https://github.com/preprio/prepr-nextjs/issues\"\n },\n \"homepage\": \"https://github.com/preprio/prepr-nextjs#readme\"\n}\n","import pjson from '../package.json'\n\nexport function getPackageVersion() {\n return pjson.version\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../package.json","../src/utils.ts"],"sourcesContent":["import { NextResponse } from 'next/server'\nimport { ipAddress } from '@vercel/functions'\nimport { headers } from 'next/headers'\nimport { getPackageVersion } from './utils'\nimport { PreprSegment } from './shared/types'\n\n/**\n *\n * @param request NextRequest object\n * @param response optional NextResponse object\n */\nexport function PreprMiddleware(request: any) {\n const newResponse = NextResponse.next()\n\n const utm_source = request.nextUrl.searchParams.get('utm_source')\n const utm_medium = request.nextUrl.searchParams.get('utm_medium')\n const utm_term = request.nextUrl.searchParams.get('utm_term')\n const utm_content = request.nextUrl.searchParams.get('utm_content')\n const utm_campaign = request.nextUrl.searchParams.get('utm_campaign')\n const initial_referral = request.headers.get('referer')\n\n const ip = ipAddress(request)\n\n if (ip) {\n newResponse.headers.set('Prepr-Visitor-IP', ip)\n }\n\n const hutkCookie = request.cookies.get('hubspotutk')?.value\n\n if (utm_source) {\n newResponse.headers.set('Prepr-Context-utm_source', utm_source)\n }\n\n if (utm_medium) {\n newResponse.headers.set('Prepr-Context-utm_medium', utm_medium)\n }\n\n if (utm_term) {\n newResponse.headers.set('Prepr-Context-utm_term', utm_term)\n }\n\n if (utm_content) {\n newResponse.headers.set('Prepr-Context-utm_content', utm_content)\n }\n\n if (utm_campaign) {\n newResponse.headers.set('Prepr-Context-utm_campaign', utm_campaign)\n }\n\n if (hutkCookie) {\n newResponse.headers.set('Prepr-Hubspot-Id', hutkCookie)\n }\n\n if (initial_referral) {\n newResponse.headers.set(\n 'prepr-context-initial_referral',\n initial_referral\n )\n }\n\n let cookie = request.cookies.get('__prepr_uid')?.value\n\n if (!cookie) {\n cookie = crypto.randomUUID()\n newResponse.cookies.set('__prepr_uid', cookie, {\n maxAge: 1 * 365 * 24 * 60, // Set for one year\n })\n newResponse.headers.set('Prepr-Customer-Id-Created', 'true')\n }\n\n newResponse.headers.set('Prepr-Customer-Id', cookie)\n\n if (process.env.PREPR_ENV === 'preview') {\n newResponse.headers.set('Prepr-Preview-Bar', 'true')\n\n const segmentCookie = request.cookies.get('Prepr-Segments')?.value\n if (segmentCookie) {\n newResponse.headers.set('Prepr-Segments', segmentCookie)\n }\n\n const abCookie = request.cookies.get('Prepr-ABtesting')?.value\n if (abCookie) {\n newResponse.headers.set('Prepr-ABtesting', abCookie)\n }\n\n if (request.nextUrl.searchParams.has('prepr_preview_segment')) {\n const segments = request.nextUrl.searchParams.get(\n 'prepr_preview_segment'\n )\n\n if (segments) {\n newResponse.headers.set('Prepr-Segments', segments)\n newResponse.cookies.set('Prepr-Segments', segments, {\n maxAge: 60, // Set for one year\n })\n }\n }\n\n if (request.nextUrl.searchParams.has('prepr_preview_ab')) {\n const ab_testing =\n request.nextUrl.searchParams.get('prepr_preview_ab')\n let value = ab_testing?.toUpperCase()\n if (value === 'B') {\n value = 'B'\n } else {\n value = 'A'\n }\n\n newResponse.headers.set('Prepr-ABtesting', value)\n newResponse.cookies.set('Prepr-ABtesting', value, {\n maxAge: 60, // Set for one year\n })\n }\n }\n\n return newResponse\n}\n\n/**\n * Returns the Prepr Customer ID from the headers\n */\nexport async function getPreprUUID() {\n const headersList = await headers()\n return headersList.get('prepr-customer-id')\n}\n\n/**\n * Retuns the active segment from the headers\n */\nexport async function getActiveSegment() {\n const headersList = await headers()\n return headersList.get('Prepr-Segments')\n}\n\n/**\n * Returns the active variant from the headers\n */\nexport async function getActiveVariant() {\n const headersList = await headers()\n return headersList.get('Prepr-ABtesting')\n}\n\n/**\n * Helper function to retrieve Prepr headers (will filter out customer ID if in preview mode)\n */\nexport async function getPreprHeaders() {\n let newHeaders: {\n [key: string]: string\n } = {}\n\n const headersList = await headers()\n\n headersList.forEach((value, key) => {\n if (key.startsWith('prepr')) {\n newHeaders[key] = value\n }\n })\n\n return newHeaders\n}\n\n/**\n * Fetches the segments from the Prepr API\n * @param token Prepr access token with scope 'segments'\n * @returns Array of PreprSegmentResponse\n */\nexport async function getPreprEnvironmentSegments(\n token: string\n): Promise<PreprSegment[]> {\n if (!token) {\n console.error(\n 'No token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n if (!token.startsWith('https://')) {\n console.error(\n 'Invalid token provided, make sure you are using your Prepr GraphQL URL'\n )\n return []\n }\n\n try {\n const response = await fetch(token, {\n headers: {\n 'User-Agent': `Prepr-Preview-Bar/${getPackageVersion()}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: JSON.stringify({\n query: `{\n _Segments {\n _id\n name\n }\n }`,\n }),\n })\n try {\n const json = await response.json()\n\n if (!json || !json.data || !json.data._Segments) {\n return []\n }\n\n return json.data?._Segments as PreprSegment[]\n } catch (jsonError) {\n console.error('Error parsing JSON, please contact Prepr support')\n return []\n }\n } catch (error) {\n console.error('Error fetching segments:', error)\n return []\n }\n}\n\n/**\n * Fetches all the necessary previewbar props\n * @param token Prepr access token with scope 'segments'\n * @returns Object with activeSegment, activeVariant and data\n */\nexport async function getPreviewBarProps(token: string): Promise<{\n activeSegment: string | null\n activeVariant: string | null\n data: PreprSegment[]\n}> {\n let data: PreprSegment[] = []\n let activeSegment, activeVariant\n\n // Prevent unnecessary function calling in production\n if (process.env.PREPR_ENV === 'preview') {\n data = await getPreprEnvironmentSegments(token)\n activeSegment = await getActiveSegment()\n activeVariant = await getActiveVariant()\n }\n\n return {\n activeSegment,\n activeVariant,\n data,\n }\n}\n","{\n \"name\": \"@preprio/prepr-nextjs\",\n \"version\": \"1.3.2\",\n \"description\": \"A next.js package containing helper functions and a preview bar to use in combination with Prepr\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\",\n \"package.json\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.js\"\n },\n \"./components\": {\n \"types\": \"./dist/components.d.ts\",\n \"import\": \"./dist/components.js\",\n \"require\": \"./dist/components.js\"\n },\n \"./dist/components.css\": {\n \"import\": \"./dist/components.css\",\n \"require\": \"./dist/components.css\"\n },\n \"./dist/main.css\": {\n \"import\": \"./dist/main.css\",\n \"require\": \"./dist/main.css\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\"\n },\n \"author\": \"Prepr\",\n \"license\": \"ISC\",\n \"devDependencies\": {\n \"@types/react\": \"^18.3.3\",\n \"autoprefixer\": \"^10.4.20\",\n \"postcss\": \"^8.4.47\",\n \"prettier\": \"3.3.3\",\n \"tailwindcss\": \"^3.4.13\",\n \"ts-node\": \"^10.9.2\",\n \"tsup\": \"^8.2.4\",\n \"typescript\": \"^5.5.4\"\n },\n \"dependencies\": {\n \"@headlessui/react\": \"^2.1.8\",\n \"@vercel/functions\": \"^1.6.0\",\n \"classnames\": \"^2.5.1\",\n \"clsx\": \"^2.1.1\",\n \"micromatch\": \"^4.0.8\",\n \"next\": \"^15.2.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"react-icons\": \"^5.3.0\",\n \"rollup\": \"^4.22.4\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/preprio/prepr-nextjs.git\"\n },\n \"keywords\": [\n \"prepr\",\n \"nextjs\"\n ],\n \"bugs\": {\n \"url\": \"https://github.com/preprio/prepr-nextjs/issues\"\n },\n \"homepage\": \"https://github.com/preprio/prepr-nextjs#readme\"\n}\n","import pjson from '../package.json'\n\nexport function getPackageVersion() {\n return pjson.version\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED