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.2.1 to 2.3.0

2

dist/SwrveWorker.js

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

(()=>{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)}}))})();
(()=>{const e="swrve.push_clicked",t="swrve.push_received",r="swrve_push_events_db",a="swrve_push_events",s="swrve_users",n=["body","image","icon","payload"];function o(){return new Promise(((e,t)=>{const n=indexedDB.open(r,1);n.onupgradeneeded=e=>{const t=e.target.result;t.createObjectStore(s,{keyPath:"user_id",autoIncrement:!1}).createIndex("last_active","last_active",{unique:!1}),t.createObjectStore(a,{keyPath:"id",autoIncrement:!0}).createIndex("user_id","user_id",{unique:!1})},n.onsuccess=t=>{e(t.target.result)},n.onerror=e=>{t(new Error(`Failed to open database: ${e.target.error}`))}}))}async function i(){try{const e=await o(),t=e.transaction(s,"readonly"),r=t.objectStore(s).index("last_active").openCursor(null,"prev");let a=null;return r.onsuccess=t=>{const r=t.target.result;if(!r)throw new Error("No user found");a=r.value,e.close()},new Promise(((s,n)=>{r.onerror=t=>{e.close(),n(new Error(`Failed to retrieve current user: ${t.target.error}`))},t.oncomplete=()=>s(a)}))}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}async function c(e){try{const t=await o(),r=t.transaction(a,"readwrite"),s=r.objectStore(a),n={...e,timestamp:Date.now()};return new Promise(((e,a)=>{r.oncomplete=()=>{t.close(),e()},r.onerror=e=>{t.close(),a(new Error(`Failed to store push data: ${e.target.error}`))},s.add(n)}))}catch(e){throw new Error(`Error initializing database: ${e.message}`)}}function d(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 n.forEach((r=>{e[r]&&(("payload"===r?t.data:t)[r]=e[r])})),t}(r);e.waitUntil((async()=>{try{const e=await i();await c({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((()=>{d(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 i();await c({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((()=>{d(t,e,a)}))])})())})),self.addEventListener("notificationclose",(e=>{e.waitUntil(Promise.all([new Promise((()=>{d(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 o(),r=t.transaction(s,"readwrite"),a=r.objectStore(s);let n=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"))}}))}(a,e.user_id);const i=Date.now();return n?(n.last_active=i,a.put(n)):(n={...e,last_active:i},a.add(n)),new Promise(((e,a)=>{r.oncomplete=()=>{t.close(),e(n)},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 r=await async function(e){try{const t=await o(),r=t.transaction(a,"readonly").objectStore(a).index("user_id").getAll(e);return new Promise(((e,a)=>{r.onsuccess=r=>{t.close();const a=r.target.result.sort(((e,t)=>e.timestamp-t.timestamp));e(a)},r.onerror=e=>{t.close(),a(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:r}),r.length>0&&await async function(e){try{const t=await o(),r=t.transaction(a,"readwrite").objectStore(a);r.index("user_id").getAll(e).onsuccess=e=>{e.target.result.forEach((e=>{r.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)}}))})();

@@ -5,6 +5,6 @@ import { SwrveCoreSDK, ResourceManager, IUserInfo, ISwrveCampaign, IDictionary, IReadonlyDictionary, IReward, ISwrveEmbeddedMessage, IUserResource } from "@swrve/web-core";

/** Callbacks */
export declare type OnSwrveLoadedCallback = () => void;
export declare type OnResourcesLoadedCallback = (resources: ReadonlyArray<IUserResource> | null) => void;
export declare type GetResourcesCallback = (resources: ReadonlyArray<IUserResource>) => void;
export declare type GetUserResourcesDiffCallback = (oldDictionary: IDictionary<IUserResource>, newDictionary: IDictionary<IUserResource>, json: any) => any;
export type OnSwrveLoadedCallback = () => void;
export type OnResourcesLoadedCallback = (resources: ReadonlyArray<IUserResource> | null) => void;
export type GetResourcesCallback = (resources: ReadonlyArray<IUserResource>) => void;
export type GetUserResourcesDiffCallback = (oldDictionary: IDictionary<IUserResource>, newDictionary: IDictionary<IUserResource>, json: any) => any;
export declare class SwrveSDK {

@@ -11,0 +11,0 @@ private static _instance;

{
"name": "@swrve/web-sdk",
"version": "2.2.1",
"author": "Swrve Inc.",
"license": "Apache-2.0",
"keywords": [
"swrve",
"sdk",
"web",
"browser",
"js",
"chrome",
"firefox",
"safari",
"engagement",
"marketing",
"platform"
],
"homepage": "https://github.com/Swrve/swrve-web-sdk#readme",
"bugs": {
"url": "https://github.com/Swrve/swrve-web-sdk/issues"
},
"repository": {
"type": "git",
"url": "git@github.com:Swrve/swrve-web-sdk.git"
},
"types": "dist/types/src/index.d.ts",
"files": [
"dist/SwrveSDK.js",
"dist/types",
"dist/SwrveWorker.js"
],
"main": "dist/SwrveSDK.js",
"scripts": {
"bundle": "yarn run bundle:prod",
"bundle:dev": "tsc -p tsconfig-build.json --declaration --declarationDir dist/types && webpack --config webpack.dev.js --progress",
"bundle:prod": "tsc -p tsconfig-build.json --declaration --declarationDir dist/types && webpack --config webpack.prod.js --progress",
"bundle:release": "yarn run bundle:prod",
"stats": "webpack --config webpack.prod.js --profile --json > stats.json && webpack-bundle-analyzer stats.json --mode static --no-open",
"clean": "yarn cache clean && rm -rf ./dist",
"lint": "tslint --project tsconfig.json",
"prepublish": "yarn bundle:release",
"test": "jest --ci --coverage --testResultsProcessor='jest-junit'",
"test:watch": "jest --watch"
},
"devDependencies": {
"@types/jest": "^27.0.3",
"jest": "^27.3.1",
"jest-junit": "^13.0.0",
"ts-jest": "^27.0.7",
"clean-webpack-plugin": "1.0.0",
"ts-loader": "^9.2.6",
"strip-loader": "^0.1.2",
"tslint": "5.12.1",
"typescript": "^4.4.4",
"webpack": "^5.63.0",
"webpack-cli": "^4.9.1",
"webpack-bundle-analyzer": "3.0.3",
"webpack-merge": "4.2.1"
},
"dependencies": {
"@swrve/web-core": "1.2.0"
}
"name": "@swrve/web-sdk",
"version": "2.3.0",
"author": "Swrve Inc.",
"license": "Apache-2.0",
"keywords": [
"swrve",
"sdk",
"web",
"browser",
"js",
"chrome",
"firefox",
"safari",
"engagement",
"marketing",
"platform"
],
"homepage": "https://github.com/Swrve/swrve-web-sdk#readme",
"bugs": {
"url": "https://github.com/Swrve/swrve-web-sdk/issues"
},
"repository": {
"type": "git",
"url": "git@github.com:Swrve/swrve-web-sdk.git"
},
"types": "dist/types/src/index.d.ts",
"files": [
"dist/SwrveSDK.js",
"dist/types",
"dist/SwrveWorker.js"
],
"main": "dist/SwrveSDK.js",
"scripts": {
"bundle": "yarn run bundle:prod",
"bundle:dev": "tsc -p tsconfig-build.json --declaration --declarationDir dist/types && webpack --config webpack.dev.js --progress",
"bundle:prod": "tsc -p tsconfig-build.json --declaration --declarationDir dist/types && webpack --config webpack.prod.js --progress",
"bundle:release": "yarn run bundle:prod",
"stats": "webpack --config webpack.prod.js --profile --json > stats.json && webpack-bundle-analyzer stats.json --mode static --no-open",
"clean": "yarn cache clean && rm -rf ./dist",
"lint": "tslint --project tsconfig.json",
"prepublish": "yarn bundle:release",
"test": "jest --ci --coverage --testResultsProcessor='jest-junit'",
"test:watch": "jest --watch"
},
"devDependencies": {
"@types/jest": "^27.0.3",
"clean-webpack-plugin": "1.0.0",
"jest": "^27.3.1",
"jest-junit": "^13.0.0",
"strip-loader": "^0.1.2",
"ts-jest": "^27.0.7",
"ts-loader": "^9.2.6",
"tslint": "5.12.1",
"typescript": "^4.4.4",
"webpack": "5.76.0",
"webpack-bundle-analyzer": "^4.10.1",
"webpack-cli": "4.10.0",
"webpack-merge": "4.2.1"
},
"dependencies": {
"@swrve/web-core": "1.3.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