diff --git a/.gitignore b/.gitignore index 5c18241..7a7138b 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,6 @@ test-build.pem test-build.zip test-build-firefox.zip /readme_assets/*-clear.png + +.windsurf/rules/snyk_rules.md +/zip diff --git a/package.json b/package.json index 6ade428..a37642c 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snyk-api-and-web-record-sequence", - "version": "0.0.8", + "version": "1.0.0", "description": "Snyk API & Web Record login/sequence", "license": "MIT", "scripts": { diff --git a/src/manifest-firefox.json b/src/manifest-firefox.json index d26b766..4e66bc9 100755 --- a/src/manifest-firefox.json +++ b/src/manifest-firefox.json @@ -1,6 +1,6 @@ { "name": "Snyk API & Web Sequence Recorder", - "version": "0.0.8", + "version": "1.0.0", "browser_specific_settings": { "gecko": { "id": "sequence-recorder@probely.com", diff --git a/src/pages/Background/index.js b/src/pages/Background/index.js index 2522a3c..24d7000 100644 --- a/src/pages/Background/index.js +++ b/src/pages/Background/index.js @@ -2,47 +2,77 @@ import '../../assets/img/icon-34.png'; import '../../assets/img/icon-128.png'; (function () { - let startURLDomensionsUpdated = false; + let startURLDimensionsUpdated = false; let aEvents = []; + chrome.storage.local.get(['recordingEvents', 'startURLDimensionsUpdated', 'recordingTimestamp'], (data) => { + const now = Date.now(); + const dataTTL = 10 * 60 * 1000; + + if (data.recordingTimestamp && (now - data.recordingTimestamp) > dataTTL) { + chrome.storage.local.remove(['recordingEvents', 'startURLDimensionsUpdated', 'recordingTimestamp']); + aEvents = []; + startURLDimensionsUpdated = false; + } else { + if (data.recordingEvents && Array.isArray(data.recordingEvents)) { + aEvents = data.recordingEvents; + } + if (data.startURLDimensionsUpdated !== undefined) { + startURLDimensionsUpdated = data.startURLDimensionsUpdated; + } + } + }); + chrome.storage.sync.get(['isRecording'], (data) => { if (data.isRecording) { (chrome.action || chrome.browserAction).setBadgeText( { text: '🔴', }, - () => {} + () => { } ); } else { (chrome.action || chrome.browserAction).setBadgeText( { text: '', }, - () => {} + () => { } ); } }); + function saveEventsToStorage() { + chrome.storage.local.set({ + recordingEvents: aEvents, + startURLDimensionsUpdated: startURLDimensionsUpdated, + recordingTimestamp: Date.now() + }); + } + chrome.runtime.onMessage.addListener((data, sender, sendResponse) => { if (data.messageType === 'events') { - if (!startURLDomensionsUpdated) { - startURLDomensionsUpdated = true; + if (!startURLDimensionsUpdated) { + startURLDimensionsUpdated = true; if (aEvents.length === 1 && data.event.type === 'goto') { aEvents[0].windowWidth = data.event.windowWidth; aEvents[0].windowHeight = data.event.windowHeight; if (aEvents[0].url === data.event.url) { + saveEventsToStorage(); return; } } } aEvents.push(data.event); + saveEventsToStorage(); } else if (data.messageType === 'start') { - startURLDomensionsUpdated = false; + startURLDimensionsUpdated = false; aEvents = [data.event]; + saveEventsToStorage(); } else if (data.messageType === 'clear') { - startURLDomensionsUpdated = false; + startURLDimensionsUpdated = false; aEvents = []; + chrome.storage.local.remove(['recordingEvents', 'startURLDimensionsUpdated', 'recordingTimestamp']); } else if (data.messageType === 'give_recording_data') { chrome.runtime.sendMessage({ messageType: 'recording_data', diff --git a/test-build-firefox/8867f464cc4dd91227f8.svg b/test-build-firefox/8867f464cc4dd91227f8.svg deleted file mode 100644 index f2ddf86..0000000 --- a/test-build-firefox/8867f464cc4dd91227f8.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test-build-firefox/8ed204157dcedddc56f2.png b/test-build-firefox/8ed204157dcedddc56f2.png deleted file mode 100644 index 9e4650b..0000000 Binary files a/test-build-firefox/8ed204157dcedddc56f2.png and /dev/null differ diff --git a/test-build-firefox/background.bundle.js b/test-build-firefox/background.bundle.js index cf94e69..45ca07a 100644 --- a/test-build-firefox/background.bundle.js +++ b/test-build-firefox/background.bundle.js @@ -1 +1 @@ -(()=>{"use strict";var e={p:"/"};e.p,e.p;!function(){let e=!1,t=[];chrome.storage.sync.get(["isRecording"],(e=>{e.isRecording?(chrome.action||chrome.browserAction).setBadgeText({text:"🔴"},(()=>{})):(chrome.action||chrome.browserAction).setBadgeText({text:""},(()=>{}))})),chrome.runtime.onMessage.addListener(((n,r,s)=>{if("events"===n.messageType){if(!e&&(e=!0,1===t.length&&"goto"===n.event.type&&(t[0].windowWidth=n.event.windowWidth,t[0].windowHeight=n.event.windowHeight,t[0].url===n.event.url)))return;t.push(n.event)}else"start"===n.messageType?(e=!1,t=[n.event]):"clear"===n.messageType?(e=!1,t=[]):"give_recording_data"===n.messageType&&chrome.runtime.sendMessage({messageType:"recording_data",recordingData:[].concat(t)})}))}()})(); \ No newline at end of file +(()=>{"use strict";var e={p:"/"};e.p,e.p;!function(){let e=!1,t=[];function r(){chrome.storage.local.set({recordingEvents:t,startURLDimensionsUpdated:e,recordingTimestamp:Date.now()})}chrome.storage.local.get(["recordingEvents","startURLDimensionsUpdated","recordingTimestamp"],(r=>{const n=Date.now();r.recordingTimestamp&&n-r.recordingTimestamp>6e5?(chrome.storage.local.remove(["recordingEvents","startURLDimensionsUpdated","recordingTimestamp"]),t=[],e=!1):(r.recordingEvents&&Array.isArray(r.recordingEvents)&&(t=r.recordingEvents),void 0!==r.startURLDimensionsUpdated&&(e=r.startURLDimensionsUpdated))})),chrome.storage.sync.get(["isRecording"],(e=>{e.isRecording?(chrome.action||chrome.browserAction).setBadgeText({text:"🔴"},(()=>{})):(chrome.action||chrome.browserAction).setBadgeText({text:""},(()=>{}))})),chrome.runtime.onMessage.addListener(((n,s,o)=>{if("events"===n.messageType){if(!e&&(e=!0,1===t.length&&"goto"===n.event.type&&(t[0].windowWidth=n.event.windowWidth,t[0].windowHeight=n.event.windowHeight,t[0].url===n.event.url)))return void r();t.push(n.event),r()}else"start"===n.messageType?(e=!1,t=[n.event],r()):"clear"===n.messageType?(e=!1,t=[],chrome.storage.local.remove(["recordingEvents","startURLDimensionsUpdated","recordingTimestamp"])):"give_recording_data"===n.messageType&&chrome.runtime.sendMessage({messageType:"recording_data",recordingData:[].concat(t)})}))}()})(); \ No newline at end of file diff --git a/test-build-firefox/e1ff029ad955c8c1a09d.png b/test-build-firefox/e1ff029ad955c8c1a09d.png deleted file mode 100644 index b090615..0000000 Binary files a/test-build-firefox/e1ff029ad955c8c1a09d.png and /dev/null differ diff --git a/test-build-firefox/manifest.json b/test-build-firefox/manifest.json index d26b766..4e66bc9 100644 --- a/test-build-firefox/manifest.json +++ b/test-build-firefox/manifest.json @@ -1,6 +1,6 @@ { "name": "Snyk API & Web Sequence Recorder", - "version": "0.0.8", + "version": "1.0.0", "browser_specific_settings": { "gecko": { "id": "sequence-recorder@probely.com", diff --git a/test-build/8867f464cc4dd91227f8.svg b/test-build/8867f464cc4dd91227f8.svg deleted file mode 100644 index f2ddf86..0000000 --- a/test-build/8867f464cc4dd91227f8.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test-build/8ed204157dcedddc56f2.png b/test-build/8ed204157dcedddc56f2.png deleted file mode 100644 index 9e4650b..0000000 Binary files a/test-build/8ed204157dcedddc56f2.png and /dev/null differ diff --git a/test-build/background.bundle.js b/test-build/background.bundle.js index cf94e69..45ca07a 100644 --- a/test-build/background.bundle.js +++ b/test-build/background.bundle.js @@ -1 +1 @@ -(()=>{"use strict";var e={p:"/"};e.p,e.p;!function(){let e=!1,t=[];chrome.storage.sync.get(["isRecording"],(e=>{e.isRecording?(chrome.action||chrome.browserAction).setBadgeText({text:"🔴"},(()=>{})):(chrome.action||chrome.browserAction).setBadgeText({text:""},(()=>{}))})),chrome.runtime.onMessage.addListener(((n,r,s)=>{if("events"===n.messageType){if(!e&&(e=!0,1===t.length&&"goto"===n.event.type&&(t[0].windowWidth=n.event.windowWidth,t[0].windowHeight=n.event.windowHeight,t[0].url===n.event.url)))return;t.push(n.event)}else"start"===n.messageType?(e=!1,t=[n.event]):"clear"===n.messageType?(e=!1,t=[]):"give_recording_data"===n.messageType&&chrome.runtime.sendMessage({messageType:"recording_data",recordingData:[].concat(t)})}))}()})(); \ No newline at end of file +(()=>{"use strict";var e={p:"/"};e.p,e.p;!function(){let e=!1,t=[];function r(){chrome.storage.local.set({recordingEvents:t,startURLDimensionsUpdated:e,recordingTimestamp:Date.now()})}chrome.storage.local.get(["recordingEvents","startURLDimensionsUpdated","recordingTimestamp"],(r=>{const n=Date.now();r.recordingTimestamp&&n-r.recordingTimestamp>6e5?(chrome.storage.local.remove(["recordingEvents","startURLDimensionsUpdated","recordingTimestamp"]),t=[],e=!1):(r.recordingEvents&&Array.isArray(r.recordingEvents)&&(t=r.recordingEvents),void 0!==r.startURLDimensionsUpdated&&(e=r.startURLDimensionsUpdated))})),chrome.storage.sync.get(["isRecording"],(e=>{e.isRecording?(chrome.action||chrome.browserAction).setBadgeText({text:"🔴"},(()=>{})):(chrome.action||chrome.browserAction).setBadgeText({text:""},(()=>{}))})),chrome.runtime.onMessage.addListener(((n,s,o)=>{if("events"===n.messageType){if(!e&&(e=!0,1===t.length&&"goto"===n.event.type&&(t[0].windowWidth=n.event.windowWidth,t[0].windowHeight=n.event.windowHeight,t[0].url===n.event.url)))return void r();t.push(n.event),r()}else"start"===n.messageType?(e=!1,t=[n.event],r()):"clear"===n.messageType?(e=!1,t=[],chrome.storage.local.remove(["recordingEvents","startURLDimensionsUpdated","recordingTimestamp"])):"give_recording_data"===n.messageType&&chrome.runtime.sendMessage({messageType:"recording_data",recordingData:[].concat(t)})}))}()})(); \ No newline at end of file diff --git a/test-build/e1ff029ad955c8c1a09d.png b/test-build/e1ff029ad955c8c1a09d.png deleted file mode 100644 index b090615..0000000 Binary files a/test-build/e1ff029ad955c8c1a09d.png and /dev/null differ diff --git a/test-build/manifest.json b/test-build/manifest.json index 0a3925d..9928474 100644 --- a/test-build/manifest.json +++ b/test-build/manifest.json @@ -1 +1 @@ -{"version":"0.0.8","manifest_version":3,"name":"Snyk API & Web Sequence Recorder","action":{"default_popup":"popup.html","default_icon":{"16":"icon-34.png","48":"icon-48.png"}},"icons":{"128":"icon-128.png"},"background":{"service_worker":"background.bundle.js"},"content_scripts":[{"matches":["http://*/*","https://*/*"],"js":["contentScript.bundle.js"],"css":["content.styles.css"],"run_at":"document_start","all_frames":true,"match_about_blank":true}],"web_accessible_resources":[{"resources":["content.styles.css","icon-128.png","icon-34.png"],"matches":[""]}],"permissions":["storage","activeTab"],"host_permissions":["http://*/*","https://*/*"]} \ No newline at end of file +{"version":"1.0.0","manifest_version":3,"name":"Snyk API & Web Sequence Recorder","action":{"default_popup":"popup.html","default_icon":{"16":"icon-34.png","48":"icon-48.png"}},"icons":{"128":"icon-128.png"},"background":{"service_worker":"background.bundle.js"},"content_scripts":[{"matches":["http://*/*","https://*/*"],"js":["contentScript.bundle.js"],"css":["content.styles.css"],"run_at":"document_start","all_frames":true,"match_about_blank":true}],"web_accessible_resources":[{"resources":["content.styles.css","icon-128.png","icon-34.png"],"matches":[""]}],"permissions":["storage","activeTab"],"host_permissions":["http://*/*","https://*/*"]} \ No newline at end of file