extension-develop 3.12.0 → 3.13.0
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/README.md +1 -1
- package/dist/{890.cjs → 264.cjs} +179 -4770
- package/dist/324.cjs +21 -3
- package/dist/extension-js-devtools/chrome/background/service_worker.js +1 -1
- package/dist/extension-js-devtools/chromium/background/service_worker.js +1 -1
- package/dist/extension-js-devtools/edge/background/service_worker.js +1 -1
- package/dist/extension-js-devtools/firefox/background/scripts.js +1 -1
- package/dist/module.cjs +349 -5644
- package/dist/preview.cjs +1461 -0
- package/package.json +10 -12
- package/dist/215.cjs +0 -849
- package/dist/323.cjs +0 -1100
- package/webpack/webpack-lib/build-dependencies.json +0 -24
package/dist/324.cjs
CHANGED
|
@@ -17,7 +17,6 @@ exports.modules = {
|
|
|
17
17
|
var messages = __webpack_require__("./webpack/dev-server/messages.ts");
|
|
18
18
|
var external_crypto_ = __webpack_require__("crypto");
|
|
19
19
|
var external_net_ = __webpack_require__("net");
|
|
20
|
-
var shared_utils = __webpack_require__("./webpack/plugin-browsers/browsers-lib/shared-utils.ts");
|
|
21
20
|
function _define_property(obj, key, value) {
|
|
22
21
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
23
22
|
value: value,
|
|
@@ -28,6 +27,25 @@ exports.modules = {
|
|
|
28
27
|
else obj[key] = value;
|
|
29
28
|
return obj;
|
|
30
29
|
}
|
|
30
|
+
async function findAvailablePortNear(startPort, maxAttempts = 20, host = '127.0.0.1') {
|
|
31
|
+
function tryPort(port) {
|
|
32
|
+
return new Promise((resolve)=>{
|
|
33
|
+
const server = external_net_.createServer();
|
|
34
|
+
server.once('error', ()=>resolve(false));
|
|
35
|
+
server.once('listening', ()=>{
|
|
36
|
+
server.close(()=>resolve(true));
|
|
37
|
+
});
|
|
38
|
+
server.listen(port, host);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
let candidate = startPort;
|
|
42
|
+
for(let i = 0; i < maxAttempts; i++){
|
|
43
|
+
const ok = await tryPort(candidate);
|
|
44
|
+
if (ok) return candidate;
|
|
45
|
+
candidate += 1;
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`Could not find an available port near ${startPort} after ${maxAttempts} attempts`);
|
|
48
|
+
}
|
|
31
49
|
function resolveInstanceIdOverride() {
|
|
32
50
|
const raw = process.env.EXTENSION_INSTANCE_ID || process.env.EXTENSION_DEV_INSTANCE_ID || process.env.EXTJS_INSTANCE_ID || '';
|
|
33
51
|
const value = String(raw).trim();
|
|
@@ -39,8 +57,8 @@ exports.modules = {
|
|
|
39
57
|
try {
|
|
40
58
|
const isValidRequested = 'number' == typeof requestedPort && requestedPort > 0 && requestedPort < 65536;
|
|
41
59
|
const base = isValidRequested ? requestedPort : this.basePort;
|
|
42
|
-
const port = await (
|
|
43
|
-
const webSocketPort = await (
|
|
60
|
+
const port = await findAvailablePortNear(base);
|
|
61
|
+
const webSocketPort = await findAvailablePortNear(port + 1);
|
|
44
62
|
const instanceId = resolveInstanceIdOverride() || external_crypto_.randomBytes(8).toString('hex');
|
|
45
63
|
this.currentInstance = {
|
|
46
64
|
instanceId,
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
██████████████████████████ ████████████████████████████
|
|
23
23
|
██████████████████████████████████████████████████████████
|
|
24
24
|
██████████████████████████████████████████████████████████
|
|
25
|
-
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js
|
|
25
|
+
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js authors.
|
|
26
26
|
`,"background: transparent; color: #0971fe; "),!t){try{await i()}catch{try{chrome.tabs.create({url:n})}catch{}}return}let a=String(t.url||""),s=a.startsWith(`${r}://newtab`)||a.startsWith(`${r}://welcome`);0;s?await i():o(t,n)})}catch{}}r.rv=()=>"1.7.5",r.ruid="bundler=rspack@1.7.5";let c=[],l=new Map,d=new Set;try{chrome.storage.session.get(["logger_capture_stacks"],e=>{e?.logger_capture_stacks}),chrome.storage.session.onChanged.addListener((e,t)=>{"session"===t&&"logger_capture_stacks"in e&&e.logger_capture_stacks?.newValue})}catch{}function u(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function m(e){if(c.push(e),c.length>2e3&&c.shift(),"number"==typeof e.tabId){let t=l.get(e.tabId)||[];t.push(e),t.length>1e3&&t.shift(),l.set(e.tabId,t)}for(let t of d)try{let r={type:"append",event:e};t.postMessage(r)}catch{}}chrome.runtime.onConnect.addListener(e=>{if("logger"!==e.name)return;let t=t=>(function(e,t){var r;let n,a;if("subscribe"===t.type){d.add(e);try{e.postMessage({type:"init",events:c})}catch{}return}let o=e.sender?.id;if(o&&o===chrome.runtime.id)return;let i=e.sender?.tab?.id,s=e.sender?.frameId,l=e.sender?.tab?.incognito,m=e.sender?.tab?.windowId;if(r=o||`tab:${i??"unknown"}`,n=Date.now(),(a=y.get(r))?n-a.ts>1e3?(a.ts=n,a.count=1,!!0):(a.count+=1,!!(a.count>200)):(y.set(r,{ts:n,count:1}),!!0))return;let g=x(t.messageParts),h={id:u(),timestamp:Date.now(),level:t.level,context:t.context,messageParts:g,eventType:"dx.signal"===t.eventType||"log"===t.eventType?t.eventType:"log",code:"string"==typeof t.code?b(t.code,128):void 0,status:"ok"===t.status||"warn"===t.status||"fail"===t.status?t.status:void 0,data:w(t.data),remediation:"string"==typeof t.remediation?b(t.remediation,512):void 0,url:t.url,stack:t.stack,errorName:t.errorName,tabId:i,frameId:s,sourceExtensionId:o,incognito:l,windowId:m};p(h)})(e,t);e.onMessage.addListener(t),e.onDisconnect.addListener(()=>{d.delete(e);try{e.onMessage.removeListener(t)}catch{}})}),chrome.action.onClicked.addListener(async()=>{try{await chrome.sidePanel.setPanelBehavior({openPanelOnActionClick:!0})}catch{}});let g=[],h=new Set;function f(e){try{return JSON.stringify(e)}catch{return String(e)}}function p(e){let t=`${e.eventType??"log"}|${e.code??""}|${e.status??""}|${e.level}|${e.context}|${e.tabId??""}|${e.frameId??""}|${e.url??""}|${f(e.messageParts)}|${f(e.data)}`.slice(0,512);if(!h.has(t)){if(h.add(t),g.push(t),g.length>2e3){let e=g.shift();e&&h.delete(e)}if(e.url&&!e.hostname)try{let t=new URL(e.url);e.hostname=`${t.hostname}${t.pathname}`}catch{}if(null!=e.tabId&&null==e.title)try{chrome.tabs.get(e.tabId,t=>{if(chrome.runtime.lastError)return m(e);e.title=t?.title||e.title,m(e)});return}catch{}m(e)}}let y=new Map;function b(e,t=2048){return e.length<=t?e:e.slice(0,t)+"..."}function v(e){try{return JSON.stringify(e)}catch{try{return String(e)}catch{return"[unserializable]"}}}function x(e){try{let t=[];for(let r of e??[])if("string"==typeof r?t.push(b(r)):r instanceof Error?t.push(b(`${r.name}: ${r.message}`)):t.push(b(v(r))),t.join(" ").length>8192)break;return t}catch{return[v(e)]}}function w(e){if(e&&"object"==typeof e)try{let t=JSON.stringify(e);if(!t)return;let r=JSON.parse(t);if(0===Object.keys(r).length)return;return r}catch{return}}function I(e,t,r={}){p({id:u(),timestamp:Date.now(),level:e,context:"background",messageParts:t,url:"string"==typeof r.url?r.url:void 0,tabId:"number"==typeof r.tabId?r.tabId:void 0,frameId:"number"==typeof r.frameId?r.frameId:void 0})}async function k(){let e=(await new Promise(e=>{chrome.management.getAll(e)})||[]).filter(e=>{let t;return e.id!==chrome.runtime.id&&"igcijhgmihmjbbahdabahfbpffalcfnn"!==e.id&&"development"===e.installType&&"theme"!==e.type&&!((t=String(e.name||"").toLowerCase()).includes("extension.js built-in developer tools")||t.includes("extension.js theme"))});if(0===e.length)return{ok:!0,extensionEnabled:null};let t=e.find(e=>e.enabled)||e[e.length-1];return{ok:!0,extensionEnabled:!!t?.enabled,extensionName:t?.name,extensionId:t?.id}}async function L(e){if(e.startsWith("data:"))return e;let t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch icon: ${t.status}`);let r=await t.blob();return await new Promise((e,t)=>{let n=new FileReader;n.onload=()=>e(String(n.result||"")),n.onerror=()=>t(Error("Failed to read icon blob")),n.readAsDataURL(r)})}chrome.runtime.onInstalled.addListener(e=>{I("info",["extension installed",e.reason,e.previousVersion??null])}),chrome.storage.session.get(["logger_events"],e=>{let t=Array.isArray(e?.logger_events)?e.logger_events:[];if(t.length)for(let e of t.slice(-2e3))c.push(e)}),setInterval(()=>{chrome.storage.session.set({logger_events:c.slice(-200)})},2e3),chrome.runtime.onStartup.addListener(()=>{I("info",["extension startup"]);try{I("info",["TEST_LOG: background-start"])}catch{}}),chrome.tabs.onCreated.addListener(e=>{I("info",["tab created"],{tabId:e.id??void 0,url:e.url})}),chrome.tabs.onUpdated.addListener((e,t,r)=>{"loading"===t.status&&I("debug",["tab loading"],{tabId:e,url:r.url}),"complete"===t.status&&I("debug",["tab complete"],{tabId:e,url:r.url}),"string"==typeof t.url&&I("info",["tab url changed",t.url],{tabId:e,url:t.url})}),chrome.tabs.onRemoved.addListener((e,t)=>{I("info",["tab removed",{windowId:t.windowId,isWindowClosing:t.isWindowClosing}],{tabId:e})}),chrome.webNavigation.onBeforeNavigate.addListener(e=>{0===e.frameId&&I("info",["Before navigate"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCommitted.addListener(e=>{0===e.frameId&&I("info",["Navigation committed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCompleted.addListener(e=>{0===e.frameId&&I("info",["Navigation completed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onErrorOccurred.addListener(e=>{0===e.frameId&&I("error",["Navigation error",e.error],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&I("info",["History state updated"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.runtime.onMessage.addListener((e,t,r)=>e&&"get-events"===e.type?(r({events:c.slice(-500)}),!0):!!e&&"clear-events"===e.type&&(c.length=0,r({ok:!0}),!0)),chrome.runtime.onMessage.addListener((e,t,r)=>{if((!t?.id||t.id===chrome.runtime.id)&&e){if("resolve-icon-url"===e.type)return e.url&&function(e){if(e.startsWith("data:"))return!0;try{let t=new URL(e);return"moz-extension:"===t.protocol||"chrome-extension:"===t.protocol}catch{return!1}}(e.url)?(L(e.url).then(e=>r({ok:!0,dataUrl:e})).catch(e=>r({ok:!1,error:String(e)})),!0):void r({ok:!1,error:"Unsupported icon URL"});if("get-dx-status"===e.type)return k().then(e=>r(e)).catch(e=>r({ok:!1,error:String(e||"Unknown error")})),!0;if("dx-signal"===e.type){try{var n={level:e.level||"info",context:e.context||"content",messageParts:Array.isArray(e.messageParts)&&e.messageParts.length>0?e.messageParts:[e.code||"DX_SIGNAL"],eventType:e.eventType||"dx.signal",code:e.code,status:e.status,data:e.data,remediation:e.remediation,url:"string"==typeof e.url?e.url:void 0,stack:"string"==typeof e.stack?e.stack:void 0,errorName:"string"==typeof e.errorName?e.errorName:void 0};p({id:u(),timestamp:Date.now(),level:n.level,context:n.context,messageParts:x(n.messageParts||[]),eventType:"dx.signal"===n.eventType||"log"===n.eventType?n.eventType:"log",code:"string"==typeof n.code?b(String(n.code),128):void 0,status:"ok"===n.status||"warn"===n.status||"fail"===n.status?n.status:void 0,data:w(n.data),remediation:"string"==typeof n.remediation?b(n.remediation,512):void 0,url:n.url,stack:n.stack,errorName:n.errorName,tabId:n.tabId,frameId:n.frameId}),r({ok:!0})}catch(e){r({ok:!1,error:String(e||"Unknown error")})}return!0}}}),chrome.runtime.onStartup.addListener(async()=>{await s()}),chrome.runtime.onInstalled.addListener(async()=>{await s()})})();
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
██████████████████████████ ████████████████████████████
|
|
23
23
|
██████████████████████████████████████████████████████████
|
|
24
24
|
██████████████████████████████████████████████████████████
|
|
25
|
-
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js
|
|
25
|
+
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js authors.
|
|
26
26
|
`,"background: transparent; color: #0971fe; "),!t){try{await i()}catch{try{chrome.tabs.create({url:n})}catch{}}return}let a=String(t.url||""),s=a.startsWith(`${r}://newtab`)||a.startsWith(`${r}://welcome`);0;s?await i():o(t,n)})}catch{}}r.rv=()=>"1.7.5",r.ruid="bundler=rspack@1.7.5";let c=[],l=new Map,d=new Set;try{chrome.storage.session.get(["logger_capture_stacks"],e=>{e?.logger_capture_stacks}),chrome.storage.session.onChanged.addListener((e,t)=>{"session"===t&&"logger_capture_stacks"in e&&e.logger_capture_stacks?.newValue})}catch{}function u(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function m(e){if(c.push(e),c.length>2e3&&c.shift(),"number"==typeof e.tabId){let t=l.get(e.tabId)||[];t.push(e),t.length>1e3&&t.shift(),l.set(e.tabId,t)}for(let t of d)try{let r={type:"append",event:e};t.postMessage(r)}catch{}}chrome.runtime.onConnect.addListener(e=>{if("logger"!==e.name)return;let t=t=>(function(e,t){var r;let n,a;if("subscribe"===t.type){d.add(e);try{e.postMessage({type:"init",events:c})}catch{}return}let o=e.sender?.id;if(o&&o===chrome.runtime.id)return;let i=e.sender?.tab?.id,s=e.sender?.frameId,l=e.sender?.tab?.incognito,m=e.sender?.tab?.windowId;if(r=o||`tab:${i??"unknown"}`,n=Date.now(),(a=y.get(r))?n-a.ts>1e3?(a.ts=n,a.count=1,!!0):(a.count+=1,!!(a.count>200)):(y.set(r,{ts:n,count:1}),!!0))return;let g=x(t.messageParts),h={id:u(),timestamp:Date.now(),level:t.level,context:t.context,messageParts:g,eventType:"dx.signal"===t.eventType||"log"===t.eventType?t.eventType:"log",code:"string"==typeof t.code?b(t.code,128):void 0,status:"ok"===t.status||"warn"===t.status||"fail"===t.status?t.status:void 0,data:w(t.data),remediation:"string"==typeof t.remediation?b(t.remediation,512):void 0,url:t.url,stack:t.stack,errorName:t.errorName,tabId:i,frameId:s,sourceExtensionId:o,incognito:l,windowId:m};p(h)})(e,t);e.onMessage.addListener(t),e.onDisconnect.addListener(()=>{d.delete(e);try{e.onMessage.removeListener(t)}catch{}})}),chrome.action.onClicked.addListener(async()=>{try{await chrome.sidePanel.setPanelBehavior({openPanelOnActionClick:!0})}catch{}});let g=[],h=new Set;function f(e){try{return JSON.stringify(e)}catch{return String(e)}}function p(e){let t=`${e.eventType??"log"}|${e.code??""}|${e.status??""}|${e.level}|${e.context}|${e.tabId??""}|${e.frameId??""}|${e.url??""}|${f(e.messageParts)}|${f(e.data)}`.slice(0,512);if(!h.has(t)){if(h.add(t),g.push(t),g.length>2e3){let e=g.shift();e&&h.delete(e)}if(e.url&&!e.hostname)try{let t=new URL(e.url);e.hostname=`${t.hostname}${t.pathname}`}catch{}if(null!=e.tabId&&null==e.title)try{chrome.tabs.get(e.tabId,t=>{if(chrome.runtime.lastError)return m(e);e.title=t?.title||e.title,m(e)});return}catch{}m(e)}}let y=new Map;function b(e,t=2048){return e.length<=t?e:e.slice(0,t)+"..."}function v(e){try{return JSON.stringify(e)}catch{try{return String(e)}catch{return"[unserializable]"}}}function x(e){try{let t=[];for(let r of e??[])if("string"==typeof r?t.push(b(r)):r instanceof Error?t.push(b(`${r.name}: ${r.message}`)):t.push(b(v(r))),t.join(" ").length>8192)break;return t}catch{return[v(e)]}}function w(e){if(e&&"object"==typeof e)try{let t=JSON.stringify(e);if(!t)return;let r=JSON.parse(t);if(0===Object.keys(r).length)return;return r}catch{return}}function I(e,t,r={}){p({id:u(),timestamp:Date.now(),level:e,context:"background",messageParts:t,url:"string"==typeof r.url?r.url:void 0,tabId:"number"==typeof r.tabId?r.tabId:void 0,frameId:"number"==typeof r.frameId?r.frameId:void 0})}async function k(){let e=(await new Promise(e=>{chrome.management.getAll(e)})||[]).filter(e=>{let t;return e.id!==chrome.runtime.id&&"igcijhgmihmjbbahdabahfbpffalcfnn"!==e.id&&"development"===e.installType&&"theme"!==e.type&&!((t=String(e.name||"").toLowerCase()).includes("extension.js built-in developer tools")||t.includes("extension.js theme"))});if(0===e.length)return{ok:!0,extensionEnabled:null};let t=e.find(e=>e.enabled)||e[e.length-1];return{ok:!0,extensionEnabled:!!t?.enabled,extensionName:t?.name,extensionId:t?.id}}async function L(e){if(e.startsWith("data:"))return e;let t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch icon: ${t.status}`);let r=await t.blob();return await new Promise((e,t)=>{let n=new FileReader;n.onload=()=>e(String(n.result||"")),n.onerror=()=>t(Error("Failed to read icon blob")),n.readAsDataURL(r)})}chrome.runtime.onInstalled.addListener(e=>{I("info",["extension installed",e.reason,e.previousVersion??null])}),chrome.storage.session.get(["logger_events"],e=>{let t=Array.isArray(e?.logger_events)?e.logger_events:[];if(t.length)for(let e of t.slice(-2e3))c.push(e)}),setInterval(()=>{chrome.storage.session.set({logger_events:c.slice(-200)})},2e3),chrome.runtime.onStartup.addListener(()=>{I("info",["extension startup"]);try{I("info",["TEST_LOG: background-start"])}catch{}}),chrome.tabs.onCreated.addListener(e=>{I("info",["tab created"],{tabId:e.id??void 0,url:e.url})}),chrome.tabs.onUpdated.addListener((e,t,r)=>{"loading"===t.status&&I("debug",["tab loading"],{tabId:e,url:r.url}),"complete"===t.status&&I("debug",["tab complete"],{tabId:e,url:r.url}),"string"==typeof t.url&&I("info",["tab url changed",t.url],{tabId:e,url:t.url})}),chrome.tabs.onRemoved.addListener((e,t)=>{I("info",["tab removed",{windowId:t.windowId,isWindowClosing:t.isWindowClosing}],{tabId:e})}),chrome.webNavigation.onBeforeNavigate.addListener(e=>{0===e.frameId&&I("info",["Before navigate"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCommitted.addListener(e=>{0===e.frameId&&I("info",["Navigation committed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCompleted.addListener(e=>{0===e.frameId&&I("info",["Navigation completed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onErrorOccurred.addListener(e=>{0===e.frameId&&I("error",["Navigation error",e.error],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&I("info",["History state updated"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.runtime.onMessage.addListener((e,t,r)=>e&&"get-events"===e.type?(r({events:c.slice(-500)}),!0):!!e&&"clear-events"===e.type&&(c.length=0,r({ok:!0}),!0)),chrome.runtime.onMessage.addListener((e,t,r)=>{if((!t?.id||t.id===chrome.runtime.id)&&e){if("resolve-icon-url"===e.type)return e.url&&function(e){if(e.startsWith("data:"))return!0;try{let t=new URL(e);return"moz-extension:"===t.protocol||"chrome-extension:"===t.protocol}catch{return!1}}(e.url)?(L(e.url).then(e=>r({ok:!0,dataUrl:e})).catch(e=>r({ok:!1,error:String(e)})),!0):void r({ok:!1,error:"Unsupported icon URL"});if("get-dx-status"===e.type)return k().then(e=>r(e)).catch(e=>r({ok:!1,error:String(e||"Unknown error")})),!0;if("dx-signal"===e.type){try{var n={level:e.level||"info",context:e.context||"content",messageParts:Array.isArray(e.messageParts)&&e.messageParts.length>0?e.messageParts:[e.code||"DX_SIGNAL"],eventType:e.eventType||"dx.signal",code:e.code,status:e.status,data:e.data,remediation:e.remediation,url:"string"==typeof e.url?e.url:void 0,stack:"string"==typeof e.stack?e.stack:void 0,errorName:"string"==typeof e.errorName?e.errorName:void 0};p({id:u(),timestamp:Date.now(),level:n.level,context:n.context,messageParts:x(n.messageParts||[]),eventType:"dx.signal"===n.eventType||"log"===n.eventType?n.eventType:"log",code:"string"==typeof n.code?b(String(n.code),128):void 0,status:"ok"===n.status||"warn"===n.status||"fail"===n.status?n.status:void 0,data:w(n.data),remediation:"string"==typeof n.remediation?b(n.remediation,512):void 0,url:n.url,stack:n.stack,errorName:n.errorName,tabId:n.tabId,frameId:n.frameId}),r({ok:!0})}catch(e){r({ok:!1,error:String(e||"Unknown error")})}return!0}}}),chrome.runtime.onStartup.addListener(async()=>{await s()}),chrome.runtime.onInstalled.addListener(async()=>{await s()})})();
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
██████████████████████████ ████████████████████████████
|
|
23
23
|
██████████████████████████████████████████████████████████
|
|
24
24
|
██████████████████████████████████████████████████████████
|
|
25
|
-
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js
|
|
25
|
+
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js authors.
|
|
26
26
|
`,"background: transparent; color: #0971fe; "),!t){try{await i()}catch{try{chrome.tabs.create({url:n})}catch{}}return}let a=String(t.url||""),s=a.startsWith(`${r}://newtab`)||a.startsWith(`${r}://welcome`);0;s?await i():o(t,n)})}catch{}}r.rv=()=>"1.7.5",r.ruid="bundler=rspack@1.7.5";let c=[],d=new Map,l=new Set;try{chrome.storage.session.get(["logger_capture_stacks"],e=>{e?.logger_capture_stacks}),chrome.storage.session.onChanged.addListener((e,t)=>{"session"===t&&"logger_capture_stacks"in e&&e.logger_capture_stacks?.newValue})}catch{}function u(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function m(e){if(c.push(e),c.length>2e3&&c.shift(),"number"==typeof e.tabId){let t=d.get(e.tabId)||[];t.push(e),t.length>1e3&&t.shift(),d.set(e.tabId,t)}for(let t of l)try{let r={type:"append",event:e};t.postMessage(r)}catch{}}chrome.runtime.onConnect.addListener(e=>{if("logger"!==e.name)return;let t=t=>(function(e,t){var r;let n,a;if("subscribe"===t.type){l.add(e);try{e.postMessage({type:"init",events:c})}catch{}return}let o=e.sender?.id;if(o&&o===chrome.runtime.id)return;let i=e.sender?.tab?.id,s=e.sender?.frameId,d=e.sender?.tab?.incognito,m=e.sender?.tab?.windowId;if(r=o||`tab:${i??"unknown"}`,n=Date.now(),(a=y.get(r))?n-a.ts>1e3?(a.ts=n,a.count=1,!!0):(a.count+=1,!!(a.count>200)):(y.set(r,{ts:n,count:1}),!!0))return;let g=x(t.messageParts),h={id:u(),timestamp:Date.now(),level:t.level,context:t.context,messageParts:g,eventType:"dx.signal"===t.eventType||"log"===t.eventType?t.eventType:"log",code:"string"==typeof t.code?b(t.code,128):void 0,status:"ok"===t.status||"warn"===t.status||"fail"===t.status?t.status:void 0,data:w(t.data),remediation:"string"==typeof t.remediation?b(t.remediation,512):void 0,url:t.url,stack:t.stack,errorName:t.errorName,tabId:i,frameId:s,sourceExtensionId:o,incognito:d,windowId:m};p(h)})(e,t);e.onMessage.addListener(t),e.onDisconnect.addListener(()=>{l.delete(e);try{e.onMessage.removeListener(t)}catch{}})}),chrome.action.onClicked.addListener(async()=>{try{await chrome.sidePanel.setPanelBehavior({openPanelOnActionClick:!0})}catch{}});let g=[],h=new Set;function f(e){try{return JSON.stringify(e)}catch{return String(e)}}function p(e){let t=`${e.eventType??"log"}|${e.code??""}|${e.status??""}|${e.level}|${e.context}|${e.tabId??""}|${e.frameId??""}|${e.url??""}|${f(e.messageParts)}|${f(e.data)}`.slice(0,512);if(!h.has(t)){if(h.add(t),g.push(t),g.length>2e3){let e=g.shift();e&&h.delete(e)}if(e.url&&!e.hostname)try{let t=new URL(e.url);e.hostname=`${t.hostname}${t.pathname}`}catch{}if(null!=e.tabId&&null==e.title)try{chrome.tabs.get(e.tabId,t=>{if(chrome.runtime.lastError)return m(e);e.title=t?.title||e.title,m(e)});return}catch{}m(e)}}let y=new Map;function b(e,t=2048){return e.length<=t?e:e.slice(0,t)+"..."}function v(e){try{return JSON.stringify(e)}catch{try{return String(e)}catch{return"[unserializable]"}}}function x(e){try{let t=[];for(let r of e??[])if("string"==typeof r?t.push(b(r)):r instanceof Error?t.push(b(`${r.name}: ${r.message}`)):t.push(b(v(r))),t.join(" ").length>8192)break;return t}catch{return[v(e)]}}function w(e){if(e&&"object"==typeof e)try{let t=JSON.stringify(e);if(!t)return;let r=JSON.parse(t);if(0===Object.keys(r).length)return;return r}catch{return}}function I(e,t,r={}){p({id:u(),timestamp:Date.now(),level:e,context:"background",messageParts:t,url:"string"==typeof r.url?r.url:void 0,tabId:"number"==typeof r.tabId?r.tabId:void 0,frameId:"number"==typeof r.frameId?r.frameId:void 0})}async function k(){let e=(await new Promise(e=>{chrome.management.getAll(e)})||[]).filter(e=>{let t;return e.id!==chrome.runtime.id&&"igcijhgmihmjbbahdabahfbpffalcfnn"!==e.id&&"development"===e.installType&&"theme"!==e.type&&!((t=String(e.name||"").toLowerCase()).includes("extension.js built-in developer tools")||t.includes("extension.js theme"))});if(0===e.length)return{ok:!0,extensionEnabled:null};let t=e.find(e=>e.enabled)||e[e.length-1];return{ok:!0,extensionEnabled:!!t?.enabled,extensionName:t?.name,extensionId:t?.id}}async function L(e){if(e.startsWith("data:"))return e;let t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch icon: ${t.status}`);let r=await t.blob();return await new Promise((e,t)=>{let n=new FileReader;n.onload=()=>e(String(n.result||"")),n.onerror=()=>t(Error("Failed to read icon blob")),n.readAsDataURL(r)})}chrome.runtime.onInstalled.addListener(e=>{I("info",["extension installed",e.reason,e.previousVersion??null])}),chrome.storage.session.get(["logger_events"],e=>{let t=Array.isArray(e?.logger_events)?e.logger_events:[];if(t.length)for(let e of t.slice(-2e3))c.push(e)}),setInterval(()=>{chrome.storage.session.set({logger_events:c.slice(-200)})},2e3),chrome.runtime.onStartup.addListener(()=>{I("info",["extension startup"]);try{I("info",["TEST_LOG: background-start"])}catch{}}),chrome.tabs.onCreated.addListener(e=>{I("info",["tab created"],{tabId:e.id??void 0,url:e.url})}),chrome.tabs.onUpdated.addListener((e,t,r)=>{"loading"===t.status&&I("debug",["tab loading"],{tabId:e,url:r.url}),"complete"===t.status&&I("debug",["tab complete"],{tabId:e,url:r.url}),"string"==typeof t.url&&I("info",["tab url changed",t.url],{tabId:e,url:t.url})}),chrome.tabs.onRemoved.addListener((e,t)=>{I("info",["tab removed",{windowId:t.windowId,isWindowClosing:t.isWindowClosing}],{tabId:e})}),chrome.webNavigation.onBeforeNavigate.addListener(e=>{0===e.frameId&&I("info",["Before navigate"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCommitted.addListener(e=>{0===e.frameId&&I("info",["Navigation committed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCompleted.addListener(e=>{0===e.frameId&&I("info",["Navigation completed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onErrorOccurred.addListener(e=>{0===e.frameId&&I("error",["Navigation error",e.error],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&I("info",["History state updated"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.runtime.onMessage.addListener((e,t,r)=>e&&"get-events"===e.type?(r({events:c.slice(-500)}),!0):!!e&&"clear-events"===e.type&&(c.length=0,r({ok:!0}),!0)),chrome.runtime.onMessage.addListener((e,t,r)=>{if((!t?.id||t.id===chrome.runtime.id)&&e){if("resolve-icon-url"===e.type)return e.url&&function(e){if(e.startsWith("data:"))return!0;try{let t=new URL(e);return"moz-extension:"===t.protocol||"chrome-extension:"===t.protocol}catch{return!1}}(e.url)?(L(e.url).then(e=>r({ok:!0,dataUrl:e})).catch(e=>r({ok:!1,error:String(e)})),!0):void r({ok:!1,error:"Unsupported icon URL"});if("get-dx-status"===e.type)return k().then(e=>r(e)).catch(e=>r({ok:!1,error:String(e||"Unknown error")})),!0;if("dx-signal"===e.type){try{var n={level:e.level||"info",context:e.context||"content",messageParts:Array.isArray(e.messageParts)&&e.messageParts.length>0?e.messageParts:[e.code||"DX_SIGNAL"],eventType:e.eventType||"dx.signal",code:e.code,status:e.status,data:e.data,remediation:e.remediation,url:"string"==typeof e.url?e.url:void 0,stack:"string"==typeof e.stack?e.stack:void 0,errorName:"string"==typeof e.errorName?e.errorName:void 0};p({id:u(),timestamp:Date.now(),level:n.level,context:n.context,messageParts:x(n.messageParts||[]),eventType:"dx.signal"===n.eventType||"log"===n.eventType?n.eventType:"log",code:"string"==typeof n.code?b(String(n.code),128):void 0,status:"ok"===n.status||"warn"===n.status||"fail"===n.status?n.status:void 0,data:w(n.data),remediation:"string"==typeof n.remediation?b(n.remediation,512):void 0,url:n.url,stack:n.stack,errorName:n.errorName,tabId:n.tabId,frameId:n.frameId}),r({ok:!0})}catch(e){r({ok:!1,error:String(e||"Unknown error")})}return!0}}}),chrome.runtime.onStartup.addListener(async()=>{await s()}),chrome.runtime.onInstalled.addListener(async()=>{await s()})})();
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
██████████████████████████ ████████████████████████████
|
|
23
23
|
██████████████████████████████████████████████████████████
|
|
24
24
|
██████████████████████████████████████████████████████████
|
|
25
|
-
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js
|
|
25
|
+
MIT (c) ${new Date().getFullYear()} - Cezar Augusto and the Extension.js authors.
|
|
26
26
|
`,"background: transparent; color: #0971fe; "),!t){try{await i()}catch{try{chrome.tabs.create({url:a})}catch{}}return}let n=String(t.url||""),s=n.startsWith("about:home")||n.startsWith("about:welcome")||n.startsWith("about:newtab")||"about:blank"===n;1;await i(),s||o(t,a)})}catch{}}r.rv=()=>"1.7.5",r.ruid="bundler=rspack@1.7.5";let d=[],c=new Map,l=new Set;try{chrome.storage.session.get(["logger_capture_stacks"],e=>{e?.logger_capture_stacks}),chrome.storage.session.onChanged.addListener((e,t)=>{"session"===t&&"logger_capture_stacks"in e&&e.logger_capture_stacks?.newValue})}catch{}function u(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function m(e){if(d.push(e),d.length>2e3&&d.shift(),"number"==typeof e.tabId){let t=c.get(e.tabId)||[];t.push(e),t.length>1e3&&t.shift(),c.set(e.tabId,t)}for(let t of l)try{let r={type:"append",event:e};t.postMessage(r)}catch{}}chrome.runtime.onConnect.addListener(e=>{if("logger"!==e.name)return;let t=t=>(function(e,t){var r;let a,n;if("subscribe"===t.type){l.add(e);try{e.postMessage({type:"init",events:d})}catch{}return}let o=e.sender?.id;if(o&&o===chrome.runtime.id)return;let i=e.sender?.tab?.id,s=e.sender?.frameId,c=e.sender?.tab?.incognito,m=e.sender?.tab?.windowId;if(r=o||`tab:${i??"unknown"}`,a=Date.now(),(n=y.get(r))?a-n.ts>1e3?(n.ts=a,n.count=1,!!0):(n.count+=1,!!(n.count>200)):(y.set(r,{ts:a,count:1}),!!0))return;let g=x(t.messageParts),h={id:u(),timestamp:Date.now(),level:t.level,context:t.context,messageParts:g,eventType:"dx.signal"===t.eventType||"log"===t.eventType?t.eventType:"log",code:"string"==typeof t.code?p(t.code,128):void 0,status:"ok"===t.status||"warn"===t.status||"fail"===t.status?t.status:void 0,data:w(t.data),remediation:"string"==typeof t.remediation?p(t.remediation,512):void 0,url:t.url,stack:t.stack,errorName:t.errorName,tabId:i,frameId:s,sourceExtensionId:o,incognito:c,windowId:m};b(h)})(e,t);e.onMessage.addListener(t),e.onDisconnect.addListener(()=>{l.delete(e);try{e.onMessage.removeListener(t)}catch{}})}),chrome.action.onClicked.addListener(async()=>{try{await chrome.sidePanel.setPanelBehavior({openPanelOnActionClick:!0})}catch{}});let g=[],h=new Set;function f(e){try{return JSON.stringify(e)}catch{return String(e)}}function b(e){let t=`${e.eventType??"log"}|${e.code??""}|${e.status??""}|${e.level}|${e.context}|${e.tabId??""}|${e.frameId??""}|${e.url??""}|${f(e.messageParts)}|${f(e.data)}`.slice(0,512);if(!h.has(t)){if(h.add(t),g.push(t),g.length>2e3){let e=g.shift();e&&h.delete(e)}if(e.url&&!e.hostname)try{let t=new URL(e.url);e.hostname=`${t.hostname}${t.pathname}`}catch{}if(null!=e.tabId&&null==e.title)try{chrome.tabs.get(e.tabId,t=>{if(chrome.runtime.lastError)return m(e);e.title=t?.title||e.title,m(e)});return}catch{}m(e)}}let y=new Map;function p(e,t=2048){return e.length<=t?e:e.slice(0,t)+"..."}function v(e){try{return JSON.stringify(e)}catch{try{return String(e)}catch{return"[unserializable]"}}}function x(e){try{let t=[];for(let r of e??[])if("string"==typeof r?t.push(p(r)):r instanceof Error?t.push(p(`${r.name}: ${r.message}`)):t.push(p(v(r))),t.join(" ").length>8192)break;return t}catch{return[v(e)]}}function w(e){if(e&&"object"==typeof e)try{let t=JSON.stringify(e);if(!t)return;let r=JSON.parse(t);if(0===Object.keys(r).length)return;return r}catch{return}}function I(e,t,r={}){b({id:u(),timestamp:Date.now(),level:e,context:"background",messageParts:t,url:"string"==typeof r.url?r.url:void 0,tabId:"number"==typeof r.tabId?r.tabId:void 0,frameId:"number"==typeof r.frameId?r.frameId:void 0})}async function k(){let e=(await new Promise(e=>{chrome.management.getAll(e)})||[]).filter(e=>{let t;return e.id!==chrome.runtime.id&&"igcijhgmihmjbbahdabahfbpffalcfnn"!==e.id&&"development"===e.installType&&"theme"!==e.type&&!((t=String(e.name||"").toLowerCase()).includes("extension.js built-in developer tools")||t.includes("extension.js theme"))});if(0===e.length)return{ok:!0,extensionEnabled:null};let t=e.find(e=>e.enabled)||e[e.length-1];return{ok:!0,extensionEnabled:!!t?.enabled,extensionName:t?.name,extensionId:t?.id}}async function L(e){if(e.startsWith("data:"))return e;let t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch icon: ${t.status}`);let r=await t.blob();return await new Promise((e,t)=>{let a=new FileReader;a.onload=()=>e(String(a.result||"")),a.onerror=()=>t(Error("Failed to read icon blob")),a.readAsDataURL(r)})}chrome.runtime.onInstalled.addListener(e=>{I("info",["extension installed",e.reason,e.previousVersion??null])}),chrome.storage.session.get(["logger_events"],e=>{let t=Array.isArray(e?.logger_events)?e.logger_events:[];if(t.length)for(let e of t.slice(-2e3))d.push(e)}),setInterval(()=>{chrome.storage.session.set({logger_events:d.slice(-200)})},2e3),chrome.runtime.onStartup.addListener(()=>{I("info",["extension startup"]);try{I("info",["TEST_LOG: background-start"])}catch{}}),chrome.tabs.onCreated.addListener(e=>{I("info",["tab created"],{tabId:e.id??void 0,url:e.url})}),chrome.tabs.onUpdated.addListener((e,t,r)=>{"loading"===t.status&&I("debug",["tab loading"],{tabId:e,url:r.url}),"complete"===t.status&&I("debug",["tab complete"],{tabId:e,url:r.url}),"string"==typeof t.url&&I("info",["tab url changed",t.url],{tabId:e,url:t.url})}),chrome.tabs.onRemoved.addListener((e,t)=>{I("info",["tab removed",{windowId:t.windowId,isWindowClosing:t.isWindowClosing}],{tabId:e})}),chrome.webNavigation.onBeforeNavigate.addListener(e=>{0===e.frameId&&I("info",["Before navigate"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCommitted.addListener(e=>{0===e.frameId&&I("info",["Navigation committed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onCompleted.addListener(e=>{0===e.frameId&&I("info",["Navigation completed"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onErrorOccurred.addListener(e=>{0===e.frameId&&I("error",["Navigation error",e.error],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.webNavigation.onHistoryStateUpdated.addListener(e=>{0===e.frameId&&I("info",["History state updated"],{tabId:e.tabId,frameId:e.frameId,url:e.url,title:"[navigation]"})}),chrome.runtime.onMessage.addListener((e,t,r)=>e&&"get-events"===e.type?(r({events:d.slice(-500)}),!0):!!e&&"clear-events"===e.type&&(d.length=0,r({ok:!0}),!0)),chrome.runtime.onMessage.addListener((e,t,r)=>{if((!t?.id||t.id===chrome.runtime.id)&&e){if("resolve-icon-url"===e.type)return e.url&&function(e){if(e.startsWith("data:"))return!0;try{let t=new URL(e);return"moz-extension:"===t.protocol||"chrome-extension:"===t.protocol}catch{return!1}}(e.url)?(L(e.url).then(e=>r({ok:!0,dataUrl:e})).catch(e=>r({ok:!1,error:String(e)})),!0):void r({ok:!1,error:"Unsupported icon URL"});if("get-dx-status"===e.type)return k().then(e=>r(e)).catch(e=>r({ok:!1,error:String(e||"Unknown error")})),!0;if("dx-signal"===e.type){try{var a={level:e.level||"info",context:e.context||"content",messageParts:Array.isArray(e.messageParts)&&e.messageParts.length>0?e.messageParts:[e.code||"DX_SIGNAL"],eventType:e.eventType||"dx.signal",code:e.code,status:e.status,data:e.data,remediation:e.remediation,url:"string"==typeof e.url?e.url:void 0,stack:"string"==typeof e.stack?e.stack:void 0,errorName:"string"==typeof e.errorName?e.errorName:void 0};b({id:u(),timestamp:Date.now(),level:a.level,context:a.context,messageParts:x(a.messageParts||[]),eventType:"dx.signal"===a.eventType||"log"===a.eventType?a.eventType:"log",code:"string"==typeof a.code?p(String(a.code),128):void 0,status:"ok"===a.status||"warn"===a.status||"fail"===a.status?a.status:void 0,data:w(a.data),remediation:"string"==typeof a.remediation?p(a.remediation,512):void 0,url:a.url,stack:a.stack,errorName:a.errorName,tabId:a.tabId,frameId:a.frameId}),r({ok:!0})}catch(e){r({ok:!1,error:String(e||"Unknown error")})}return!0}}}),chrome.runtime.onStartup.addListener(async()=>{await s()}),chrome.runtime.onInstalled.addListener(async()=>{await s()})})();
|