Socket
Socket
Sign inDemoInstall

@swrve/web-sdk

Package Overview
Dependencies
3
Maintainers
8
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.1.0 to 2.2.0

2

dist/SwrveWorker.js

@@ -1,1 +0,1 @@

(()=>{function e(e,a,t){var i=new MessageChannel;i.port1.onmessage=function(e){e.data.error?reject(e.data.error):resolve(e.data)},clients.matchAll({includeUncontrolled:!0}).then((s=>{s.forEach((s=>{s.postMessage({event:JSON.stringify(e),type:a,body:t},[i.port2])}))}))}self.addEventListener("push",(a=>{var t;if(a.data&&(t=a.data.json()).data.swrve&&t.data.swrve._p){const i={body:t.body,data:{swrve:{title:t.data.swrve.title,p:t.data.swrve._p,sd:t.data.swrve._sd}}};t.image&&(i.image=t.image),t.icon&&(i.icon=t.icon),t.payload&&(i.data.payload=t.payload),a.waitUntil(Promise.all([new Promise((()=>{e(a,"swrve.push_received",{id:t.data.swrve._p})})),self.registration.showNotification(i.data.swrve.title,i)]))}})),self.addEventListener("notificationclick",(a=>{a.notification.close();let t=Promise.resolve();var i={id:a.notification.data.swrve.p,customPayload:a.notification.data.payload};a.notification.data.swrve.sd&&(i.deeplink=a.notification.data.swrve.sd,t=clients.openWindow(i.deeplink)),a.waitUntil(Promise.all([t,new Promise((()=>{e(a,"swrve.push_clicked",i)}))]))})),self.addEventListener("notificationclose",(a=>{a.waitUntil(Promise.all([new Promise((()=>{e(a,"swrve.push_closed",{})}))]))})),self.addEventListener("install",(function(e){self.skipWaiting()}))})();
(()=>{const e="swrve.push_clicked",t="swrve.push_received",r="swrve_push_events",a="swrve_users",s=["body","image","icon","payload"];function n(){return new Promise(((e,t)=>{const s=indexedDB.open("swrve_push_events_db",1);s.onupgradeneeded=e=>{const t=e.target.result;t.createObjectStore(a,{keyPath:"user_id",autoIncrement:!1}).createIndex("last_active","last_active",{unique:!1}),t.createObjectStore(r,{keyPath:"id",autoIncrement:!0}).createIndex("user_id","user_id",{unique:!1})},s.onsuccess=t=>{e(t.target.result)},s.onerror=e=>{t(new Error(`Failed to open database: ${e.target.error}`))}}))}async function o(){try{const e=await n(),t=e.transaction(a,"readonly"),r=t.objectStore(a).index("last_active").openCursor(null,"prev");let s=null;return r.onsuccess=t=>{const r=t.target.result;if(!r)throw new Error("No user found");s=r.value,e.close()},new Promise(((a,n)=>{r.onerror=t=>{e.close(),n(new Error(`Failed to retrieve current user: ${t.target.error}`))},t.oncomplete=()=>a(s)}))}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}async function i(e){try{const t=await n(),a=t.transaction(r,"readwrite"),s=a.objectStore(r),o={...e,timestamp:Date.now()};return new Promise(((e,r)=>{a.oncomplete=()=>{t.close(),e()},a.onerror=e=>{t.close(),r(new Error(`Failed to store push data: ${e.target.error}`))},s.add(o)}))}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}function c(e,t,r){var a=new MessageChannel;a.port1.onmessage=function(e){e.data.error?reject(e.data.error):resolve(e.data)},clients.matchAll({includeUncontrolled:!0}).then((s=>{s.forEach((s=>{s.postMessage({event:JSON.stringify(e),type:t,body:r},[a.port2])}))}))}self.addEventListener("push",(e=>{if(!e.data)return;const r=e.data.json();if(!r.data.swrve||!r.data.swrve._p)return;const a=function(e){const t={data:{swrve:{title:e.data.swrve.title,p:e.data.swrve._p,sd:e.data.swrve._sd}}};return s.forEach((r=>{e[r]&&(("payload"===r?t.data:t)[r]=e[r])})),t}(r);e.waitUntil((async()=>{try{const e=await o();await i({event_type:t,event:`Swrve.Messages.Push-${r.data.swrve._p}.delivered`,timestamp:Date.now(),user_id:e.user_id})}catch(e){console.error("Error storing push event data",e)}await Promise.all([new Promise((()=>{c(e,t,{id:r.data.swrve._p})})),self.registration.showNotification(a.data.swrve.title,a)])})())})),self.addEventListener("notificationclick",(t=>{t.notification.close();let r=Promise.resolve();var a={id:t.notification.data.swrve.p,customPayload:t.notification.data.payload};t.notification.data.swrve.sd&&(a.deeplink=t.notification.data.swrve.sd,r=clients.openWindow(a.deeplink)),t.waitUntil((async()=>{try{const t=await o();await i({event_type:e,event:`Swrve.Messages.Push-${a.id}.engaged`,timestamp:Date.now(),user_id:t.user_id})}catch(e){console.error("Error storing push event data:",e)}await Promise.all([r,new Promise((()=>{c(t,e,a)}))])})())})),self.addEventListener("notificationclose",(e=>{e.waitUntil(Promise.all([new Promise((()=>{c(e,"swrve.push_closed",{})}))]))})),self.addEventListener("install",(function(e){self.skipWaiting()})),self.addEventListener("message",(async e=>{try{if(e.data)switch(e.data.type){case"setUserSession":const t=await async function(e){try{const t=await n(),r=t.transaction(a,"readwrite"),s=r.objectStore(a);let o=await async function(e,t){return new Promise(((r,a)=>{const s=e.get(t);s.onsuccess=e=>{r(e.target.result)},s.onerror=()=>{a(new Error("Failed to get user record"))}}))}(s,e.user_id);const i=Date.now();return o?(o.last_active=i,s.put(o)):(o={...e,last_active:i},s.add(o)),new Promise(((e,a)=>{r.oncomplete=()=>{t.close(),e(o)},r.onerror=e=>{t.close(),a(new Error(`Failed to store current user: ${e.target.error}`))}}))}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}({user_id:e.data.user_id});e.ports[0].postMessage({type:"userSession",data:t});break;case"fetchPushData":const s=await async function(e){try{const t=await n(),a=t.transaction(r,"readonly").objectStore(r).index("user_id").getAll(e);return new Promise(((e,r)=>{a.onsuccess=r=>{t.close();const a=r.target.result.sort(((e,t)=>e.timestamp-t.timestamp));e(a)},a.onerror=e=>{t.close(),r(new Error(`Failed to retrieve push data: ${e.target.error}`))}}))}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}(e.data.user_id);e.ports[0].postMessage({type:"pushData",data:s}),s.length>0&&await async function(e){try{const t=await n(),a=t.transaction(r,"readwrite").objectStore(r);a.index("user_id").getAll(e).onsuccess=e=>{e.target.result.forEach((e=>{a.delete(e.id)})),t.close()}}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}(e.data.user_id);break;default:throw new Error("Unregistered message event: \n",e)}}catch(e){console.error(e)}}))})();

@@ -9,4 +9,7 @@ import { ISwrveSDKConfig } from "../interfaces/ISwrveSDKConfig";

private _isInitialized;
private _eventFlushFreqency;
private _pushEventLoopTimer;
private _webPushToken;
private _webPushApiKey;
private _userId;
private _config;

@@ -19,9 +22,8 @@ private callBackPushReceived;

get WebPushApiKey(): string;
init(webPushApiKey: string): void;
registerPush(onSuccess?: () => void, onFailure?: (err: Error) => void): void;
unregisterPush(onSuccess?: () => void, onFailure?: (err: Error) => void): void;
init(webPushApiKey: string, userId: string): void;
registerPush(onSuccess?: () => void, onFailure?: (err: Error) => void): Promise<void>;
unregisterPush(onSuccess?: () => void, onFailure?: (err: Error) => void): Promise<void>;
syncServiceWorkerThread(): Promise<void>;
isPushSupported(): boolean;
onPushReceived(event: any): void;
onPushClicked(event: any): void;
onPushClosed(event: any): void;
shutdown(): void;
private registerPushListeners;

@@ -32,5 +34,8 @@ private pushHandler;

private sendBrowserPermissions;
private flushPushEventQueue;
private fetchPushEvents;
private setPushSession;
private browserHasPermissionsAccess;
private static sendPermissionsUpdate;
private browserHasPermissionsAccess;
}
export default SwrvePushManager;
{
"name": "@swrve/web-sdk",
"version": "2.1.0",
"version": "2.2.0",
"author": "Swrve Inc.",

@@ -62,4 +62,4 @@ "license": "Apache-2.0",

"dependencies": {
"@swrve/web-core": "1.1.0"
"@swrve/web-core": "1.2.0"
}
}

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc