UNPKG

@preprio/prepr-nextjs

Version:

Next.js package for Prepr CMS preview functionality with advanced debugging and visual editing capabilities

201 lines (197 loc) 6.18 kB
import { ipAddress } from '@vercel/functions'; import { NextResponse } from 'next/server'; // src/middleware/index.ts // package.json var version = "2.0.0"; var package_default = { name: "@preprio/prepr-nextjs", version, description: "Next.js package for Prepr CMS preview functionality with advanced debugging and visual editing capabilities", main: "dist/react/index.cjs", types: "./dist/react/index.d.ts", module: "./dist/react/index.js", type: "module", scripts: { build: "tsup", dev: "tsup --watch", clean: "rm -rf dist", check: 'tsc --noEmit && eslint src --ext .ts,.tsx && prettier --check "src/**/*.{ts,tsx,js,jsx,json,md}"', fix: 'eslint src --ext .ts,.tsx --fix && prettier --write "src/**/*.{ts,tsx,js,jsx,json,md}"', changeset: "changeset", version: "changeset version", release: "pnpm run build && changeset publish", prepublishOnly: "pnpm run check && pnpm run build" }, exports: { "./middleware": { import: "./dist/middleware/index.js", types: "./dist/middleware/index.d.ts", require: "./dist/middleware/index.cjs" }, "./server": { import: "./dist/server/index.js", types: "./dist/server/index.d.ts", require: "./dist/server/index.cjs" }, "./react": { import: "./dist/react/index.js", types: "./dist/react/index.d.ts", require: "./dist/react/index.cjs" }, "./utils": { import: "./dist/utils/index.js", types: "./dist/utils/index.d.ts", require: "./dist/utils/index.cjs" }, "./types": { import: "./dist/types/index.js", types: "./dist/types/index.d.ts", require: "./dist/types/index.cjs" }, "./index.css": { import: "./dist/index.css", require: "./dist/index.css" } }, files: [ "dist", "package.json" ], keywords: [ "prepr", "cms", "nextjs", "preview", "visual-editing", "headless-cms", "react", "typescript", "debug", "stega" ], author: "Preprio", license: "MIT", packageManager: "pnpm@10.5.2", devDependencies: { "@changesets/cli": "^2.29.5", "@eslint/js": "^9.25.1", "@types/node": "^20.11.5", "@types/react": "19.1.0", "@types/react-dom": "19.1.2", "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.31.1", autoprefixer: "^10.4.21", cssnano: "^7.0.7", eslint: "^9.25.1", "eslint-config-prettier": "^10.1.2", "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", next: "15.3.1", postcss: "^8", prettier: "^3.5.3", "prettier-plugin-tailwindcss": "^0.5.12", react: "^19.1.0", "react-dom": "^19.1.0", tailwindcss: "^3.4.17", tsup: "^8.5.0", typescript: "^5.8.3" }, peerDependencies: { next: "^15.0.0 || ^14.0.0 || ^13.0.0", react: "^19.0.0 || ^18.0.0 || ^17.0.0 ", "react-dom": "^19.0.0 || ^18.0.0 || ^17.0.0" }, dependencies: { "@headlessui/react": "^2.2.0", "@vercel/functions": "^2.0.0", "@vercel/stega": "^0.1.2", clsx: "^2.1.1", "postcss-cli": "^11.0.1", "tailwind-merge": "^3.0.1" } }; // src/middleware/index.ts function createPreprMiddleware(request, responseOrOptions, options) { var _a, _b, _c, _d; let response; let finalOptions; if (responseOrOptions && "headers" in responseOrOptions) { response = responseOrOptions; finalOptions = options; } else { response = NextResponse.next(); finalOptions = responseOrOptions; } if (!process.env.PREPR_GRAPHQL_URL) { console.error("PREPR_GRAPHQL_URL is not set"); } request.nextUrl.searchParams.forEach((value, key) => { switch (key) { case "utm_source": response.headers.set("Prepr-Context-utm_source", value); break; case "utm_medium": response.headers.set("Prepr-Context-utm_medium", value); break; case "utm_term": response.headers.set("Prepr-Context-utm_term", value); break; case "utm_content": response.headers.set("Prepr-Context-utm_content", value); break; case "utm_campaign": response.headers.set("Prepr-Context-utm_campaign", value); break; } }); const referrer = request.headers.get("referer"); if (referrer) { response.headers.set("Prepr-Context-initial_referral", referrer); } response.headers.set("Prepr-Package", version); const ip = ipAddress(request); if (ip) { response.headers.set("Prepr-Visitor-IP", ip); } const hutkCookie = (_a = request.cookies.get("hubspotutk")) == null ? void 0 : _a.value; if (hutkCookie) { response.headers.set("Prepr-Hubspot-Id", hutkCookie); } let cookie = (_b = request.cookies.get("__prepr_uid")) == null ? void 0 : _b.value; if (!cookie) { cookie = crypto.randomUUID(); response.cookies.set("__prepr_uid", cookie, { maxAge: 1 * 365 * 24 * 60 // Set for one year }); response.headers.set("Prepr-Customer-Id-Created", "true"); } response.headers.set("Prepr-Customer-Id", cookie); if (!(finalOptions == null ? void 0 : finalOptions.preview) || process.env.PREPR_ENV !== "preview") { return response; } response.headers.set("Prepr-Preview-Bar", "true"); const segmentCookie = (_c = request.cookies.get("Prepr-Segments")) == null ? void 0 : _c.value; if (segmentCookie) { response.headers.set("Prepr-Segments", segmentCookie); } const abCookie = (_d = request.cookies.get("Prepr-ABtesting")) == null ? void 0 : _d.value; if (abCookie) { response.headers.set("Prepr-ABtesting", abCookie); } request.nextUrl.searchParams.forEach((value, key) => { if (key === "prepr_preview_ab") { response.headers.set("Prepr-ABtesting", value); response.cookies.set("Prepr-ABtesting", value); } if (key === "prepr_preview_segment") { response.headers.set("Prepr-Segments", value); response.cookies.set("Prepr-Segments", value); } }); return response; } export { createPreprMiddleware, package_default }; //# sourceMappingURL=chunk-C6L3X6KZ.js.map //# sourceMappingURL=chunk-C6L3X6KZ.js.map