@notiblast/web 0.3.3 → 0.3.4
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/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/service-worker/notiblast-sw.js +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ type ReleaseAction = 'logout' | 'unsubscribe' | 'permission_denied';
|
|
|
39
39
|
declare function isPromptOpen(): boolean;
|
|
40
40
|
declare function showPrompt(options?: PromptOptions): Promise<boolean>;
|
|
41
41
|
|
|
42
|
-
declare const SDK_VERSION = "0.3.
|
|
42
|
+
declare const SDK_VERSION = "0.3.4";
|
|
43
43
|
|
|
44
44
|
declare function init(next: NotiblastOptions): void;
|
|
45
45
|
declare function identify(externalUserId: string | null): Promise<string | null>;
|
package/dist/index.js
CHANGED
|
@@ -55,5 +55,5 @@ button {
|
|
|
55
55
|
.card { flex-wrap: wrap }
|
|
56
56
|
.actions { width: 100%; justify-content: flex-end }
|
|
57
57
|
}
|
|
58
|
-
`;function A(){return !!document.getElementById(T)}function W(e={}){if(typeof document>"u"||A())return Promise.resolve(false);let t={...C,...e};return new Promise(n=>{let o=document.createElement("div");o.id=T;let r=o.attachShadow({mode:"closed"}),a=document.createElement("style");a.textContent=j;let i=document.createElement("div");i.className="wrap";let s=document.createElement("div");if(s.className=`card ${t.theme}`,s.setAttribute("role","dialog"),s.setAttribute("aria-live","polite"),e.icon){let c=document.createElement("img");c.src=e.icon,c.alt="",s.append(c);}let S=document.createElement("p");S.textContent=t.message;let m=document.createElement("div");m.className="actions";let u=document.createElement("button");u.className="cancel",u.textContent=t.cancel;let l=document.createElement("button");l.className="accept",l.textContent=t.accept,m.append(u,l),s.append(S,m),i.append(s),r.append(a,i),document.body.append(o),requestAnimationFrame(()=>s.classList.add("in"));function g(c){document.removeEventListener("keydown",E),s.classList.remove("in"),setTimeout(()=>o.remove(),280),n(c);}function E(c){c.key==="Escape"&&g(false);}u.addEventListener("click",()=>g(false)),l.addEventListener("click",()=>g(true)),document.addEventListener("keydown",E),l.focus();})}function b(e){return `notiblast:${e}:token`}function w(e){try{return localStorage.getItem(b(e))}catch{return null}}function D(e,t){try{localStorage.setItem(b(e),t);}catch{return}}function y(e){try{localStorage.removeItem(b(e));}catch{return}}var x="0.3.
|
|
58
|
+
`;function A(){return !!document.getElementById(T)}function W(e={}){if(typeof document>"u"||A())return Promise.resolve(false);let t={...C,...e};return new Promise(n=>{let o=document.createElement("div");o.id=T;let r=o.attachShadow({mode:"closed"}),a=document.createElement("style");a.textContent=j;let i=document.createElement("div");i.className="wrap";let s=document.createElement("div");if(s.className=`card ${t.theme}`,s.setAttribute("role","dialog"),s.setAttribute("aria-live","polite"),e.icon){let c=document.createElement("img");c.src=e.icon,c.alt="",s.append(c);}let S=document.createElement("p");S.textContent=t.message;let m=document.createElement("div");m.className="actions";let u=document.createElement("button");u.className="cancel",u.textContent=t.cancel;let l=document.createElement("button");l.className="accept",l.textContent=t.accept,m.append(u,l),s.append(S,m),i.append(s),r.append(a,i),document.body.append(o),requestAnimationFrame(()=>s.classList.add("in"));function g(c){document.removeEventListener("keydown",E),s.classList.remove("in"),setTimeout(()=>o.remove(),280),n(c);}function E(c){c.key==="Escape"&&g(false);}u.addEventListener("click",()=>g(false)),l.addEventListener("click",()=>g(true)),document.addEventListener("keydown",E),l.focus();})}function b(e){return `notiblast:${e}:token`}function w(e){try{return localStorage.getItem(b(e))}catch{return null}}function D(e,t){try{localStorage.setItem(b(e),t);}catch{return}}function y(e){try{localStorage.removeItem(b(e));}catch{return}}var x="0.3.4";function H(e,t){return t?t===e?"ok":"stale":"unknown"}function L(e,t){return H(e,t)==="ok"?null:[`notiblast: your service worker is version ${t??"unknown"}, the package is ${e}.`,"Re-copy it: npx notiblast init"].join(" ")}var K="https://primaryapi.notiblast.com",Y="/notiblast-sw.js",d=null,p=null;function ge(e){if(!e.appId||!e.firebase||!e.vapidKey)throw new Error("notiblast: init() needs appId, firebase and vapidKey");d={apiUrl:K,...e};}function f(){if(!d)throw new Error("notiblast: call init() first");return d}function k(e){return e.apiUrl??K}async function h(e,t,n){await N(k(e),{appId:e.appId,token:t,action:n});}async function ve(e){let t=f();if(d={...t,externalUserId:e},!p)return null;try{return e===null?(await h(t,p,"logout"),null):await v(k(t),{appId:t.appId,token:p,externalUserId:e})}catch(n){return console.error(`notiblast: identify failed \u2014 ${I(n)}`),null}}async function be(){let e=f(),t=p??w(e.appId);t&&(await h(e,t,"unsubscribe"),y(e.appId),p=null);}async function M(){return typeof window>"u"||!("serviceWorker"in navigator)||!("Notification"in window)?false:isSupported()}function G(){return typeof window>"u"||!("Notification"in window)?"unsupported":Notification.permission}async function we(){let e=f();return await M()?G()!=="default"||await W(e.prompt)?U():{outcome:"dismissed",deviceId:null}:{outcome:"unsupported",deviceId:null}}async function U(){let e=f();if(!await M())return {outcome:"unsupported",deviceId:null};let t=await Q();if(t==="denied"&&await J(e),t!=="granted")return {outcome:t,deviceId:null};let n="service-worker";try{let o=await navigator.serviceWorker.register(e.serviceWorkerPath??Y,e.serviceWorkerScope?{scope:e.serviceWorkerScope}:void 0);await navigator.serviceWorker.ready;let r=L(x,await _(o.active??navigator.serviceWorker.controller));r&&console.warn(r),n="token";let a=getMessaging(initializeApp(e.firebase,`notiblast-${e.appId}`)),i=await getToken(a,{vapidKey:e.vapidKey,serviceWorkerRegistration:o});if(!i)return $("token","Firebase returned no token");p=i,n="register";let s=await v(k(e),{appId:e.appId,token:i,externalUserId:e.externalUserId});return D(e.appId,i),{outcome:"granted",deviceId:s}}catch(o){return $(n,I(o))}}async function J(e){let t=w(e.appId);if(t)try{await h(e,t,"permission_denied"),y(e.appId);}catch(n){console.error(`notiblast: could not report the revoked permission \u2014 ${I(n)}`);}}function I(e){return e instanceof Error?e.message:String(e)}function $(e,t){return console.error(`notiblast: failed at step "${e}" \u2014 ${t}`),{outcome:"error",deviceId:null,step:e,reason:t}}async function Q(){if(Notification.permission==="granted")return "granted";if(Notification.permission==="denied")return "denied";let e=await Notification.requestPermission();return e==="granted"?"granted":e==="denied"?"denied":"dismissed"}
|
|
59
59
|
export{x as SDK_VERSION,ve as identify,ge as init,A as isPromptOpen,M as isSupported,G as permission,we as promptAndSubscribe,W as showPrompt,U as subscribe,be as unsubscribe};
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){'use strict';function
|
|
1
|
+
(function(){'use strict';function c(t){return t?.url??null}function r(t){return typeof t=="object"&&t!==null?t:{}}function i(t){return typeof t=="string"&&t.length>0?t:void 0}function f(t){return t===true||t==="true"||t==="1"}function u(t){if(typeof t!="object"||t===null)return null;let n=t,e=r(n.notification),o=r(n.data),b=r(n.fcmOptions),a=i(e.title)??i(o.title);if(!a)return null;let s=i(e.tag)??i(o.tag),l=e.renotify??o.renotify;return {title:a,body:i(e.body)??i(o.body),icon:i(e.icon)??i(o.icon),image:i(e.image)??i(o.image_url),url:i(b.link)??i(e.click_action)??i(o.url),tag:s,renotify:s?l===void 0||f(l):false,requireInteraction:f(e.requireInteraction??o.require_interaction)}}function d(t){return {body:t.body??"",icon:t.icon,image:t.image,tag:t.tag,renotify:!!(t.tag&&t.renotify),requireInteraction:!!t.requireInteraction,data:t}}function p(t){return !t||t.platform!=="macOS"?false:!!t.brands?.some(n=>n.brand==="Chromium")}var g=1e3;function m(t){return new Promise(n=>setTimeout(n,t))}var y="0.3.4";self.addEventListener("install",()=>self.skipWaiting());self.addEventListener("message",t=>{if(t.data!=="notiblast:version")return;let n={type:"notiblast:version",version:y},e=t.ports[0];if(e){e.postMessage(n);return}t.source?.postMessage(n);});self.addEventListener("activate",t=>{t.waitUntil(self.clients.claim());});self.addEventListener("push",t=>{if(!t.data)return;let n=null;try{n=u(t.data.json());}catch{return}if(!n)return;let e=n;t.waitUntil((async()=>{await self.registration.showNotification(e.title,d(e)),p(navigator.userAgentData)&&await m(g);})());});self.addEventListener("notificationclick",t=>{t.notification.close();let n=c(t.notification.data??null);n&&t.waitUntil((async()=>{try{await self.clients.openWindow(n);}catch(e){console.error(`notiblast: could not open "${n}" \u2014`,e);}})());});})();
|