@obelism/numbers-sdk 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 +4 -0
- package/dist/index.d.mts +8 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.mjs +5 -1
- package/dist/script.global.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ No bundler needed:
|
|
|
15
15
|
defer
|
|
16
16
|
src="https://numbers.obelism.studio/script.js"
|
|
17
17
|
data-organization="org_…"
|
|
18
|
+
data-space="space_…"
|
|
18
19
|
data-environment="production"
|
|
19
20
|
></script>
|
|
20
21
|
```
|
|
@@ -27,6 +28,8 @@ client on `window.numbers`:
|
|
|
27
28
|
numbers.track('sign_up', 'footer_form')
|
|
28
29
|
```
|
|
29
30
|
|
|
31
|
+
`data-space` names the space (one site or project of the organization) the
|
|
32
|
+
events belong to; without it they go to the organization's first space.
|
|
30
33
|
`data-endpoint="https://…"` sends somewhere else, e.g. a proxy on your own
|
|
31
34
|
domain. npm CDNs serve the same file from
|
|
32
35
|
`@obelism/numbers-sdk/dist/script.global.js`.
|
|
@@ -42,6 +45,7 @@ import { createNumbers } from '@obelism/numbers-sdk'
|
|
|
42
45
|
|
|
43
46
|
const numbers = createNumbers({
|
|
44
47
|
organizationId: 'org_…',
|
|
48
|
+
spaceId: 'space_…', // optional: without it, the organization's first space
|
|
45
49
|
environment: 'production', // default; or 'develop', 'staging'
|
|
46
50
|
// endpoint: 'https://numbers.obelism.studio/api/log',
|
|
47
51
|
// disableWarnings: true,
|
package/dist/index.d.mts
CHANGED
|
@@ -12,6 +12,11 @@ type Device = {
|
|
|
12
12
|
};
|
|
13
13
|
type NumbersOptions = {
|
|
14
14
|
organizationId: string;
|
|
15
|
+
/**
|
|
16
|
+
* The space (`space_…`) the events belong to: one site or project of the
|
|
17
|
+
* organization. Without it, the organization's first space.
|
|
18
|
+
*/
|
|
19
|
+
spaceId?: string | undefined;
|
|
15
20
|
/** Default `production`. */
|
|
16
21
|
environment?: Environment;
|
|
17
22
|
/**
|
|
@@ -60,6 +65,7 @@ type Exposure = {
|
|
|
60
65
|
type BeaconCommon<T extends 'event' | 'exposure'> = {
|
|
61
66
|
type: T;
|
|
62
67
|
organizationId: string;
|
|
68
|
+
spaceId?: string;
|
|
63
69
|
environment: Environment;
|
|
64
70
|
visitorId: string;
|
|
65
71
|
pointer: string;
|
|
@@ -105,6 +111,7 @@ type AutoTrackOptions = {
|
|
|
105
111
|
type Sent = Promise<Response | undefined>;
|
|
106
112
|
type NumbersClient = {
|
|
107
113
|
readonly organizationId: string;
|
|
114
|
+
readonly spaceId: string | undefined;
|
|
108
115
|
readonly environment: Environment;
|
|
109
116
|
/** The visitor, from the cookie or new. `null` outside the browser. */
|
|
110
117
|
visitor: () => Visitor | null;
|
|
@@ -124,7 +131,7 @@ type NumbersClient = {
|
|
|
124
131
|
/** Starts page views and click tracking; returns a function that stops them. */
|
|
125
132
|
autoTrack: (options?: AutoTrackOptions) => () => void;
|
|
126
133
|
};
|
|
127
|
-
declare const createNumbers: ({ organizationId, environment, endpoint, device: givenDevice, disableWarnings, }: NumbersOptions) => NumbersClient;
|
|
134
|
+
declare const createNumbers: ({ organizationId, spaceId, environment, endpoint, device: givenDevice, disableWarnings, }: NumbersOptions) => NumbersClient;
|
|
128
135
|
|
|
129
136
|
declare const DEFAULT_ENDPOINT = "https://numbers.obelism.studio/api/log";
|
|
130
137
|
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sources":["../src/types.ts","../src/visitor.ts","../src/client.ts","../src/constants.ts","../src/device.ts"],"mappings":"AAAA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,MAAM;AACX;AACA;AACA;AACA;AACA;AACA,KAAK,cAAc;AACnB;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,oBAAoB;AACzB;AACA,KAAK,SAAS,GAAG,oBAAoB;AACrC,KAAK,YAAY;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,QAAQ;AACb;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW,GAAG,YAAY,YAAY,WAAW;AACtD;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA,KAAK,cAAc,GAAG,YAAY,eAAe,QAAQ;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","sources":["../src/types.ts","../src/visitor.ts","../src/client.ts","../src/constants.ts","../src/device.ts"],"mappings":"AAAA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,MAAM;AACX;AACA;AACA;AACA;AACA;AACA,KAAK,cAAc;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,oBAAoB;AACzB;AACA,KAAK,SAAS,GAAG,oBAAoB;AACrC,KAAK,YAAY;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,QAAQ;AACb;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW,GAAG,YAAY,YAAY,WAAW;AACtD;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA,KAAK,cAAc,GAAG,YAAY,eAAe,QAAQ;;AC5FzD,KAAK,OAAO;AACZ;AACA;AACA;AACA;;ACFA,KAAK,gBAAgB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI,GAAG,OAAO,CAAC,QAAQ;AAC5B,KAAK,aAAa;AAClB;AACA;AACA,0BAA0B,WAAW;AACrC;AACA,mBAAmB,OAAO;AAC1B;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS,4BAA4B,YAAY,KAAK,IAAI;AAC7E;AACA,oBAAoB,IAAI;AACxB;AACA,uBAAuB,QAAQ,KAAK,IAAI;AACxC;AACA,0BAA0B,gBAAgB;AAC1C;AACA,cAAc,aAAa,8FAA8F,cAAc,KAAK,aAAa;;ACnCzJ,cAAc,gBAAgB;;ACC9B,cAAc,YAAY,yBAAyB,MAAM;;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ type Device = {
|
|
|
12
12
|
};
|
|
13
13
|
type NumbersOptions = {
|
|
14
14
|
organizationId: string;
|
|
15
|
+
/**
|
|
16
|
+
* The space (`space_…`) the events belong to: one site or project of the
|
|
17
|
+
* organization. Without it, the organization's first space.
|
|
18
|
+
*/
|
|
19
|
+
spaceId?: string | undefined;
|
|
15
20
|
/** Default `production`. */
|
|
16
21
|
environment?: Environment;
|
|
17
22
|
/**
|
|
@@ -60,6 +65,7 @@ type Exposure = {
|
|
|
60
65
|
type BeaconCommon<T extends 'event' | 'exposure'> = {
|
|
61
66
|
type: T;
|
|
62
67
|
organizationId: string;
|
|
68
|
+
spaceId?: string;
|
|
63
69
|
environment: Environment;
|
|
64
70
|
visitorId: string;
|
|
65
71
|
pointer: string;
|
|
@@ -105,6 +111,7 @@ type AutoTrackOptions = {
|
|
|
105
111
|
type Sent = Promise<Response | undefined>;
|
|
106
112
|
type NumbersClient = {
|
|
107
113
|
readonly organizationId: string;
|
|
114
|
+
readonly spaceId: string | undefined;
|
|
108
115
|
readonly environment: Environment;
|
|
109
116
|
/** The visitor, from the cookie or new. `null` outside the browser. */
|
|
110
117
|
visitor: () => Visitor | null;
|
|
@@ -124,7 +131,7 @@ type NumbersClient = {
|
|
|
124
131
|
/** Starts page views and click tracking; returns a function that stops them. */
|
|
125
132
|
autoTrack: (options?: AutoTrackOptions) => () => void;
|
|
126
133
|
};
|
|
127
|
-
declare const createNumbers: ({ organizationId, environment, endpoint, device: givenDevice, disableWarnings, }: NumbersOptions) => NumbersClient;
|
|
134
|
+
declare const createNumbers: ({ organizationId, spaceId, environment, endpoint, device: givenDevice, disableWarnings, }: NumbersOptions) => NumbersClient;
|
|
128
135
|
|
|
129
136
|
declare const DEFAULT_ENDPOINT = "https://numbers.obelism.studio/api/log";
|
|
130
137
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../src/types.ts","../src/visitor.ts","../src/client.ts","../src/constants.ts","../src/device.ts"],"mappings":"AAAA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,MAAM;AACX;AACA;AACA;AACA;AACA;AACA,KAAK,cAAc;AACnB;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,oBAAoB;AACzB;AACA,KAAK,SAAS,GAAG,oBAAoB;AACrC,KAAK,YAAY;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,QAAQ;AACb;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW,GAAG,YAAY,YAAY,WAAW;AACtD;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA,KAAK,cAAc,GAAG,YAAY,eAAe,QAAQ;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../src/types.ts","../src/visitor.ts","../src/client.ts","../src/constants.ts","../src/device.ts"],"mappings":"AAAA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK,MAAM;AACX;AACA;AACA;AACA;AACA;AACA,KAAK,cAAc;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,oBAAoB;AACzB;AACA,KAAK,SAAS,GAAG,oBAAoB;AACrC,KAAK,YAAY;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,QAAQ;AACb;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,WAAW,GAAG,YAAY,YAAY,WAAW;AACtD;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA,KAAK,cAAc,GAAG,YAAY,eAAe,QAAQ;;AC5FzD,KAAK,OAAO;AACZ;AACA;AACA;AACA;;ACFA,KAAK,gBAAgB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI,GAAG,OAAO,CAAC,QAAQ;AAC5B,KAAK,aAAa;AAClB;AACA;AACA,0BAA0B,WAAW;AACrC;AACA,mBAAmB,OAAO;AAC1B;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS,4BAA4B,YAAY,KAAK,IAAI;AAC7E;AACA,oBAAoB,IAAI;AACxB;AACA,uBAAuB,QAAQ,KAAK,IAAI;AACxC;AACA,0BAA0B,gBAAgB;AAC1C;AACA,cAAc,aAAa,8FAA8F,cAAc,KAAK,aAAa;;ACnCzJ,cAAc,gBAAgB;;ACC9B,cAAc,YAAY,yBAAyB,MAAM;;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -112,7 +112,7 @@ const parseRetryAfterMs = (header)=>{
|
|
|
112
112
|
return Number.isNaN(date) ? undefined : Math.max(0, date - Date.now());
|
|
113
113
|
};
|
|
114
114
|
const isBrowser = ()=>typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
115
|
-
const createNumbers = ({ organizationId, environment = 'production', endpoint = DEFAULT_ENDPOINT, device: givenDevice, disableWarnings = false })=>{
|
|
115
|
+
const createNumbers = ({ organizationId, spaceId, environment = 'production', endpoint = DEFAULT_ENDPOINT, device: givenDevice, disableWarnings = false })=>{
|
|
116
116
|
let visitor = null;
|
|
117
117
|
let device = givenDevice;
|
|
118
118
|
let url = endpoint;
|
|
@@ -137,6 +137,9 @@ const createNumbers = ({ organizationId, environment = 'production', endpoint =
|
|
|
137
137
|
return {
|
|
138
138
|
type,
|
|
139
139
|
organizationId,
|
|
140
|
+
...spaceId && {
|
|
141
|
+
spaceId
|
|
142
|
+
},
|
|
140
143
|
environment,
|
|
141
144
|
visitorId: current.id,
|
|
142
145
|
pointer: device.pointer,
|
|
@@ -258,6 +261,7 @@ const createNumbers = ({ organizationId, environment = 'production', endpoint =
|
|
|
258
261
|
};
|
|
259
262
|
return {
|
|
260
263
|
organizationId,
|
|
264
|
+
spaceId,
|
|
261
265
|
environment,
|
|
262
266
|
visitor: getVisitor,
|
|
263
267
|
setDevice: (next)=>{
|
package/dist/index.mjs
CHANGED
|
@@ -110,7 +110,7 @@ const parseRetryAfterMs = (header)=>{
|
|
|
110
110
|
return Number.isNaN(date) ? undefined : Math.max(0, date - Date.now());
|
|
111
111
|
};
|
|
112
112
|
const isBrowser = ()=>typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
113
|
-
const createNumbers = ({ organizationId, environment = 'production', endpoint = DEFAULT_ENDPOINT, device: givenDevice, disableWarnings = false })=>{
|
|
113
|
+
const createNumbers = ({ organizationId, spaceId, environment = 'production', endpoint = DEFAULT_ENDPOINT, device: givenDevice, disableWarnings = false })=>{
|
|
114
114
|
let visitor = null;
|
|
115
115
|
let device = givenDevice;
|
|
116
116
|
let url = endpoint;
|
|
@@ -135,6 +135,9 @@ const createNumbers = ({ organizationId, environment = 'production', endpoint =
|
|
|
135
135
|
return {
|
|
136
136
|
type,
|
|
137
137
|
organizationId,
|
|
138
|
+
...spaceId && {
|
|
139
|
+
spaceId
|
|
140
|
+
},
|
|
138
141
|
environment,
|
|
139
142
|
visitorId: current.id,
|
|
140
143
|
pointer: device.pointer,
|
|
@@ -256,6 +259,7 @@ const createNumbers = ({ organizationId, environment = 'production', endpoint =
|
|
|
256
259
|
};
|
|
257
260
|
return {
|
|
258
261
|
organizationId,
|
|
262
|
+
spaceId,
|
|
259
263
|
environment,
|
|
260
264
|
visitor: getVisitor,
|
|
261
265
|
setDevice: (next)=>{
|
package/dist/script.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!/*! Obelism numbers (@obelism/numbers-sdk), MIT. https://numbers.obelism.studio */function(){"use strict";let e="https://numbers.obelism.studio/api/log",t="visitorId",r="visi",n=(e,t)=>e.get(t)?.slice(0,256)||void 0,i="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",o=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/,a=()=>"u">typeof window&&"u">typeof document;((s,l)=>{if(!l||s.numbers)return;let u=l.dataset.organization;if(!u)return;let
|
|
1
|
+
!/*! Obelism numbers (@obelism/numbers-sdk), MIT. https://numbers.obelism.studio */function(){"use strict";let e="https://numbers.obelism.studio/api/log",t="visitorId",r="visi",n=(e,t)=>e.get(t)?.slice(0,256)||void 0,i="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",o=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/,a=()=>"u">typeof window&&"u">typeof document;((s,l)=>{if(!l||s.numbers)return;let u=l.dataset.organization;if(!u)return;let d=(({organizationId:s,spaceId:l,environment:u="production",endpoint:d=e,device:c,disableWarnings:p=!1})=>{let m=null,h=c,f=d,w=0,b=!0,g=new Set,v=new Set,y=new Set,$=(e,t)=>{!(p||y.has(e))&&(y.add(e),"u">typeof console&&console.warn(`[numbers] ${t}`))},S=()=>a()?(m??(m=(()=>{let e,n,o,a=(e=document.cookie.split("; ").find(e=>e.split("=")[0]===t))?e.split("=")[1]??"":"",s=2===(n=a.split("_")).length&&n[0]===r&&26===n[1].length,l=s?a:(()=>{let e=new Uint8Array(26);crypto.getRandomValues(e);let t="";for(let r of e)t+=i[r%i.length];return`${r}_${t}`})();return o=new Date(Date.now()+2592e6),document.cookie=`${t}=${l};path=/;expires=${o.toUTCString()};SameSite=Lax`+("https:"===location.protocol?";Secure":""),{id:l,recurring:s}})()),m):null,k=(e,t)=>{let r,n,i;return h??(r=navigator.userAgent.toLowerCase(),n=/ipad|tablet|android(?!.*mobile)/.test(r)?"tablet":/mobi|iphone|ipod|android/.test(r)?"mobile":"desktop",h={pointer:"desktop"===n?"fine":"coarse",device:n,browser:/edg\//.test(r)?"edge":/samsungbrowser/.test(r)?"samsung internet":/instagram|fban|fbav|tiktok|snapchat|wechat|line\//.test(r)?"social":/firefox|fxios/.test(r)?"firefox":/chrome|crios|chromium/.test(r)?"chrome":/safari/.test(r)?"safari":"other",os:/iphone|ipad|ipod/.test(r)?"ios":/android/.test(r)?"android":/windows/.test(r)?"windows":/mac os/.test(r)?"mac os":"unix"}),{type:e,organizationId:s,...l&&{spaceId:l},environment:u,visitorId:t.id,pointer:h.pointer,device:h.device,screen:(i=window.innerWidth)<=768?"small":i<=1024?"medium":i<=1200?"large":"huge",browser:h.browser,os:h.os,visitor:t.recurring?"recurring":"new"}},x=(e,t)=>{let r=JSON.stringify(e);return"u">typeof TextEncoder&&new TextEncoder().encode(r).length>8192&&$(`size:${t}`,`"${t}" is over 8192 bytes and will be refused: trim its \`params\`.`),fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:r,keepalive:!0}).then(e=>(429===e.status&&(w=Date.now()+((e=>{if(!e)return;let t=Number(e);if(Number.isFinite(t))return Math.max(0,1e3*t);let r=Date.parse(e);return Number.isNaN(r)?void 0:Math.max(0,r-Date.now())})(e.headers.get("Retry-After"))??6e4)),e),()=>void 0)},_=(e,t,r,i)=>{let o,a,s,l,u,d=S();if(!d||Date.now()<w)return null;let{value:c,currency:p,params:m,dedupeKey:h}=r;if(void 0!==h){let t=`${e}:${h}`;if(g.has(t))return null;g.add(t)}let f={...k("event",d),...(o=new URLSearchParams(location.search),a={path:location.pathname.slice(0,1024)},s=n(o,"utm_source"),l=n(o,"utm_medium"),u=n(o,"utm_campaign"),s&&(a.utmSource=s),l&&(a.utmMedium=l),u&&(a.utmCampaign=u),a),event:e.slice(0,256),scope:t.slice(0,256)};return i&&(f.referrer=i),"number"==typeof c&&Number.isFinite(c)&&(f.value=c),p&&(f.currency=p.slice(0,8)),m&&"object"==typeof m&&!Array.isArray(m)&&(f.params=m),x(f,e)},L=(e,t,r={})=>a()?(o.test(e)||$(`name:${e}`,`"${e}" isn't snake_case. Prefer GA4-style names like "add_to_cart" or "sign_up"; \`disableWarnings: true\` silences this.`),_(e,t||location.pathname,r)):null,D=()=>{if(!a())return null;let e=b?(()=>{if(document.referrer)try{let e=new URL(document.referrer);if(e.host===location.host)return;return`${e.origin}${e.pathname}`.slice(0,1024)}catch{return}})():void 0;return b=!1,_("page_view",location.pathname,{},e)};return{organizationId:s,spaceId:l,environment:u,visitor:S,setDevice:e=>{h=e},setEndpoint:e=>{f=e},track:L,pageView:D,expose:e=>{let t=S();if(!t||Date.now()<w)return null;let r=`${e.subjectKind}:${e.subjectId}`;return v.has(r)?null:(v.add(r),x({...k("exposure",t),...e},r))},autoTrack:({pageViews:e=!0,clicks:t=!0}={})=>{if(!a())return()=>{};let r=[];if(e){let e=null,t=()=>{location.pathname!==e&&(e=location.pathname,D())},n=e=>{let n=history[e],i=function(...e){let r=n.apply(this,e);return t(),r};history[e]=i,r.push(()=>{history[e]===i&&(history[e]=n)})};n("pushState"),n("replaceState"),window.addEventListener("popstate",t),r.push(()=>window.removeEventListener("popstate",t)),t()}if(t){let e=e=>{let t=e.target,r=t?.closest?.("[data-numbers-id]")?.getAttribute("data-numbers-id");r&&L("click",r)};document.addEventListener("click",e,!0),r.push(()=>document.removeEventListener("click",e,!0))}return()=>{for(let e of r)e()}}}})({organizationId:u,spaceId:l.dataset.space||void 0,environment:l.dataset.environment||"production",endpoint:l.dataset.endpoint||new URL("/api/log",l.src||location.href).href,disableWarnings:!0});return s.numbers=d,d.autoTrack()})(window,document.currentScript)}();
|
package/package.json
CHANGED