Skip to content

Commit

Permalink
Merge pull request #16 from oslabs-beta/experiment_without_rollup
Browse files Browse the repository at this point in the history
Experiment without rollup
  • Loading branch information
aramkrakirian committed Jan 8, 2022
2 parents f9e5fa9 + f40cf10 commit ff677e5
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 142 deletions.
2 changes: 1 addition & 1 deletion chrome_extension/background.js
Expand Up @@ -14,7 +14,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
);
if (request.body === 'runContentScript') {
sendResponse({ body: 'trying to run the content script' });
chrome.tabs.executeScript({ file: './output/bundledContentScript.js' });
chrome.tabs.executeScript({ file: './contentScript.js' });
}
// pass any received message along to main.js
if (request) {
Expand Down
2 changes: 1 addition & 1 deletion chrome_extension/build/bundleDelorean.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

60 changes: 44 additions & 16 deletions chrome_extension/contentScript.js
@@ -1,19 +1,33 @@
const sendMessages = (e) => {
window.postMessage({body: e });
console.log(e)
}
const p = (o) => JSON.parse(JSON.stringify(o));
// This injects the string iife below directly into the DOM to be executed and listen for events.
// Check the elements tab of the devtools to see the script tag added in

if (!window.tag) {
// creating a script tag to be injected into the browser's DOM where the application is running
window.tag = document.createElement("script");
// adding the following code to the script tag so that we can record the events that Svelte emits
// the code is added as an IIFE
window.tag.text = `
(function () {
'use strict';
const sendMessages = (eventDetail) => {
window.postMessage({ body: eventDetail });
console.log(eventDetail);
};
const parseEvent = (event) => JSON.parse(JSON.stringify(event));
function setupListeners(root) {
root.addEventListener('SvelteRegisterComponent', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteRegisterBlock', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMInsert', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMRemove', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMAddEventListener', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMRemoveEventListener',(e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMSetData', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMSetProperty', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMSetAttribute', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMRemoveAttribute', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteRegisterComponent', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteRegisterBlock', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMInsert', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMRemove', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMAddEventListener', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMRemoveEventListener',(e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMSetData', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMSetProperty', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMSetAttribute', (e) => sendMessages(parseEvent(e.detail)));
root.addEventListener('SvelteDOMRemoveAttribute', (e) => sendMessages(parseEvent(e.detail)));
}
setupListeners(window.document);
Expand All @@ -29,4 +43,18 @@ for (let i = 0; i < window.frames.length; i++) {
root.addEventListener('readystatechange', (e) => clearTimeout(timer), {
once: true,
});
}
}
})();
`;
document.children[0].append(window.tag);

window.addEventListener(
"message",
(messageEvent) => {
console.log(messageEvent);
messageEvent.source == window && chrome.runtime.sendMessage(messageEvent.data);
},
false
);
}
2 changes: 1 addition & 1 deletion chrome_extension/manifest.json
Expand Up @@ -8,5 +8,5 @@
"scripts": ["background.js"]
},
"permissions": ["tabs", "activeTab", "debugger", "<all_urls>"],
"web_accessible_resources": ["./output/bundledContentScript.js"]
"web_accessible_resources": ["./contentScript.js"]
}
70 changes: 0 additions & 70 deletions chrome_extension/output/bundledContentScript.js
@@ -1,70 +0,0 @@
if (!window.tag) {
window.tag = document.createElement('script')
window.tag.text = `
(function () {
'use strict';
const sendMessages = (e) => {
window.postMessage({body: e });
console.log(e);
};
const p = (o) => JSON.parse(JSON.stringify(o));
function setupListeners(root) {
root.addEventListener('SvelteRegisterComponent', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteRegisterBlock', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMInsert', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMRemove', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMAddEventListener', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMRemoveEventListener',(e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMSetData', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMSetProperty', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMSetAttribute', (e) => sendMessages(p(e.detail)));
root.addEventListener('SvelteDOMRemoveAttribute', (e) => sendMessages(p(e.detail)));
}
setupListeners(window.document);
for (let i = 0; i < window.frames.length; i++) {
const frame = window.frames[i];
const root = frame.document;
setupListeners(root);
const timer = setInterval(() => {
if (root == frame.document) return;
clearTimeout(timer);
setupListeners(frame.document);
}, 0);
root.addEventListener('readystatechange', (e) => clearTimeout(timer), {
once: true,
});
}
})();
`
if (window.sessionStorage.SvelteDevToolsProfilerEnabled === "true") window.tag.text = window.tag.text.replace('let profilerEnabled = false;', '$&\nstartProfiler();')
document.children[0].append(window.tag)
const sendMessage = chrome.runtime.sendMessage
const postMessage = window.postMessage.bind(window)
chrome.runtime.onMessage.addListener((message, sender) => {
const fromBackground = sender && sender.id === chrome.runtime.id
if (!fromBackground) {
console.error('Message from unexpected sender', sender, message)
return
}
switch (message.type) {
case 'startProfiler':
window.sessionStorage.SvelteDevToolsProfilerEnabled = "true"
break
case 'stopProfiler':
// fallthrough
case 'clear':
delete window.sessionStorage.SvelteDevToolsProfilerEnabled
break
}
postMessage(message)
})
window.addEventListener(
'message',
e => e.source == window && sendMessage(e.data),
false
)
window.addEventListener('unload', () => sendMessage({ type: 'clear' }))
}
2 changes: 1 addition & 1 deletion public/build/bundle.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 0 additions & 52 deletions rollup.config.js
Expand Up @@ -83,58 +83,6 @@ export default [
clearScreen: false,
},
},
{
input: "./chrome_extension/contentScript.js",
external: "chrome",
output: {
file: "./chrome_extension/output/bundledContentScript.js",
name: "contentScript",
format: "iife",
banner: `if (!window.tag) {
window.tag = document.createElement('script')
window.tag.text = \``,
footer: `\`
if (window.sessionStorage.SvelteDevToolsProfilerEnabled === "true") window.tag.text = window.tag.text.replace('let profilerEnabled = false;', '\$&\\nstartProfiler();')
document.children[0].append(window.tag)
const sendMessage = chrome.runtime.sendMessage
const postMessage = window.postMessage.bind(window)
chrome.runtime.onMessage.addListener((message, sender) => {
const fromBackground = sender && sender.id === chrome.runtime.id
if (!fromBackground) {
console.error('Message from unexpected sender', sender, message)
return
}
switch (message.type) {
case 'startProfiler':
window.sessionStorage.SvelteDevToolsProfilerEnabled = "true"
break
case 'stopProfiler':
// fallthrough
case 'clear':
delete window.sessionStorage.SvelteDevToolsProfilerEnabled
break
}
postMessage(message)
})
window.addEventListener(
'message',
e => e.source == window && sendMessage(e.data),
false
)
window.addEventListener('unload', () => sendMessage({ type: 'clear' }))
}`,
},
plugins: [
resolve(),
svelte({
preprocess: sveltePreprocess({ sourceMap: true }),
compilerOptions: {
// enable run-time checks when not in production
dev: !production,
},
}),
],
},
{
input: "./client/main.ts",
external: "chrome",
Expand Down

0 comments on commit ff677e5

Please sign in to comment.