@obelism/improve-sdk-next 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ImproveServerSDK } from '@obelism/improve-sdk/server';
|
|
2
2
|
import { NextURL } from 'next/dist/server/web/next-url';
|
|
3
3
|
import { NextRequest, NextResponse } from 'next/server';
|
|
4
|
+
import { ResponseCookie } from 'next/dist/compiled/@edge-runtime/cookies';
|
|
4
5
|
|
|
5
6
|
type OptionConfig = {
|
|
6
7
|
value: string;
|
|
@@ -15,6 +16,10 @@ type ServerABTestConfig = {
|
|
|
15
16
|
declare const generateImproveNextMiddleware: (args: {
|
|
16
17
|
improveSdk: ImproveServerSDK;
|
|
17
18
|
serverABtests: ServerABTestConfig[];
|
|
19
|
+
options?: {
|
|
20
|
+
visitorId?: ResponseCookie;
|
|
21
|
+
testValue?: ResponseCookie;
|
|
22
|
+
};
|
|
18
23
|
}) => (request: NextRequest) => NextResponse<unknown>;
|
|
19
24
|
|
|
20
25
|
export { type OptionConfig, type ServerABTestConfig, generateImproveNextMiddleware };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ImproveServerSDK } from '@obelism/improve-sdk/server';
|
|
2
2
|
import { NextURL } from 'next/dist/server/web/next-url';
|
|
3
3
|
import { NextRequest, NextResponse } from 'next/server';
|
|
4
|
+
import { ResponseCookie } from 'next/dist/compiled/@edge-runtime/cookies';
|
|
4
5
|
|
|
5
6
|
type OptionConfig = {
|
|
6
7
|
value: string;
|
|
@@ -15,6 +16,10 @@ type ServerABTestConfig = {
|
|
|
15
16
|
declare const generateImproveNextMiddleware: (args: {
|
|
16
17
|
improveSdk: ImproveServerSDK;
|
|
17
18
|
serverABtests: ServerABTestConfig[];
|
|
19
|
+
options?: {
|
|
20
|
+
visitorId?: ResponseCookie;
|
|
21
|
+
testValue?: ResponseCookie;
|
|
22
|
+
};
|
|
18
23
|
}) => (request: NextRequest) => NextResponse<unknown>;
|
|
19
24
|
|
|
20
25
|
export { type OptionConfig, type ServerABTestConfig, generateImproveNextMiddleware };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("next/server");const t=RegExp(["Vercelbot","DotBot","Yeti","AhrefsBot","SeznamBot","YandexBot","UptimeRobot","Bytespider","Baiduspider","fidget-spinner-bot","AASA-Bot","FullStoryBot","SemrushBot","PetalBot","RyteBot","Pinterestbot","AntBot","Monsidobot","blowra","JobRoboter","Qwantify","YisouSpider"].map(e=>e.toLowerCase()).join("|"),"i"),o=e=>!!e&&t.test(e.toLowerCase()),
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("next/server");const t=RegExp(["Vercelbot","DotBot","Yeti","AhrefsBot","SeznamBot","YandexBot","UptimeRobot","Bytespider","Baiduspider","fidget-spinner-bot","AASA-Bot","FullStoryBot","SemrushBot","PetalBot","RyteBot","Pinterestbot","AntBot","Monsidobot","blowra","JobRoboter","Qwantify","YisouSpider"].map(e=>e.toLowerCase()).join("|"),"i"),o=e=>!!e&&t.test(e.toLowerCase()),s=/(\[[a-zA-Z0-9-]+\])+/g,r=/\[\[\.\.\.[a-zA-Z0-9-]+\]\]/g,i=/\[\.\.\.[a-zA-Z0-9-]+\]/g,a=e=>e.endsWith("/")?e.substring(0,e.length-1):e,l=(e,t)=>{let o=a(t.split("?")[0]),l=a(e.split("?")[0]);return o===l||new RegExp(`^${l.replace(s,"[a-zA-Z0-9-]+")}$`.replace(r,"?.*").replace(i,".*")).test(o)};exports.generateImproveNextMiddleware=t=>s=>{let r=t.improveSdk.getVisitorCookieName(),i=s.cookies.get(r)?.value,a=i&&t.improveSdk.validateVisitorId(i)?i:t.improveSdk.generateVisitorId(),{ua:n="",isBot:u=!1}=e.userAgent(s);if(u||o(n))return e.NextResponse.next();let p=t.serverABtests.find(e=>l(e.routeHandler,s.nextUrl.pathname));if(!p)return e.NextResponse.next();let g=p.options.at(0)?.value;if(!g)return e.NextResponse.next();let d=e=>e&&t.improveSdk.validateTestValue(p.slug,e)?e:null,x=d(s.nextUrl.searchParams.get(p.slug))||d(s.cookies.get(p.slug)?.value)||t.improveSdk.getTestValue(p.slug,a,n),m=p.options.find(e=>e.value===x);if(m&&m.value!==g){let t=s.nextUrl.clone();t.pathname=p?.formatSlug?p?.formatSlug(t,m)?.pathname:m.slug;let o=e.NextResponse.rewrite(t);return o.cookies.set(r,a),o.cookies.set(p.slug,m.value),o}let v=e.NextResponse.next();return v.cookies.set(r,a,{maxAge:604800,...t.options?.visitorId}),v.cookies.set(p.slug,x,{maxAge:604800,...t.options?.testValue}),v};
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{userAgent as e,NextResponse as t}from"next/server";let o=RegExp(["Vercelbot","DotBot","Yeti","AhrefsBot","SeznamBot","YandexBot","UptimeRobot","Bytespider","Baiduspider","fidget-spinner-bot","AASA-Bot","FullStoryBot","SemrushBot","PetalBot","RyteBot","Pinterestbot","AntBot","Monsidobot","blowra","JobRoboter","Qwantify","YisouSpider"].map(e=>e.toLowerCase()).join("|"),"i"),r=e=>!!e&&o.test(e.toLowerCase()),
|
|
1
|
+
import{userAgent as e,NextResponse as t}from"next/server";let o=RegExp(["Vercelbot","DotBot","Yeti","AhrefsBot","SeznamBot","YandexBot","UptimeRobot","Bytespider","Baiduspider","fidget-spinner-bot","AASA-Bot","FullStoryBot","SemrushBot","PetalBot","RyteBot","Pinterestbot","AntBot","Monsidobot","blowra","JobRoboter","Qwantify","YisouSpider"].map(e=>e.toLowerCase()).join("|"),"i"),r=e=>!!e&&o.test(e.toLowerCase()),i=/(\[[a-zA-Z0-9-]+\])+/g,s=/\[\[\.\.\.[a-zA-Z0-9-]+\]\]/g,a=/\[\.\.\.[a-zA-Z0-9-]+\]/g,l=e=>e.endsWith("/")?e.substring(0,e.length-1):e,n=(e,t)=>{let o=l(t.split("?")[0]),r=l(e.split("?")[0]);return o===r||new RegExp(`^${r.replace(i,"[a-zA-Z0-9-]+")}$`.replace(s,"?.*").replace(a,".*")).test(o)},u=o=>i=>{let s=o.improveSdk.getVisitorCookieName(),a=i.cookies.get(s)?.value,l=a&&o.improveSdk.validateVisitorId(a)?a:o.improveSdk.generateVisitorId(),{ua:u="",isBot:p=!1}=e(i);if(p||r(u))return t.next();let g=o.serverABtests.find(e=>n(e.routeHandler,i.nextUrl.pathname));if(!g)return t.next();let d=g.options.at(0)?.value;if(!d)return t.next();let m=e=>e&&o.improveSdk.validateTestValue(g.slug,e)?e:null,v=m(i.nextUrl.searchParams.get(g.slug))||m(i.cookies.get(g.slug)?.value)||o.improveSdk.getTestValue(g.slug,l,u),x=g.options.find(e=>e.value===v);if(x&&x.value!==d){let e=i.nextUrl.clone();e.pathname=g?.formatSlug?g?.formatSlug(e,x)?.pathname:x.slug;let o=t.rewrite(e);return o.cookies.set(s,l),o.cookies.set(g.slug,x.value),o}let B=t.next();return B.cookies.set(s,l,{maxAge:604800,...o.options?.visitorId}),B.cookies.set(g.slug,v,{maxAge:604800,...o.options?.testValue}),B};export{u as generateImproveNextMiddleware};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@obelism/improve-sdk-next",
|
|
3
3
|
"description": "Obelism Improve NextJS SDK",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ab-tests",
|
|
7
7
|
"feature-flags",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"vitest": "^2.0.5"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@obelism/improve-sdk": "^0.
|
|
62
|
-
"@obelism/improve-sdk-react": "^0.
|
|
61
|
+
"@obelism/improve-sdk": "^0.2.0",
|
|
62
|
+
"@obelism/improve-sdk-react": "^0.2.0"
|
|
63
63
|
}
|
|
64
64
|
}
|