@adopture/next
Version:
Next.js SDK for Adopture feature adoption tracking with SSR support
2 lines • 9.39 kB
JavaScript
'use strict';var chunkTPDXLPZA_js=require('./chunk-TPDXLPZA.js'),chunkPC2BTMNG_js=require('./chunk-PC2BTMNG.js'),sdkCore=require('@adopture/sdk-core'),headers=require('next/headers');var p=class{constructor(){this.config=null;this.isInitialized=false;this.events=[];this.sessionId=sdkCore.generateSessionId();}async init(r={}){if(!this.isInitialized)try{this.config=chunkTPDXLPZA_js.b(r);let e=chunkTPDXLPZA_js.c(this.config);if(!e.isValid)throw new Error(`Invalid configuration: ${e.errors.join(", ")}`);if(this.config.apiKey&&!this.config.projectId&&(this.config.projectId="35207190-2644-4230-b088-9ada94638e5d"),this.config.apiKey&&!this.config.environment){let t=chunkTPDXLPZA_js.e(this.config.apiKey);this.config.environment=t||void 0;}this.isInitialized=!0,this.config.debug&&console.log("[ADOPTURE-SERVER] Server tracker initialized");}catch(e){throw console.error("[ADOPTURE-SERVER] Failed to initialize:",e),e}}async track(r,e,t){if(!this.isInitialized)throw new Error("Server tracker not initialized");let o=sdkCore.validateFeatureId(r);if(!o.isValid)throw new Error(`Invalid feature ID: ${o.error}`);let s=sdkCore.validateUserId(e);if(!s.isValid)throw new Error(`Invalid user ID: ${s.error}`);let n={featureId:r,userId:e,timestamp:chunkPC2BTMNG_js.a(),metadata:t?chunkPC2BTMNG_js.d(t):{},sessionId:this.sessionId,eventId:sdkCore.generateEventId()};await this.sendEvent("track",n),this.config?.debug&&console.log("[ADOPTURE-SERVER] Track event sent:",n);}async trackAdoption(r){if(!this.isInitialized)throw new Error("Server tracker not initialized");let e=sdkCore.validateFeatureId(r.featureId);if(!e.isValid)throw new Error(`Invalid feature ID: ${e.error}`);let t=sdkCore.validateUserId(r.userId);if(!t.isValid)throw new Error(`Invalid user ID: ${t.error}`);let o={...r,timestamp:r.timestamp||chunkPC2BTMNG_js.a(),metadata:r.metadata?chunkPC2BTMNG_js.d(r.metadata):{},sessionId:r.sessionId||this.sessionId,eventId:r.eventId||sdkCore.generateEventId()};await this.sendEvent("adoption",o),this.config?.debug&&console.log("[ADOPTURE-SERVER] Adoption event sent:",o);}async expose(r,e,t="server",o){if(!this.isInitialized)throw new Error("Server tracker not initialized");let s=sdkCore.validateFeatureId(r);if(!s.isValid)throw new Error(`Invalid feature ID: ${s.error}`);let n=sdkCore.validateUserId(e);if(!n.isValid)throw new Error(`Invalid user ID: ${n.error}`);let d={featureId:r,userId:e,exposureChannel:t,exposedAt:chunkPC2BTMNG_js.a(),metadata:o?chunkPC2BTMNG_js.d(o):{},eventId:sdkCore.generateEventId()};await this.sendEvent("exposure",d),this.config?.debug&&console.log("[ADOPTURE-SERVER] Exposure event sent:",d);}async identify(r,e){if(!this.isInitialized)throw new Error("Server tracker not initialized");let t=sdkCore.validateUserId(r);if(!t.isValid)throw new Error(`Invalid user ID: ${t.error}`);let o={userId:r,properties:e?chunkPC2BTMNG_js.d(e):{},timestamp:chunkPC2BTMNG_js.a(),sessionId:this.sessionId,eventId:sdkCore.generateEventId()};await this.sendEvent("identify",o),this.config?.debug&&console.log("[ADOPTURE-SERVER] Identify event sent:",o);}async flush(){this.config?.debug&&console.log("[ADOPTURE-SERVER] Flush called (no-op for server tracker)");}isReady(){return this.isInitialized}getConfig(){return this.config}generateBootstrapData(r,e){return this.config?{config:{apiUrl:this.config.apiUrl,apiKey:this.config.apiKey,projectId:this.config.projectId,environment:this.config.environment,debug:this.config.debug,batchSize:this.config.batchSize,flushInterval:this.config.flushInterval,retryAttempts:this.config.retryAttempts,retryDelay:this.config.retryDelay,sessionTimeout:this.config.sessionTimeout,persistUser:this.config.persistUser,autoTrackSessions:this.config.autoTrackSessions,autoTrackLifecycle:this.config.autoTrackLifecycle,lifecycleDeduplication:this.config.lifecycleDeduplication},initialUserId:r,initialUserProperties:e,sessionId:this.sessionId,timestamp:chunkPC2BTMNG_js.a()}:null}async sendEvent(r,e){if(!this.config)throw new Error("Configuration not loaded");({projectId:this.config.projectId,environment:this.config.environment,timestamp:chunkPC2BTMNG_js.a()});try{await chunkPC2BTMNG_js.c(chunkPC2BTMNG_js.b(async()=>{let s={projectId:this.config.projectId||"35207190-2644-4230-b088-9ada94638e5d",featureId:e.featureId,userId:e.userId,eventType:"feature_exposed",sessionId:e.sessionId,metadata:e.metadata||{}},n=await fetch(`${this.config.apiUrl}/trpc/featureAdoption.trackEvent`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"User-Agent":"adopture-next-server/0.1.0"},body:JSON.stringify(s)});if(!n.ok){let d=await n.text();throw new Error(`HTTP ${n.status}: ${d}`)}return n.json()},this.config.retryAttempts,this.config.retryDelay),this.config.requestTimeout||5e3);}catch(o){throw this.config.debug&&console.error("[ADOPTURE-SERVER] Failed to send event:",o),o}}};function R(i){let r=new p;return i&&r.init(i).catch(e=>{console.error("[ADOPTURE-SERVER] Failed to initialize tracker:",e);}),r}var k=null;function a(i){return k||(k=R(i)),k}async function V(i){let r=a(i);return await r.init(i),r}async function T(i,r,e){"use server";try{let t=a();if(!t.isReady())throw new Error("Server tracker not initialized");let o=r||await f();if(!o)throw new Error("User ID is required for server-side tracking");return await t.track(i,o,e),{success:!0}}catch(t){return console.error("[ADOPTURE-SERVER-ACTION] Track failed:",t),{success:false,error:t instanceof Error?t.message:"Unknown error"}}}async function F(i){"use server";try{let r=a();if(!r.isReady())throw new Error("Server tracker not initialized");let e=i.userId||await f();if(!e)throw new Error("User ID is required for server-side tracking");return await r.trackAdoption({...i,userId:e}),{success:!0}}catch(r){return console.error("[ADOPTURE-SERVER-ACTION] Track adoption failed:",r),{success:false,error:r instanceof Error?r.message:"Unknown error"}}}async function j(i,r="server-action",e,t){"use server";try{let o=a();if(!o.isReady())throw new Error("Server tracker not initialized");let s=e||await f();if(!s)throw new Error("User ID is required for server-side tracking");return await o.expose(i,s,r,t),{success:!0}}catch(o){return console.error("[ADOPTURE-SERVER-ACTION] Expose failed:",o),{success:false,error:o instanceof Error?o.message:"Unknown error"}}}async function N(i,r){"use server";try{let e=a();if(!e.isReady())throw new Error("Server tracker not initialized");return await e.identify(i,r),{success:!0}}catch(e){return console.error("[ADOPTURE-SERVER-ACTION] Identify failed:",e),{success:false,error:e instanceof Error?e.message:"Unknown error"}}}async function $(i){"use server";try{let r=a();await r.init(i);let e=await f();return {success:!0,bootstrapData:r.generateBootstrapData(e||void 0)}}catch(r){return console.error("[ADOPTURE-SERVER-ACTION] Initialize failed:",r),{success:false,error:r instanceof Error?r.message:"Unknown error"}}}async function K(){"use server";try{let i=a();return {isReady:i.isReady(),config:i.getConfig()}}catch(i){return console.error("[ADOPTURE-SERVER-ACTION] Get status failed:",i),{isReady:false,error:i instanceof Error?i.message:"Unknown error"}}}async function f(){try{let i=await headers.headers(),r=await headers.cookies(),e={};return r.getAll().forEach(t=>{e[t.name]=t.value;}),chunkPC2BTMNG_js.g(i,e)||null}catch{return null}}function S(i,r){return async(...e)=>{"use server";let t=Date.now(),o=false,s=null;try{let n=await i(...e);return o=!0,n}catch(n){throw s=n,o=false,n}finally{if(o&&r.trackOnSuccess!==false||!o&&r.trackOnError===true)try{let n=r.extractUserId?.(...e)||await f();if(n){let d={...r.extractMetadata?.(...e)||{},success:o,duration:Date.now()-t,...s&&{error:s.message}};await T(r.featureId,n,d);}}catch(n){console.error("[ADOPTURE-SERVER-ACTION] Failed to track action:",n);}}}}function B(i){return function(r,e,t){if(!t.value)return t;let o=t.value;return t.value=S(o,i),t}}Object.defineProperty(exports,"extractEnvironmentFromApiKey",{enumerable:true,get:function(){return chunkTPDXLPZA_js.e}});Object.defineProperty(exports,"extractProjectIdFromApiKey",{enumerable:true,get:function(){return chunkTPDXLPZA_js.d}});Object.defineProperty(exports,"isDevelopment",{enumerable:true,get:function(){return chunkTPDXLPZA_js.f}});Object.defineProperty(exports,"isProduction",{enumerable:true,get:function(){return chunkTPDXLPZA_js.g}});Object.defineProperty(exports,"loadServerConfig",{enumerable:true,get:function(){return chunkTPDXLPZA_js.b}});Object.defineProperty(exports,"validateConfig",{enumerable:true,get:function(){return chunkTPDXLPZA_js.c}});Object.defineProperty(exports,"TTLCache",{enumerable:true,get:function(){return chunkPC2BTMNG_js.h}});Object.defineProperty(exports,"extractRoute",{enumerable:true,get:function(){return chunkPC2BTMNG_js.e}});Object.defineProperty(exports,"extractUserId",{enumerable:true,get:function(){return chunkPC2BTMNG_js.g}});Object.defineProperty(exports,"shouldExcludeRoute",{enumerable:true,get:function(){return chunkPC2BTMNG_js.f}});exports.NextServerTracker=p;exports.createServerTracker=R;exports.exposeFeature=j;exports.getServerTracker=a;exports.getTrackerStatus=K;exports.identifyUser=N;exports.initServerTracker=V;exports.initializeTracker=$;exports.track=B;exports.trackAdoption=F;exports.trackFeature=T;exports.withTracking=S;//# sourceMappingURL=server.js.map
//# sourceMappingURL=server.js.map