@picked/analytics 0.0.84-next.1 → 0.0.84-next.3

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.
@@ -0,0 +1 @@
1
+ const e=require("./text-CGbjivo-.cjs");let t=require("@snowplow/browser-tracker"),n=require("@snowplow/browser-plugin-button-click-tracking"),r=require("@snowplow/browser-plugin-performance-navigation-timing"),i=require("@snowplow/browser-plugin-error-tracking"),a=require("@snowplow/browser-plugin-web-vitals");var o=`iglu:dev.pckd/event/jsonschema/1-0-0`,s=e=>typeof e==`object`&&!!e;function c(e){return{beforeTrack:t=>{let n=t.getJson().find(({keyIfEncoded:e})=>e===`ue_px`),r=n?.json.data;if(!n||!s(r)||r.schema!==o||!s(r.data))return;let i=r.data;n.json={...n.json,data:{...r,data:{...i,meta:{...s(i.meta)?i.meta:{},...e}}}},t.addJson(n.keyIfEncoded,n.keyIfNotEncoded,n.json)}}}function l(t){let o=[e.u()];return t.eventMeta&&o.push(c(t.eventMeta)),t.trackErrors&&o.push((0,i.ErrorTrackingPlugin)()),t.trackVitals&&o.push((0,a.WebVitalsPlugin)()),t.trackPerformance&&o.push((0,r.PerformanceNavigationTimingPlugin)()),(t.trackButtonClickAllowList||t.trackButtonClickFilter)&&o.push((0,n.ButtonClickTrackingPlugin)()),o}function u(e,r){let a=[r];e.trackActivity&&!e.trackActivityCallback&&(0,t.enableActivityTracking)({minimumVisitLength:30,heartbeatDelay:10},a),e.trackActivity&&e.trackActivityCallback&&(0,t.enableActivityTrackingCallback)({minimumVisitLength:30,heartbeatDelay:10,callback:e.trackActivityCallback},a),(e.trackButtonClickAllowList||e.trackButtonClickFilter)&&(0,n.enableButtonClickTracking)({filter:e.trackButtonClickAllowList?{allowlist:e.trackButtonClickAllowList}:e.trackButtonClickFilter},a),e.trackErrors&&(0,i.enableErrorTracking)(void 0,a)}function d({projectId:e,cvlyX:n,deployment:r,collectorUrl:i=`evnts.pckd.dev`,collectorPath:a,appId:o=`picked-analytics`,trackVitals:s=!1,trackPerformance:c=!1,trackWebPage:d=!0,trackSessions:p=!0,trackBrowser:m=!0,trackActivity:h=!1,trackErrors:g=!1,trackActivityCallback:ee,trackButtonClickAllowList:te,trackButtonClickFilter:_,eventMeta:v,anonymousTracking:y}){let b={trackVitals:s,trackErrors:g,trackActivity:h,trackPerformance:c,trackActivityCallback:ee,trackButtonClickAllowList:te,trackButtonClickFilter:_,eventMeta:v,deployment:r},ne=a?{postPath:a,eventMethod:`post`}:{},re={appId:o,platform:`web`,keepalive:!0,contexts:{webPage:d,session:p,browser:m||!1},plugins:l(b),...ne,...y===void 0?{}:{anonymousTracking:y}},x=(0,t.newTracker)(o,i,re);return x===null?(console.warn(`[@picked/analytics] A tracker with appId "${o}" already exists, so these tracker options are ignored and events carry that tracker’s contexts and meta. Give each tracker its own appId.`),null):(f({trackerId:o,projectId:e,cvlyX:n,deployment:r,eventMeta:v}),u(b,o),x)}function f({trackerId:n,projectId:r,cvlyX:i,deployment:a,eventMeta:o}){if(!r)throw Error(`bindGlobalContext: projectId is required`);let s=[];s.push(e.f(`app`,`1-1-0`,{project_id:r,...o&&{meta:o}}),e.f(`deployment`,`1-0-1`,{sha:a.sha,id:a.id,env:a.env,host:a.host})),i&&s.push(e.f(`cvly_x`,`1-0-1`,{vercel_deployment_id:i.vercelDeploymentId,vercel_env:i.vercelEnv,vercel_url:i.vercelUrl})),(0,t.addGlobalContexts)(s,[n])}var p=`app_close`;function m(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(p,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var h=e.h(p,m),g=`app_initialize`;function ee(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(g,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var te=e.h(g,ee),_=`app_load`;function v(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(_,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var y=e.h(_,v),b=`app_open`;function ne(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(b,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var re=e.h(b,ne),x=`experience_load`;function ie(t,n){let r=e.b(t),i=e.D(t),a=e.y(t,!0),o=e.O(t);return e.m(x,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`experience`,`1-0-1`,a),o?e.f(`step`,`1-0-1`,o):void 0],n)}var ae=e.h(x,ie),oe=`feature_decide`;function se(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(oe,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var ce=e.h(oe,se),le=`step_complete`;function ue(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t,!0),s=e.E(t),c=e.x(t);return e.m(le,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`step`,`1-0-1`,o),c&&e.f(`field_list`,`1-0-0`,c),s&&e.f(`response_list`,`1-0-0`,s),a&&e.f(`experience`,`1-0-1`,a)],n)}var de=e.h(le,ue),fe=`step_enter`;function pe(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t,!0),s=e.x(t);return e.m(fe,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`step`,`1-0-1`,o),s&&e.f(`field_list`,`1-0-0`,s),a&&e.f(`experience`,`1-0-1`,a)],n)}var me=e.h(fe,pe),he=`step_submit`;function ge(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t,!0),s=e.E(t),c=e.x(t);return e.m(he,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`step`,`1-0-1`,o),c&&e.f(`field_list`,`1-0-0`,c),s&&e.f(`response_list`,`1-0-0`,s),a&&e.f(`experience`,`1-0-1`,a)],n)}var _e=e.h(he,ge),ve=`step_submit_error`;function ye(t,n){let r=e.b(t),i=e.D(t),a=e.v(t,!0),o=e.y(t),s=e.O(t,!0),c=e.x(t),l=e.E(t);return e.m(ve,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`exception`,`1-0-0`,a),e.f(`step`,`1-0-1`,s),c&&e.f(`field_list`,`1-0-0`,c),l&&e.f(`response_list`,`1-0-0`,l),o&&e.f(`experience`,`1-0-1`,o)],n)}var be=e.h(ve,ye),xe=`step_submit_success`;function Se(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t,!0),s=e.x(t),c=e.E(t);return e.m(xe,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`step`,`1-0-1`,o),s&&e.f(`field_list`,`1-0-0`,s),c&&e.f(`response_list`,`1-0-0`,c),a&&e.f(`experience`,`1-0-1`,a)],n)}var Ce=e.h(xe,Se),we=`cart_add`;function Te(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(we,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}function Ee(e,t){return Te(e,t)}var De=e.h(we,Te),Oe=`cart_remove`;function ke(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(Oe,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}function Ae(e,t){return ke(e,t)}var je=e.h(Oe,ke),Me=`checkout_complete`;function Ne(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.w(t,!0),s=e.y(t),c=e.O(t);return e.m(Me,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),e.f(`order`,`1-0-0`,o),s&&e.f(`experience`,`1-0-1`,s),c&&e.f(`step`,`1-0-1`,c)],n)}function Pe(e,t){return Ne(e,t)}var Fe=e.h(Me,Ne),Ie=`checkout_start`;function S(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(Ie,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}function Le(e,t){return S(e,t)}var Re=e.h(Ie,S),C=`order_create`;function w(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.w(t,!0),s=e.y(t),c=e.O(t);return e.m(C,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),e.f(`order`,`1-0-0`,o),s&&e.f(`experience`,`1-0-1`,s),c&&e.f(`step`,`1-0-1`,c)],n)}function ze(e,t){return w(e,t)}var Be=e.h(C,w),T=`product_list_view`;function E(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(T,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),s?e.f(`step`,`1-0-1`,s):void 0,o?e.f(`experience`,`1-0-1`,o):void 0],n)}function Ve(e,t){return E(e,t)}var He=e.h(T,E),D=`product_select`;function Ue(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(D,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}var We=e.h(D,Ue),O=`product_view_details`;function k(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(O,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}function Ge(e,t){return k(e,t)}var Ke=e.h(O,k),A=`recommendation_present`;function qe(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t),s=e.T(t,!0);return e.m(A,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,s),a&&e.f(`experience`,`1-0-1`,a),o&&e.f(`step`,`1-0-1`,o)],n)}var Je=e.h(A,qe),j=`search_results_list_view`;function Ye(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(j,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),s?e.f(`step`,`1-0-1`,s):void 0,o?e.f(`experience`,`1-0-1`,o):void 0],n)}var Xe=e.h(j,Ye),M=`waitlist_join`;function Ze(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t),s=e.T(t);return e.m(M,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,s?e.f(`product_list`,`2-0-1`,s):void 0],n)}var Qe=e.h(M,Ze),N=`wishlist_add`;function $e(t,n){let r=e.b(t),i=e.D(t),a=e.T(t,!0),o=e.y(t),s=e.O(t);return e.m(N,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`product_list`,`2-0-1`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}var et=e.h(N,$e),P=`field_validation_error`;function tt(t,n){let r=e.b(t),i=e.D(t),a=e.S(t),o=e.v(t,!0),s=e.y(t),c=e.O(t);return e.m(P,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`exception`,`1-0-0`,o),e.f(`form`,`1-0-0`,a),s&&e.f(`experience`,`1-0-1`,s),c&&e.f(`step`,`1-0-1`,c)],n)}var nt=e.h(P,tt),F=`form_submit`;function rt(t,n){let r=e.b(t),i=e.D(t),a=e.S(t),o=e.y(t),s=e.O(t);return e.m(F,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`form`,`1-0-0`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}var it=e.h(F,rt),I=`form_submit_error`;function at(t,n){let r=e.b(t),i=e.D(t),a=e.S(t),o=e.v(t,!0),s=e.y(t),c=e.O(t);return e.m(I,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`form`,`1-0-0`,a),e.f(`exception`,`1-0-0`,o),s&&e.f(`experience`,`1-0-1`,s),c&&e.f(`step`,`1-0-1`,c)],n)}var ot=e.h(I,at),L=`form_submit_success`;function st(t,n){let r=e.b(t),i=e.D(t),a=e.S(t),o=e.y(t),s=e.O(t);return e.m(L,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`form`,`1-0-0`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}var ct=e.h(L,st),R=`identify`;function lt(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(R,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`session`,`1-0-4`,i),e.f(`feature_list`,`2-0-0`,r),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}function ut(e,t){return lt(e,t)}var dt=e.h(R,lt),ft=`lead_capture`;function pt(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t);return e.m(ft,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o&&e.f(`step`,`1-0-1`,o),a&&e.f(`experience`,`1-0-1`,a)],n)}var mt=e.h(ft,pt),ht=`modal_close`;function gt(t,n){let r=e.b(t),i=e.D(t),a=e.C(t),o=e.y(t),s=e.O(t);return e.m(ht,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`modal`,`1-0-0`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}var _t=e.h(ht,gt),vt=`modal_open`;function yt(t,n){let r=e.b(t),i=e.D(t),a=e.C(t),o=e.y(t),s=e.O(t);return e.m(vt,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`modal`,`1-0-0`,a),o&&e.f(`experience`,`1-0-1`,o),s&&e.f(`step`,`1-0-1`,s)],n)}var bt=e.h(vt,yt),z=`page_view`;function xt(t,n){let r=e.b(t),i=e.D(t),a=e.y(t),o=e.O(t),s=e.T(t);return e.m(z,[e.f(`app`,`1-1-0`,{project_id:t.projectId}),e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,s?e.f(`product_list`,`2-0-1`,s):void 0],n)}function St(e,t){return xt(e,t)}var Ct=e.h(z,xt),B=`click`;function wt(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(B,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,{node_type:`unknown`}),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(B,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,l),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var Tt=e.h(B,wt);function Et(t,n,r,i){let a=e.v(r.analyticsContext),o=e.y(r.analyticsContext),s=e.b(r.analyticsContext),c=e.x(r.analyticsContext),l=e.S(r.analyticsContext),u=e.C(r.analyticsContext),d=e.w(r.analyticsContext),f=e.T(r.analyticsContext),p=e.E(r.analyticsContext),m=e.D(r.analyticsContext),h=e.O(r.analyticsContext),g={id:n.id||null,node_type:n.nodeName.toLowerCase(),label:e.t(e.o(n)),text:e.t(e.s(n))};return e.m(t,[e.f(`app`,`1-1-0`,{project_id:r.analyticsContext.projectId}),e.f(`session`,`1-0-4`,m),e.f(`element`,`1-0-0`,g),a?e.f(`exception`,`1-0-0`,a):void 0,o?e.f(`experience`,`1-0-1`,o):void 0,e.f(`feature_list`,`2-0-0`,s),c?e.f(`field_list`,`1-0-0`,c):void 0,e.f(`form`,`1-0-0`,l),e.f(`modal`,`1-0-0`,u),d?e.f(`order`,`1-0-0`,d):void 0,f?e.f(`product_list`,`2-0-1`,f):void 0,p?e.f(`response_list`,`1-0-0`,p):void 0,h?e.f(`step`,`1-0-1`,h):void 0],i)}function V(n,r,i){let a=e.i(r.event.target,n);if(!a)return;let{element:o,customEventName:s}=a,c=Et(s,o,r,i);(0,t.trackSelfDescribingEvent)(c)}function Dt(n,r,i){let a=e.v(n),o=e.y(n),s=e.b(n),c=e.x(n),l=n.form?e.S(n):void 0,u=n.modal?e.C(n):void 0,d=e.w(n),f=e.T(n),p=e.E(n),m=e.D(n),h=e.O(n),g=e.m(r,[e.f(`app`,`1-1-0`,{project_id:n.projectId}),e.f(`session`,`1-0-4`,m),a?e.f(`exception`,`1-0-0`,a):void 0,o?e.f(`experience`,`1-0-1`,o):void 0,e.f(`feature_list`,`2-0-0`,s),c?e.f(`field_list`,`1-0-0`,c):void 0,l?e.f(`form`,`1-0-0`,l):void 0,u?e.f(`modal`,`1-0-0`,u):void 0,d?e.f(`order`,`1-0-0`,d):void 0,f?e.f(`product_list`,`2-0-1`,f):void 0,p?e.f(`response_list`,`1-0-0`,p):void 0,h?e.f(`step`,`1-0-1`,h):void 0],i);(0,t.trackSelfDescribingEvent)(g)}var Ot=`page_visible`;function kt(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(Ot,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var At=e.h(Ot,kt),jt=`page_hidden`;function Mt(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(jt,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var Nt=e.h(jt,Mt);function Pt(e,t){if(document.visibilityState===`visible`){At(e,t);return}Nt(e,t)}var Ft=e.p(`visibilitychange`,Pt),It=`page_hide`;function Lt(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(It,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var Rt=e.h(It,Lt);function zt(e,t){Rt(e,t)}var Bt=e.g(`pagehide`,zt),Vt=`page_show`;function Ht(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(Vt,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var Ut=e.h(Vt,Ht);function Wt(e,t){Ut(e,t)}var Gt=e.g(`pageshow`,Wt),Kt=`offline`;function qt(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(Kt,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var Jt=e.h(Kt,qt);function Yt(e,t){Jt(e,t)}var Xt=e.g(`offline`,Yt),Zt=`online`;function Qt(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(Zt,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var $t=e.h(Zt,Qt);function en(e,t){$t(e,t)}var tn=e.g(`online`,en),nn=`resize`;function rn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(nn,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var an=e.h(nn,rn),H=0,on=e._((e,t)=>{let n=window.innerWidth;n===H?`ontouchstart`in window||an(e,t):(an(e,t),H=n),H=n},300),sn=e.g(`resize`,on),cn=`unload`;function ln(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(cn,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var un=e.h(cn,ln);function dn(e,t){un(e,t)}var fn=e.g(`unload`,dn);function pn(e,t){Tt(e,t),V(`click`,e,t)}var mn=e.d(`click`,pn),U=`rapid_click`;function hn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(U,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,{node_type:`unknown`}),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(U,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,l),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var gn=e.h(U,hn),W=0,_n=0,vn=3,yn=500;function bn(e,t){let n=new Date().getTime();n-_n<yn?W++:W=1,_n=n,W>=vn&&(gn(e,t),V(`rapid_click`,e,t),W=0)}var xn=e.d(`click`,bn),G=`right_click`;function Sn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(G,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,{node_type:`unknown`}),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0]);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(G,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,l),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var Cn=e.h(G,Sn);function wn(e,t){Cn(e,t),V(`right_click`,e,t)}var Tn=e.d(`contextmenu`,wn),K=`copy`;function En(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(K,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(K,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,e.f(`element`,`1-0-0`,l)],n)}var Dn=e.h(K,En);function On(e,t){Dn(e,t)}var kn=e.d(`copy`,On),q=`paste`;function An(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(q,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(q,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,e.f(`element`,`1-0-0`,l)],n)}var jn=e.h(q,An);function Mn(e,t){jn(e,t)}var Nn=e.d(`paste`,Mn),J=`drag`;function Pn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(J,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(J,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,e.f(`element`,`1-0-0`,l)],n)}var Fn=e.h(J,Pn);function In(e,t){let n=e.event.currentTarget;if(!n||!(n instanceof HTMLElement))return;function r(t){In({event:t,analyticsContext:e.analyticsContext})}n.removeEventListener(`drag`,r),n.addEventListener(`dragend`,()=>Ln(n,()=>e.analyticsContext)),Fn(e,t),V(`drag`,e,t)}var Ln=e.d(`drag`,In),Y=`backspace`;function Rn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(Y,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,{node_type:`unknown`}),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(Y,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),e.f(`element`,`1-0-0`,l),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var zn=e.h(Y,Rn);function Bn(e,t){e.event.key===`Backspace`&&zn(e,t)}var Vn=e.d(`keydown`,Bn),X=`scroll`;function Hn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(X,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(X,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,e.f(`element`,`1-0-0`,l)],n)}var Un=e.h(X,Hn),Wn=e._((e,t)=>{Un(e,t),V(`scroll`,e,t)},500),Gn=e.d(`scroll`,Wn,!0),Z=`rapid_scroll`;function Kn(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext),s=t.event.target||document.activeElement||t.event.currentTarget;if(!e.c(s))return e.m(Z,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,e.f(`element`,`1-0-0`,{node_type:`unknown`})],n);let c=e.r(s)||s,l={id:c.id||null,node_type:c.nodeName.toLowerCase(),label:e.t(e.o(c)),text:e.t(e.s(c))};return e.m(Z,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0,e.f(`element`,`1-0-0`,l)],n)}var qn=e.h(Z,Kn),Jn=100,Yn=100,Xn=300,Zn=0,Qn=0,$n=e._((e,t)=>{qn(e,t),V(`rapid_scroll`,e,t)},Xn);function er(e,t){let n=e.event.target||document.documentElement;if(!(n instanceof HTMLElement))return;let r=n.scrollTop,i=Date.now()-Qn;Math.abs(r-Zn)>Jn&&i<Yn&&$n(e,t),Zn=r,Qn=Date.now()}var tr=e.d(`scroll`,er,!0),nr=`mouse_shake`;function rr(t,n){let r=e.b(t.analyticsContext),i=e.D(t.analyticsContext),a=e.y(t.analyticsContext),o=e.O(t.analyticsContext);return e.m(nr,[e.f(`feature_list`,`2-0-0`,r),e.f(`session`,`1-0-4`,i),o?e.f(`step`,`1-0-1`,o):void 0,a?e.f(`experience`,`1-0-1`,a):void 0],n)}var ir=e.h(nr,rr),ar=5,or=500,sr=500,cr={x:0,y:0},Q=[],lr=0,ur=e._((e,t)=>{ir(e,t),V(`mouse_shake`,e,t)},or);function dr(e,t){let n=Date.now(),r=e.event.clientX-cr.x,i=Math.sign(r);n-lr>sr&&(Q=[]),i!==0&&(Q.length===0||Q.at(-1)!==i)&&Q.push(i),cr={x:e.event.clientX,y:e.event.clientY},Q.length>=ar&&(ur(e,t),Q=[]),lr=n}var fr=e.d(`mousemove`,dr),$=Object.freeze([`click`,`rapid_click`,`right_click`,`copy`,`paste`,`drag`,`backspace`,`scroll`,`rapid_scroll`,`mouse_shake`]),pr={click:mn,rapid_click:xn,right_click:Tn,copy:kn,paste:Nn,drag:Ln,backspace:Vn,scroll:Gn,rapid_scroll:tr,mouse_shake:fr},mr=new Set($);function hr(e){return mr.has(e)}function gr(e,t,n=$){if(t)for(let r of n)pr[r](t,e)}function _r(e){Ft(e),Bt(e),Gt(e),Xt(e),tn(e),sn(e),fn(e)}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return St}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return hr}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ct}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return gr}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Dt}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return _r}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return be}});
@@ -0,0 +1,361 @@
1
+ import { trackSelfDescribingEvent as e } from "@snowplow/browser-tracker";
2
+ import { supportsCookies as t, supportsDocument as n, supportsWindow as r } from "@picked/client";
3
+ //#region src/utils.ts
4
+ function i(e, t) {
5
+ return `iglu:dev.pckd/${e}/jsonschema/${t}`;
6
+ }
7
+ function a(e, ...t) {}
8
+ function o(e, t, n = {}) {
9
+ return {
10
+ event: {
11
+ schema: i("event", "1-0-0"),
12
+ data: {
13
+ type: e,
14
+ meta: n
15
+ }
16
+ },
17
+ context: t.filter((e) => e !== void 0)
18
+ };
19
+ }
20
+ function s(e, t, n) {
21
+ return {
22
+ schema: i(e, t),
23
+ data: n
24
+ };
25
+ }
26
+ function c(t, n) {
27
+ return (t, r) => {
28
+ let i = n(t, r);
29
+ e(i);
30
+ };
31
+ }
32
+ function l(e, t, n = { passive: !0 }) {
33
+ let r = /* @__PURE__ */ new WeakMap();
34
+ return (i, a) => {
35
+ let o = r.get(i);
36
+ if (o || (o = /* @__PURE__ */ new Set(), r.set(i, o)), o.has(e)) return;
37
+ function s(e) {
38
+ t({
39
+ event: e,
40
+ analyticsContext: a()
41
+ });
42
+ }
43
+ i.addEventListener(e, s, n), o.add(e);
44
+ };
45
+ }
46
+ function u(e, t) {
47
+ let r = /* @__PURE__ */ new Set();
48
+ return (i) => {
49
+ if (r.has(e) || !n()) return;
50
+ function a(e) {
51
+ t({
52
+ event: e,
53
+ analyticsContext: i()
54
+ });
55
+ }
56
+ document.addEventListener(e, a, { passive: !0 }), r.add(e);
57
+ };
58
+ }
59
+ function d(e, t) {
60
+ let n = /* @__PURE__ */ new Set();
61
+ return (i) => {
62
+ if (n.has(e) || !r()) return;
63
+ function a(e) {
64
+ t({
65
+ event: e,
66
+ analyticsContext: i()
67
+ });
68
+ }
69
+ window.addEventListener(e, a, { passive: !0 }), n.add(e);
70
+ };
71
+ }
72
+ function f(e) {
73
+ return { items: e.features?.map(({ feature: e, name: t, key: n, bucket: r }) => ({
74
+ ab_feature: e,
75
+ ab_name: t,
76
+ ab_key: n,
77
+ ab_bucket: r
78
+ })) || [] };
79
+ }
80
+ var p = "unknown";
81
+ function m(e) {
82
+ let t = E(), n = { id: e.sessionId || null };
83
+ return e.isUser !== void 0 && (n.is_user = e.isUser), e.identifiers && Object.assign(n, e.identifiers), t && (n.gaid = t), e.shopifySession?.clientId && (n.shopify_client_id = e.shopifySession.clientId), e.shopifySession?.customerId && (n.shopify_customer_id = e.shopifySession.customerId), e.shopifySession?.checkoutToken && (n.shopify_checkout_token = e.shopifySession.checkoutToken), n;
84
+ }
85
+ function h(e) {
86
+ if (e.fields) return { items: e.fields.map(({ id: e, type: t, label: n, options: r }) => ({
87
+ id: e,
88
+ type: t,
89
+ label: n,
90
+ options: Array.isArray(r) ? r.map(({ id: e, label: t, value: n }) => ({
91
+ id: e,
92
+ label: t,
93
+ value: n
94
+ })) : void 0
95
+ })) };
96
+ }
97
+ function g(e) {
98
+ if (!e.responses) return;
99
+ let t = e.fields ?? [], n = e.responses.filter(({ fieldKey: e }) => t.find((t) => t.key === e)?.policies?.trackValue === !0);
100
+ if (n.length !== 0) return { items: n.map(({ fieldKey: e, value: t }) => ({
101
+ field_id: e,
102
+ values: Array.isArray(t) ? t.map((e) => ({ value: e })) : [{ value: t }]
103
+ })) };
104
+ }
105
+ function _(e, t = !1) {
106
+ let { step: n } = e;
107
+ if (n) return {
108
+ id: n.id,
109
+ title: n.name,
110
+ key: n.key
111
+ };
112
+ if (t) return {
113
+ id: p,
114
+ title: p,
115
+ key: p
116
+ };
117
+ }
118
+ function v(e, t = !1) {
119
+ let { productList: n } = e;
120
+ if (n) {
121
+ let e = {};
122
+ "title" in n && n.title && Object.assign(e, { title: n.title });
123
+ let t = "items" in n ? n.items : n;
124
+ return Object.assign(e, { items: t.map((e) => ({
125
+ item_id: e.itemId,
126
+ item_name: e.itemName,
127
+ affiliation: e.affiliation,
128
+ coupon: e.coupon,
129
+ currency: e.currency,
130
+ creative_name: e.creativeName,
131
+ creative_slot: e.creativeSlot,
132
+ discount: T(e.discount),
133
+ index: T(e.index),
134
+ item_brand: e.itemBrand,
135
+ item_category: e.itemCategory,
136
+ item_category2: e.itemCategory2,
137
+ item_category3: e.itemCategory3,
138
+ item_category4: e.itemCategory4,
139
+ item_category5: e.itemCategory5,
140
+ item_list_id: e.itemListId,
141
+ item_list_name: e.itemListName,
142
+ item_variant: e.itemVariant,
143
+ location_id: e.locationId,
144
+ price: T(e.price),
145
+ promotion_id: e.promotionId,
146
+ promotion_name: e.promotionName,
147
+ quantity: T(e.quantity),
148
+ in_stock: e.inStock
149
+ })) }), e;
150
+ }
151
+ if (t) return { items: [] };
152
+ }
153
+ function y(e, t = !1) {
154
+ let { order: n } = e;
155
+ if (n) {
156
+ let e = { id: n.id };
157
+ return n.checkoutToken && (e.checkout_token = n.checkoutToken), n.cartToken && (e.cart_token = n.cartToken), n.customerId && (e.customer_id = n.customerId), e;
158
+ }
159
+ if (t) return { id: p };
160
+ }
161
+ function b(e, t = !1) {
162
+ let { experience: n } = e;
163
+ if (n) return {
164
+ id: n.id,
165
+ title: n.title
166
+ };
167
+ if (t) return {
168
+ id: p,
169
+ title: p
170
+ };
171
+ }
172
+ function x(e, t = !1) {
173
+ let { exception: n } = e;
174
+ if (n) return typeof n == "string" ? { reason: n } : { reason: n.systemMessage };
175
+ if (t) return { reason: p };
176
+ }
177
+ function S(e) {
178
+ let { form: t } = e;
179
+ return t ? {
180
+ id: t.id,
181
+ title: t.title
182
+ } : {
183
+ id: p,
184
+ title: p
185
+ };
186
+ }
187
+ function C(e) {
188
+ let { modal: t } = e;
189
+ return t ? {
190
+ id: t.id,
191
+ title: t.title
192
+ } : {
193
+ id: p,
194
+ title: p
195
+ };
196
+ }
197
+ function w(e, t = 300) {
198
+ let n;
199
+ return (...r) => {
200
+ clearTimeout(n), n = setTimeout(() => e(...r), t);
201
+ };
202
+ }
203
+ function T(e) {
204
+ if (typeof e == "number") return e;
205
+ if (typeof e != "string") return;
206
+ let t = parseFloat(e);
207
+ if (!isNaN(t)) return t;
208
+ }
209
+ function E() {
210
+ if (!n() || !t()) return null;
211
+ let e = document.cookie ? document.cookie.split(";") : [];
212
+ for (let t of e) {
213
+ let e = t.trim();
214
+ if (e.startsWith("_ga=")) {
215
+ let t = e.substring(4).split(".");
216
+ if (t.length > 2) return t.slice(2).join(".");
217
+ }
218
+ }
219
+ return null;
220
+ }
221
+ //#endregion
222
+ //#region src/snowplow-plugins/url-scrub.ts
223
+ var D = Object.freeze([
224
+ /token$/i,
225
+ /apikey$/i,
226
+ /secret$/i,
227
+ /password$/i,
228
+ /email$/i,
229
+ /^code$/i
230
+ ]), O = ["url", "refr"], k = "REDACTED", A = /[_-]/g;
231
+ function j(e) {
232
+ try {
233
+ return decodeURIComponent(e).toLowerCase().replace(A, "");
234
+ } catch {
235
+ return e.toLowerCase().replace(A, "");
236
+ }
237
+ }
238
+ function M(e) {
239
+ let t = e.indexOf("=");
240
+ if (t === -1) return e;
241
+ let n = e.slice(0, t), r = j(n);
242
+ return D.some((e) => e.test(r)) ? `${n}=${k}` : e;
243
+ }
244
+ function N(e) {
245
+ return e === "" ? e : e.split("&").map((e) => M(e)).join("&");
246
+ }
247
+ function P(e) {
248
+ let t = e.indexOf("#"), n = t === -1 ? e : e.slice(0, t), r = t === -1 ? "" : e.slice(t + 1), i = n.indexOf("?"), a = i === -1 ? n : n.slice(0, i), o = i === -1 ? "" : n.slice(i + 1), s = N(o), c = N(r);
249
+ return s === o && c === r ? e : `${a}${i === -1 ? "" : `?${s}`}${t === -1 ? "" : `#${c}`}`;
250
+ }
251
+ function F(e, t) {
252
+ let n = e.getPayload()[t];
253
+ if (typeof n != "string") return;
254
+ let r = P(n);
255
+ r !== n && e.add(t, r);
256
+ }
257
+ function I() {
258
+ return { beforeTrack: (e) => {
259
+ try {
260
+ for (let t of O) F(e, t);
261
+ } catch {}
262
+ } };
263
+ }
264
+ //#endregion
265
+ //#region src/helpers/element.ts
266
+ function L(e) {
267
+ return e instanceof Element;
268
+ }
269
+ function R(e) {
270
+ return `data-picked-${e.replaceAll("_", "-")}`;
271
+ }
272
+ function z(e) {
273
+ let t = [
274
+ "a",
275
+ "button",
276
+ "input",
277
+ "select",
278
+ "textarea",
279
+ "details",
280
+ "summary",
281
+ "label",
282
+ "form",
283
+ "fieldset",
284
+ "legend",
285
+ "optgroup",
286
+ "option",
287
+ "output",
288
+ "datalist",
289
+ "dialog",
290
+ "menu",
291
+ "menuitem",
292
+ "iframe",
293
+ "audio",
294
+ "video",
295
+ "embed",
296
+ "object",
297
+ "canvas"
298
+ ].join(", ");
299
+ return L(e) ? e.matches(t) ? e : e.closest(t) : null;
300
+ }
301
+ function B(e) {
302
+ if (e instanceof HTMLSelectElement) {
303
+ let t = e.selectedIndex || 0;
304
+ return e.options[t]?.text ?? "";
305
+ }
306
+ return "innerText" in e && typeof e.innerText == "string" ? e.innerText : e.textContent;
307
+ }
308
+ function V(e) {
309
+ let t = e.getAttribute("aria-label");
310
+ if (t) return t;
311
+ let n = e.getAttribute("aria-labelledby");
312
+ if (n) {
313
+ let e = document.getElementById(n);
314
+ if (e) {
315
+ let t = B(e);
316
+ if (t) return t;
317
+ }
318
+ }
319
+ if ("id" in e && e.id) {
320
+ let t = document.querySelector(`label[for="${e.id}"]`);
321
+ if (t) {
322
+ let e = B(t);
323
+ if (e) return e;
324
+ }
325
+ }
326
+ let r = e.parentElement;
327
+ for (; r;) {
328
+ if (r.tagName.toLowerCase() === "label") {
329
+ let e = B(r);
330
+ if (e) return e;
331
+ }
332
+ r = r.parentElement;
333
+ }
334
+ if (e instanceof HTMLInputElement && "labels" in e && e.labels) {
335
+ let t = Array.from(e.labels).map((e) => B(e)).filter(Boolean).join(" ");
336
+ if (t) return t;
337
+ }
338
+ return "placeholder" in e && typeof e.placeholder == "string" ? e.placeholder : null;
339
+ }
340
+ function H(e, t) {
341
+ let n = R(t);
342
+ return e.getAttribute(n);
343
+ }
344
+ function U(e, t) {
345
+ if (!L(e)) return null;
346
+ let n = R(t), r = e.closest(`[${n}]`);
347
+ if (!r) return null;
348
+ let i = r.getAttribute(n);
349
+ return i ? {
350
+ element: r,
351
+ customEventName: i
352
+ } : null;
353
+ }
354
+ //#endregion
355
+ //#region src/helpers/text.ts
356
+ var W = 255;
357
+ function G(e) {
358
+ return e ? e.slice(0, W) : null;
359
+ }
360
+ //#endregion
361
+ export { C, m as D, g as E, _ as O, S, v as T, w as _, H as a, f as b, L as c, l as d, s as f, d as g, c as h, U as i, a as k, P as l, o as m, R as n, V as o, u as p, z as r, B as s, G as t, I as u, x as v, y as w, h as x, b as y };
@@ -0,0 +1 @@
1
+ let e=require("@snowplow/browser-tracker"),t=require("@picked/client");function n(e,t){return`iglu:dev.pckd/${e}/jsonschema/${t}`}function r(e,...t){}function i(e,t,r={}){return{event:{schema:n(`event`,`1-0-0`),data:{type:e,meta:r}},context:t.filter(e=>e!==void 0)}}function a(e,t,r){return{schema:n(e,t),data:r}}function o(t,n){return(t,r)=>{let i=n(t,r);(0,e.trackSelfDescribingEvent)(i)}}function s(e,t,n={passive:!0}){let r=new WeakMap;return(i,a)=>{let o=r.get(i);if(o||(o=new Set,r.set(i,o)),o.has(e))return;function s(e){t({event:e,analyticsContext:a()})}i.addEventListener(e,s,n),o.add(e)}}function c(e,n){let r=new Set;return i=>{if(r.has(e)||!(0,t.supportsDocument)())return;function a(e){n({event:e,analyticsContext:i()})}document.addEventListener(e,a,{passive:!0}),r.add(e)}}function l(e,n){let r=new Set;return i=>{if(r.has(e)||!(0,t.supportsWindow)())return;function a(e){n({event:e,analyticsContext:i()})}window.addEventListener(e,a,{passive:!0}),r.add(e)}}function u(e){return{items:e.features?.map(({feature:e,name:t,key:n,bucket:r})=>({ab_feature:e,ab_name:t,ab_key:n,ab_bucket:r}))||[]}}var d=`unknown`;function f(e){let t=w(),n={id:e.sessionId||null};return e.isUser!==void 0&&(n.is_user=e.isUser),e.identifiers&&Object.assign(n,e.identifiers),t&&(n.gaid=t),e.shopifySession?.clientId&&(n.shopify_client_id=e.shopifySession.clientId),e.shopifySession?.customerId&&(n.shopify_customer_id=e.shopifySession.customerId),e.shopifySession?.checkoutToken&&(n.shopify_checkout_token=e.shopifySession.checkoutToken),n}function p(e){if(e.fields)return{items:e.fields.map(({id:e,type:t,label:n,options:r})=>({id:e,type:t,label:n,options:Array.isArray(r)?r.map(({id:e,label:t,value:n})=>({id:e,label:t,value:n})):void 0}))}}function m(e){if(!e.responses)return;let t=e.fields??[],n=e.responses.filter(({fieldKey:e})=>t.find(t=>t.key===e)?.policies?.trackValue===!0);if(n.length!==0)return{items:n.map(({fieldKey:e,value:t})=>({field_id:e,values:Array.isArray(t)?t.map(e=>({value:e})):[{value:t}]}))}}function h(e,t=!1){let{step:n}=e;if(n)return{id:n.id,title:n.name,key:n.key};if(t)return{id:d,title:d,key:d}}function g(e,t=!1){let{productList:n}=e;if(n){let e={};`title`in n&&n.title&&Object.assign(e,{title:n.title});let t=`items`in n?n.items:n;return Object.assign(e,{items:t.map(e=>({item_id:e.itemId,item_name:e.itemName,affiliation:e.affiliation,coupon:e.coupon,currency:e.currency,creative_name:e.creativeName,creative_slot:e.creativeSlot,discount:C(e.discount),index:C(e.index),item_brand:e.itemBrand,item_category:e.itemCategory,item_category2:e.itemCategory2,item_category3:e.itemCategory3,item_category4:e.itemCategory4,item_category5:e.itemCategory5,item_list_id:e.itemListId,item_list_name:e.itemListName,item_variant:e.itemVariant,location_id:e.locationId,price:C(e.price),promotion_id:e.promotionId,promotion_name:e.promotionName,quantity:C(e.quantity),in_stock:e.inStock}))}),e}if(t)return{items:[]}}function _(e,t=!1){let{order:n}=e;if(n){let e={id:n.id};return n.checkoutToken&&(e.checkout_token=n.checkoutToken),n.cartToken&&(e.cart_token=n.cartToken),n.customerId&&(e.customer_id=n.customerId),e}if(t)return{id:d}}function v(e,t=!1){let{experience:n}=e;if(n)return{id:n.id,title:n.title};if(t)return{id:d,title:d}}function y(e,t=!1){let{exception:n}=e;if(n)return typeof n==`string`?{reason:n}:{reason:n.systemMessage};if(t)return{reason:d}}function b(e){let{form:t}=e;return t?{id:t.id,title:t.title}:{id:d,title:d}}function x(e){let{modal:t}=e;return t?{id:t.id,title:t.title}:{id:d,title:d}}function S(e,t=300){let n;return(...r)=>{clearTimeout(n),n=setTimeout(()=>e(...r),t)}}function C(e){if(typeof e==`number`)return e;if(typeof e!=`string`)return;let t=parseFloat(e);if(!isNaN(t))return t}function w(){if(!(0,t.supportsDocument)()||!(0,t.supportsCookies)())return null;let e=document.cookie?document.cookie.split(`;`):[];for(let t of e){let e=t.trim();if(e.startsWith(`_ga=`)){let t=e.substring(4).split(`.`);if(t.length>2)return t.slice(2).join(`.`)}}return null}var T=Object.freeze([/token$/i,/apikey$/i,/secret$/i,/password$/i,/email$/i,/^code$/i]),E=[`url`,`refr`],D=`REDACTED`,O=/[_-]/g;function k(e){try{return decodeURIComponent(e).toLowerCase().replace(O,``)}catch{return e.toLowerCase().replace(O,``)}}function A(e){let t=e.indexOf(`=`);if(t===-1)return e;let n=e.slice(0,t),r=k(n);return T.some(e=>e.test(r))?`${n}=${D}`:e}function j(e){return e===``?e:e.split(`&`).map(e=>A(e)).join(`&`)}function M(e){let t=e.indexOf(`#`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t+1),i=n.indexOf(`?`),a=i===-1?n:n.slice(0,i),o=i===-1?``:n.slice(i+1),s=j(o),c=j(r);return s===o&&c===r?e:`${a}${i===-1?``:`?${s}`}${t===-1?``:`#${c}`}`}function N(e,t){let n=e.getPayload()[t];if(typeof n!=`string`)return;let r=M(n);r!==n&&e.add(t,r)}function P(){return{beforeTrack:e=>{try{for(let t of E)N(e,t)}catch{}}}}function F(e){return e instanceof Element}function I(e){return`data-picked-${e.replaceAll(`_`,`-`)}`}function L(e){let t=[`a`,`button`,`input`,`select`,`textarea`,`details`,`summary`,`label`,`form`,`fieldset`,`legend`,`optgroup`,`option`,`output`,`datalist`,`dialog`,`menu`,`menuitem`,`iframe`,`audio`,`video`,`embed`,`object`,`canvas`].join(`, `);return F(e)?e.matches(t)?e:e.closest(t):null}function R(e){if(e instanceof HTMLSelectElement){let t=e.selectedIndex||0;return e.options[t]?.text??``}return`innerText`in e&&typeof e.innerText==`string`?e.innerText:e.textContent}function z(e){let t=e.getAttribute(`aria-label`);if(t)return t;let n=e.getAttribute(`aria-labelledby`);if(n){let e=document.getElementById(n);if(e){let t=R(e);if(t)return t}}if(`id`in e&&e.id){let t=document.querySelector(`label[for="${e.id}"]`);if(t){let e=R(t);if(e)return e}}let r=e.parentElement;for(;r;){if(r.tagName.toLowerCase()===`label`){let e=R(r);if(e)return e}r=r.parentElement}if(e instanceof HTMLInputElement&&`labels`in e&&e.labels){let t=Array.from(e.labels).map(e=>R(e)).filter(Boolean).join(` `);if(t)return t}return`placeholder`in e&&typeof e.placeholder==`string`?e.placeholder:null}function B(e,t){let n=I(t);return e.getAttribute(n)}function V(e,t){if(!F(e))return null;let n=I(t),r=e.closest(`[${n}]`);if(!r)return null;let i=r.getAttribute(n);return i?{element:r,customEventName:i}:null}var H=255;function U(e){return e?e.slice(0,H):null}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return v}});
@@ -0,0 +1,39 @@
1
+ import type { AnalyticsPluginCapability } from '../types';
2
+ /** The tagged interactions the capability can capture, named after their `data-picked-*` tag. */
3
+ export declare const DOCUMENT_INTERACTION_EVENT_NAMES: readonly ["click", "toggle", "video_play", "video_pause"];
4
+ /** One of {@link DOCUMENT_INTERACTION_EVENT_NAMES}. */
5
+ export type DocumentInteractionEventName = (typeof DOCUMENT_INTERACTION_EVENT_NAMES)[number];
6
+ /** Options for {@link documentInteractions}. */
7
+ export interface DocumentInteractionsOptions {
8
+ /** The tagged interactions to capture. */
9
+ events: readonly DocumentInteractionEventName[];
10
+ }
11
+ /**
12
+ * Builds the document-scoped tagged interaction capability for
13
+ * `analyticsPlugin({ documentInteractions })`. Once set up, it listens on `document` —
14
+ * `click` in the bubble phase, `toggle`, `play` and `pause` in the capture phase — and tracks
15
+ * an interaction only when its element carries the matching tag (`data-picked-click`,
16
+ * `data-picked-toggle`, `data-picked-video-play`, `data-picked-video-pause`), naming the
17
+ * event after the tag's value. Each event carries the `app`, `session`, `element` and
18
+ * `feature_list` contexts, plus `experience` and `step` from the nearest
19
+ * `[data-picked-experience-id]` wrapper.
20
+ *
21
+ * A click is resolved from the first element of its composed path, so tags inside open shadow
22
+ * roots and on shadow hosts are both seen. A click from inside a listed experience instance's
23
+ * shadow root is skipped, and so is a click on a label's content whose control, inside the
24
+ * same tagged element, receives the follow-up click the browser sends.
25
+ *
26
+ * Each DOM event type binds once per document: a later setup binds only types not yet bound,
27
+ * and the first setup's client and reader serve every event. Unknown names in `events` are
28
+ * dropped with a `console.warn`.
29
+ *
30
+ * @param {DocumentInteractionsOptions} options - The tagged interactions to capture.
31
+ * @returns {AnalyticsPluginCapability} The capability to pass to `analyticsPlugin`.
32
+ * @example
33
+ * analyticsPlugin({
34
+ * trackerOptions,
35
+ * documentInteractions: documentInteractions({ events: ['click', 'toggle'] }),
36
+ * })
37
+ */
38
+ export declare function documentInteractions({ events, }: DocumentInteractionsOptions): AnalyticsPluginCapability;
39
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/interactions/document.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAEV,yBAAyB,EAQ1B,MAAM,UAAU,CAAA;AAEjB,iGAAiG;AACjG,eAAO,MAAM,gCAAgC,2DAKlC,CAAA;AAEX,uDAAuD;AACvD,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5F,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,0CAA0C;IAC1C,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAA;CAChD;AAyOD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,GACP,EAAE,2BAA2B,GAAG,yBAAyB,CAgEzD"}
@@ -1,13 +1,32 @@
1
1
  /** @file Analytics plugin — tracks Picked events (experiences, features, steps, forms) using Snowplow. */
2
2
  import type { Picked } from '@picked/client';
3
- import type { CreateTrackerOptions } from '../../types';
3
+ import type { AnalyticsPluginCapability, CreateTrackerOptions } from '../../types';
4
4
  import { type InteractionEventName } from '../../interaction-events';
5
5
  interface AnalyticsPluginOptions {
6
6
  trackerOptions: CreateTrackerOptions;
7
7
  enableDocumentListeners?: boolean;
8
8
  enableInteractionListeners?: boolean | readonly InteractionEventName[];
9
+ /**
10
+ * Document-scoped tagged interaction capture, from
11
+ * `@picked/analytics/interactions/document`. Set up once the tracker exists.
12
+ */
13
+ documentInteractions?: AnalyticsPluginCapability;
9
14
  }
10
- export declare const analyticsPlugin: ({ trackerOptions, enableDocumentListeners, enableInteractionListeners, }: AnalyticsPluginOptions) => {
15
+ /**
16
+ * Builds the Picked client plugin that creates a Snowplow tracker and tracks the client's
17
+ * event-bus events, plus whichever listeners and capabilities the options enable. It does
18
+ * nothing outside a browser.
19
+ *
20
+ * @param {AnalyticsPluginOptions} options - Tracker options, listener toggles and the
21
+ * document-interaction capability.
22
+ * @returns {{ name: string; setup: (client: Picked) => void }} The client plugin.
23
+ * @example
24
+ * createClient({
25
+ * projectId,
26
+ * plugins: [analyticsPlugin({ trackerOptions: { deployment: { env: 'production' } } })],
27
+ * })
28
+ */
29
+ export declare const analyticsPlugin: ({ trackerOptions, enableDocumentListeners, enableInteractionListeners, documentInteractions, }: AnalyticsPluginOptions) => {
11
30
  name: string;
12
31
  setup: (client: Picked) => void;
13
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/analytics/plugin.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,OAAO,KAAK,EAIV,MAAM,EAEP,MAAM,gBAAgB,CAAA;AAsBvB,OAAO,KAAK,EAAoB,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAEjC,UAAU,sBAAsB;IAC9B,cAAc,EAAE,oBAAoB,CAAA;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,oBAAoB,EAAE,CAAA;CACvE;AAwDD,eAAO,MAAM,eAAe,6EAIzB,sBAAsB,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAmL1E,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/analytics/plugin.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,OAAO,KAAK,EAIV,MAAM,EAEP,MAAM,gBAAgB,CAAA;AAsBvB,OAAO,KAAK,EAAoB,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACpG,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAEjC,UAAU,sBAAsB;IAC9B,cAAc,EAAE,oBAAoB,CAAA;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,oBAAoB,EAAE,CAAA;IACtE;;;OAGG;IACH,oBAAoB,CAAC,EAAE,yBAAyB,CAAA;CACjD;AAwDD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,mGAKzB,sBAAsB,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAsL1E,CAAA"}
@@ -0,0 +1,24 @@
1
+ /** @file Snowplow browser plugin that stamps a tracker's configured meta into every Picked event it sends. */
2
+ import type { BrowserPlugin } from '@snowplow/browser-tracker';
3
+ import type { EventMeta } from '../types';
4
+ /**
5
+ * Snowplow browser plugin merging `eventMeta` over the `meta` of every Picked event
6
+ * (`iglu:dev.pckd/event`) the tracker it is registered on sends. Configured keys win over
7
+ * the event's own keys of the same name; events with any other schema pass through.
8
+ *
9
+ * It runs at `beforeTrack` against the tracker's own payload builder. The builder's
10
+ * unstructured-event entry gets a new `json` object, copied level by level down to `meta`,
11
+ * so the event data the caller handed to Snowplow, shared by every tracker the event is
12
+ * dispatched to, is never written. The same object is queued again with `addJson`, so the
13
+ * final `build()` writes it into `ue_pr`/`ue_px` even when the payload was built before this
14
+ * plugin ran, as Snowplow does for the first event of a session.
15
+ *
16
+ * @param {EventMeta} eventMeta - The keys to stamp.
17
+ * @returns {BrowserPlugin} The plugin to hand to `newTracker`.
18
+ * @example
19
+ * newTracker('app', 'collector.example.com', {
20
+ * plugins: [eventMetaPlugin({ surface: 'marketing' })],
21
+ * })
22
+ */
23
+ export declare function eventMetaPlugin(eventMeta: EventMeta): BrowserPlugin;
24
+ //# sourceMappingURL=event-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-meta.d.ts","sourceRoot":"","sources":["../../../src/snowplow-plugins/event-meta.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,2BAA2B,CAAA;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAOzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,CA4BnE"}
@@ -3,13 +3,15 @@ import { type BrowserTracker } from '@snowplow/browser-tracker';
3
3
  import type { CreateTrackerOptions } from './types';
4
4
  /**
5
5
  * Starts a Snowplow tracker for a Picked project and binds the contexts every event carries.
6
+ * An `appId` that already names a tracker on the page creates nothing, adds nothing to that
7
+ * tracker, and logs a warning.
6
8
  *
7
9
  * @param {CreateTrackerOptions} options - Collector address, app identity, deployment
8
10
  * metadata, and the per-plugin tracking toggles.
9
- * @returns {BrowserTracker | null | undefined} The tracker, or nullish when Snowplow
10
- * declined to create one.
11
+ * @returns {BrowserTracker | null | undefined} The tracker; `null` when `appId` is already in
12
+ * use, and `undefined` outside a browser.
11
13
  * @example
12
14
  * createTracker({ projectId: 'abc', collectorUrl: 'evnts.pckd.dev', deployment: { env: 'production' } })
13
15
  */
14
- export declare function createTracker({ projectId, cvlyX, deployment, collectorUrl, collectorPath, appId, trackVitals, trackPerformance, trackWebPage, trackSessions, trackBrowser, trackActivity, trackErrors, trackActivityCallback, trackButtonClickAllowList, }: CreateTrackerOptions): BrowserTracker | null | undefined;
16
+ export declare function createTracker({ projectId, cvlyX, deployment, collectorUrl, collectorPath, appId, trackVitals, trackPerformance, trackWebPage, trackSessions, trackBrowser, trackActivity, trackErrors, trackActivityCallback, trackButtonClickAllowList, trackButtonClickFilter, eventMeta, anonymousTracking, }: CreateTrackerOptions): BrowserTracker | null | undefined;
15
17
  //# sourceMappingURL=tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/tracker.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAA;AAWlC,OAAO,KAAK,EAEV,oBAAoB,EAKrB,MAAM,SAAS,CAAA;AAuFhB;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EAET,KAAK,EACL,UAAU,EACV,YAA+B,EAC/B,aAAa,EACb,KAA0B,EAC1B,WAAmB,EACnB,gBAAwB,EACxB,YAAmB,EACnB,aAAoB,EACpB,YAAmB,EACnB,aAAqB,EACrB,WAAmB,EACnB,qBAAqB,EACrB,yBAAyB,GAC1B,EAAE,oBAAoB,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CA2C1D"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/tracker.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAA;AAWlC,OAAO,KAAK,EAEV,oBAAoB,EAMrB,MAAM,SAAS,CAAA;AAsGhB;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EAET,KAAK,EACL,UAAU,EACV,YAA+B,EAC/B,aAAa,EACb,KAA0B,EAC1B,WAAmB,EACnB,gBAAwB,EACxB,YAAmB,EACnB,aAAoB,EACpB,YAAmB,EACnB,aAAqB,EACrB,WAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,SAAS,EACT,iBAAiB,GAClB,EAAE,oBAAoB,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,CA0D1D"}
@@ -1,6 +1,6 @@
1
1
  /** @file Analytics event types and interfaces for Snowplow tracking. */
2
- import type { ActivityCallbackData, CommonEventProperties, SelfDescribingEvent } from '@snowplow/browser-tracker';
3
- import type { ExperienceStep, Field, FieldValue, ValidationError as FieldValidationError } from '@picked/client';
2
+ import type { ActivityCallbackData, AnonymousTrackingOptions, CommonEventProperties, SelfDescribingEvent } from '@snowplow/browser-tracker';
3
+ import type { ExperienceStep, Field, FieldValue, Picked, ValidationError as FieldValidationError } from '@picked/client';
4
4
  import type { AppSchema, AppUrl, CvlyFunnelSchema, CvlyFunnelUrl, CvlyXSchema, CvlyXUrl, DeploymentSchema, DeploymentUrl, ElementSchema, ElementUrl, EventSchema, EventUrl, ExceptionSchema, ExceptionUrl, ExperienceSchema, ExperienceUrl, FeatureListSchema, FeatureListUrl, FieldListSchema, FieldListUrl, FormSchema, FormUrl, ModalSchema, ModalUrl, OrderSchema, OrderUrl, PickedSchema, PickedUrl, ProductListSchema, ProductListUrl, ResponseListSchema, ResponseListUrl, SessionSchema, SessionUrl, StepSchema, StepUrl } from './schemas';
5
5
  export type SnowplowSelfDescribingEvent = SelfDescribingEvent & CommonEventProperties;
6
6
  export type SchemaUrl<Schema extends string, Version extends string> = `iglu:dev.pckd/${Schema}/jsonschema/${Version}`;
@@ -43,6 +43,8 @@ export type ResponseListContext = Context<ResponseListUrl, ResponseListSchema>;
43
43
  export type SessionContext = Context<SessionUrl, SessionSchema>;
44
44
  export type StepContext = Context<StepUrl, StepSchema>;
45
45
  export type DeploymentContext = Context<DeploymentUrl, DeploymentSchema>;
46
+ /** Flat key-value meta a tracker stamps into every Picked event it sends. */
47
+ export type EventMeta = Readonly<Record<string, string | number | boolean>>;
46
48
  export interface CreateTrackerOptions {
47
49
  /**
48
50
  * @deprecated The organization ID is no longer used by the analytics tracker. The
@@ -127,17 +129,31 @@ export interface CreateTrackerOptions {
127
129
  */
128
130
  trackPerformance?: boolean;
129
131
  /**
130
- * CSS selector allowlist for button click tracking.
132
+ * Class-name allowlist for button click tracking. Setting it enables button click tracking.
131
133
  *
132
- * @see https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/
134
+ * @see https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/button-click/#filter-function
133
135
  */
134
136
  trackButtonClickAllowList?: string[];
135
137
  /**
136
- * Filter function for button click tracking.
138
+ * Filter function for button click tracking. Setting it enables button click tracking; the
139
+ * filter applies when `trackButtonClickAllowList` is absent.
137
140
  *
138
141
  * @see https://docs.snowplow.io/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/button-click/#filter-function
139
142
  */
140
143
  trackButtonClickFilter?: (element: HTMLElement) => boolean;
144
+ /**
145
+ * Keys stamped into the `meta` of every Picked event this tracker sends, and set as the
146
+ * `meta` of its global `app` context so native Snowplow events carry them too. A key here
147
+ * wins over a per-event key of the same name. Other trackers on the page are unaffected.
148
+ *
149
+ * @example { surface: 'marketing', env: 'production', signed_in: false }
150
+ */
151
+ eventMeta?: EventMeta;
152
+ /**
153
+ * Snowplow's `anonymousTracking` tracker option, passed through unchanged. Absent,
154
+ * Snowplow's default (identified tracking) applies.
155
+ */
156
+ anonymousTracking?: AnonymousTrackingOptions;
141
157
  /**
142
158
  * Parameters related to the CVLY-X environment.
143
159
  *
@@ -280,5 +296,9 @@ export interface AnalyticsContext {
280
296
  order?: AnalyticsOrder;
281
297
  identifiers?: Record<string, string>;
282
298
  }
299
+ /** A capability `analyticsPlugin` sets up with the client and a reader of its analytics context. */
300
+ export interface AnalyticsPluginCapability {
301
+ setup: (client: Picked, readContext: () => AnalyticsContext) => void;
302
+ }
283
303
  export {};
284
304
  //# sourceMappingURL=types.d.ts.map