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