@pulseri/js 0.0.0-stage → 1.0.2
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/LICENSE +21 -0
- package/README.md +120 -2
- package/dist/index.cjs +37 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +32 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/pulseri.js +39 -0
- package/dist/pulseri.js.map +1 -0
- package/package.json +56 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pulseri
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,121 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @pulseri/js
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The Pulseri browser SDK. Send people, groups and events from your website or app, and show Pulseri in-app surveys.
|
|
4
|
+
|
|
5
|
+
- Loads from a script tag (no build step) or installs from npm.
|
|
6
|
+
- Safe by design: a call never throws, and the survey widget renders in a Shadow DOM so it cannot affect your page's styles or scripts.
|
|
7
|
+
- Small: about 5 KB gzipped.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
### Script tag
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<script src="https://js.pulseri.com/v1/pulseri.js"></script>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`v1` always serves the latest compatible 1.x release, so you get fixes without changing your page. To pin an exact
|
|
18
|
+
release, use its version; exact versions never change:
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<script src="https://js.pulseri.com/v1.0.1/pulseri.js"></script>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
To have the browser verify the file, add its Subresource Integrity value from https://js.pulseri.com. Only use it
|
|
25
|
+
with an exact version, never with `v1`:
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<script src="https://js.pulseri.com/v1.0.1/pulseri.js" integrity="sha384-…" crossorigin="anonymous"></script>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### npm
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
npm install @pulseri/js
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
import { init, identify, track } from '@pulseri/js'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The package contains the same code as the script tag, with types. With the script tag the functions are on
|
|
42
|
+
`window.Pulseri`.
|
|
43
|
+
|
|
44
|
+
## Quick start
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
Pulseri.init('pk_live_…') // your public key, from Settings, API keys in the Pulseri dashboard
|
|
48
|
+
|
|
49
|
+
Pulseri.identify('user_123', { plan: 'pro' }, { email: 'ada@example.com', name: 'Ada Lovelace', groupId: 'acme' })
|
|
50
|
+
Pulseri.group('acme', { industry: 'retail' }, { name: 'Acme' })
|
|
51
|
+
Pulseri.track('checkout_completed', { value: 49 }, { personId: 'user_123' })
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
| Call | Purpose |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `init(publicKey, options?)` | Start the SDK. Options: `pageviews` (`'history'` or `'hash'`), `personId`, `signature`. |
|
|
57
|
+
| `identify(id, traits?, options?)` | Create or update a person. Options: `email`, `name`, `groupId`, `signature`. |
|
|
58
|
+
| `group(id, traits?, options?)` | Create or update a group (for example a company). Options: `name`, `signature`. |
|
|
59
|
+
| `track(event, properties?, options?)` | Record an event for a person (`personId`). A survey can appear when the event qualifies. |
|
|
60
|
+
| `page(properties?, options?)` | Record a page view in a single-page app. |
|
|
61
|
+
|
|
62
|
+
`track()` and `page()` take the person explicitly (`personId`) and do not reuse the last `identify()`. An event without
|
|
63
|
+
a `personId` is recorded as anonymous and never shows a survey.
|
|
64
|
+
|
|
65
|
+
## Single-page apps
|
|
66
|
+
|
|
67
|
+
The SDK reports the current page (path, origin and referrer; never the query string or the page title) with each call, so
|
|
68
|
+
a campaign's *Where to show* rules can decide. On a single-page app the document never reloads, so tell the SDK about
|
|
69
|
+
route changes. Either way works; pick one:
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
// 1. Explicit (recommended): call page() from your router's after-navigation hook.
|
|
73
|
+
router.afterEach(() => Pulseri.page({}, { personId: currentUser.id })) // Vue Router
|
|
74
|
+
// React Router: useEffect(() => { Pulseri.page({}, { personId }) }, [location.pathname])
|
|
75
|
+
// Next.js: useEffect(() => { Pulseri.page({}, { personId }) }, [pathname])
|
|
76
|
+
|
|
77
|
+
// 2. Automatic: listens to history changes.
|
|
78
|
+
Pulseri.init(publicKey, { pageviews: 'history', personId: () => currentUser?.id })
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- `pageviews` is opt-in. Use `'history'`, or `'hash'` for a hash-routed app (`/#/billing`). It reports the first page and
|
|
82
|
+
every later change of path, and a redirect that changes the URL twice is reported once.
|
|
83
|
+
- `personId` is required for page views, as a string or a function. While it returns nothing (for example before login),
|
|
84
|
+
nothing is sent.
|
|
85
|
+
- A survey that is already showing stays until dismissed. One that is still waiting to appear is dropped if its
|
|
86
|
+
campaign has page rules and the user has left every matching page.
|
|
87
|
+
|
|
88
|
+
## Identity verification
|
|
89
|
+
|
|
90
|
+
Without it, anyone who knows a user's id can send events as that user. With it, your server signs the id and the SDK
|
|
91
|
+
passes the signature along, so Pulseri can check that the call came from your app. `identify()`, `group()`, `track()`
|
|
92
|
+
and `page()` all take an optional `signature`.
|
|
93
|
+
|
|
94
|
+
On your server, compute an HMAC-SHA256 of the user id, in hex, with the identity verification secret from the Pulseri
|
|
95
|
+
dashboard:
|
|
96
|
+
|
|
97
|
+
```js
|
|
98
|
+
import { createHmac } from 'node:crypto'
|
|
99
|
+
|
|
100
|
+
const signature = createHmac('sha256', process.env.PULSERI_IDV_SECRET).update(user.id).digest('hex')
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Send the signature to the browser with the rest of your page data, then pass it along:
|
|
104
|
+
|
|
105
|
+
```js
|
|
106
|
+
Pulseri.identify(user.id, { plan: 'pro' }, { signature })
|
|
107
|
+
Pulseri.track('checkout_completed', {}, { personId: user.id, signature })
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Sign the same id you send: the user id for `identify()` and for `track()`/`page()` (`personId`), the group id for
|
|
111
|
+
`group()`. For automatic page views, pass `signature` to `init()` next to `personId`, as a string or a function (read on
|
|
112
|
+
every page view). Keep the secret on your server: it must never appear in browser code, a bundle or a public repository.
|
|
113
|
+
|
|
114
|
+
## Versioning
|
|
115
|
+
|
|
116
|
+
The major version is in the script URL and matches the npm package: `1.x.y` is `/v1/` and `/v1.x.y/`. A breaking change
|
|
117
|
+
ships as `/v2/`; `/v1/` keeps working.
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
MIT, see `LICENSE`.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";var T=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var le=(t,e)=>{for(var n in e)T(t,n,{get:e[n],enumerable:!0})},ce=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of se(e))!ae.call(t,o)&&o!==n&&T(t,o,{get:()=>e[o],enumerable:!(r=ie(e,o))||r.enumerable});return t};var ue=t=>ce(T({},"__esModule",{value:!0}),t);var $e={};le($e,{group:()=>Ee,identify:()=>Se,init:()=>Pe,page:()=>z,track:()=>Re});module.exports=ue($e);function P(t){let e=typeof window>"u"?void 0:window.location;return e?t&&e.hash.startsWith("#/")?e.hash.slice(1).split("?")[0]??null:e.pathname:null}function U(t){try{let e=P(t);if(e===null)return null;let n=(document.referrer||"").split(/[?#]/,1)[0]??"";return{path:e.slice(0,2048),origin:window.location.origin,referrer:n?n.slice(0,2048):null}}catch{return null}}function q(t){let e=t.split(/[?#]/,1)[0]??"",n=e;try{n=decodeURIComponent(e)}catch{}if(n==="/")return"/";let r=n.replace(/\/+$/,"");return r===""?"/":r}function W(t,e){if(typeof t!="object"||t===null)return!1;let{match:n,value:r}=t;if(typeof n!="string"||typeof r!="string"||r==="")return!1;switch(n){case"exact":return e===q(r);case"starts_with":return e.startsWith(r)||(e==="/"?e:`${e}/`).startsWith(r);case"contains":return e.includes(r);default:return!1}}function j(t,e){let n=t?.[e];return Array.isArray(n)?n:[]}function F(t,e){let n=j(t,"include"),r=j(t,"exclude");if(n.length===0&&r.length===0)return!0;if(typeof e!="string"||e==="")return!1;let o=q(e);return r.some(i=>W(i,o))?!1:n.length===0||n.some(i=>W(i,o))}var de=250,pe=1e3,A=!1;function G(t,e){if(A||typeof window>"u"||!window.history)return()=>{};let{hashRouting:n}=e,r=window.history,o={pushState:r.pushState,replaceState:r.replaceState},i={pushState:Object.prototype.hasOwnProperty.call(r,"pushState"),replaceState:Object.prototype.hasOwnProperty.call(r,"replaceState")},s={},a=!1,d=e.reportInitial?e.lastReportedPath??null:P(n),p,y=0,g=()=>{if(a)return;let l=Date.now();p!==void 0&&l-y>=pe||(p===void 0&&(y=l),clearTimeout(p),p=setTimeout(()=>{if(p=void 0,!a)try{let f=P(n);if(f===d)return;d=f,t(f)}catch(f){console.warn("[Pulseri] page navigation handler failed:",f)}},de))},x=()=>{for(let l of["pushState","replaceState"])s[l]&&r[l]===s[l]&&(i[l]?r[l]=o[l]:delete r[l])};try{for(let l of["pushState","replaceState"]){let f=o[l],v=function(...u){let _=f.apply(this,u);try{g()}catch{}return _};r[l]=v,s[l]=v}}catch(l){return a=!0,x(),console.warn("[Pulseri] pageviews could not patch history \u2014 page views will not be reported automatically:",l),()=>{}}return A=!0,e.reportInitial&&g(),window.addEventListener("popstate",g),n&&window.addEventListener("hashchange",g),()=>{a=!0,clearTimeout(p),window.removeEventListener("popstate",g),window.removeEventListener("hashchange",g),x(),A=!1}}var ge={"0_10":[0,10],"1_5":[1,5],"1_7":[1,7]},X={"bottom-right":"bottom:12px;right:12px;","bottom-left":"bottom:12px;left:12px;","bottom-center":"bottom:12px;left:50%;transform:translateX(-50%);","top-right":"top:12px;right:12px;","top-left":"top:12px;left:12px;"},fe=999999,me=480,b=null;function Z(){return b!==null}function Q(t,e,n,r,o){try{if(b)return;let i=setTimeout(()=>{if(o&&!o()){b=null;return}he(t,n).catch(s=>{b=null,console.warn("[Pulseri] widget failed to load:",s)})},Math.max(0,r)*1e3);b={remove:()=>clearTimeout(i)}}catch(i){console.warn("[Pulseri] renderWidget() failed:",i)}}async function he(t,e){let n=await fetch(`${t}/surveys/${e}`);if(!n.ok){b=null;return}let r=await n.json();be(t,e,r.data)}function be(t,e,n){let r=ge[n.scale_type];if(!r){b=null;return}let o=n.branding?.channels?.in_app?.widget??{},i=window.innerWidth<=me,s=i?"banner":o.popup_type??"corner",a=ve(n.branding?.colors?.primary??""),d=o.background_color??"#ffffff",p=o.text_color??"#1a1a1a",y=o.border_color??"#e5e7eb",g=o.border_radius??12,x=o.z_index??fe,l=document.createElement("div");l.setAttribute("data-pulseri-widget",""),l.style.cssText=s==="banner"?`position:fixed;left:0;right:0;bottom:0;z-index:${x};`:`position:fixed;${X[o.position??"bottom-right"]??X["bottom-right"]}z-index:${x};`;let f=l.attachShadow({mode:"open"}),v=document.createElement("style");v.textContent=`
|
|
2
|
+
:host { all: initial; }
|
|
3
|
+
* { box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
|
|
4
|
+
.box {
|
|
5
|
+
background: ${d};
|
|
6
|
+
color: ${p};
|
|
7
|
+
border: 1px solid ${y};
|
|
8
|
+
border-radius: ${s==="banner"?`${Number(g)||0}px ${Number(g)||0}px 0 0`:`${Number(g)||0}px`};
|
|
9
|
+
box-shadow: 0 4px 24px rgba(0,0,0,0.12);
|
|
10
|
+
padding: 20px;
|
|
11
|
+
width: ${s==="banner"?"100%":"320px"};
|
|
12
|
+
max-width: ${s==="banner"?"100%":"calc(100vw - 24px)"};
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
gap: 12px;
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
.close { position: absolute; top: 8px; right: 8px; border: none; background: none; cursor: pointer; font-size: 16px; line-height: 1; color: inherit; opacity: 0.6; padding: 4px; }
|
|
19
|
+
.close:hover { opacity: 1; }
|
|
20
|
+
.logo { max-height: 28px; max-width: 160px; object-fit: contain; align-self: center; }
|
|
21
|
+
.question { font-size: 14px; font-weight: 600; margin: 0; padding-right: 16px; }
|
|
22
|
+
.scores {
|
|
23
|
+
display: flex;
|
|
24
|
+
gap: 6px;
|
|
25
|
+
${i?"flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch;":"flex-wrap: wrap;"}
|
|
26
|
+
}
|
|
27
|
+
.score-btn { min-width: 32px; padding: 6px 10px; border: 1px solid ${y}; border-radius: 6px; background: transparent; color: inherit; font-size: 13px; cursor: pointer; ${i?"flex-shrink: 0;":""} }
|
|
28
|
+
.score-btn.selected { border-color: ${a??"#4f46e5"}; background: ${a??"#4f46e5"}; color: ${a?K(a):"#ffffff"}; font-weight: 600; }
|
|
29
|
+
textarea { font-size: 13px; padding: 8px; border: 1px solid ${y}; border-radius: 6px; resize: vertical; min-height: 50px; background: transparent; color: inherit; }
|
|
30
|
+
.submit-btn { padding: 8px 14px; border: none; border-radius: 6px; background: ${a??"#4f46e5"}; color: ${a?K(a):"#ffffff"}; font-size: 13px; font-weight: 600; cursor: pointer; }
|
|
31
|
+
.submit-btn:disabled { opacity: 0.6; cursor: default; }
|
|
32
|
+
.error { font-size: 12px; color: #dc2626; margin: 0; }
|
|
33
|
+
.title { font-size: 15px; font-weight: 600; margin: 0; }
|
|
34
|
+
.message { font-size: 13px; margin: 0; }
|
|
35
|
+
a.review { align-self: flex-start; font-size: 13px; font-weight: 600; color: ${a??"#4f46e5"}; }
|
|
36
|
+
`;let u=document.createElement("div");u.className="box";let _=null,R=!1,k=!1,w=document.createElement("button");w.type="button",w.className="close",w.setAttribute("aria-label","Close"),w.textContent="\u2715",w.addEventListener("click",()=>{k||xe(t,e),Y(l)}),u.appendChild(w);let H=ee(n.branding?.logo);if(H){let c=document.createElement("img");c.className="logo",c.src=H,c.alt="",u.appendChild(c)}let $=document.createElement("p");$.className="question",$.textContent=n.question,u.appendChild($);let I=document.createElement("div");I.className="scores";let B=[];for(let c=r[0];c<=r[1];c++){let h=document.createElement("button");h.type="button",h.className="score-btn",h.textContent=String(c),h.addEventListener("click",()=>{_=c;for(let oe of B)oe.classList.remove("selected");h.classList.add("selected"),C.textContent=""}),B.push(h),I.appendChild(h)}u.appendChild(I);let E=document.createElement("textarea");E.placeholder="Anything else you'd like to add? (optional)",E.maxLength=5e3,u.appendChild(E);let C=document.createElement("p");C.className="error",u.appendChild(C);let m=document.createElement("button");m.type="button",m.className="submit-btn",m.textContent="Submit",m.addEventListener("click",()=>{if(!R){if(_===null){C.textContent="Please choose a score before submitting.";return}R=!0,m.disabled=!0,m.textContent="Submitting\u2026",fetch(`${t}/surveys/${e}/responses`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({answers:{score:_},feedback_text:E.value.trim()||null})}).then(async c=>{if(c.status===409&&await we(c)){k=!0,V(u,ye);return}if(!c.ok)throw new Error(`status ${c.status}`);let h=await c.json();k=!0,V(u,h.data)}).catch(()=>{R=!1,m.disabled=!1,m.textContent="Submit",C.textContent="Something went wrong. Please try again."})}}),u.appendChild(m),f.appendChild(v),f.appendChild(u),document.body.appendChild(l),b={remove:()=>Y(l)}}var ye={completion:{title:null,message:"Your response was already recorded. Thank you!"}};async function we(t){try{return(await t.json()).error?.code==="already_submitted"}catch{return!1}}function V(t,e){for(;t.children.length>1;)t.removeChild(t.lastChild);let{completion:n}=e;if(n.title){let i=document.createElement("p");i.className="title",i.textContent=n.title,J(i,n.title_style),t.appendChild(i)}let r=document.createElement("p");r.className="message",r.textContent=n.message||"Thank you for your feedback!",J(r,n.message_style),t.appendChild(r);let o=ee(e.review_redirect_url);if(o){let i=document.createElement("a");i.className="review",i.href=o,i.target="_blank",i.rel="noopener noreferrer",i.textContent="Leave a review",t.appendChild(i)}}function J(t,e){e&&(e.color&&(t.style.color=e.color),e.size&&(t.style.fontSize=`${e.size}px`),e.align&&(t.style.textAlign=e.align))}function Y(t){t.remove(),b=null}function xe(t,e){fetch(`${t}/surveys/${e}/delivery-events`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event_type:"dismissed"})}).catch(n=>{console.warn("[Pulseri] failed to report widget dismissal:",n)})}function ee(t){if(!t)return null;try{let e=new URL(t);return/^https?:$/.test(e.protocol)?e.href:null}catch{return null}}function ve(t){let e=/^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t);if(e)return`#${e[1]}${e[1]}${e[2]}${e[2]}${e[3]}${e[3]}`.toLowerCase();let n=/^#?([0-9a-f]{6})$/i.exec(t);return n?`#${n[1]}`.toLowerCase():null}function K(t){let e=parseInt(t.slice(1,3),16),n=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return(e*299+n*587+r*114)/1e3>=128?"#000000":"#ffffff"}var S=null,N=null,te=null,L=null,_e="page_viewed",Ce="https://api.pulseri.com/v1";function Pe(t,e){try{if(typeof t!="string"||t.trim()===""){console.warn("[Pulseri] init() requires a non-empty public key string \u2014 ignoring this call.");return}S&&console.warn("[Pulseri] init() called again \u2014 replacing the previous configuration.");let n=e?.endpoint,r=n!==void 0&&(typeof n!="string"||n.trim()==="");r&&console.warn("[Pulseri] init() received an invalid endpoint \u2014 using the default instead.");let o=(r||n===void 0?Ce:n.trim()).replace(/\/+$/,"");if(S={publicKey:t,endpoint:o,hashRouting:e?.pageviews==="hash"},N?.(),N=null,L=null,e?.pageviews){let i=e.personId;i===void 0&&console.warn("[Pulseri] pageviews needs a personId \u2014 an anonymous page view can never surface a survey, so none will be sent.");let s=()=>{let a;try{a=typeof i=="function"?i():i}catch(d){console.warn("[Pulseri] pageviews personId() threw \u2014 sending this page view without a person id:",d),z(void 0,{signature:ne(e.signature)});return}a&&z(void 0,{personId:a,signature:ne(e.signature)})};L=s,N=G(a=>{te=a,s()},{hashRouting:S.hashRouting,reportInitial:!0,lastReportedPath:te})}}catch(n){console.warn("[Pulseri] init() failed:",n)}}function Se(t,e,n){let r=M("identify");if(r)try{D(r,"/identify",{external_id:t,...e!==void 0?{traits:e}:{},...n?.email!==void 0?{email:n.email}:{},...n?.name!==void 0?{name:n.name}:{},...n?.groupId!==void 0?{group_id:n.groupId}:{},...O(n)})}catch(o){console.warn("[Pulseri] identify() failed:",o)}}function Ee(t,e,n){let r=M("group");if(r)try{D(r,"/group",{external_id:t,...e!==void 0?{traits:e}:{},...n?.name!==void 0?{name:n.name}:{},...O(n)})}catch(o){console.warn("[Pulseri] group() failed:",o)}}function Re(t,e,n){re("track",t,e,n)}function z(t,e){re("page",_e,t,e)}function re(t,e,n,r){let o=M(t);if(o)try{D(o,"/track",{event:e,...r?.personId!==void 0?{person_id:r.personId}:{},...O(r),...n!==void 0?{properties:n}:{},...ke(o),...Z()?{skip_survey:!0}:{}},i=>{let s=i.data;if(!s?.survey_eligible||!s.campaign_id||!s.survey_token)return;let a=s.page_rules??null;Q(o.endpoint,s.campaign_id,s.survey_token,s.delay_seconds??0,a?()=>{if(F(a,P(o.hashRouting)))return!0;let d=L;return d&&setTimeout(d,0),!1}:void 0)})}catch(i){console.warn(`[Pulseri] ${t}() failed:`,i)}}function O(t){let e=t?.signature;return typeof e=="string"&&e!==""?{signature:e}:{}}function ne(t){try{return typeof t=="function"?t():t}catch{return}}function ke(t){let e=U(t.hashRouting);return e?{page:e}:{}}function M(t){return S||(console.warn(`[Pulseri] ${t}() called before init() \u2014 ignoring this call.`),null)}function D(t,e,n,r){let{publicKey:o,endpoint:i}=t;fetch(`${i}${e}`,{method:"POST",keepalive:!0,headers:{Authorization:`Bearer ${o}`,"Content-Type":"application/json"},body:JSON.stringify(n)}).then(async s=>{if(!s.ok){let d=await s.json().catch(()=>null),p=d?.error?.code??s.status,y=d?.error?.message??s.statusText;console.warn(`[Pulseri] ${e} failed: ${p} \u2014 ${y}`);return}if(!r)return;let a=await s.json().catch(()=>null);a&&r(a)}).catch(s=>{console.warn(`[Pulseri] ${e} failed:`,s)})}0&&(module.exports={group,identify,init,page,track});
|
|
37
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/page.ts","../src/widget.ts"],"mappings":"mbAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,WAAAE,GAAA,aAAAC,GAAA,SAAAC,GAAA,SAAAC,EAAA,UAAAC,KAAA,eAAAC,GAAAP,ICiCO,SAASQ,EAAYC,EAAqC,CAC/D,IAAMC,EAAW,OAAO,OAAW,IAAc,OAAY,OAAO,SACpE,OAAKA,EAEDD,GAAeC,EAAS,KAAK,WAAW,IAAI,EACvCA,EAAS,KAAK,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,GAAK,KAG1CA,EAAS,SANM,IAOxB,CAEO,SAASC,EAAYF,EAA0C,CACpE,GAAI,CACF,IAAMG,EAAOJ,EAAYC,CAAW,EACpC,GAAIG,IAAS,KAAM,OAAO,KAK1B,IAAMC,GAAY,SAAS,UAAY,IAAI,MAAM,OAAQ,CAAC,EAAE,CAAC,GAAK,GAElE,MAAO,CACL,KAAMD,EAAK,MAAM,EAAG,IAAgB,EACpC,OAAQ,OAAO,SAAS,OACxB,SAAUC,EAAWA,EAAS,MAAM,EAAG,IAAgB,EAAI,IAC7D,CACF,MAAQ,CACN,OAAO,IACT,CACF,CAEA,SAASC,EAAUF,EAAsB,CACvC,IAAMG,EAAOH,EAAK,MAAM,OAAQ,CAAC,EAAE,CAAC,GAAK,GAGrCI,EAAUD,EACd,GAAI,CACFC,EAAU,mBAAmBD,CAAI,CACnC,MAAQ,CAER,CACA,GAAIC,IAAY,IAAK,MAAO,IAC5B,IAAMC,EAAUD,EAAQ,QAAQ,OAAQ,EAAE,EAC1C,OAAOC,IAAY,GAAK,IAAMA,CAChC,CAEA,SAASC,EAAYC,EAAeP,EAAuB,CACzD,GAAI,OAAOO,GAAS,UAAYA,IAAS,KAAM,MAAO,GACtD,GAAM,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIF,EACzB,GAAI,OAAOC,GAAU,UAAY,OAAOC,GAAU,UAAYA,IAAU,GAAI,MAAO,GAEnF,OAAQD,EAAO,CACb,IAAK,QACH,OAAOR,IAASE,EAAUO,CAAK,EACjC,IAAK,cAGH,OAAOT,EAAK,WAAWS,CAAK,IAAMT,IAAS,IAAMA,EAAO,GAAGA,CAAI,KAAK,WAAWS,CAAK,EACtF,IAAK,WACH,OAAOT,EAAK,SAASS,CAAK,EAC5B,QACE,MAAO,EACX,CACF,CAEA,SAASC,EAAKC,EAAqCC,EAAuC,CACxF,IAAMH,EAAQE,IAAQC,CAAG,EACzB,OAAO,MAAM,QAAQH,CAAK,EAAIA,EAAQ,CAAC,CACzC,CAMO,SAASI,EAAiBF,EAAqCX,EAA8B,CAClG,IAAMc,EAAUJ,EAAKC,EAAO,SAAS,EAC/BI,EAAUL,EAAKC,EAAO,SAAS,EAErC,GAAIG,EAAQ,SAAW,GAAKC,EAAQ,SAAW,EAAG,MAAO,GACzD,GAAI,OAAOf,GAAS,UAAYA,IAAS,GAAI,MAAO,GAEpD,IAAMgB,EAAad,EAAUF,CAAI,EAEjC,OAAIe,EAAQ,KAAMR,GAASD,EAAYC,EAAMS,CAAU,CAAC,EAAU,GAE3DF,EAAQ,SAAW,GAAKA,EAAQ,KAAMP,GAASD,EAAYC,EAAMS,CAAU,CAAC,CACrF,CAKA,IAAMC,GAAyB,IACzBC,GAAyB,IAI3BC,EAAY,GAiBT,SAASC,EACdC,EACAC,EACY,CACZ,GAAIH,GAAa,OAAO,OAAW,KAAe,CAAC,OAAO,QAAS,MAAO,IAAM,CAAC,EAEjF,GAAM,CAAE,YAAAtB,CAAY,EAAIyB,EAClBC,EAAU,OAAO,QACjBC,EAAyD,CAC7D,UAAWD,EAAQ,UACnB,aAAcA,EAAQ,YACxB,EACME,EAAyC,CAC7C,UAAW,OAAO,UAAU,eAAe,KAAKF,EAAS,WAAW,EACpE,aAAc,OAAO,UAAU,eAAe,KAAKA,EAAS,cAAc,CAC5E,EACMG,EAAgE,CAAC,EAEnEC,EAAW,GACXC,EAAWN,EAAQ,cAAiBA,EAAQ,kBAAoB,KAAQ1B,EAAYC,CAAW,EAC/FgC,EACAC,EAAe,EAEbC,EAAW,IAAM,CACrB,GAAIJ,EAAU,OACd,IAAMK,EAAM,KAAK,IAAI,EACjBH,IAAU,QAAaG,EAAMF,GAAgBZ,KAE7CW,IAAU,SAAWC,EAAeE,GACxC,aAAaH,CAAK,EAClBA,EAAQ,WAAW,IAAM,CAEvB,GADAA,EAAQ,OACJ,CAAAF,EACJ,GAAI,CACF,IAAM3B,EAAOJ,EAAYC,CAAW,EACpC,GAAIG,IAAS4B,EAAU,OACvBA,EAAW5B,EACXqB,EAAWrB,CAAI,CACjB,OAASiC,EAAO,CACd,QAAQ,KAAK,4CAA6CA,CAAK,CACjE,CACF,EAAGhB,EAAsB,EAC3B,EAEMiB,EAAU,IAAM,CACpB,QAAWC,IAAU,CAAC,YAAa,cAAc,EAG3CT,EAAQS,CAAM,GAAKZ,EAAQY,CAAM,IAAMT,EAAQS,CAAM,IACnDV,EAAOU,CAAM,EAAGZ,EAAQY,CAAM,EAAIX,EAAUW,CAAM,EACjD,OAAQZ,EAA+CY,CAAM,EAGxE,EAEA,GAAI,CACF,QAAWA,IAAU,CAAC,YAAa,cAAc,EAAY,CAC3D,IAAMC,EAAWZ,EAAUW,CAAM,EAC3BE,EAAU,YAA4BC,EAAwC,CAClF,IAAMC,EAASH,EAAS,MAAM,KAAME,CAAI,EACxC,GAAI,CACFP,EAAS,CACX,MAAQ,CAER,CACA,OAAOQ,CACT,EACAhB,EAAQY,CAAM,EAAIE,EAClBX,EAAQS,CAAM,EAAIE,CACpB,CACF,OAASJ,EAAO,CACd,OAAAN,EAAW,GACXO,EAAQ,EACR,QAAQ,KAAK,oGAAgGD,CAAK,EAC3G,IAAM,CAAC,CAChB,CAEA,OAAAd,EAAY,GAERG,EAAQ,eAAeS,EAAS,EAEpC,OAAO,iBAAiB,WAAYA,CAAQ,EACxClC,GAAa,OAAO,iBAAiB,aAAckC,CAAQ,EAExD,IAAM,CACXJ,EAAW,GACX,aAAaE,CAAK,EAClB,OAAO,oBAAoB,WAAYE,CAAQ,EAC/C,OAAO,oBAAoB,aAAcA,CAAQ,EACjDG,EAAQ,EACRf,EAAY,EACd,CACF,CC1KA,IAAMqB,GAAiD,CACrD,OAAQ,CAAC,EAAG,EAAE,EACd,MAAO,CAAC,EAAG,CAAC,EACZ,MAAO,CAAC,EAAG,CAAC,CACd,EAEMC,EAAyC,CAC7C,eAAgB,0BAChB,cAAe,yBACf,gBAAiB,mDACjB,YAAa,uBACb,WAAY,qBACd,EAEMC,GAAkB,OAQlBC,GAAuB,IAIzBC,EAA0C,KAKvC,SAASC,GAA2B,CACzC,OAAOD,IAAiB,IAC1B,CASO,SAASE,EACdC,EACAC,EACAC,EACAC,EACAC,EACM,CACN,GAAI,CACF,GAAIP,EAAc,OAElB,IAAMQ,EAAQ,WAAW,IAAM,CAC7B,GAAID,GAAc,CAACA,EAAW,EAAG,CAC/BP,EAAe,KACf,MACF,CAEAS,GAAcN,EAASE,CAAW,EAAE,MAAOK,GAAmB,CAM5DV,EAAe,KACf,QAAQ,KAAK,mCAAoCU,CAAK,CACxD,CAAC,CACH,EAAG,KAAK,IAAI,EAAGJ,CAAY,EAAI,GAAI,EAInCN,EAAe,CACb,OAAQ,IAAM,aAAaQ,CAAK,CAClC,CACF,OAASE,EAAO,CACd,QAAQ,KAAK,mCAAoCA,CAAK,CACxD,CACF,CAEA,eAAeD,GAAcN,EAAiBQ,EAA8B,CAC1E,IAAMC,EAAW,MAAM,MAAM,GAAGT,CAAO,YAAYQ,CAAK,EAAE,EAE1D,GAAI,CAACC,EAAS,GAAI,CAChBZ,EAAe,KACf,MACF,CAEA,IAAMa,EAA6B,MAAMD,EAAS,KAAK,EACvDE,GAAMX,EAASQ,EAAOE,EAAK,IAAI,CACjC,CAEA,SAASC,GAAMX,EAAiBQ,EAAeI,EAA0B,CACvE,IAAMC,EAAQpB,GAAamB,EAAO,UAAU,EAI5C,GAAI,CAACC,EAAO,CACVhB,EAAe,KACf,MACF,CAEA,IAAMiB,EAAeF,EAAO,UAAU,UAAU,QAAQ,QAAU,CAAC,EAC7DG,EAAmB,OAAO,YAAcnB,GAIxCoB,EAAYD,EAAmB,SAAYD,EAAa,YAAc,SACtEG,EAAaC,GAAcN,EAAO,UAAU,QAAQ,SAAW,EAAE,EACjEO,EAAkBL,EAAa,kBAAoB,UACnDM,EAAYN,EAAa,YAAc,UACvCO,EAAcP,EAAa,cAAgB,UAC3CQ,EAAeR,EAAa,eAAiB,GAC7CS,EAAST,EAAa,SAAWnB,GAEjC6B,EAAO,SAAS,cAAc,KAAK,EACzCA,EAAK,aAAa,sBAAuB,EAAE,EAC3CA,EAAK,MAAM,QACTR,IAAc,SACV,kDAAkDO,CAAM,IACxD,kBAAkB7B,EAAeoB,EAAa,UAAY,cAAc,GAAKpB,EAAe,cAAc,CAAC,WAAW6B,CAAM,IAElI,IAAME,EAASD,EAAK,aAAa,CAAE,KAAM,MAAO,CAAC,EAa3CE,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,YAAc;AAAA;AAAA;AAAA;AAAA,oBAIFP,CAAe;AAAA,eACpBC,CAAS;AAAA,0BACEC,CAAW;AAAA,uBACdL,IAAc,SAAW,GAAG,OAAOM,CAAY,GAAK,CAAC,MAAM,OAAOA,CAAY,GAAK,CAAC,SAAW,GAAG,OAAOA,CAAY,GAAK,CAAC,IAAI;AAAA;AAAA;AAAA,eAGvIN,IAAc,SAAW,OAAS,OAAO;AAAA,mBACrCA,IAAc,SAAW,OAAS,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAajED,EAME,+FACA,kBAAkB;AAAA;AAAA,yEAE6CM,CAAW,oGAAoGN,EAAmB,kBAAoB,EAAE;AAAA,0CACvLE,GAAc,SAAS,iBAAiBA,GAAc,SAAS,YAAYA,EAAaU,EAAkBV,CAAU,EAAI,SAAS;AAAA,kEACzGI,CAAW;AAAA,qFACQJ,GAAc,SAAS,YAAYA,EAAaU,EAAkBV,CAAU,EAAI,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,mFAK3FA,GAAc,SAAS;AAAA,IAGxG,IAAMW,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,UAAY,MAEhB,IAAIC,EAA+B,KAC/BC,EAAa,GACbC,EAAY,GAEVC,EAAc,SAAS,cAAc,QAAQ,EACnDA,EAAY,KAAO,SACnBA,EAAY,UAAY,QACxBA,EAAY,aAAa,aAAc,OAAO,EAC9CA,EAAY,YAAc,SAC1BA,EAAY,iBAAiB,QAAS,IAAM,CACrCD,GAAWE,GAAgBjC,EAASQ,CAAK,EAC9C0B,EAAQV,CAAI,CACd,CAAC,EACDI,EAAI,YAAYI,CAAW,EAE3B,IAAMG,EAAUC,GAAQxB,EAAO,UAAU,IAAI,EAC7C,GAAIuB,EAAS,CACX,IAAME,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,UAAY,OAChBA,EAAI,IAAMF,EACVE,EAAI,IAAM,GACVT,EAAI,YAAYS,CAAG,CACrB,CAEA,IAAMC,EAAW,SAAS,cAAc,GAAG,EAC3CA,EAAS,UAAY,WACrBA,EAAS,YAAc1B,EAAO,SAC9BgB,EAAI,YAAYU,CAAQ,EAExB,IAAMC,EAAY,SAAS,cAAc,KAAK,EAC9CA,EAAU,UAAY,SACtB,IAAMC,EAAoC,CAAC,EAC3C,QAASC,EAAQ5B,EAAM,CAAC,EAAG4B,GAAS5B,EAAM,CAAC,EAAG4B,IAAS,CACrD,IAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,KAAO,SACdA,EAAO,UAAY,YACnBA,EAAO,YAAc,OAAOD,CAAK,EACjCC,EAAO,iBAAiB,QAAS,IAAM,CACrCb,EAAgBY,EAChB,QAAWE,MAAKH,EAAcG,GAAE,UAAU,OAAO,UAAU,EAC3DD,EAAO,UAAU,IAAI,UAAU,EAC/BE,EAAU,YAAc,EAC1B,CAAC,EACDJ,EAAa,KAAKE,CAAM,EACxBH,EAAU,YAAYG,CAAM,CAC9B,CACAd,EAAI,YAAYW,CAAS,EAEzB,IAAMM,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,YAAc,8CACvBA,EAAS,UAAY,IACrBjB,EAAI,YAAYiB,CAAQ,EAExB,IAAMD,EAAY,SAAS,cAAc,GAAG,EAC5CA,EAAU,UAAY,QACtBhB,EAAI,YAAYgB,CAAS,EAEzB,IAAME,EAAe,SAAS,cAAc,QAAQ,EACpDA,EAAa,KAAO,SACpBA,EAAa,UAAY,aACzBA,EAAa,YAAc,SAC3BA,EAAa,iBAAiB,QAAS,IAAM,CAC3C,GAAI,CAAAhB,EAEJ,IAAID,IAAkB,KAAM,CAC1Be,EAAU,YAAc,2CACxB,MACF,CAEAd,EAAa,GACbgB,EAAa,SAAW,GACxBA,EAAa,YAAc,mBAE3B,MAAM,GAAG9C,CAAO,YAAYQ,CAAK,aAAc,CAC7C,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,UAAU,CAAE,QAAS,CAAE,MAAOqB,CAAc,EAAG,cAAegB,EAAS,MAAM,KAAK,GAAK,IAAK,CAAC,CAC1G,CAAC,EACE,KAAK,MAAOpC,GAAa,CACxB,GAAIA,EAAS,SAAW,KAAQ,MAAMsC,GAAmBtC,CAAQ,EAAI,CAEnEsB,EAAY,GACZiB,EAAiBpB,EAAKqB,EAAgB,EACtC,MACF,CACA,GAAI,CAACxC,EAAS,GAAI,MAAM,IAAI,MAAM,UAAUA,EAAS,MAAM,EAAE,EAC7D,IAAMC,EAAqC,MAAMD,EAAS,KAAK,EAC/DsB,EAAY,GACZiB,EAAiBpB,EAAKlB,EAAK,IAAI,CACjC,CAAC,EACA,MAAM,IAAM,CACXoB,EAAa,GACbgB,EAAa,SAAW,GACxBA,EAAa,YAAc,SAC3BF,EAAU,YAAc,yCAC1B,CAAC,EACL,CAAC,EACDhB,EAAI,YAAYkB,CAAY,EAE5BrB,EAAO,YAAYC,CAAK,EACxBD,EAAO,YAAYG,CAAG,EACtB,SAAS,KAAK,YAAYJ,CAAI,EAE9B3B,EAAe,CAAE,OAAQ,IAAMqC,EAAQV,CAAI,CAAE,CAC/C,CAEA,IAAMyB,GAAuC,CAC3C,WAAY,CAAE,MAAO,KAAM,QAAS,gDAAiD,CACvF,EAEA,eAAeF,GAAmBtC,EAAsC,CACtE,GAAI,CAEF,OAD4C,MAAMA,EAAS,KAAK,GACpD,OAAO,OAAS,mBAC9B,MAAQ,CACN,MAAO,EACT,CACF,CAEA,SAASuC,EAAiBpB,EAAqBnB,EAAoC,CAGjF,KAAOmB,EAAI,SAAS,OAAS,GAC3BA,EAAI,YAAYA,EAAI,SAAsB,EAG5C,GAAM,CAAE,WAAAsB,CAAW,EAAIzC,EAEvB,GAAIyC,EAAW,MAAO,CACpB,IAAMC,EAAQ,SAAS,cAAc,GAAG,EACxCA,EAAM,UAAY,QAClBA,EAAM,YAAcD,EAAW,MAC/BE,EAAqBD,EAAOD,EAAW,WAAW,EAClDtB,EAAI,YAAYuB,CAAK,CACvB,CAEA,IAAME,EAAU,SAAS,cAAc,GAAG,EAC1CA,EAAQ,UAAY,UACpBA,EAAQ,YAAcH,EAAW,SAAW,+BAC5CE,EAAqBC,EAASH,EAAW,aAAa,EACtDtB,EAAI,YAAYyB,CAAO,EAEvB,IAAMC,EAAYlB,GAAQ3B,EAAS,mBAAmB,EACtD,GAAI6C,EAAW,CACb,IAAMC,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,UAAY,SACjBA,EAAK,KAAOD,EACZC,EAAK,OAAS,SACdA,EAAK,IAAM,sBACXA,EAAK,YAAc,iBACnB3B,EAAI,YAAY2B,CAAI,CACtB,CACF,CAEA,SAASH,EAAqBI,EAAiB9B,EAA0C,CAClFA,IACDA,EAAM,QAAO8B,EAAG,MAAM,MAAQ9B,EAAM,OACpCA,EAAM,OAAM8B,EAAG,MAAM,SAAW,GAAG9B,EAAM,IAAI,MAC7CA,EAAM,QAAO8B,EAAG,MAAM,UAAY9B,EAAM,OAC9C,CAEA,SAASQ,EAAQV,EAAyB,CACxCA,EAAK,OAAO,EACZ3B,EAAe,IACjB,CAEA,SAASoC,GAAgBjC,EAAiBQ,EAAqB,CAG7D,MAAM,GAAGR,CAAO,YAAYQ,CAAK,mBAAoB,CACnD,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAmB,EAC9C,KAAM,KAAK,UAAU,CAAE,WAAY,WAAY,CAAC,CAClD,CAAC,EAAE,MAAOD,GAAmB,CAC3B,QAAQ,KAAK,+CAAgDA,CAAK,CACpE,CAAC,CACH,CAQA,SAAS6B,GAAQqB,EAAiD,CAChE,GAAI,CAACA,EAAO,OAAO,KACnB,GAAI,CACF,IAAMC,EAAM,IAAI,IAAID,CAAK,EACzB,MAAO,YAAY,KAAKC,EAAI,QAAQ,EAAIA,EAAI,KAAO,IACrD,MAAQ,CACN,OAAO,IACT,CACF,CAEA,SAASxC,GAAcuC,EAA8B,CACnD,IAAME,EAAQ,sCAAsC,KAAKF,CAAK,EAC9D,GAAIE,EAAO,MAAO,IAAIA,EAAM,CAAC,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAG,YAAY,EACpG,IAAMC,EAAO,qBAAqB,KAAKH,CAAK,EAC5C,OAAOG,EAAO,IAAIA,EAAK,CAAC,CAAC,GAAG,YAAY,EAAI,IAC9C,CAEA,SAASjC,EAAkBkC,EAAqB,CAC9C,IAAMC,EAAI,SAASD,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAChCE,EAAI,SAASF,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAChClB,EAAI,SAASkB,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAEtC,OADaC,EAAI,IAAMC,EAAI,IAAMpB,EAAI,KAAO,KAC9B,IAAM,UAAY,SAClC,CFvbA,IAAIqB,EAAsB,KACtBC,EAAyC,KAGzCC,GAAsC,KAEtCC,EAA6C,KAE3CC,GAAkB,cAElBC,GAAmB,6BAGlB,SAASC,GACdC,EAUAC,EACM,CAIN,GAAI,CACF,GAAI,OAAOD,GAAc,UAAYA,EAAU,KAAK,IAAM,GAAI,CAC5D,QAAQ,KAAK,oFAA+E,EAC5F,MACF,CAEIP,GACF,QAAQ,KAAK,4EAAuE,EAYtF,IAAMS,EAAcD,GAAS,SACvBE,EAA8BD,IAAgB,SAAc,OAAOA,GAAgB,UAAYA,EAAY,KAAK,IAAM,IAExHC,GACF,QAAQ,KAAK,iFAA4E,EAG3F,IAAMC,GAAYD,GAA+BD,IAAgB,OAAYJ,GAAmBI,EAAY,KAAK,GAAG,QAAQ,OAAQ,EAAE,EAQtI,GAPAT,EAAQ,CAAE,UAAAO,EAAW,SAAAI,EAAU,YAAaH,GAAS,YAAc,MAAO,EAG1EP,IAAoB,EACpBA,EAAoB,KACpBE,EAAwB,KAEpBK,GAAS,UAAW,CACtB,IAAMI,EAAWJ,EAAQ,SAErBI,IAAa,QACf,QAAQ,KAAK,sHAAiH,EAKhI,IAAMC,EAAoB,IAAM,CAC9B,IAAIC,EACJ,GAAI,CACFA,EAAa,OAAOF,GAAa,WAAaA,EAAS,EAAIA,CAC7D,OAASG,EAAO,CAGd,QAAQ,KAAK,0FAAsFA,CAAK,EACxGC,EAAK,OAAW,CAAE,UAAWC,GAAiBT,EAAQ,SAAS,CAAE,CAAC,EAClE,MACF,CACKM,GACLE,EAAK,OAAW,CAAE,SAAUF,EAAY,UAAWG,GAAiBT,EAAQ,SAAS,CAAE,CAAC,CAC1F,EACAL,EAAwBU,EAExBZ,EAAoBiB,EACjBC,GAAS,CACRjB,GAAuBiB,EACvBN,EAAkB,CACpB,EACA,CAAE,YAAab,EAAM,YAAa,cAAe,GAAM,iBAAkBE,EAAqB,CAChG,CACF,CACF,OAASa,EAAO,CACd,QAAQ,KAAK,2BAA4BA,CAAK,CAChD,CACF,CAGO,SAASK,GACdC,EACAC,EACAd,EACM,CACN,IAAMe,EAAeC,EAAa,UAAU,EAC5C,GAAKD,EAEL,GAAI,CACFE,EAAKF,EAAc,YAAa,CAC9B,YAAaF,EACb,GAAIC,IAAW,OAAY,CAAE,OAAAA,CAAO,EAAI,CAAC,EACzC,GAAId,GAAS,QAAU,OAAY,CAAE,MAAOA,EAAQ,KAAM,EAAI,CAAC,EAC/D,GAAIA,GAAS,OAAS,OAAY,CAAE,KAAMA,EAAQ,IAAK,EAAI,CAAC,EAC5D,GAAIA,GAAS,UAAY,OAAY,CAAE,SAAUA,EAAQ,OAAQ,EAAI,CAAC,EACtE,GAAGkB,EAAelB,CAAO,CAC3B,CAAC,CACH,OAASO,EAAO,CACd,QAAQ,KAAK,+BAAgCA,CAAK,CACpD,CACF,CAGO,SAASY,GAAMN,EAAoBC,EAAkCd,EAAuD,CACjI,IAAMe,EAAeC,EAAa,OAAO,EACzC,GAAKD,EAEL,GAAI,CACFE,EAAKF,EAAc,SAAU,CAC3B,YAAaF,EACb,GAAIC,IAAW,OAAY,CAAE,OAAAA,CAAO,EAAI,CAAC,EACzC,GAAId,GAAS,OAAS,OAAY,CAAE,KAAMA,EAAQ,IAAK,EAAI,CAAC,EAC5D,GAAGkB,EAAelB,CAAO,CAC3B,CAAC,CACH,OAASO,EAAO,CACd,QAAQ,KAAK,4BAA6BA,CAAK,CACjD,CACF,CAWO,SAASa,GAAMC,EAAeC,EAAsCtB,EAA2D,CACpIuB,GAAU,QAASF,EAAOC,EAAYtB,CAAO,CAC/C,CAGO,SAASQ,EAAKc,EAAsCtB,EAA2D,CACpHuB,GAAU,OAAQ3B,GAAiB0B,EAAYtB,CAAO,CACxD,CAEA,SAASuB,GAAUC,EAAgBH,EAAeC,EAAsCtB,EAA2D,CACjJ,IAAMe,EAAeC,EAAaQ,CAAM,EACxC,GAAKT,EAEL,GAAI,CACFE,EACEF,EACA,SACA,CACE,MAAAM,EACA,GAAIrB,GAAS,WAAa,OAAY,CAAE,UAAWA,EAAQ,QAAS,EAAI,CAAC,EACzE,GAAGkB,EAAelB,CAAO,EACzB,GAAIsB,IAAe,OAAY,CAAE,WAAAA,CAAW,EAAI,CAAC,EACjD,GAAGG,GAAUV,CAAY,EAGzB,GAAIW,EAAgB,EAAI,CAAE,YAAa,EAAK,EAAI,CAAC,CACnD,EACCC,GAAmC,CAClC,IAAMC,EAAOD,EAAK,KAClB,GAAI,CAACC,GAAM,iBAAmB,CAACA,EAAK,aAAe,CAACA,EAAK,aAAc,OAIvE,IAAMC,EAAYD,EAAK,YAAc,KACrCE,EACEf,EAAa,SACba,EAAK,YACLA,EAAK,aACLA,EAAK,eAAiB,EACtBC,EACI,IAAM,CACJ,GAAIE,EAAiBF,EAAWG,EAAYjB,EAAa,WAAW,CAAC,EAAG,MAAO,GAM/E,IAAMkB,EAAatC,EACnB,OAAIsC,GAAY,WAAWA,EAAY,CAAC,EACjC,EACT,EACA,MACN,CACF,CACF,CACF,OAAS1B,EAAO,CACd,QAAQ,KAAK,aAAaiB,CAAM,aAAcjB,CAAK,CACrD,CACF,CAOA,SAASW,EAAelB,EAA2D,CACjF,IAAMkC,EAAYlC,GAAS,UAC3B,OAAO,OAAOkC,GAAc,UAAYA,IAAc,GAAK,CAAE,UAAAA,CAAU,EAAI,CAAC,CAC9E,CAGA,SAASzB,GAAiByB,EAAwC,CAChE,GAAI,CACF,OAAO,OAAOA,GAAc,WAAaA,EAAU,EAAKA,CAC1D,MAAQ,CACN,MACF,CACF,CAEA,SAAST,GAAUV,EAAgE,CACjF,IAAMoB,EAAUC,EAAYrB,EAAa,WAAW,EACpD,OAAOoB,EAAU,CAAE,KAAMA,CAAQ,EAAI,CAAC,CACxC,CAEA,SAASnB,EAAaQ,EAA8B,CAClD,OAAIhC,IAEJ,QAAQ,KAAK,aAAagC,CAAM,oDAA+C,EACxE,KACT,CAiBA,SAASP,EAAkBF,EAAqBJ,EAAcgB,EAA+BU,EAAqC,CAChI,GAAM,CAAE,UAAAtC,EAAW,SAAAI,CAAS,EAAIY,EAEhC,MAAM,GAAGZ,CAAQ,GAAGQ,CAAI,GAAI,CAC1B,OAAQ,OACR,UAAW,GACX,QAAS,CACP,cAAe,UAAUZ,CAAS,GAClC,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU4B,CAAI,CAC3B,CAAC,EACE,KAAK,MAAOW,GAAa,CACxB,GAAI,CAACA,EAAS,GAAI,CAChB,IAAMC,EAAkC,MAAMD,EAAS,KAAK,EAAE,MAAM,IAAM,IAAI,EACxEE,EAAOD,GAAW,OAAO,MAAQD,EAAS,OAC1CG,EAAUF,GAAW,OAAO,SAAWD,EAAS,WACtD,QAAQ,KAAK,aAAa3B,CAAI,YAAY6B,CAAI,WAAMC,CAAO,EAAE,EAC7D,MACF,CAIA,GAAI,CAACJ,EAAW,OAEhB,IAAMK,EAAe,MAAMJ,EAAS,KAAK,EAAE,MAAM,IAAM,IAAI,EACvDI,GAAcL,EAAUK,CAAY,CAC1C,CAAC,EACA,MAAOnC,GAAmB,CACzB,QAAQ,KAAK,aAAaI,CAAI,WAAYJ,CAAK,CACjD,CAAC,CACL","names":["src_exports","__export","group","identify","init","page","track","__toCommonJS","currentPath","hashRouting","location","pageContext","path","referrer","normalise","bare","decoded","trimmed","ruleMatches","rule","match","value","list","rules","key","matchesPageRules","include","exclude","normalised","NAVIGATION_DEBOUNCE_MS","NAVIGATION_MAX_WAIT_MS","installed","installAutoPage","onNavigate","options","history","originals","hadOwn","patched","disposed","lastPath","timer","pendingSince","schedule","now","error","restore","method","original","wrapper","args","result","SCORE_RANGES","POSITION_STYLE","DEFAULT_Z_INDEX","MOBILE_BREAKPOINT_PX","activeWidget","hasActiveWidget","renderWidget","apiHost","campaignId","surveyToken","delaySeconds","shouldShow","timer","fetchAndMount","error","token","response","body","mount","survey","range","widgetConfig","isMobileViewport","popupType","brandColor","normalizedHex","backgroundColor","textColor","borderColor","borderRadius","zIndex","host","shadow","style","contrastTextColor","box","selectedScore","submitting","submitted","closeButton","reportDismissal","unmount","logoUrl","safeUrl","img","question","scoresRow","scoreButtons","score","button","b","errorText","feedback","submitButton","isAlreadySubmitted","renderCompletion","ALREADY_RECORDED","completion","title","applyCompletionStyle","message","reviewUrl","link","el","value","url","short","long","hex","r","g","state","uninstallAutoPage","lastAutoReportedPath","reevaluateCurrentPage","PAGE_VIEW_EVENT","DEFAULT_ENDPOINT","init","publicKey","options","rawEndpoint","endpointProvidedButUnusable","endpoint","personId","reportCurrentPage","resolvedId","error","page","resolveSignature","installAutoPage","path","identify","externalId","traits","currentState","resolveState","send","signatureField","group","track","event","properties","sendTrack","method","pageField","hasActiveWidget","body","data","pageRules","renderWidget","matchesPageRules","currentPath","reevaluate","signature","context","pageContext","onSuccess","response","errorBody","code","message","responseBody"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type PersonId = string | (() => string | undefined);
|
|
2
|
+
/** Start the SDK with your public key. Call it once, before the other functions. Never throws. */
|
|
3
|
+
declare function init(publicKey: string, options?: {
|
|
4
|
+
endpoint?: string;
|
|
5
|
+
pageviews?: 'history' | 'hash';
|
|
6
|
+
personId?: PersonId;
|
|
7
|
+
signature?: PersonId;
|
|
8
|
+
}): void;
|
|
9
|
+
/** Create or update a person. Optional `email`, `name`, `groupId` and `signature` (identity verification). */
|
|
10
|
+
declare function identify(externalId: string, traits?: Record<string, unknown>, options?: {
|
|
11
|
+
email?: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
groupId?: string;
|
|
14
|
+
signature?: string;
|
|
15
|
+
}): void;
|
|
16
|
+
/** Create or update a group, for example a company. Optional `name` and `signature`. */
|
|
17
|
+
declare function group(externalId: string, traits?: Record<string, unknown>, options?: {
|
|
18
|
+
name?: string;
|
|
19
|
+
signature?: string;
|
|
20
|
+
}): void;
|
|
21
|
+
/** Record an event for a person. Pass `personId` (and `signature` when identity verification is on). A survey can appear when the event qualifies. */
|
|
22
|
+
declare function track(event: string, properties?: Record<string, unknown>, options?: {
|
|
23
|
+
personId?: string;
|
|
24
|
+
signature?: string;
|
|
25
|
+
}): void;
|
|
26
|
+
/** Record a page view in a single-page app: call it from your router's after-navigation hook. Pass `personId` like `track()`. */
|
|
27
|
+
declare function page(properties?: Record<string, unknown>, options?: {
|
|
28
|
+
personId?: string;
|
|
29
|
+
signature?: string;
|
|
30
|
+
}): void;
|
|
31
|
+
|
|
32
|
+
export { group, identify, init, page, track };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type PersonId = string | (() => string | undefined);
|
|
2
|
+
/** Start the SDK with your public key. Call it once, before the other functions. Never throws. */
|
|
3
|
+
declare function init(publicKey: string, options?: {
|
|
4
|
+
endpoint?: string;
|
|
5
|
+
pageviews?: 'history' | 'hash';
|
|
6
|
+
personId?: PersonId;
|
|
7
|
+
signature?: PersonId;
|
|
8
|
+
}): void;
|
|
9
|
+
/** Create or update a person. Optional `email`, `name`, `groupId` and `signature` (identity verification). */
|
|
10
|
+
declare function identify(externalId: string, traits?: Record<string, unknown>, options?: {
|
|
11
|
+
email?: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
groupId?: string;
|
|
14
|
+
signature?: string;
|
|
15
|
+
}): void;
|
|
16
|
+
/** Create or update a group, for example a company. Optional `name` and `signature`. */
|
|
17
|
+
declare function group(externalId: string, traits?: Record<string, unknown>, options?: {
|
|
18
|
+
name?: string;
|
|
19
|
+
signature?: string;
|
|
20
|
+
}): void;
|
|
21
|
+
/** Record an event for a person. Pass `personId` (and `signature` when identity verification is on). A survey can appear when the event qualifies. */
|
|
22
|
+
declare function track(event: string, properties?: Record<string, unknown>, options?: {
|
|
23
|
+
personId?: string;
|
|
24
|
+
signature?: string;
|
|
25
|
+
}): void;
|
|
26
|
+
/** Record a page view in a single-page app: call it from your router's after-navigation hook. Pass `personId` like `track()`. */
|
|
27
|
+
declare function page(properties?: Record<string, unknown>, options?: {
|
|
28
|
+
personId?: string;
|
|
29
|
+
signature?: string;
|
|
30
|
+
}): void;
|
|
31
|
+
|
|
32
|
+
export { group, identify, init, page, track };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
function P(t){let e=typeof window>"u"?void 0:window.location;return e?t&&e.hash.startsWith("#/")?e.hash.slice(1).split("?")[0]??null:e.pathname:null}function W(t){try{let e=P(t);if(e===null)return null;let n=(document.referrer||"").split(/[?#]/,1)[0]??"";return{path:e.slice(0,2048),origin:window.location.origin,referrer:n?n.slice(0,2048):null}}catch{return null}}function j(t){let e=t.split(/[?#]/,1)[0]??"",n=e;try{n=decodeURIComponent(e)}catch{}if(n==="/")return"/";let r=n.replace(/\/+$/,"");return r===""?"/":r}function H(t,e){if(typeof t!="object"||t===null)return!1;let{match:n,value:r}=t;if(typeof n!="string"||typeof r!="string"||r==="")return!1;switch(n){case"exact":return e===j(r);case"starts_with":return e.startsWith(r)||(e==="/"?e:`${e}/`).startsWith(r);case"contains":return e.includes(r);default:return!1}}function B(t,e){let n=t?.[e];return Array.isArray(n)?n:[]}function U(t,e){let n=B(t,"include"),r=B(t,"exclude");if(n.length===0&&r.length===0)return!0;if(typeof e!="string"||e==="")return!1;let i=j(e);return r.some(o=>H(o,i))?!1:n.length===0||n.some(o=>H(o,i))}var oe=250,ie=1e3,T=!1;function q(t,e){if(T||typeof window>"u"||!window.history)return()=>{};let{hashRouting:n}=e,r=window.history,i={pushState:r.pushState,replaceState:r.replaceState},o={pushState:Object.prototype.hasOwnProperty.call(r,"pushState"),replaceState:Object.prototype.hasOwnProperty.call(r,"replaceState")},s={},a=!1,d=e.reportInitial?e.lastReportedPath??null:P(n),p,y=0,g=()=>{if(a)return;let l=Date.now();p!==void 0&&l-y>=ie||(p===void 0&&(y=l),clearTimeout(p),p=setTimeout(()=>{if(p=void 0,!a)try{let f=P(n);if(f===d)return;d=f,t(f)}catch(f){console.warn("[Pulseri] page navigation handler failed:",f)}},oe))},x=()=>{for(let l of["pushState","replaceState"])s[l]&&r[l]===s[l]&&(o[l]?r[l]=i[l]:delete r[l])};try{for(let l of["pushState","replaceState"]){let f=i[l],v=function(...u){let _=f.apply(this,u);try{g()}catch{}return _};r[l]=v,s[l]=v}}catch(l){return a=!0,x(),console.warn("[Pulseri] pageviews could not patch history \u2014 page views will not be reported automatically:",l),()=>{}}return T=!0,e.reportInitial&&g(),window.addEventListener("popstate",g),n&&window.addEventListener("hashchange",g),()=>{a=!0,clearTimeout(p),window.removeEventListener("popstate",g),window.removeEventListener("hashchange",g),x(),T=!1}}var se={"0_10":[0,10],"1_5":[1,5],"1_7":[1,7]},F={"bottom-right":"bottom:12px;right:12px;","bottom-left":"bottom:12px;left:12px;","bottom-center":"bottom:12px;left:50%;transform:translateX(-50%);","top-right":"top:12px;right:12px;","top-left":"top:12px;left:12px;"},ae=999999,le=480,b=null;function Y(){return b!==null}function K(t,e,n,r,i){try{if(b)return;let o=setTimeout(()=>{if(i&&!i()){b=null;return}ce(t,n).catch(s=>{b=null,console.warn("[Pulseri] widget failed to load:",s)})},Math.max(0,r)*1e3);b={remove:()=>clearTimeout(o)}}catch(o){console.warn("[Pulseri] renderWidget() failed:",o)}}async function ce(t,e){let n=await fetch(`${t}/surveys/${e}`);if(!n.ok){b=null;return}let r=await n.json();ue(t,e,r.data)}function ue(t,e,n){let r=se[n.scale_type];if(!r){b=null;return}let i=n.branding?.channels?.in_app?.widget??{},o=window.innerWidth<=le,s=o?"banner":i.popup_type??"corner",a=fe(n.branding?.colors?.primary??""),d=i.background_color??"#ffffff",p=i.text_color??"#1a1a1a",y=i.border_color??"#e5e7eb",g=i.border_radius??12,x=i.z_index??ae,l=document.createElement("div");l.setAttribute("data-pulseri-widget",""),l.style.cssText=s==="banner"?`position:fixed;left:0;right:0;bottom:0;z-index:${x};`:`position:fixed;${F[i.position??"bottom-right"]??F["bottom-right"]}z-index:${x};`;let f=l.attachShadow({mode:"open"}),v=document.createElement("style");v.textContent=`
|
|
2
|
+
:host { all: initial; }
|
|
3
|
+
* { box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
|
|
4
|
+
.box {
|
|
5
|
+
background: ${d};
|
|
6
|
+
color: ${p};
|
|
7
|
+
border: 1px solid ${y};
|
|
8
|
+
border-radius: ${s==="banner"?`${Number(g)||0}px ${Number(g)||0}px 0 0`:`${Number(g)||0}px`};
|
|
9
|
+
box-shadow: 0 4px 24px rgba(0,0,0,0.12);
|
|
10
|
+
padding: 20px;
|
|
11
|
+
width: ${s==="banner"?"100%":"320px"};
|
|
12
|
+
max-width: ${s==="banner"?"100%":"calc(100vw - 24px)"};
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
gap: 12px;
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
.close { position: absolute; top: 8px; right: 8px; border: none; background: none; cursor: pointer; font-size: 16px; line-height: 1; color: inherit; opacity: 0.6; padding: 4px; }
|
|
19
|
+
.close:hover { opacity: 1; }
|
|
20
|
+
.logo { max-height: 28px; max-width: 160px; object-fit: contain; align-self: center; }
|
|
21
|
+
.question { font-size: 14px; font-weight: 600; margin: 0; padding-right: 16px; }
|
|
22
|
+
.scores {
|
|
23
|
+
display: flex;
|
|
24
|
+
gap: 6px;
|
|
25
|
+
${o?"flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch;":"flex-wrap: wrap;"}
|
|
26
|
+
}
|
|
27
|
+
.score-btn { min-width: 32px; padding: 6px 10px; border: 1px solid ${y}; border-radius: 6px; background: transparent; color: inherit; font-size: 13px; cursor: pointer; ${o?"flex-shrink: 0;":""} }
|
|
28
|
+
.score-btn.selected { border-color: ${a??"#4f46e5"}; background: ${a??"#4f46e5"}; color: ${a?J(a):"#ffffff"}; font-weight: 600; }
|
|
29
|
+
textarea { font-size: 13px; padding: 8px; border: 1px solid ${y}; border-radius: 6px; resize: vertical; min-height: 50px; background: transparent; color: inherit; }
|
|
30
|
+
.submit-btn { padding: 8px 14px; border: none; border-radius: 6px; background: ${a??"#4f46e5"}; color: ${a?J(a):"#ffffff"}; font-size: 13px; font-weight: 600; cursor: pointer; }
|
|
31
|
+
.submit-btn:disabled { opacity: 0.6; cursor: default; }
|
|
32
|
+
.error { font-size: 12px; color: #dc2626; margin: 0; }
|
|
33
|
+
.title { font-size: 15px; font-weight: 600; margin: 0; }
|
|
34
|
+
.message { font-size: 13px; margin: 0; }
|
|
35
|
+
a.review { align-self: flex-start; font-size: 13px; font-weight: 600; color: ${a??"#4f46e5"}; }
|
|
36
|
+
`;let u=document.createElement("div");u.className="box";let _=null,R=!1,k=!1,w=document.createElement("button");w.type="button",w.className="close",w.setAttribute("aria-label","Close"),w.textContent="\u2715",w.addEventListener("click",()=>{k||ge(t,e),V(l)}),u.appendChild(w);let M=Z(n.branding?.logo);if(M){let c=document.createElement("img");c.className="logo",c.src=M,c.alt="",u.appendChild(c)}let $=document.createElement("p");$.className="question",$.textContent=n.question,u.appendChild($);let I=document.createElement("div");I.className="scores";let D=[];for(let c=r[0];c<=r[1];c++){let h=document.createElement("button");h.type="button",h.className="score-btn",h.textContent=String(c),h.addEventListener("click",()=>{_=c;for(let re of D)re.classList.remove("selected");h.classList.add("selected"),C.textContent=""}),D.push(h),I.appendChild(h)}u.appendChild(I);let E=document.createElement("textarea");E.placeholder="Anything else you'd like to add? (optional)",E.maxLength=5e3,u.appendChild(E);let C=document.createElement("p");C.className="error",u.appendChild(C);let m=document.createElement("button");m.type="button",m.className="submit-btn",m.textContent="Submit",m.addEventListener("click",()=>{if(!R){if(_===null){C.textContent="Please choose a score before submitting.";return}R=!0,m.disabled=!0,m.textContent="Submitting\u2026",fetch(`${t}/surveys/${e}/responses`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({answers:{score:_},feedback_text:E.value.trim()||null})}).then(async c=>{if(c.status===409&&await pe(c)){k=!0,G(u,de);return}if(!c.ok)throw new Error(`status ${c.status}`);let h=await c.json();k=!0,G(u,h.data)}).catch(()=>{R=!1,m.disabled=!1,m.textContent="Submit",C.textContent="Something went wrong. Please try again."})}}),u.appendChild(m),f.appendChild(v),f.appendChild(u),document.body.appendChild(l),b={remove:()=>V(l)}}var de={completion:{title:null,message:"Your response was already recorded. Thank you!"}};async function pe(t){try{return(await t.json()).error?.code==="already_submitted"}catch{return!1}}function G(t,e){for(;t.children.length>1;)t.removeChild(t.lastChild);let{completion:n}=e;if(n.title){let o=document.createElement("p");o.className="title",o.textContent=n.title,X(o,n.title_style),t.appendChild(o)}let r=document.createElement("p");r.className="message",r.textContent=n.message||"Thank you for your feedback!",X(r,n.message_style),t.appendChild(r);let i=Z(e.review_redirect_url);if(i){let o=document.createElement("a");o.className="review",o.href=i,o.target="_blank",o.rel="noopener noreferrer",o.textContent="Leave a review",t.appendChild(o)}}function X(t,e){e&&(e.color&&(t.style.color=e.color),e.size&&(t.style.fontSize=`${e.size}px`),e.align&&(t.style.textAlign=e.align))}function V(t){t.remove(),b=null}function ge(t,e){fetch(`${t}/surveys/${e}/delivery-events`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event_type:"dismissed"})}).catch(n=>{console.warn("[Pulseri] failed to report widget dismissal:",n)})}function Z(t){if(!t)return null;try{let e=new URL(t);return/^https?:$/.test(e.protocol)?e.href:null}catch{return null}}function fe(t){let e=/^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t);if(e)return`#${e[1]}${e[1]}${e[2]}${e[2]}${e[3]}${e[3]}`.toLowerCase();let n=/^#?([0-9a-f]{6})$/i.exec(t);return n?`#${n[1]}`.toLowerCase():null}function J(t){let e=parseInt(t.slice(1,3),16),n=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return(e*299+n*587+r*114)/1e3>=128?"#000000":"#ffffff"}var S=null,A=null,Q=null,N=null,me="page_viewed",he="https://api.pulseri.com/v1";function _e(t,e){try{if(typeof t!="string"||t.trim()===""){console.warn("[Pulseri] init() requires a non-empty public key string \u2014 ignoring this call.");return}S&&console.warn("[Pulseri] init() called again \u2014 replacing the previous configuration.");let n=e?.endpoint,r=n!==void 0&&(typeof n!="string"||n.trim()==="");r&&console.warn("[Pulseri] init() received an invalid endpoint \u2014 using the default instead.");let i=(r||n===void 0?he:n.trim()).replace(/\/+$/,"");if(S={publicKey:t,endpoint:i,hashRouting:e?.pageviews==="hash"},A?.(),A=null,N=null,e?.pageviews){let o=e.personId;o===void 0&&console.warn("[Pulseri] pageviews needs a personId \u2014 an anonymous page view can never surface a survey, so none will be sent.");let s=()=>{let a;try{a=typeof o=="function"?o():o}catch(d){console.warn("[Pulseri] pageviews personId() threw \u2014 sending this page view without a person id:",d),ee(void 0,{signature:te(e.signature)});return}a&&ee(void 0,{personId:a,signature:te(e.signature)})};N=s,A=q(a=>{Q=a,s()},{hashRouting:S.hashRouting,reportInitial:!0,lastReportedPath:Q})}}catch(n){console.warn("[Pulseri] init() failed:",n)}}function Ce(t,e,n){let r=z("identify");if(r)try{O(r,"/identify",{external_id:t,...e!==void 0?{traits:e}:{},...n?.email!==void 0?{email:n.email}:{},...n?.name!==void 0?{name:n.name}:{},...n?.groupId!==void 0?{group_id:n.groupId}:{},...L(n)})}catch(i){console.warn("[Pulseri] identify() failed:",i)}}function Pe(t,e,n){let r=z("group");if(r)try{O(r,"/group",{external_id:t,...e!==void 0?{traits:e}:{},...n?.name!==void 0?{name:n.name}:{},...L(n)})}catch(i){console.warn("[Pulseri] group() failed:",i)}}function Se(t,e,n){ne("track",t,e,n)}function ee(t,e){ne("page",me,t,e)}function ne(t,e,n,r){let i=z(t);if(i)try{O(i,"/track",{event:e,...r?.personId!==void 0?{person_id:r.personId}:{},...L(r),...n!==void 0?{properties:n}:{},...be(i),...Y()?{skip_survey:!0}:{}},o=>{let s=o.data;if(!s?.survey_eligible||!s.campaign_id||!s.survey_token)return;let a=s.page_rules??null;K(i.endpoint,s.campaign_id,s.survey_token,s.delay_seconds??0,a?()=>{if(U(a,P(i.hashRouting)))return!0;let d=N;return d&&setTimeout(d,0),!1}:void 0)})}catch(o){console.warn(`[Pulseri] ${t}() failed:`,o)}}function L(t){let e=t?.signature;return typeof e=="string"&&e!==""?{signature:e}:{}}function te(t){try{return typeof t=="function"?t():t}catch{return}}function be(t){let e=W(t.hashRouting);return e?{page:e}:{}}function z(t){return S||(console.warn(`[Pulseri] ${t}() called before init() \u2014 ignoring this call.`),null)}function O(t,e,n,r){let{publicKey:i,endpoint:o}=t;fetch(`${o}${e}`,{method:"POST",keepalive:!0,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json"},body:JSON.stringify(n)}).then(async s=>{if(!s.ok){let d=await s.json().catch(()=>null),p=d?.error?.code??s.status,y=d?.error?.message??s.statusText;console.warn(`[Pulseri] ${e} failed: ${p} \u2014 ${y}`);return}if(!r)return;let a=await s.json().catch(()=>null);a&&r(a)}).catch(s=>{console.warn(`[Pulseri] ${e} failed:`,s)})}export{Pe as group,Ce as identify,_e as init,ee as page,Se as track};
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/page.ts","../src/widget.ts","../src/index.ts"],"mappings":"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","names":["currentPath","hashRouting","location","pageContext","path","referrer","normalise","bare","decoded","trimmed","ruleMatches","rule","match","value","list","rules","key","matchesPageRules","include","exclude","normalised","NAVIGATION_DEBOUNCE_MS","NAVIGATION_MAX_WAIT_MS","installed","installAutoPage","onNavigate","options","history","originals","hadOwn","patched","disposed","lastPath","timer","pendingSince","schedule","now","error","restore","method","original","wrapper","args","result","SCORE_RANGES","POSITION_STYLE","DEFAULT_Z_INDEX","MOBILE_BREAKPOINT_PX","activeWidget","hasActiveWidget","renderWidget","apiHost","campaignId","surveyToken","delaySeconds","shouldShow","timer","fetchAndMount","error","token","response","body","mount","survey","range","widgetConfig","isMobileViewport","popupType","brandColor","normalizedHex","backgroundColor","textColor","borderColor","borderRadius","zIndex","host","shadow","style","contrastTextColor","box","selectedScore","submitting","submitted","closeButton","reportDismissal","unmount","logoUrl","safeUrl","img","question","scoresRow","scoreButtons","score","button","b","errorText","feedback","submitButton","isAlreadySubmitted","renderCompletion","ALREADY_RECORDED","completion","title","applyCompletionStyle","message","reviewUrl","link","el","value","url","short","long","hex","r","g","state","uninstallAutoPage","lastAutoReportedPath","reevaluateCurrentPage","PAGE_VIEW_EVENT","DEFAULT_ENDPOINT","init","publicKey","options","rawEndpoint","endpointProvidedButUnusable","endpoint","personId","reportCurrentPage","resolvedId","error","page","resolveSignature","installAutoPage","path","identify","externalId","traits","currentState","resolveState","send","signatureField","group","track","event","properties","sendTrack","method","pageField","hasActiveWidget","body","data","pageRules","renderWidget","matchesPageRules","currentPath","reevaluate","signature","context","pageContext","onSuccess","response","errorBody","code","message","responseBody"]}
|
package/dist/pulseri.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
(function () {
|
|
2
|
+
"use strict";var __PulseriBundle=(()=>{var T=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var le=(t,e)=>{for(var n in e)T(t,n,{get:e[n],enumerable:!0})},ce=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of se(e))!ae.call(t,o)&&o!==n&&T(t,o,{get:()=>e[o],enumerable:!(r=ie(e,o))||r.enumerable});return t};var ue=t=>ce(T({},"__esModule",{value:!0}),t);var $e={};le($e,{group:()=>Ee,identify:()=>Se,init:()=>Pe,page:()=>z,track:()=>Re});function P(t){let e=typeof window>"u"?void 0:window.location;return e?t&&e.hash.startsWith("#/")?e.hash.slice(1).split("?")[0]??null:e.pathname:null}function U(t){try{let e=P(t);if(e===null)return null;let n=(document.referrer||"").split(/[?#]/,1)[0]??"";return{path:e.slice(0,2048),origin:window.location.origin,referrer:n?n.slice(0,2048):null}}catch{return null}}function q(t){let e=t.split(/[?#]/,1)[0]??"",n=e;try{n=decodeURIComponent(e)}catch{}if(n==="/")return"/";let r=n.replace(/\/+$/,"");return r===""?"/":r}function W(t,e){if(typeof t!="object"||t===null)return!1;let{match:n,value:r}=t;if(typeof n!="string"||typeof r!="string"||r==="")return!1;switch(n){case"exact":return e===q(r);case"starts_with":return e.startsWith(r)||(e==="/"?e:`${e}/`).startsWith(r);case"contains":return e.includes(r);default:return!1}}function j(t,e){let n=t?.[e];return Array.isArray(n)?n:[]}function F(t,e){let n=j(t,"include"),r=j(t,"exclude");if(n.length===0&&r.length===0)return!0;if(typeof e!="string"||e==="")return!1;let o=q(e);return r.some(i=>W(i,o))?!1:n.length===0||n.some(i=>W(i,o))}var de=250,pe=1e3,A=!1;function G(t,e){if(A||typeof window>"u"||!window.history)return()=>{};let{hashRouting:n}=e,r=window.history,o={pushState:r.pushState,replaceState:r.replaceState},i={pushState:Object.prototype.hasOwnProperty.call(r,"pushState"),replaceState:Object.prototype.hasOwnProperty.call(r,"replaceState")},s={},a=!1,d=e.reportInitial?e.lastReportedPath??null:P(n),p,y=0,g=()=>{if(a)return;let l=Date.now();p!==void 0&&l-y>=pe||(p===void 0&&(y=l),clearTimeout(p),p=setTimeout(()=>{if(p=void 0,!a)try{let f=P(n);if(f===d)return;d=f,t(f)}catch(f){console.warn("[Pulseri] page navigation handler failed:",f)}},de))},x=()=>{for(let l of["pushState","replaceState"])s[l]&&r[l]===s[l]&&(i[l]?r[l]=o[l]:delete r[l])};try{for(let l of["pushState","replaceState"]){let f=o[l],v=function(...u){let _=f.apply(this,u);try{g()}catch{}return _};r[l]=v,s[l]=v}}catch(l){return a=!0,x(),console.warn("[Pulseri] pageviews could not patch history \u2014 page views will not be reported automatically:",l),()=>{}}return A=!0,e.reportInitial&&g(),window.addEventListener("popstate",g),n&&window.addEventListener("hashchange",g),()=>{a=!0,clearTimeout(p),window.removeEventListener("popstate",g),window.removeEventListener("hashchange",g),x(),A=!1}}var ge={"0_10":[0,10],"1_5":[1,5],"1_7":[1,7]},X={"bottom-right":"bottom:12px;right:12px;","bottom-left":"bottom:12px;left:12px;","bottom-center":"bottom:12px;left:50%;transform:translateX(-50%);","top-right":"top:12px;right:12px;","top-left":"top:12px;left:12px;"},fe=999999,me=480,b=null;function Z(){return b!==null}function Q(t,e,n,r,o){try{if(b)return;let i=setTimeout(()=>{if(o&&!o()){b=null;return}he(t,n).catch(s=>{b=null,console.warn("[Pulseri] widget failed to load:",s)})},Math.max(0,r)*1e3);b={remove:()=>clearTimeout(i)}}catch(i){console.warn("[Pulseri] renderWidget() failed:",i)}}async function he(t,e){let n=await fetch(`${t}/surveys/${e}`);if(!n.ok){b=null;return}let r=await n.json();be(t,e,r.data)}function be(t,e,n){let r=ge[n.scale_type];if(!r){b=null;return}let o=n.branding?.channels?.in_app?.widget??{},i=window.innerWidth<=me,s=i?"banner":o.popup_type??"corner",a=ve(n.branding?.colors?.primary??""),d=o.background_color??"#ffffff",p=o.text_color??"#1a1a1a",y=o.border_color??"#e5e7eb",g=o.border_radius??12,x=o.z_index??fe,l=document.createElement("div");l.setAttribute("data-pulseri-widget",""),l.style.cssText=s==="banner"?`position:fixed;left:0;right:0;bottom:0;z-index:${x};`:`position:fixed;${X[o.position??"bottom-right"]??X["bottom-right"]}z-index:${x};`;let f=l.attachShadow({mode:"open"}),v=document.createElement("style");v.textContent=`
|
|
3
|
+
:host { all: initial; }
|
|
4
|
+
* { box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
|
|
5
|
+
.box {
|
|
6
|
+
background: ${d};
|
|
7
|
+
color: ${p};
|
|
8
|
+
border: 1px solid ${y};
|
|
9
|
+
border-radius: ${s==="banner"?`${Number(g)||0}px ${Number(g)||0}px 0 0`:`${Number(g)||0}px`};
|
|
10
|
+
box-shadow: 0 4px 24px rgba(0,0,0,0.12);
|
|
11
|
+
padding: 20px;
|
|
12
|
+
width: ${s==="banner"?"100%":"320px"};
|
|
13
|
+
max-width: ${s==="banner"?"100%":"calc(100vw - 24px)"};
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
gap: 12px;
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
.close { position: absolute; top: 8px; right: 8px; border: none; background: none; cursor: pointer; font-size: 16px; line-height: 1; color: inherit; opacity: 0.6; padding: 4px; }
|
|
20
|
+
.close:hover { opacity: 1; }
|
|
21
|
+
.logo { max-height: 28px; max-width: 160px; object-fit: contain; align-self: center; }
|
|
22
|
+
.question { font-size: 14px; font-weight: 600; margin: 0; padding-right: 16px; }
|
|
23
|
+
.scores {
|
|
24
|
+
display: flex;
|
|
25
|
+
gap: 6px;
|
|
26
|
+
${i?"flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch;":"flex-wrap: wrap;"}
|
|
27
|
+
}
|
|
28
|
+
.score-btn { min-width: 32px; padding: 6px 10px; border: 1px solid ${y}; border-radius: 6px; background: transparent; color: inherit; font-size: 13px; cursor: pointer; ${i?"flex-shrink: 0;":""} }
|
|
29
|
+
.score-btn.selected { border-color: ${a??"#4f46e5"}; background: ${a??"#4f46e5"}; color: ${a?K(a):"#ffffff"}; font-weight: 600; }
|
|
30
|
+
textarea { font-size: 13px; padding: 8px; border: 1px solid ${y}; border-radius: 6px; resize: vertical; min-height: 50px; background: transparent; color: inherit; }
|
|
31
|
+
.submit-btn { padding: 8px 14px; border: none; border-radius: 6px; background: ${a??"#4f46e5"}; color: ${a?K(a):"#ffffff"}; font-size: 13px; font-weight: 600; cursor: pointer; }
|
|
32
|
+
.submit-btn:disabled { opacity: 0.6; cursor: default; }
|
|
33
|
+
.error { font-size: 12px; color: #dc2626; margin: 0; }
|
|
34
|
+
.title { font-size: 15px; font-weight: 600; margin: 0; }
|
|
35
|
+
.message { font-size: 13px; margin: 0; }
|
|
36
|
+
a.review { align-self: flex-start; font-size: 13px; font-weight: 600; color: ${a??"#4f46e5"}; }
|
|
37
|
+
`;let u=document.createElement("div");u.className="box";let _=null,R=!1,k=!1,w=document.createElement("button");w.type="button",w.className="close",w.setAttribute("aria-label","Close"),w.textContent="\u2715",w.addEventListener("click",()=>{k||xe(t,e),Y(l)}),u.appendChild(w);let H=ee(n.branding?.logo);if(H){let c=document.createElement("img");c.className="logo",c.src=H,c.alt="",u.appendChild(c)}let $=document.createElement("p");$.className="question",$.textContent=n.question,u.appendChild($);let I=document.createElement("div");I.className="scores";let B=[];for(let c=r[0];c<=r[1];c++){let h=document.createElement("button");h.type="button",h.className="score-btn",h.textContent=String(c),h.addEventListener("click",()=>{_=c;for(let oe of B)oe.classList.remove("selected");h.classList.add("selected"),C.textContent=""}),B.push(h),I.appendChild(h)}u.appendChild(I);let E=document.createElement("textarea");E.placeholder="Anything else you'd like to add? (optional)",E.maxLength=5e3,u.appendChild(E);let C=document.createElement("p");C.className="error",u.appendChild(C);let m=document.createElement("button");m.type="button",m.className="submit-btn",m.textContent="Submit",m.addEventListener("click",()=>{if(!R){if(_===null){C.textContent="Please choose a score before submitting.";return}R=!0,m.disabled=!0,m.textContent="Submitting\u2026",fetch(`${t}/surveys/${e}/responses`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({answers:{score:_},feedback_text:E.value.trim()||null})}).then(async c=>{if(c.status===409&&await we(c)){k=!0,V(u,ye);return}if(!c.ok)throw new Error(`status ${c.status}`);let h=await c.json();k=!0,V(u,h.data)}).catch(()=>{R=!1,m.disabled=!1,m.textContent="Submit",C.textContent="Something went wrong. Please try again."})}}),u.appendChild(m),f.appendChild(v),f.appendChild(u),document.body.appendChild(l),b={remove:()=>Y(l)}}var ye={completion:{title:null,message:"Your response was already recorded. Thank you!"}};async function we(t){try{return(await t.json()).error?.code==="already_submitted"}catch{return!1}}function V(t,e){for(;t.children.length>1;)t.removeChild(t.lastChild);let{completion:n}=e;if(n.title){let i=document.createElement("p");i.className="title",i.textContent=n.title,J(i,n.title_style),t.appendChild(i)}let r=document.createElement("p");r.className="message",r.textContent=n.message||"Thank you for your feedback!",J(r,n.message_style),t.appendChild(r);let o=ee(e.review_redirect_url);if(o){let i=document.createElement("a");i.className="review",i.href=o,i.target="_blank",i.rel="noopener noreferrer",i.textContent="Leave a review",t.appendChild(i)}}function J(t,e){e&&(e.color&&(t.style.color=e.color),e.size&&(t.style.fontSize=`${e.size}px`),e.align&&(t.style.textAlign=e.align))}function Y(t){t.remove(),b=null}function xe(t,e){fetch(`${t}/surveys/${e}/delivery-events`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event_type:"dismissed"})}).catch(n=>{console.warn("[Pulseri] failed to report widget dismissal:",n)})}function ee(t){if(!t)return null;try{let e=new URL(t);return/^https?:$/.test(e.protocol)?e.href:null}catch{return null}}function ve(t){let e=/^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t);if(e)return`#${e[1]}${e[1]}${e[2]}${e[2]}${e[3]}${e[3]}`.toLowerCase();let n=/^#?([0-9a-f]{6})$/i.exec(t);return n?`#${n[1]}`.toLowerCase():null}function K(t){let e=parseInt(t.slice(1,3),16),n=parseInt(t.slice(3,5),16),r=parseInt(t.slice(5,7),16);return(e*299+n*587+r*114)/1e3>=128?"#000000":"#ffffff"}var S=null,N=null,te=null,L=null,_e="page_viewed",Ce="https://api.pulseri.com/v1";function Pe(t,e){try{if(typeof t!="string"||t.trim()===""){console.warn("[Pulseri] init() requires a non-empty public key string \u2014 ignoring this call.");return}S&&console.warn("[Pulseri] init() called again \u2014 replacing the previous configuration.");let n=e?.endpoint,r=n!==void 0&&(typeof n!="string"||n.trim()==="");r&&console.warn("[Pulseri] init() received an invalid endpoint \u2014 using the default instead.");let o=(r||n===void 0?Ce:n.trim()).replace(/\/+$/,"");if(S={publicKey:t,endpoint:o,hashRouting:e?.pageviews==="hash"},N?.(),N=null,L=null,e?.pageviews){let i=e.personId;i===void 0&&console.warn("[Pulseri] pageviews needs a personId \u2014 an anonymous page view can never surface a survey, so none will be sent.");let s=()=>{let a;try{a=typeof i=="function"?i():i}catch(d){console.warn("[Pulseri] pageviews personId() threw \u2014 sending this page view without a person id:",d),z(void 0,{signature:ne(e.signature)});return}a&&z(void 0,{personId:a,signature:ne(e.signature)})};L=s,N=G(a=>{te=a,s()},{hashRouting:S.hashRouting,reportInitial:!0,lastReportedPath:te})}}catch(n){console.warn("[Pulseri] init() failed:",n)}}function Se(t,e,n){let r=M("identify");if(r)try{D(r,"/identify",{external_id:t,...e!==void 0?{traits:e}:{},...n?.email!==void 0?{email:n.email}:{},...n?.name!==void 0?{name:n.name}:{},...n?.groupId!==void 0?{group_id:n.groupId}:{},...O(n)})}catch(o){console.warn("[Pulseri] identify() failed:",o)}}function Ee(t,e,n){let r=M("group");if(r)try{D(r,"/group",{external_id:t,...e!==void 0?{traits:e}:{},...n?.name!==void 0?{name:n.name}:{},...O(n)})}catch(o){console.warn("[Pulseri] group() failed:",o)}}function Re(t,e,n){re("track",t,e,n)}function z(t,e){re("page",_e,t,e)}function re(t,e,n,r){let o=M(t);if(o)try{D(o,"/track",{event:e,...r?.personId!==void 0?{person_id:r.personId}:{},...O(r),...n!==void 0?{properties:n}:{},...ke(o),...Z()?{skip_survey:!0}:{}},i=>{let s=i.data;if(!s?.survey_eligible||!s.campaign_id||!s.survey_token)return;let a=s.page_rules??null;Q(o.endpoint,s.campaign_id,s.survey_token,s.delay_seconds??0,a?()=>{if(F(a,P(o.hashRouting)))return!0;let d=L;return d&&setTimeout(d,0),!1}:void 0)})}catch(i){console.warn(`[Pulseri] ${t}() failed:`,i)}}function O(t){let e=t?.signature;return typeof e=="string"&&e!==""?{signature:e}:{}}function ne(t){try{return typeof t=="function"?t():t}catch{return}}function ke(t){let e=U(t.hashRouting);return e?{page:e}:{}}function M(t){return S||(console.warn(`[Pulseri] ${t}() called before init() \u2014 ignoring this call.`),null)}function D(t,e,n,r){let{publicKey:o,endpoint:i}=t;fetch(`${i}${e}`,{method:"POST",keepalive:!0,headers:{Authorization:`Bearer ${o}`,"Content-Type":"application/json"},body:JSON.stringify(n)}).then(async s=>{if(!s.ok){let d=await s.json().catch(()=>null),p=d?.error?.code??s.status,y=d?.error?.message??s.statusText;console.warn(`[Pulseri] ${e} failed: ${p} \u2014 ${y}`);return}if(!r)return;let a=await s.json().catch(()=>null);a&&r(a)}).catch(s=>{console.warn(`[Pulseri] ${e} failed:`,s)})}return ue($e);})();
|
|
38
|
+
if (typeof window !== "undefined") { window.Pulseri = window.Pulseri || __PulseriBundle; } })();
|
|
39
|
+
//# sourceMappingURL=pulseri.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/page.ts","../src/widget.ts"],"mappings":"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","names":["src_exports","__export","group","identify","init","page","track","currentPath","hashRouting","location","pageContext","path","referrer","normalise","bare","decoded","trimmed","ruleMatches","rule","match","value","list","rules","key","matchesPageRules","include","exclude","normalised","NAVIGATION_DEBOUNCE_MS","NAVIGATION_MAX_WAIT_MS","installed","installAutoPage","onNavigate","options","history","originals","hadOwn","patched","disposed","lastPath","timer","pendingSince","schedule","now","error","restore","method","original","wrapper","args","result","SCORE_RANGES","POSITION_STYLE","DEFAULT_Z_INDEX","MOBILE_BREAKPOINT_PX","activeWidget","hasActiveWidget","renderWidget","apiHost","campaignId","surveyToken","delaySeconds","shouldShow","timer","fetchAndMount","error","token","response","body","mount","survey","range","widgetConfig","isMobileViewport","popupType","brandColor","normalizedHex","backgroundColor","textColor","borderColor","borderRadius","zIndex","host","shadow","style","contrastTextColor","box","selectedScore","submitting","submitted","closeButton","reportDismissal","unmount","logoUrl","safeUrl","img","question","scoresRow","scoreButtons","score","button","b","errorText","feedback","submitButton","isAlreadySubmitted","renderCompletion","ALREADY_RECORDED","completion","title","applyCompletionStyle","message","reviewUrl","link","el","value","url","short","long","hex","r","g","state","uninstallAutoPage","lastAutoReportedPath","reevaluateCurrentPage","PAGE_VIEW_EVENT","DEFAULT_ENDPOINT","init","publicKey","options","rawEndpoint","endpointProvidedButUnusable","endpoint","personId","reportCurrentPage","resolvedId","error","page","resolveSignature","installAutoPage","path","identify","externalId","traits","currentState","resolveState","send","signatureField","group","track","event","properties","sendTrack","method","pageField","hasActiveWidget","body","data","pageRules","renderWidget","matchesPageRules","currentPath","reevaluate","signature","context","pageContext","onSuccess","response","errorBody","code","message","responseBody"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pulseri/js",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "Pulseri browser SDK: identify, group, track and page for tenant websites, plus the in-app survey widget.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/getpulseri/js#readme",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"pulseri",
|
|
9
|
+
"feedback",
|
|
10
|
+
"nps",
|
|
11
|
+
"csat",
|
|
12
|
+
"survey",
|
|
13
|
+
"analytics"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/getpulseri/js.git"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "./dist/index.cjs",
|
|
21
|
+
"module": "./dist/index.js",
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js",
|
|
27
|
+
"require": "./dist/index.cjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "rimraf dist && tsup",
|
|
35
|
+
"prepublishOnly": "npm run typecheck && npm test",
|
|
36
|
+
"dev": "tsup --watch",
|
|
37
|
+
"pretest": "npm run build",
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"test:watch": "vitest",
|
|
40
|
+
"typecheck": "tsc --noEmit",
|
|
41
|
+
"release": "node scripts/release.mjs",
|
|
42
|
+
"assemble": "node scripts/assemble.mjs",
|
|
43
|
+
"preversion": "npm run typecheck && npm test",
|
|
44
|
+
"version": "npm run release && git add releases"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^22.10.5",
|
|
48
|
+
"jsdom": "^29.1.1",
|
|
49
|
+
"rimraf": "^6.0.1",
|
|
50
|
+
"tsup": "^8.3.5",
|
|
51
|
+
"typescript": "^5.7.3",
|
|
52
|
+
"vitest": "^5.0.0"
|
|
53
|
+
},
|
|
54
|
+
"publishConfig": {
|
|
55
|
+
"access": "public"
|
|
56
|
+
},
|
|
57
|
+
"sideEffects": false
|
|
58
|
+
}
|