@obelism/improve-sdk-next 0.1.0 → 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/README.md ADDED
@@ -0,0 +1 @@
1
+ # Obelism Improve NextJS SDK
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()),r=/(\[[a-zA-Z0-9-]+\])+/g,s=/\[\[\.\.\.[a-zA-Z0-9-]+\]\]/g,l=/\[\.\.\.[a-zA-Z0-9-]+\]/g,n=e=>e.endsWith("/")?e.substring(0,e.length-1):e,i=(e,t)=>{let o=n(t.split("?")[0]),i=n(e.split("?")[0]);return o===i||new RegExp(`^${i.replace(r,"[a-zA-Z0-9-]+")}$`.replace(s,"?.*").replace(l,".*")).test(o)};exports.generateImproveNextMiddleware=t=>r=>{let s=t.improveSdk.getVisitorCookieName(),l=r.cookies.get(s)?.value||t.improveSdk.generateVisitorId(),{ua:n="",isBot:a=!1}=e.userAgent(r);if(a||o(n))return e.NextResponse.next();let u=t.serverABtests.find(e=>i(e.routeHandler,r.nextUrl.pathname));if(!u)return e.NextResponse.next();let p=u.options.at(0)?.value;if(!p)return e.NextResponse.next();let g=e=>e&&t.improveSdk.validateTestValue(u.slug,e)?e:null,d=g(r.nextUrl.searchParams.get(u.slug))||g(r.cookies.get(u.slug)?.value)||t.improveSdk.getTestValue(u.slug,l,n),x=u.options.find(e=>e.value===d);if(x&&x.value!==p){let t=r.nextUrl.clone();t.pathname=u?.formatSlug?u?.formatSlug(t,x)?.pathname:x.slug;let o=e.NextResponse.rewrite(t);return o.cookies.set(s,l),o.cookies.set(u.slug,x.value),o}let m=e.NextResponse.next();return m.cookies.set(s,l),d&&m.cookies.set(u.slug,d),m};
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()),l=/(\[[a-zA-Z0-9-]+\])+/g,s=/\[\[\.\.\.[a-zA-Z0-9-]+\]\]/g,i=/\[\.\.\.[a-zA-Z0-9-]+\]/g,a=e=>e.endsWith("/")?e.substring(0,e.length-1):e,n=(e,t)=>{let o=a(t.split("?")[0]),r=a(e.split("?")[0]);return o===r||new RegExp(`^${r.replace(l,"[a-zA-Z0-9-]+")}$`.replace(s,"?.*").replace(i,".*")).test(o)},u=o=>l=>{let s=o.improveSdk.getVisitorCookieName(),i=l.cookies.get(s)?.value||o.improveSdk.generateVisitorId(),{ua:a="",isBot:u=!1}=e(l);if(u||r(a))return t.next();let p=o.serverABtests.find(e=>n(e.routeHandler,l.nextUrl.pathname));if(!p)return t.next();let g=p.options.at(0)?.value;if(!g)return t.next();let d=e=>e&&o.improveSdk.validateTestValue(p.slug,e)?e:null,m=d(l.nextUrl.searchParams.get(p.slug))||d(l.cookies.get(p.slug)?.value)||o.improveSdk.getTestValue(p.slug,i,a),v=p.options.find(e=>e.value===m);if(v&&v.value!==g){let e=l.nextUrl.clone();e.pathname=p?.formatSlug?p?.formatSlug(e,v)?.pathname:v.slug;let o=t.rewrite(e);return o.cookies.set(s,i),o.cookies.set(p.slug,v.value),o}let x=t.next();return x.cookies.set(s,i),m&&x.cookies.set(p.slug,m),x};export{u as generateImproveNextMiddleware};
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.1.0",
4
+ "version": "0.2.0",
5
5
  "keywords": [
6
6
  "ab-tests",
7
7
  "feature-flags",
@@ -48,17 +48,17 @@
48
48
  "@obelism/improve-sdk-eslint-config": "^0.0.0",
49
49
  "@obelism/improve-sdk-typescript-config": "^0.0.0",
50
50
  "@types/react": "^18.2.52",
51
- "@typescript-eslint/eslint-plugin": "^6.15.0",
51
+ "@typescript-eslint/eslint-plugin": "^8.1.0",
52
52
  "bunchee": "^5.3.1",
53
53
  "eslint": "^8.56.0",
54
54
  "eslint-config-prettier": "^9.1.0",
55
55
  "eslint-plugin-no-relative-import-paths": "^1.5.3",
56
- "eslint-plugin-simple-import-sort": "^10.0.0",
56
+ "eslint-plugin-simple-import-sort": "^12.1.1",
57
57
  "typescript": "^5.3.3",
58
58
  "vitest": "^2.0.5"
59
59
  },
60
60
  "dependencies": {
61
- "@obelism/improve-sdk": "^0.1.0",
62
- "@obelism/improve-sdk-react": "^0.1.0"
61
+ "@obelism/improve-sdk": "^0.2.0",
62
+ "@obelism/improve-sdk-react": "^0.2.0"
63
63
  }
64
64
  }