Skip to content

Commit

Permalink
feat(app): add support for modules in transforms
Browse files Browse the repository at this point in the history
  • Loading branch information
JamieMason committed Feb 10, 2019
1 parent e808744 commit 215f49b
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 27 deletions.
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"import/extensions": 0,
"import/no-extraneous-dependencies": 0,
"import/no-unresolved": [2, { "ignore": ["electron"] }],
"import/prefer-default-export": 0,
"linebreak-style": 0
}
}
10 changes: 9 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@
]
},
"electronPackagerConfig": {
"ignore": [
"/scripts",
"/static",
"/test",
"/website"
],
"packageManager": "yarn"
},
"electronWinstallerConfig": {
Expand All @@ -38,7 +44,9 @@
"dependencies": {
"chokidar": "2.1.0",
"electron-compile": "6.4.4",
"electron-squirrel-startup": "1.0.0"
"electron-squirrel-startup": "1.0.0",
"memory-fs": "0.4.1",
"rollup": "1.1.2"
},
"devDependencies": {
"babel-plugin-transform-async-to-generator": "6.24.1",
Expand Down
15 changes: 9 additions & 6 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,28 @@ const path = require('path');
const chokidar = require('chokidar');
const electron = require('electron');

const { app, BrowserWindow, ipcMain } = electron;
const { createBundlerFor } = require('./lib/bundle');

let win;
let sourceWatcher;
let transformWatcher;
const { app, BrowserWindow, ipcMain } = electron;

const rootPath = path.resolve(__dirname, '..');
const sourcePath = path.resolve(rootPath, './test/source.js');
const transformPath = path.resolve(rootPath, './test/transform.js');
const uiPath = path.resolve(rootPath, './website/index.html');
const clientScriptPath = path.resolve(__dirname, './inject.js');

let win;
let sourceWatcher;
let transformWatcher;

const sendSourceToBrowser = () => {
const sourceData = fs.readFileSync(sourcePath, { encoding: 'utf8' });
win.webContents.send('source-change-on-disk', sourceData);
};

const sendTransformToBrowser = () => {
const transformData = fs.readFileSync(transformPath, { encoding: 'utf8' });
const sendTransformToBrowser = async () => {
const getBundledTransformData = await createBundlerFor(transformPath);
const transformData = await getBundledTransformData();
win.webContents.send('transform-change-on-disk', transformData);
};

Expand Down
15 changes: 15 additions & 0 deletions src/lib/bundle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const rollup = require('rollup');

export const createBundlerFor = async (entryPath) => {
const bundle = await rollup.rollup({ input: { bundle: entryPath } });
return async () => {
const { output } = await bundle.generate({ format: 'esm' });
let code = '';
for (const chunkOrAsset of output) {
if (!chunkOrAsset.isAsset) {
code += chunkOrAsset.code;
}
}
return code;
};
};
67 changes: 47 additions & 20 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@
vue-template-compiler "^2.0.0-alpha.8"
vue-template-es2015-compiler "^1.4.2"

"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==

"@types/events@*":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
Expand All @@ -71,19 +76,19 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==

"@types/node@*":
version "10.12.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.23.tgz#308a3acdc5d1c842aeadc50b867d99c46cfae868"
integrity sha512-EKhb5NveQ3NlW5EV7B0VRtDKwUfVey8LuJRl9pp5iW0se87/ZqLjG0PMf2MCzPXAJYWZN5Ltg7pHIAf9/Dm1tQ==
version "10.12.24"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.24.tgz#b13564af612a22a20b5d95ca40f1bffb3af315cf"
integrity sha512-GWWbvt+z9G5otRBW8rssOFgRY87J9N/qbhqfjMZ+gUuL6zoL+Hm6gP/8qQBG4jjimqdaNLCehcVapZ/Fs2WjCQ==

"@types/node@^7.0.12":
version "7.10.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.10.2.tgz#a98845168012d7a63a84d50e738829da43bdb0de"
integrity sha512-RO4ig5taKmcrU4Rex8ojG1gpwFkjddzug9iPQSDvbewHN9vDpcFewevkaOK+KT+w1LeZnxbgOyfXwV4pxsQ4GQ==
version "7.10.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.10.3.tgz#b85d16331cf5ffe434600816593f86e10ccc0e73"
integrity sha512-HeyK+csRk7Khhg9krpMGJeT9pLzjsmiJFHYRzYpPv/dQ5tPclQsbvceiX/HKynRt/9lMLorWUYTbBHC3hRI4sg==

"@types/node@^8.0.24":
version "8.10.39"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.39.tgz#e7e87ad00364dd7bc485c940926345b8ec1a26ca"
integrity sha512-rE7fktr02J8ybFf6eysife+WF+L4sAHWzw09DgdCebEu+qDwMvv4zl6Bc+825ttGZP73kCKxa3dhJOoGJ8+5mA==
version "8.10.40"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.40.tgz#4314888d5cd537945d73e9ce165c04cc550144a4"
integrity sha512-RRSjdwz63kS4u7edIwJUn8NqKLLQ6LyqF/X4+4jp38MBT3Vwetewi2N4dgJEshLbDwNgOJXNYoOwzVZUSSLhkQ==

abab@^1.0.0:
version "1.0.4"
Expand Down Expand Up @@ -134,6 +139,11 @@ acorn@^5.5.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==

acorn@^6.0.5:
version "6.1.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818"
integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==

agent-base@4, agent-base@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
Expand All @@ -155,9 +165,9 @@ ajv@^4.7.0, ajv@^4.9.1:
json-stable-stringify "^1.0.1"

ajv@^6.5.5:
version "6.8.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.8.1.tgz#0890b93742985ebf8973cd365c5b23920ce3cb20"
integrity sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==
version "6.9.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1"
integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==
dependencies:
fast-deep-equal "^2.0.1"
fast-json-stable-stringify "^2.0.0"
Expand Down Expand Up @@ -472,9 +482,9 @@ autoprefixer@^6.3.1:
postcss-value-parser "^3.2.3"

aws-sdk@^2.9.0:
version "2.399.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.399.0.tgz#43cb0aac79a1d534baf7e537b84f9a6beccb5f7b"
integrity sha512-Yb8CETbjUX9v7TqnT98Ou49G+6r28O0im0HifqZdGSqybJ1d6f52FVeDmpvFV7ayho+udoBV424ga/TcaceKcg==
version "2.400.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.400.0.tgz#21041439ceeba8e6339b7bed54f2f3703243bbef"
integrity sha512-FJjRXajLnI52F0C1E4nFARk/907x4ZuffwFd6jiBQfaepT03wsY1PcJNEQ5CNHYA2qxAx4HezL2pKySEX+g87g==
dependencies:
buffer "4.9.1"
events "1.1.1"
Expand Down Expand Up @@ -2640,7 +2650,7 @@ errlop@^1.1.1:
dependencies:
editions "^2.1.2"

errno@^0.1.1:
errno@^0.1.1, errno@^0.1.3:
version "0.1.7"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
Expand Down Expand Up @@ -4795,6 +4805,14 @@ mem@^4.0.0:
mimic-fn "^1.0.0"
p-is-promise "^2.0.0"

memory-fs@0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
dependencies:
errno "^0.1.3"
readable-stream "^2.0.1"

meow@^3.1.0:
version "3.7.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
Expand Down Expand Up @@ -6131,7 +6149,7 @@ readable-stream@^1.0.27-1, readable-stream@^1.1.8, readable-stream@~1.1.9:
isarray "0.0.1"
string_decoder "~0.10.x"

readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2:
readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
Expand Down Expand Up @@ -6429,6 +6447,15 @@ rimraf@~2.2.6, rimraf@~2.2.8:
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=

rollup@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.1.2.tgz#8d094b85683b810d0c05a16bd7618cf70d48eba7"
integrity sha512-OkdMxqMl8pWoQc5D8y1cIinYQPPLV8ZkfLgCzL6SytXeNA2P7UHynEQXI9tYxuAjAMsSyvRaWnyJDLHMxq0XAg==
dependencies:
"@types/estree" "0.0.39"
"@types/node" "*"
acorn "^6.0.5"

run-async@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
Expand Down Expand Up @@ -7497,9 +7524,9 @@ vue-hot-reload-api@^2.0.1:
integrity sha512-AA86yKZ5uOKz87/q1UpngEXhbRkaYg1b7HMMVRobNV1IVKqZe8oLIzo6iMocVwZXnYitlGwf2k4ZRLOZlS8oPQ==

vue-template-compiler@^2.0.0-alpha.8:
version "2.6.3"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.3.tgz#fe76b7755b038889f5e887895745f0d2bce3f778"
integrity sha512-SQ3lJk7fwquz8fGac7MwvP9cEBZntokTWITaDrLC0zmyBKjcOfJtWZkMsv+2uSUBDD8kwz8Bsad9xmBWaNULhg==
version "2.6.4"
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.4.tgz#0feacfe35e3386033bf4fe31ab4ff1dc1a0c5dec"
integrity sha512-RJePeQrGrSKDt2sfYRZ1DwnBuVMZDCMX6q5NTLZH6fs4RjXIxRE93wGOO2wKd3ebJEl9eKnPO6GpobNJGA7e3w==
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
Expand Down

0 comments on commit 215f49b

Please sign in to comment.