@rindo/core 3.0.0 → 3.1.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/cli/config-flags.d.ts +122 -122
- package/cli/index.cjs +2301 -2432
- package/cli/index.d.ts +19 -19
- package/cli/index.js +2302 -2433
- package/cli/package.json +1 -1
- package/compiler/package.json +1 -1
- package/compiler/rindo.d.ts +73 -73
- package/compiler/rindo.js +66137 -62812
- package/compiler/rindo.min.js +2 -2
- package/compiler/sys/in-memory-fs.d.ts +218 -218
- package/compiler/transpile.d.ts +32 -32
- package/dev-server/client/app-error.d.ts +18 -18
- package/dev-server/client/events.d.ts +6 -6
- package/dev-server/client/hmr-components.d.ts +1 -1
- package/dev-server/client/hmr-external-styles.d.ts +1 -1
- package/dev-server/client/hmr-images.d.ts +1 -1
- package/dev-server/client/hmr-inline-styles.d.ts +1 -1
- package/dev-server/client/hmr-util.d.ts +9 -9
- package/dev-server/client/hmr-window.d.ts +10 -10
- package/dev-server/client/index.d.ts +6 -6
- package/dev-server/client/index.js +781 -781
- package/dev-server/client/logger.d.ts +5 -5
- package/dev-server/client/package.json +1 -1
- package/dev-server/client/progress.d.ts +3 -3
- package/dev-server/client/status.d.ts +4 -4
- package/dev-server/connector.html +2 -2
- package/dev-server/index.d.ts +3 -3
- package/dev-server/index.js +228 -228
- package/dev-server/open-in-editor-api.js +1 -1
- package/dev-server/package.json +1 -1
- package/dev-server/server-process.js +1301 -1279
- package/dev-server/ws.js +1 -1
- package/dev-server/xdg-open +0 -0
- package/internal/app-data/index.cjs +88 -88
- package/internal/app-data/index.d.ts +4 -4
- package/internal/app-data/index.js +88 -88
- package/internal/app-data/package.json +1 -1
- package/internal/client/css-shim.js +1 -1
- package/internal/client/dom.js +1 -1
- package/internal/client/index.js +3380 -3373
- package/internal/client/package.json +1 -1
- package/internal/client/patch-browser.js +155 -155
- package/internal/client/patch-esm.js +25 -25
- package/internal/client/shadow-css.js +382 -382
- package/internal/hydrate/package.json +1 -1
- package/internal/index.d.ts +2 -2
- package/internal/index.js +1 -1
- package/internal/package.json +1 -1
- package/internal/rindo-private.d.ts +2272 -2268
- package/internal/rindo-public-compiler.d.ts +2377 -2353
- package/internal/rindo-public-docs.d.ts +139 -139
- package/internal/rindo-public-runtime.d.ts +1636 -1636
- package/internal/testing/package.json +1 -1
- package/mock-doc/index.cjs +4766 -4766
- package/mock-doc/index.d.ts +1006 -1006
- package/mock-doc/index.js +4766 -4766
- package/mock-doc/package.json +1 -1
- package/package.json +10 -10
- package/screenshot/connector-base.d.ts +42 -42
- package/screenshot/connector-local.d.ts +7 -7
- package/screenshot/index.d.ts +3 -3
- package/screenshot/index.js +615 -615
- package/screenshot/package.json +1 -1
- package/screenshot/pixel-match.d.ts +1 -1
- package/screenshot/pixel-match.js +14 -14
- package/screenshot/screenshot-compare.d.ts +3 -3
- package/screenshot/screenshot-fs.d.ts +15 -15
- package/sys/node/autoprefixer.js +2 -2
- package/sys/node/glob.js +1 -1
- package/sys/node/graceful-fs.js +1 -1
- package/sys/node/index.d.ts +22 -22
- package/sys/node/index.js +6 -3
- package/sys/node/node-fetch.js +1 -1
- package/sys/node/package.json +1 -1
- package/sys/node/prompts.js +1 -1
- package/sys/node/worker.js +1 -1
- package/testing/index.d.ts +12 -12
- package/testing/index.js +7 -3
- package/testing/jest/jest-config.d.ts +16 -16
- package/testing/jest/jest-environment.d.ts +15 -15
- package/testing/jest/jest-preprocessor.d.ts +59 -59
- package/testing/jest/jest-runner.d.ts +10 -10
- package/testing/jest/jest-screenshot.d.ts +2 -2
- package/testing/jest/jest-serializer.d.ts +4 -4
- package/testing/jest/jest-setup-test-framework.d.ts +1 -1
- package/testing/matchers/attributes.d.ts +14 -14
- package/testing/matchers/class-list.d.ts +12 -12
- package/testing/matchers/events.d.ts +21 -21
- package/testing/matchers/html.d.ts +12 -12
- package/testing/matchers/index.d.ts +23 -23
- package/testing/matchers/screenshot.d.ts +5 -5
- package/testing/matchers/text.d.ts +4 -4
- package/testing/mock-fetch.d.ts +11 -11
- package/testing/mocks.d.ts +56 -56
- package/testing/package.json +1 -1
- package/testing/puppeteer/index.d.ts +2 -2
- package/testing/puppeteer/puppeteer-browser.d.ts +6 -6
- package/testing/puppeteer/puppeteer-declarations.d.ts +403 -403
- package/testing/puppeteer/puppeteer-element.d.ts +67 -67
- package/testing/puppeteer/puppeteer-emulate.d.ts +2 -2
- package/testing/puppeteer/puppeteer-events.d.ts +21 -21
- package/testing/puppeteer/puppeteer-page.d.ts +2 -2
- package/testing/puppeteer/puppeteer-screenshot.d.ts +4 -4
- package/testing/reset-build-conditionals.d.ts +2 -2
- package/testing/spec-page.d.ts +2 -2
- package/testing/test-transpile.d.ts +2 -2
- package/testing/testing-logger.d.ts +25 -25
- package/testing/testing-sys.d.ts +6 -6
- package/testing/testing-utils.d.ts +79 -79
- package/testing/testing.d.ts +2 -2
- package/dependencies.json +0 -120
package/dev-server/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
Rindo Dev Server v3.
|
|
2
|
+
Rindo Dev Server v3.1.0 | MIT Licensed | https://rindojs.web.app
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
@@ -30,235 +30,235 @@ function _interopNamespace(e) {
|
|
|
30
30
|
|
|
31
31
|
const path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
32
32
|
|
|
33
|
-
function initServerProcessWorkerProxy(sendToMain) {
|
|
34
|
-
const workerPath = require.resolve(path__default['default'].join(__dirname, 'server-worker-thread.js'));
|
|
35
|
-
const filteredExecArgs = process.execArgv.filter((v) => !/^--(debug|inspect)/.test(v));
|
|
36
|
-
const forkOpts = {
|
|
37
|
-
execArgv: filteredExecArgs,
|
|
38
|
-
env: process.env,
|
|
39
|
-
cwd: process.cwd(),
|
|
40
|
-
stdio: ['pipe', 'pipe', 'pipe', 'ipc'],
|
|
41
|
-
};
|
|
42
|
-
// start a new child process of the CLI process
|
|
43
|
-
// for the http and web socket server
|
|
44
|
-
let serverProcess = child_process.fork(workerPath, [], forkOpts);
|
|
45
|
-
const receiveFromMain = (msg) => {
|
|
46
|
-
// get a message from main to send to the worker
|
|
47
|
-
if (serverProcess) {
|
|
48
|
-
serverProcess.send(msg);
|
|
49
|
-
}
|
|
50
|
-
else if (msg.closeServer) {
|
|
51
|
-
sendToMain({ serverClosed: true });
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
// get a message from the worker and send it to main
|
|
55
|
-
serverProcess.on('message', (msg) => {
|
|
56
|
-
if (msg.serverClosed && serverProcess) {
|
|
57
|
-
serverProcess.kill('SIGINT');
|
|
58
|
-
serverProcess = null;
|
|
59
|
-
}
|
|
60
|
-
sendToMain(msg);
|
|
61
|
-
});
|
|
62
|
-
serverProcess.stdout.on('data', (data) => {
|
|
63
|
-
// the child server process has console logged data
|
|
64
|
-
console.log(`dev server: ${data}`);
|
|
65
|
-
});
|
|
66
|
-
serverProcess.stderr.on('data', (data) => {
|
|
67
|
-
// the child server process has console logged an error
|
|
68
|
-
sendToMain({ error: { message: 'stderr: ' + data } });
|
|
69
|
-
});
|
|
70
|
-
return receiveFromMain;
|
|
33
|
+
function initServerProcessWorkerProxy(sendToMain) {
|
|
34
|
+
const workerPath = require.resolve(path__default['default'].join(__dirname, 'server-worker-thread.js'));
|
|
35
|
+
const filteredExecArgs = process.execArgv.filter((v) => !/^--(debug|inspect)/.test(v));
|
|
36
|
+
const forkOpts = {
|
|
37
|
+
execArgv: filteredExecArgs,
|
|
38
|
+
env: process.env,
|
|
39
|
+
cwd: process.cwd(),
|
|
40
|
+
stdio: ['pipe', 'pipe', 'pipe', 'ipc'],
|
|
41
|
+
};
|
|
42
|
+
// start a new child process of the CLI process
|
|
43
|
+
// for the http and web socket server
|
|
44
|
+
let serverProcess = child_process.fork(workerPath, [], forkOpts);
|
|
45
|
+
const receiveFromMain = (msg) => {
|
|
46
|
+
// get a message from main to send to the worker
|
|
47
|
+
if (serverProcess) {
|
|
48
|
+
serverProcess.send(msg);
|
|
49
|
+
}
|
|
50
|
+
else if (msg.closeServer) {
|
|
51
|
+
sendToMain({ serverClosed: true });
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
// get a message from the worker and send it to main
|
|
55
|
+
serverProcess.on('message', (msg) => {
|
|
56
|
+
if (msg.serverClosed && serverProcess) {
|
|
57
|
+
serverProcess.kill('SIGINT');
|
|
58
|
+
serverProcess = null;
|
|
59
|
+
}
|
|
60
|
+
sendToMain(msg);
|
|
61
|
+
});
|
|
62
|
+
serverProcess.stdout.on('data', (data) => {
|
|
63
|
+
// the child server process has console logged data
|
|
64
|
+
console.log(`dev server: ${data}`);
|
|
65
|
+
});
|
|
66
|
+
serverProcess.stderr.on('data', (data) => {
|
|
67
|
+
// the child server process has console logged an error
|
|
68
|
+
sendToMain({ error: { message: 'stderr: ' + data } });
|
|
69
|
+
});
|
|
70
|
+
return receiveFromMain;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
function start(rindoDevServerConfig, logger, watcher) {
|
|
74
|
-
return new Promise(async (resolve, reject) => {
|
|
75
|
-
try {
|
|
76
|
-
const devServerConfig = {
|
|
77
|
-
devServerDir: __dirname,
|
|
78
|
-
...rindoDevServerConfig,
|
|
79
|
-
};
|
|
80
|
-
if (!path__default['default'].isAbsolute(devServerConfig.root)) {
|
|
81
|
-
devServerConfig.root = path__default['default'].join(process.cwd(), devServerConfig.root);
|
|
82
|
-
}
|
|
83
|
-
let initServerProcess;
|
|
84
|
-
if (rindoDevServerConfig.worker === true || rindoDevServerConfig.worker === undefined) {
|
|
85
|
-
// fork a worker process
|
|
86
|
-
initServerProcess = initServerProcessWorkerProxy;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
// same process
|
|
90
|
-
const devServerProcess = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('./server-process.js')); });
|
|
91
|
-
initServerProcess = devServerProcess.initServerProcess;
|
|
92
|
-
}
|
|
93
|
-
startServer(devServerConfig, logger, watcher, initServerProcess, resolve, reject);
|
|
94
|
-
}
|
|
95
|
-
catch (e) {
|
|
96
|
-
reject(e);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
function startServer(devServerConfig, logger, watcher, initServerProcess, resolve, reject) {
|
|
101
|
-
var _a;
|
|
102
|
-
const timespan = logger.createTimeSpan(`starting dev server`, true);
|
|
103
|
-
const startupTimeout = logger.getLevel() !== 'debug' || devServerConfig.startupTimeout !== 0
|
|
104
|
-
? setTimeout(() => {
|
|
105
|
-
reject(`dev server startup timeout`);
|
|
106
|
-
}, (_a = devServerConfig.startupTimeout) !== null && _a !== void 0 ? _a : 15000)
|
|
107
|
-
: null;
|
|
108
|
-
let isActivelyBuilding = false;
|
|
109
|
-
let lastBuildResults = null;
|
|
110
|
-
let devServer = null;
|
|
111
|
-
let removeWatcher = null;
|
|
112
|
-
let closeResolve = null;
|
|
113
|
-
let hasStarted = false;
|
|
114
|
-
let browserUrl = '';
|
|
115
|
-
let sendToWorker = null;
|
|
116
|
-
const closePromise = new Promise((resolve) => (closeResolve = resolve));
|
|
117
|
-
const close = async () => {
|
|
118
|
-
clearTimeout(startupTimeout);
|
|
119
|
-
isActivelyBuilding = false;
|
|
120
|
-
if (removeWatcher) {
|
|
121
|
-
removeWatcher();
|
|
122
|
-
}
|
|
123
|
-
if (devServer) {
|
|
124
|
-
devServer = null;
|
|
125
|
-
}
|
|
126
|
-
if (sendToWorker) {
|
|
127
|
-
sendToWorker({
|
|
128
|
-
closeServer: true,
|
|
129
|
-
});
|
|
130
|
-
sendToWorker = null;
|
|
131
|
-
}
|
|
132
|
-
return closePromise;
|
|
133
|
-
};
|
|
134
|
-
const emit = async (eventName, data) => {
|
|
135
|
-
if (sendToWorker) {
|
|
136
|
-
if (eventName === 'buildFinish') {
|
|
137
|
-
isActivelyBuilding = false;
|
|
138
|
-
lastBuildResults = { ...data };
|
|
139
|
-
sendToWorker({ buildResults: { ...lastBuildResults }, isActivelyBuilding });
|
|
140
|
-
}
|
|
141
|
-
else if (eventName === 'buildLog') {
|
|
142
|
-
sendToWorker({
|
|
143
|
-
buildLog: { ...data },
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else if (eventName === 'buildStart') {
|
|
147
|
-
isActivelyBuilding = true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
const serverStarted = (msg) => {
|
|
152
|
-
hasStarted = true;
|
|
153
|
-
clearTimeout(startupTimeout);
|
|
154
|
-
devServerConfig = msg.serverStarted;
|
|
155
|
-
devServer = {
|
|
156
|
-
address: devServerConfig.address,
|
|
157
|
-
basePath: devServerConfig.basePath,
|
|
158
|
-
browserUrl: devServerConfig.browserUrl,
|
|
159
|
-
protocol: devServerConfig.protocol,
|
|
160
|
-
port: devServerConfig.port,
|
|
161
|
-
root: devServerConfig.root,
|
|
162
|
-
emit,
|
|
163
|
-
close,
|
|
164
|
-
};
|
|
165
|
-
browserUrl = devServerConfig.browserUrl;
|
|
166
|
-
timespan.finish(`dev server started: ${browserUrl}`);
|
|
167
|
-
resolve(devServer);
|
|
168
|
-
};
|
|
169
|
-
const requestLog = (msg) => {
|
|
170
|
-
if (devServerConfig.logRequests) {
|
|
171
|
-
if (msg.requestLog.status >= 500) {
|
|
172
|
-
logger.info(logger.red(`${msg.requestLog.method} ${msg.requestLog.url} (${msg.requestLog.status})`));
|
|
173
|
-
}
|
|
174
|
-
else if (msg.requestLog.status >= 400) {
|
|
175
|
-
logger.info(logger.dim(logger.red(`${msg.requestLog.method} ${msg.requestLog.url} (${msg.requestLog.status})`)));
|
|
176
|
-
}
|
|
177
|
-
else if (msg.requestLog.status >= 300) {
|
|
178
|
-
logger.info(logger.dim(logger.magenta(`${msg.requestLog.method} ${msg.requestLog.url} (${msg.requestLog.status})`)));
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
logger.info(logger.dim(`${logger.cyan(msg.requestLog.method)} ${msg.requestLog.url}`));
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
const serverError = async (msg) => {
|
|
186
|
-
if (hasStarted) {
|
|
187
|
-
logger.error(msg.error.message + ' ' + msg.error.stack);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
await close();
|
|
191
|
-
reject(msg.error.message);
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
const requestBuildResults = () => {
|
|
195
|
-
// we received a request to send up the latest build results
|
|
196
|
-
if (sendToWorker) {
|
|
197
|
-
if (lastBuildResults != null) {
|
|
198
|
-
// we do have build results, so let's send them to the child process
|
|
199
|
-
const msg = {
|
|
200
|
-
buildResults: { ...lastBuildResults },
|
|
201
|
-
isActivelyBuilding: isActivelyBuilding,
|
|
202
|
-
};
|
|
203
|
-
// but don't send any previous live reload data
|
|
204
|
-
delete msg.buildResults.hmr;
|
|
205
|
-
sendToWorker(msg);
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
sendToWorker({
|
|
209
|
-
isActivelyBuilding: true,
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
const compilerRequest = async (compilerRequestPath) => {
|
|
215
|
-
if (watcher && watcher.request && sendToWorker) {
|
|
216
|
-
const compilerRequestResults = await watcher.request({ path: compilerRequestPath });
|
|
217
|
-
sendToWorker({ compilerRequestResults });
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
const receiveFromWorker = (msg) => {
|
|
221
|
-
try {
|
|
222
|
-
if (msg.serverStarted) {
|
|
223
|
-
serverStarted(msg);
|
|
224
|
-
}
|
|
225
|
-
else if (msg.serverClosed) {
|
|
226
|
-
logger.debug(`dev server closed: ${browserUrl}`);
|
|
227
|
-
closeResolve();
|
|
228
|
-
}
|
|
229
|
-
else if (msg.requestBuildResults) {
|
|
230
|
-
requestBuildResults();
|
|
231
|
-
}
|
|
232
|
-
else if (msg.compilerRequestPath) {
|
|
233
|
-
compilerRequest(msg.compilerRequestPath);
|
|
234
|
-
}
|
|
235
|
-
else if (msg.requestLog) {
|
|
236
|
-
requestLog(msg);
|
|
237
|
-
}
|
|
238
|
-
else if (msg.error) {
|
|
239
|
-
serverError(msg);
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
logger.debug(`server msg not handled: ${JSON.stringify(msg)}`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
catch (e) {
|
|
246
|
-
logger.error('receiveFromWorker: ' + e);
|
|
247
|
-
}
|
|
248
|
-
};
|
|
249
|
-
try {
|
|
250
|
-
if (watcher) {
|
|
251
|
-
removeWatcher = watcher.on(emit);
|
|
252
|
-
}
|
|
253
|
-
sendToWorker = initServerProcess(receiveFromWorker);
|
|
254
|
-
sendToWorker({
|
|
255
|
-
startServer: devServerConfig,
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
catch (e) {
|
|
259
|
-
close();
|
|
260
|
-
reject(e);
|
|
261
|
-
}
|
|
73
|
+
function start(rindoDevServerConfig, logger, watcher) {
|
|
74
|
+
return new Promise(async (resolve, reject) => {
|
|
75
|
+
try {
|
|
76
|
+
const devServerConfig = {
|
|
77
|
+
devServerDir: __dirname,
|
|
78
|
+
...rindoDevServerConfig,
|
|
79
|
+
};
|
|
80
|
+
if (!path__default['default'].isAbsolute(devServerConfig.root)) {
|
|
81
|
+
devServerConfig.root = path__default['default'].join(process.cwd(), devServerConfig.root);
|
|
82
|
+
}
|
|
83
|
+
let initServerProcess;
|
|
84
|
+
if (rindoDevServerConfig.worker === true || rindoDevServerConfig.worker === undefined) {
|
|
85
|
+
// fork a worker process
|
|
86
|
+
initServerProcess = initServerProcessWorkerProxy;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// same process
|
|
90
|
+
const devServerProcess = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('./server-process.js')); });
|
|
91
|
+
initServerProcess = devServerProcess.initServerProcess;
|
|
92
|
+
}
|
|
93
|
+
startServer(devServerConfig, logger, watcher, initServerProcess, resolve, reject);
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
reject(e);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function startServer(devServerConfig, logger, watcher, initServerProcess, resolve, reject) {
|
|
101
|
+
var _a;
|
|
102
|
+
const timespan = logger.createTimeSpan(`starting dev server`, true);
|
|
103
|
+
const startupTimeout = logger.getLevel() !== 'debug' || devServerConfig.startupTimeout !== 0
|
|
104
|
+
? setTimeout(() => {
|
|
105
|
+
reject(`dev server startup timeout`);
|
|
106
|
+
}, (_a = devServerConfig.startupTimeout) !== null && _a !== void 0 ? _a : 15000)
|
|
107
|
+
: null;
|
|
108
|
+
let isActivelyBuilding = false;
|
|
109
|
+
let lastBuildResults = null;
|
|
110
|
+
let devServer = null;
|
|
111
|
+
let removeWatcher = null;
|
|
112
|
+
let closeResolve = null;
|
|
113
|
+
let hasStarted = false;
|
|
114
|
+
let browserUrl = '';
|
|
115
|
+
let sendToWorker = null;
|
|
116
|
+
const closePromise = new Promise((resolve) => (closeResolve = resolve));
|
|
117
|
+
const close = async () => {
|
|
118
|
+
clearTimeout(startupTimeout);
|
|
119
|
+
isActivelyBuilding = false;
|
|
120
|
+
if (removeWatcher) {
|
|
121
|
+
removeWatcher();
|
|
122
|
+
}
|
|
123
|
+
if (devServer) {
|
|
124
|
+
devServer = null;
|
|
125
|
+
}
|
|
126
|
+
if (sendToWorker) {
|
|
127
|
+
sendToWorker({
|
|
128
|
+
closeServer: true,
|
|
129
|
+
});
|
|
130
|
+
sendToWorker = null;
|
|
131
|
+
}
|
|
132
|
+
return closePromise;
|
|
133
|
+
};
|
|
134
|
+
const emit = async (eventName, data) => {
|
|
135
|
+
if (sendToWorker) {
|
|
136
|
+
if (eventName === 'buildFinish') {
|
|
137
|
+
isActivelyBuilding = false;
|
|
138
|
+
lastBuildResults = { ...data };
|
|
139
|
+
sendToWorker({ buildResults: { ...lastBuildResults }, isActivelyBuilding });
|
|
140
|
+
}
|
|
141
|
+
else if (eventName === 'buildLog') {
|
|
142
|
+
sendToWorker({
|
|
143
|
+
buildLog: { ...data },
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else if (eventName === 'buildStart') {
|
|
147
|
+
isActivelyBuilding = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const serverStarted = (msg) => {
|
|
152
|
+
hasStarted = true;
|
|
153
|
+
clearTimeout(startupTimeout);
|
|
154
|
+
devServerConfig = msg.serverStarted;
|
|
155
|
+
devServer = {
|
|
156
|
+
address: devServerConfig.address,
|
|
157
|
+
basePath: devServerConfig.basePath,
|
|
158
|
+
browserUrl: devServerConfig.browserUrl,
|
|
159
|
+
protocol: devServerConfig.protocol,
|
|
160
|
+
port: devServerConfig.port,
|
|
161
|
+
root: devServerConfig.root,
|
|
162
|
+
emit,
|
|
163
|
+
close,
|
|
164
|
+
};
|
|
165
|
+
browserUrl = devServerConfig.browserUrl;
|
|
166
|
+
timespan.finish(`dev server started: ${browserUrl}`);
|
|
167
|
+
resolve(devServer);
|
|
168
|
+
};
|
|
169
|
+
const requestLog = (msg) => {
|
|
170
|
+
if (devServerConfig.logRequests) {
|
|
171
|
+
if (msg.requestLog.status >= 500) {
|
|
172
|
+
logger.info(logger.red(`${msg.requestLog.method} ${msg.requestLog.url} (${msg.requestLog.status})`));
|
|
173
|
+
}
|
|
174
|
+
else if (msg.requestLog.status >= 400) {
|
|
175
|
+
logger.info(logger.dim(logger.red(`${msg.requestLog.method} ${msg.requestLog.url} (${msg.requestLog.status})`)));
|
|
176
|
+
}
|
|
177
|
+
else if (msg.requestLog.status >= 300) {
|
|
178
|
+
logger.info(logger.dim(logger.magenta(`${msg.requestLog.method} ${msg.requestLog.url} (${msg.requestLog.status})`)));
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
logger.info(logger.dim(`${logger.cyan(msg.requestLog.method)} ${msg.requestLog.url}`));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const serverError = async (msg) => {
|
|
186
|
+
if (hasStarted) {
|
|
187
|
+
logger.error(msg.error.message + ' ' + msg.error.stack);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
await close();
|
|
191
|
+
reject(msg.error.message);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const requestBuildResults = () => {
|
|
195
|
+
// we received a request to send up the latest build results
|
|
196
|
+
if (sendToWorker) {
|
|
197
|
+
if (lastBuildResults != null) {
|
|
198
|
+
// we do have build results, so let's send them to the child process
|
|
199
|
+
const msg = {
|
|
200
|
+
buildResults: { ...lastBuildResults },
|
|
201
|
+
isActivelyBuilding: isActivelyBuilding,
|
|
202
|
+
};
|
|
203
|
+
// but don't send any previous live reload data
|
|
204
|
+
delete msg.buildResults.hmr;
|
|
205
|
+
sendToWorker(msg);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
sendToWorker({
|
|
209
|
+
isActivelyBuilding: true,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
const compilerRequest = async (compilerRequestPath) => {
|
|
215
|
+
if (watcher && watcher.request && sendToWorker) {
|
|
216
|
+
const compilerRequestResults = await watcher.request({ path: compilerRequestPath });
|
|
217
|
+
sendToWorker({ compilerRequestResults });
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
const receiveFromWorker = (msg) => {
|
|
221
|
+
try {
|
|
222
|
+
if (msg.serverStarted) {
|
|
223
|
+
serverStarted(msg);
|
|
224
|
+
}
|
|
225
|
+
else if (msg.serverClosed) {
|
|
226
|
+
logger.debug(`dev server closed: ${browserUrl}`);
|
|
227
|
+
closeResolve();
|
|
228
|
+
}
|
|
229
|
+
else if (msg.requestBuildResults) {
|
|
230
|
+
requestBuildResults();
|
|
231
|
+
}
|
|
232
|
+
else if (msg.compilerRequestPath) {
|
|
233
|
+
compilerRequest(msg.compilerRequestPath);
|
|
234
|
+
}
|
|
235
|
+
else if (msg.requestLog) {
|
|
236
|
+
requestLog(msg);
|
|
237
|
+
}
|
|
238
|
+
else if (msg.error) {
|
|
239
|
+
serverError(msg);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
logger.debug(`server msg not handled: ${JSON.stringify(msg)}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
logger.error('receiveFromWorker: ' + e);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
try {
|
|
250
|
+
if (watcher) {
|
|
251
|
+
removeWatcher = watcher.on(emit);
|
|
252
|
+
}
|
|
253
|
+
sendToWorker = initServerProcess(receiveFromWorker);
|
|
254
|
+
sendToWorker({
|
|
255
|
+
startServer: devServerConfig,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
catch (e) {
|
|
259
|
+
close();
|
|
260
|
+
reject(e);
|
|
261
|
+
}
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
exports.start = start;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(()=>{var e={994:(e,t,r)=>{var n=r(303).exec,o=r(147);r(200).quote;e.exports={command:function(e,t,r){return r?new Promise((function(o,i){n(e+" "+r,(function(r,n){r||0!==n.indexOf(t)?i(r):o(e)}))})):Promise.reject("No args to check command: "+e)},path:function(e,t){return o.existsSync(e)?Promise.resolve(e):Promise.reject("Path does not exist: "+e)}}},8:(e,t,r)=>{var n=r(994),o=r(200).any;function i(e,t,r,i){function a(t){return this(t,e,r)}return i=i[process.platform]||[],o([].concat(t.map(a,n.command),i.map(a,n.path)),"Not detected")}e.exports=i,e.exports.lazy=function(e,t,r,n){var o;return function(){return o||(o=i(e,t,r,n)),o}},e.exports.platformSupport=function(e,t,r){return function(){return-1!==e.indexOf(process.platform)?Promise.resolve(r):Promise.reject('"Open in '+t+'" does not implemented for your platform ('+process.platform+")")}}},549:(e,t,r)=>{var n=r(200).atHomeDir,o={pattern:"{filename}:{line}:{column}"},i=r(8).lazy("Atom Editor",["atom"],"-h",{darwin:["/Applications/Atom.app/Contents/Resources/app/atom.sh"],win32:[n("AppData/Local/atom/bin/atom.cmd")]}),a=r(922).detectAndOpenFactory(i,o);e.exports={settings:o,detect:i,open:a}},665:(e,t,r)=>{var n=r(200).atHomeDir,o={pattern:"-r -g {filename}:{line}:{column}"},i=r(8).lazy("Visual Studio Code",["code"],"-h",{darwin:["/Applications/Visual Studio Code.app/Contents/MacOS/Electron"],win32:["C:/Program Files/Microsoft VS Code/bin/code.cmd","C:/Program Files (x86)/Microsoft VS Code/bin/code.cmd",n("AppData/Local/Code/bin/code.cmd")]}),a=r(922).detectAndOpenFactory(i,o);e.exports={settings:o,detect:i,open:a}},28:(e,t,r)=>{var n,o=r(147),i=r(17),a=r(8).lazy,s={pattern:"{projectPath} --line {line} {filename}"},c=(n="c:/Program Files (x86)/JetBrains/",o.existsSync(n)?o.readdirSync(n).map((function(e){return i.join(n,e)})).filter((function(e){return o.statSync(e).isDirectory()})):[]);e.exports=function(e){var t=a(e.name,[],"",{darwin:["/Applications/"+e.appFolder+".app/Contents/MacOS/"+e.executable],win32:c.map((function(t){return t+"/bin/"+e.executable+".exe"}))}),n=r(922).detectAndOpenFactory(t,s);return{settings:s,detect:t,open:n}}},411:e=>{e.exports=function(e){return t=function(e){return'tell application "Terminal" to do script "'+e+'"'}("cd {projectPath}; "+e),"osascript -e '"+t+"'";var t}},264:(e,t,r)=>{var n={patternOnly:!0,escapeQuotes:!0,pattern:r(411)('emacs --no-splash \\"+{line}:{column}\\" {filename}')},o=r(8).platformSupport(["darwin"],"vim"),i=r(922).detectAndOpenFactory(o,n);e.exports={settings:n,detect:o,open:i}},462:(e,t,r)=>{var n=r(28);e.exports=n({name:"IDEA 14 CE",appFolder:"IntelliJ IDEA 14 CE",executable:"idea"})},796:(e,t,r)=>{e.exports={atom:r(549),code:r(665),sublime:r(892),webstorm:r(894),phpstorm:r(157),idea14ce:r(462),vim:r(744),visualstudio:r(667),emacs:r(264)}},157:(e,t,r)=>{var n=r(28);e.exports=n({name:"PhpStorm IDE",appFolder:"PhpStorm",executable:"phpstorm"})},892:(e,t,r)=>{var n={pattern:"{filename}:{line}:{column}"},o=r(8).lazy("Sublime Text",["subl"],"-h",{darwin:["/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl"],win32:["C:/Program Files/Sublime Text/subl.exe","C:/Program Files/Sublime Text 2/subl.exe","C:/Program Files/Sublime Text 3/subl.exe","C:/Program Files (x86)/Sublime Text/subl.exe","C:/Program Files (x86)/Sublime Text 2/subl.exe","C:/Program Files (x86)/Sublime Text 3/subl.exe"]}),i=r(922).detectAndOpenFactory(o,n);e.exports={settings:n,detect:o,open:i}},744:(e,t,r)=>{var n={patternOnly:!0,escapeQuotes:!0,pattern:r(411)('vim {filename} \\"+call cursor({line}, {column})\\"')},o=r(8).platformSupport(["darwin"],"vim"),i=r(922).detectAndOpenFactory(o,n);e.exports={settings:n,detect:o,open:i}},667:(e,t,r)=>{var n=r(17).resolve(__dirname,"visualstudio.vbs"),o={pattern:"{filename} {line} {column}"},i=r(8).platformSupport(["win32"],"Visual Studio",n),a=r(922).detectAndOpenFactory(i,o);e.exports={settings:o,detect:i,open:a}},894:(e,t,r)=>{var n=r(28);e.exports=n({name:"WebStorm IDE",appFolder:"WebStorm",executable:"webstorm"})},250:(e,t,r)=>{var n=r(200).extractFilename,o=r(200).number,i=r(200).assign,a=r(796),s=r(922).factory;e.exports={configure:function(e,t){t=t||function(){};var r,c=o((e=e||{}).line,1),p=o(e.column,1),u=e.editor,l=e.cmd;if(l||u||(a.hasOwnProperty(process.env.OPEN_FILE)?u=process.env.OPEN_FILE:l=process.env.OPEN_FILE||process.env.VISUAL||process.env.EDITOR),!u||a.hasOwnProperty(u)){if(l){var m={};a.hasOwnProperty(u)&&i(m,a[u].settings),r=s(l,i(m,e))}else{if(!u)return void t("Editor is not specified");r=a[u].open}return{open:function(e){if(!e)return Promise.reject("File is not specified");var t=n(e);return r([t.filename,Math.max(t.line-c,0),Math.max(t.column-p,0)].join(":"))}}}t("Wrong value for `editor` option: "+u)}}},922:(e,t,r)=>{var n=r(303).exec,o=r(200).number,i=r(200).quote,a=r(200).extractFilename,s=r(200).append;function c(e,t,r){return new Promise((function(c,p){var u;u=function(e,t){var r=a(e),n=t.pattern||"",c={projectPath:process.env.PROJECT_PATH||process.PWD||process.cwd(),line:r.line+o(t.line,1),column:r.column+o(t.column,1)};return/\{filename\}/.test(n)||(n=s(n,"{filename}:{line}:{column}")),n.replace(new RegExp("\\{("+Object.keys(c).join("|")+")\\}","g"),(function(e,t){return c[t]})).replace(/\{filename\}(\S*)/,(function(e,n){return i(r.filename+n,t.escapeQuotes)}))}(t,r=r||{}),e=r.patternOnly?u:s(i(e),u),n(e,(function(e){e?p(e):c()}))}))}e.exports=c,e.exports.factory=function(e,t){return function(r){return c(e,r,t)}},e.exports.detectAndOpenFactory=function(e,t){return function(r){return e().then((function(e){c(e,r,t)}))}}},200:(e,t,r)=>{var n=r(378)(),o=r(17);e.exports={number:function(e,t){return isNaN(e)?t:e},quote:function(e,t){return e=String(e).replace(/\\/g,"\\\\").replace(/"/g,'"'),t?'\\"'+e+'\\"':'"'+e+'"'},extractFilename:function(e){var t=e.match(/^(.+?)((?::\d+){0,4})$/),r=t[2].split(":").slice(1);return{filename:t[1],line:parseInt(r[0]||0,10),column:parseInt(r[1]||0,10)}},fail:function(e){console.error(String(e).trimRight()),process.exit(2)},atHomeDir:function(e){return o.join(n,e)},any:function(e,t){return new Promise((function(r,n){Promise.all(e.map((function(e){return e&&"function"==typeof e.then?e.then(r,(function(){})):e}))).then((function(e){n(t)}),n)}))},append:function(e,t){return String(e).replace(/\s*$/,(e?" ":"")+t)},assign:function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}}},378:(e,t,r)=>{"use strict";var n=r(719);e.exports="function"==typeof n.homedir?n.homedir:function(){var e=process.env,t=e.HOME,r=e.LOGNAME||e.USER||e.LNAME||e.USERNAME;return"win32"===process.platform?e.USERPROFILE||e.HOMEDRIVE+e.HOMEPATH||t||null:"darwin"===process.platform?t||(r?"/Users/"+r:null):"linux"===process.platform?t||(0===process.getuid()?"/root":r?"/home/"+r:null):t||null}},303:e=>{"use strict";e.exports=require("child_process")},719:e=>{"use strict";e.exports=require("os")},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}var n={};(()=>{var e=n,t=r(250);e.configure=t.configure,e.editors=r(796)})();var o=exports;for(var i in n)o[i]=n[i];n.__esModule&&Object.defineProperty(o,"__esModule",{value:!0})})();
|