@joystick.js/cli-canary 0.0.0-canary.154 → 0.0.0-canary.156

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.
@@ -195,10 +195,6 @@ const handleAddOrChangeFile = async (context = {}, path2 = "", options = {}) =>
195
195
  );
196
196
  return;
197
197
  }
198
- console.log("ADD/CHANGE FILE", {
199
- context,
200
- fileResultsHaveErrors
201
- });
202
198
  if (!fileResultsHaveErrors) {
203
199
  process.initialBuildComplete = true;
204
200
  if (context.isUIUpdate) {
@@ -209,7 +205,6 @@ const handleAddOrChangeFile = async (context = {}, path2 = "", options = {}) =>
209
205
  }
210
206
  }
211
207
  } catch (exception) {
212
- console.log(exception);
213
208
  throw new Error(`[dev.handleAddOrChangeFile] ${exception.message}`);
214
209
  }
215
210
  };
@@ -217,9 +212,6 @@ const handleAddDirectory = (context = {}, path2 = "", options = {}) => {
217
212
  try {
218
213
  if (context.isAddDirectory) {
219
214
  fs.mkdirSync(`./.joystick/build/${path2}`);
220
- console.log("ADD DIR", {
221
- context
222
- });
223
215
  if (context.isUIUpdate) {
224
216
  handleNotifyHMRClients(context.isHTMLUpdate);
225
217
  } else {
@@ -234,9 +226,6 @@ const handleCopyFile = (context = {}, path2 = "", options = {}) => {
234
226
  try {
235
227
  if (context.isFileToCopy && !context.isDirectory) {
236
228
  fs.writeFileSync(`./.joystick/build/${path2}`, fs.readFileSync(path2));
237
- console.log("COPY FILE", {
238
- context
239
- });
240
229
  if (context.isUIUpdate) {
241
230
  handleNotifyHMRClients(context.isHTMLUpdate);
242
231
  } else {
@@ -251,9 +240,6 @@ const handleCopyDirectory = (context = {}, path2 = "", options = {}) => {
251
240
  try {
252
241
  if (context.isFileToCopy && context.isDirectory && !context.isExistingDirectoryInBuild) {
253
242
  fs.mkdirSync(`./.joystick/build/${path2}`);
254
- console.log("COPY DIR", {
255
- context
256
- });
257
243
  if (context.isUIUpdate) {
258
244
  handleNotifyHMRClients(context.isHTMLUpdate);
259
245
  } else {
@@ -271,7 +257,6 @@ const handleRestartApplicationProcess = async (options = {}) => {
271
257
  process.loader.text("Restarting app...");
272
258
  }
273
259
  process.serverProcess.kill();
274
- console.log("GETTING TO HERE");
275
260
  await handleStartAppServer(options);
276
261
  return Promise.resolve();
277
262
  }
@@ -291,12 +276,6 @@ const handleStartAppServer = async (options = {}) => {
291
276
  port: options?.port,
292
277
  sessionsBeforeHMRUpdate: options?.sessionsBeforeHMRUpdate
293
278
  });
294
- console.log({
295
- nodeMajorVersion: options?.nodeMajorVersion,
296
- port: options?.port,
297
- sessionsBeforeHMRUpdate: options?.sessionsBeforeHMRUpdate,
298
- serverProcess
299
- });
300
279
  if (serverProcess) {
301
280
  processIds.push(serverProcess.pid);
302
281
  process.serverProcess = serverProcess;
@@ -309,14 +288,8 @@ const handleStartAppServer = async (options = {}) => {
309
288
  };
310
289
  const handleNotifyHMRClients = async (indexHTMLChanged = false) => {
311
290
  try {
312
- console.log("CALLING HNHMRCLIENTS");
313
291
  if (process.hmrProcess) {
314
- const settings = await loadSettings(process.env.NODE_ENV);
315
- console.log({
316
- type: "RESTART_SERVER",
317
- settings: settings.parsed,
318
- indexHTMLChanged
319
- });
292
+ const settings = await loadSettings({ environment: process.env.NODE_ENV });
320
293
  process.hmrProcess.send(
321
294
  JSON.stringify({
322
295
  type: "RESTART_SERVER",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joystick.js/cli-canary",
3
- "version": "0.0.0-canary.154",
3
+ "version": "0.0.0-canary.156",
4
4
  "type": "module",
5
5
  "description": "CLI for the Joystick JavaScript framework.",
6
6
  "main": "development.js",
@@ -1,661 +1,5 @@
1
- /* eslint-disable consistent-return */
2
-
3
- //import child_process from "child_process";
4
- //import path, { dirname } from "path";
5
- //import { fileURLToPath } from "url";
6
- //import ps from "ps-node";
7
- //import { killPortProcess } from "kill-port-process";
8
- //import fs from "fs";
9
- //import chokidar from "chokidar";
10
- //import Loader from "../../lib/loader.js";
11
- //import getFilesToBuild from "./getFilesToBuild.js";
12
- //import buildFiles from "./buildFiles.js";
13
- //import filesToCopy from "./filesToCopy.js";
14
- //import checkIfPortAvailable from "./checkIfPortAvailable.js";
15
- //import getCodependenciesForFile from "./getCodependenciesForFile.js";
16
- //import isValidJSONString from "../../lib/isValidJSONString.js";
17
- //import startDatabaseProvider from "./databases/startProvider.js";
18
- //import CLILog from "../../lib/CLILog.js";
19
- //import removeDeletedDependenciesFromMap from "./removeDeletedDependenciesFromMap.js";
20
- //import validateDatabasesFromSettings from "../../lib/validateDatabasesFromSettings.js";
21
- //import wait from "../../lib/wait.js";
22
1
  import dev from "../../lib/dev/index.js";
23
2
 
24
- //const majorVersion = parseInt(
25
- // process?.version?.split(".")[0]?.replace("v", ""),
26
- // 10
27
- //);
28
- //
29
- //const __filename = fileURLToPath(import.meta.url);
30
- //const __dirname = dirname(__filename);
31
- //
32
- //const killProcess = (pid = 0) => {
33
- // return new Promise((resolve) => {
34
- // ps.kill(pid, () => {
35
- // resolve();
36
- // });
37
- // });
38
- //};
39
- //
40
- //const watchlist = [
41
- // { path: "ui" },
42
- // { path: "lib" },
43
- // { path: "i18n" },
44
- // { path: "api" },
45
- // { path: "email" },
46
- // { path: "fixtures" },
47
- // { path: "routes" },
48
- // { path: "index.client.js" },
49
- // { path: "index.server.js" },
50
- // ...filesToCopy,
51
- //];
52
- //
53
- //const requiredFileCheck = () => {
54
- // return new Promise((resolve) => {
55
- // const requiredFiles = [
56
- // { path: "index.server.js", type: "file" },
57
- // { path: "index.html", type: "file" },
58
- // { path: "index.client.js", type: "file" },
59
- // { path: "api", type: "directory" },
60
- // { path: "i18n", type: "directory" },
61
- // { path: "lib", type: "directory" },
62
- // { path: "public", type: "directory" },
63
- // { path: "ui", type: "directory" },
64
- // { path: "ui/components", type: "directory" },
65
- // { path: "ui/layouts", type: "directory" },
66
- // { path: "ui/pages", type: "directory" },
67
- // ];
68
- //
69
- // requiredFiles.forEach((requiredFile) => {
70
- // const exists = fs.existsSync(`${process.cwd()}/${requiredFile.path}`);
71
- // const stats =
72
- // exists && fs.statSync(`${process.cwd()}/${requiredFile.path}`);
73
- // const isFile = stats && stats.isFile();
74
- // const isDirectory = stats && stats.isDirectory();
75
- //
76
- // if (requiredFile && requiredFile.type === "file") {
77
- // if (!exists || (exists && !isFile)) {
78
- // CLILog(
79
- // `The path ${requiredFile.path} must exist in your project and must be a file (not a directory).`,
80
- // {
81
- // level: "danger",
82
- // docs: "https://github.com/cheatcode/joystick#folder-and-file-structure",
83
- // }
84
- // );
85
- // process.exit(0);
86
- // }
87
- // }
88
- //
89
- // if (requiredFile && requiredFile.type === "directory") {
90
- // if (!exists || (exists && !isDirectory)) {
91
- // CLILog(
92
- // `The path ${requiredFile.path} must exist in your project and must be a directory (not a file).`,
93
- // {
94
- // level: "danger",
95
- // docs: "https://github.com/cheatcode/joystick#folder-and-file-structure",
96
- // }
97
- // );
98
- // process.exit(0);
99
- // }
100
- // }
101
- // });
102
- //
103
- // resolve();
104
- // });
105
- //};
106
- //
107
- //const handleCleanup = async (
108
- // processIds = [process?.serverProcess?.pid, process?.hmrProcess?.pid]
109
- //) => {
110
- // for (let i = 0; i < processIds?.length; i += 1) {
111
- // const processId = processIds[i];
112
- //
113
- // if (processId) {
114
- // await killProcess(processId);
115
- // }
116
- // }
117
- //
118
- // const databases = Object.entries(process._databases || {});
119
- //
120
- // for (let i = 0; i < databases?.length; i += 1) {
121
- // const [provider, providerConnection] = databases[i];
122
- //
123
- // if (providerConnection?.pid) {
124
- // await killProcess(providerConnection.pid);
125
- // }
126
- //
127
- // if (!providerConnection?.pid) {
128
- // const providerConnections = Object.entries(providerConnection);
129
- //
130
- // for (let pc = 0; pc < providerConnections?.length; pc += 1) {
131
- // const [_connectionName, connection] = providerConnections[pc];
132
- //
133
- // if (connection?.pid) {
134
- // await killProcess(connection?.pid);
135
- // }
136
- // }
137
- // }
138
- // }
139
- //};
140
- //
141
- //const getDatabaseProcessIds = () => {
142
- // const databaseProcessIds = [];
143
- // const databases = Object.entries(process._databases || {});
144
- //
145
- // for (let i = 0; i < databases?.length; i += 1) {
146
- // const [_provider, providerConnection] = databases[i];
147
- //
148
- // if (providerConnection?.pid) {
149
- // databaseProcessIds.push(providerConnection.pid);
150
- // }
151
- //
152
- // if (!providerConnection?.pid) {
153
- // const providerConnections = Object.entries(providerConnection);
154
- //
155
- // for (let pc = 0; pc < providerConnections?.length; pc += 1) {
156
- // const [_connectionName, connection] = providerConnections[pc];
157
- //
158
- // if (connection?.pid) {
159
- // databaseProcessIds.push(connection.pid);
160
- // }
161
- // }
162
- // }
163
- // }
164
- //
165
- // return databaseProcessIds;
166
- //};
167
- //
168
- //const handleSignalEvents = (processIds = []) => {
169
- // const execArgv = ["--no-warnings"];
170
- //
171
- // if (majorVersion < 19) {
172
- // execArgv.push("--experimental-specifier-resolution=node");
173
- // }
174
- //
175
- // const cleanupProcess = child_process.fork(
176
- // path.resolve(`${__dirname}/cleanup/index.js`),
177
- // [],
178
- // {
179
- // // NOTE: Run in detached mode so when parent process dies, the child still runs
180
- // // and cleanup completes.
181
- // detached: true,
182
- // execArgv,
183
- // // NOTE: Pipe stdin, stdout, and stderr. IPC establishes a message channel so we
184
- // // communicate with the child_process.
185
- // silent: true,
186
- // }
187
- // );
188
- //
189
- // process.on("SIGINT", async () => {
190
- // const databaseProcessIds = getDatabaseProcessIds();
191
- // cleanupProcess.send(JSON.stringify(({ processIds: [...processIds, ...databaseProcessIds] })));
192
- // process.exit();
193
- // });
194
- //
195
- // process.on("SIGTERM", async () => {
196
- // const databaseProcessIds = getDatabaseProcessIds();
197
- // cleanupProcess.send(JSON.stringify(({ processIds: [...processIds, ...databaseProcessIds] })));
198
- // process.exit();
199
- // });
200
- //};
201
- //
202
- //const handleHMRProcessMessages = () => {
203
- // process.hmrProcess.on("message", (message) => {
204
- // const processMessages = [
205
- // "SERVER_CLOSED",
206
- // "HAS_HMR_CONNECTIONS",
207
- // "HAS_NO_HMR_CONNECTIONS",
208
- // "HMR_UPDATE_COMPLETED",
209
- // ];
210
- //
211
- // if (!processMessages.includes(message?.type)) {
212
- // process.loader.stable(message);
213
- // }
214
- //
215
- // if (message?.type === "HAS_HMR_CONNECTIONS") {
216
- // process.hmrProcess.hasConnections = true;
217
- // }
218
- //
219
- // if (message?.type === "HAS_NO_HMR_CONNECTIONS") {
220
- // process.hmrProcess.hasConnections = false;
221
- // }
222
- //
223
- // if (message?.type === "HMR_UPDATE_COMPLETED") {
224
- // // NOTE: Do a setTimeout to ensure that server is still available while the HMR update completes.
225
- // // Necessary because some updates are instance, but others might mount a UI that needs a server
226
- // // available (e.g., runs API requests).
227
- // setTimeout(() => {
228
- // restartApplicationProcess(message?.sessions);
229
- // }, 500);
230
- // }
231
- // });
232
- //};
233
- //
234
- //const handleHMRProcessSTDIO = () => {
235
- // try {
236
- // if (process.hmrProcess) {
237
- // process.hmrProcess.on("error", (error) => {
238
- // CLILog(error.toString(), {
239
- // level: "danger",
240
- // docs: "https://github.com/cheatcode/joystick",
241
- // });
242
- // });
243
- //
244
- // process.hmrProcess.stdout.on("data", (data) => {
245
- // console.log(data.toString());
246
- // });
247
- //
248
- // process.hmrProcess.stderr.on("data", (data) => {
249
- // process.loader.stop();
250
- // CLILog(data.toString(), {
251
- // level: "danger",
252
- // docs: "https://github.com/cheatcode/joystick",
253
- // });
254
- // });
255
- // }
256
- // } catch (exception) {
257
- // throw new Error(`[dev.handleHMRProcessSTDIO] ${exception.message}`);
258
- // }
259
- //};
260
- //
261
- //const startHMRProcess = () => {
262
- // const execArgv = ["--no-warnings"];
263
- //
264
- // if (majorVersion < 19) {
265
- // execArgv.push("--experimental-specifier-resolution=node");
266
- // }
267
- //
268
- // const hmrProcess = child_process.fork(
269
- // path.resolve(`${__dirname}/hmrServer.js`),
270
- // [],
271
- // {
272
- // execArgv,
273
- // // NOTE: Pipe stdin, stdout, and stderr. IPC establishes a message channel so we
274
- // // communicate with the child_process.
275
- // silent: true,
276
- // }
277
- // );
278
- //
279
- // process.hmrProcess = hmrProcess;
280
- //
281
- // handleHMRProcessSTDIO();
282
- // handleHMRProcessMessages();
283
- //};
284
- //
285
- //const notifyHMRClients = (indexHTMLChanged = false) => {
286
- // const settings = loadSettings(process.env.NODE_ENV);
287
- // process.hmrProcess.send(
288
- // JSON.stringify({
289
- // type: "RESTART_SERVER",
290
- // settings,
291
- // indexHTMLChanged,
292
- // })
293
- // );
294
- //};
295
- //
296
- //const handleServerProcessMessages = () => {
297
- // process.serverProcess.on("message", (message) => {
298
- // const processMessages = ["SERVER_CLOSED"];
299
- //
300
- // if (!processMessages.includes(message)) {
301
- // process.loader.stable(message);
302
- // }
303
- // });
304
- //};
305
- //
306
- //const handleServerProcessSTDIO = () => {
307
- // try {
308
- // if (process.serverProcess) {
309
- // process.serverProcess.on("error", (error) => {
310
- // console.log(error);
311
- // });
312
- //
313
- // process.serverProcess.stdout.on("data", (data) => {
314
- // const message = data.toString();
315
- //
316
- // if (message && message.includes("App running at:")) {
317
- // process.loader.stable(message);
318
- // } else {
319
- // if (message && !message.includes("BUILD_ERROR")) {
320
- // console.log(message);
321
- // }
322
- // }
323
- // });
324
- //
325
- // process.serverProcess.stderr.on("data", (data) => {
326
- // process.loader.stop();
327
- // CLILog(data.toString(), {
328
- // level: "danger",
329
- // docs: "https://github.com/cheatcode/joystick",
330
- // });
331
- // });
332
- // }
333
- // } catch (exception) {
334
- // throw new Error(`[dev.handleServerProcessSTDIO] ${exception.message}`);
335
- // }
336
- //};
337
- //
338
- //const startApplicationProcess = (sessionsBeforeHMRUpdate = null) => {
339
- // const execArgv = ["--no-warnings"];
340
- //
341
- // if (majorVersion < 19) {
342
- // execArgv.push("--experimental-specifier-resolution=node");
343
- // }
344
- //
345
- // if (
346
- // process.env.NODE_ENV === "development" &&
347
- // process.env.IS_DEBUG_MODE === "true"
348
- // ) {
349
- // execArgv.push("--inspect");
350
- // }
351
- //
352
- // const serverProcess = child_process.fork(
353
- // path.resolve(".joystick/build/index.server.js"),
354
- // [],
355
- // {
356
- // execArgv,
357
- // // NOTE: Pipe stdin, stdout, and stderr. IPC establishes a message channel so we
358
- // // communicate with the child_process.
359
- // silent: true,
360
- // env: {
361
- // FORCE_COLOR: "1",
362
- // LOGS_PATH: process.env.LOGS_PATH,
363
- // NODE_ENV: process.env.NODE_ENV,
364
- // ROOT_URL: process.env.ROOT_URL,
365
- // PORT: process.env.PORT,
366
- // JOYSTICK_SETTINGS: process.env.JOYSTICK_SETTINGS,
367
- // HMR_SESSIONS: sessionsBeforeHMRUpdate,
368
- // },
369
- // }
370
- // );
371
- //
372
- // process.serverProcess = serverProcess;
373
- //
374
- // handleServerProcessSTDIO();
375
- // handleServerProcessMessages();
376
- //
377
- // return serverProcess;
378
- //};
379
- //
380
- //const restartApplicationProcess = async (sessionsBeforeHMRUpdate = null) => {
381
- // if (process.serverProcess && process.serverProcess.pid) {
382
- // process.loader.text("Restarting app...");
383
- // process.serverProcess.kill();
384
- // startApplicationProcess(sessionsBeforeHMRUpdate);
385
- // return Promise.resolve();
386
- // }
387
- //
388
- // // NOTE: Original process was never initialized due to an error.
389
- // process.loader.text("Starting app...");
390
- // startApplicationProcess();
391
- //
392
- // if (!process.hmrProcess) {
393
- // startHMRProcess();
394
- // }
395
- //};
396
- //
397
- //const initialBuild = async (buildSettings = {}) => {
398
- // const buildPath = `.joystick/build`;
399
- // const fileMapPath = `.joystick/build/fileMap.json`;
400
- //
401
- // if (!fs.existsSync(buildPath)) {
402
- // fs.mkdirSync(".joystick/build");
403
- // }
404
- //
405
- // if (fs.existsSync(fileMapPath)) {
406
- // fs.unlinkSync(fileMapPath);
407
- // }
408
- //
409
- // process.loader.text("Building app...");
410
- //
411
- // await requiredFileCheck();
412
- //
413
- // const filesToBuild = getFilesToBuild(buildSettings?.excludedPaths, "start");
414
- // const fileResults = await buildFiles(
415
- // filesToBuild,
416
- // null,
417
- // process.env.NODE_ENV
418
- // );
419
- //
420
- // const hasErrors = [...fileResults]
421
- // .filter((result) => !!result)
422
- // .map(({ success }) => success)
423
- // .includes(false);
424
- //
425
- // if (!hasErrors) {
426
- // startApplicationProcess();
427
- // startHMRProcess();
428
- // // If the file has errors on startup, no way to trigger a restart w/o a watcher.
429
- // }
430
- //};
431
- //
432
- //const startWatcher = async (buildSettings = {}) => {
433
- // await initialBuild(buildSettings);
434
- //
435
- // const watcher = chokidar.watch(
436
- // watchlist.map(({ path }) => path),
437
- // {
438
- // ignoreInitial: true,
439
- // }
440
- // );
441
- //
442
- // watcher.on("all", async (event, path) => {
443
- // await requiredFileCheck();
444
- // process.loader.text("Rebuilding app...");
445
- // const isHTMLUpdate = path === "index.html";
446
- // const isUIPath = path?.includes("ui/") || path === 'index.css' || isHTMLUpdate;
447
- // const isUIUpdate =
448
- // (process.hmrProcess.hasConnections && isUIPath) || false;
449
- //
450
- // if (
451
- // ["addDir"].includes(event) &&
452
- // fs.existsSync(path) &&
453
- // fs.lstatSync(path).isDirectory() &&
454
- // !fs.existsSync(`./.joystick/build/${path}`)
455
- // ) {
456
- // fs.mkdirSync(`./.joystick/build/${path}`);
457
- //
458
- // if (isUIUpdate) {
459
- // notifyHMRClients(isHTMLUpdate);
460
- // } else {
461
- // restartApplicationProcess();
462
- // }
463
- //
464
- // return;
465
- // }
466
- //
467
- // // If path is file to copy...
468
- // if (!!filesToCopy.find((fileToCopy) => fileToCopy.path === path)) {
469
- // const isDirectory = fs.statSync(path).isDirectory();
470
- //
471
- // // If path to copy is a directory and doesn't exist in the build...
472
- // if (isDirectory && !fs.existsSync(`./.joystick/build/${path}`)) {
473
- // fs.mkdirSync(`./.joystick/build/${path}`);
474
- // }
475
- //
476
- // // If path to copy is not a directory...
477
- // if (!isDirectory) {
478
- // fs.writeFileSync(`./.joystick/build/${path}`, fs.readFileSync(path));
479
- // }
480
- //
481
- // // Load settings in case we copied new values over...
482
- // loadSettings(process.env.NODE_ENV);
483
- //
484
- // if (isUIUpdate) {
485
- // notifyHMRClients(isHTMLUpdate);
486
- // } else {
487
- // restartApplicationProcess();
488
- // }
489
- //
490
- // return;
491
- // }
492
- //
493
- // if (["add", "change"].includes(event) && fs.existsSync(path)) {
494
- // const codependencies = getCodependenciesForFile(path);
495
- // const fileResults = await buildFiles(
496
- // [path, ...(codependencies?.existing || [])],
497
- // null,
498
- // process.env.NODE_ENV
499
- // );
500
- // const fileResultsHaveErrors = fileResults
501
- // .filter((result) => !!result)
502
- // .map(({ success }) => success)
503
- // .includes(false);
504
- //
505
- // removeDeletedDependenciesFromMap(codependencies.deleted);
506
- //
507
- // const hasErrors = fileResultsHaveErrors;
508
- //
509
- // if (process.serverProcess && hasErrors) {
510
- // process.serverProcess.send(
511
- // JSON.stringify({
512
- // error: "BUILD_ERROR",
513
- // paths: fileResults
514
- // .filter(({ success }) => !success)
515
- // .map(({ path: pathWithError, error }) => ({
516
- // path: pathWithError,
517
- // error,
518
- // })),
519
- // })
520
- // );
521
- //
522
- // return;
523
- // }
524
- //
525
- // if (!hasErrors) {
526
- // process.initialBuildComplete = true;
527
- //
528
- // if (isUIUpdate) {
529
- // notifyHMRClients(isHTMLUpdate);
530
- // } else {
531
- // restartApplicationProcess();
532
- // }
533
- //
534
- // return;
535
- // }
536
- // }
537
- //
538
- // if (
539
- // ["unlink", "unlinkDir"].includes(event) &&
540
- // !fs.existsSync(`./.joystick/build/${path}`)
541
- // ) {
542
- // if (isUIUpdate) {
543
- // notifyHMRClients(isHTMLUpdate);
544
- // } else {
545
- // restartApplicationProcess();
546
- // }
547
- //
548
- // return;
549
- // }
550
- //
551
- // if (
552
- // ["unlink", "unlinkDir"].includes(event) &&
553
- // fs.existsSync(`./.joystick/build/${path}`)
554
- // ) {
555
- // const pathToUnlink = `./.joystick/build/${path}`;
556
- // const stats = fs.lstatSync(pathToUnlink);
557
- //
558
- // if (stats.isDirectory()) {
559
- // fs.rmdirSync(pathToUnlink, { recursive: true });
560
- // }
561
- //
562
- // if (stats.isFile()) {
563
- // fs.unlinkSync(pathToUnlink);
564
- // }
565
- //
566
- // if (isUIUpdate) {
567
- // notifyHMRClients(isHTMLUpdate);
568
- // } else {
569
- // restartApplicationProcess();
570
- // }
571
- //
572
- // return;
573
- // }
574
- // });
575
- //};
576
- //
577
- //const startDatabase = async (database = {}, databasePort = 2610, hasMultipleOfProvider = false) => {
578
- // process._databases = {
579
- // ...(process._databases || {}),
580
- // [database.provider]: !hasMultipleOfProvider ? await startDatabaseProvider(database, databasePort) : {
581
- // ...((process._databases && process._databases[database.provider]) || {}),
582
- // [database?.name || `${database.provider}_${databasePort}`]: await startDatabaseProvider(database, databasePort)
583
- // },
584
- // };
585
- //
586
- // return Promise.resolve(process._databases);
587
- //};
588
- //
589
- //const startDatabases = async (databasePortStart = 2610) => {
590
- // try {
591
- // const hasSettings = !!process.env.JOYSTICK_SETTINGS;
592
- // const settings = hasSettings && JSON.parse(process.env.JOYSTICK_SETTINGS);
593
- // const databases = settings?.config?.databases || [];
594
- //
595
- // if (databases && Array.isArray(databases) && databases.length > 0) {
596
- // validateDatabasesFromSettings(databases);
597
- //
598
- // for (let i = 0; i < databases?.length; i += 1) {
599
- // const database = databases[i];
600
- // const hasMultipleOfProvider = (databases?.filter((database) => database?.provider === database?.provider))?.length > 1;
601
- //
602
- // // NOTE: Increment each database port using index in the databases array from settings.
603
- // await startDatabase(database, databasePortStart + i, hasMultipleOfProvider);
604
- // }
605
- //
606
- // return Promise.resolve();
607
- // }
608
- //
609
- // return Promise.resolve();
610
- // } catch (exception) {
611
- // console.warn(exception);
612
- // }
613
- //};
614
- //
615
- //const loadSettings = () => {
616
- // const environment = process.env.NODE_ENV;
617
- // const settingsFilePath = `${process.cwd()}/settings.${environment}.json`;
618
- // const hasSettingsFile = fs.existsSync(settingsFilePath);
619
- //
620
- // if (!hasSettingsFile) {
621
- // CLILog(
622
- // `A settings file could not be found for this environment (${environment}). Create a settings.${environment}.json file at the root of your project and restart Joystick.`,
623
- // {
624
- // level: "danger",
625
- // docs: "https://github.com/cheatcode/joystick#settings",
626
- // }
627
- // );
628
- // process.exit(0);
629
- // }
630
- //
631
- // const rawSettingsFile = fs.readFileSync(settingsFilePath, "utf-8");
632
- // const isValidJSON = isValidJSONString(rawSettingsFile);
633
- //
634
- // if (!isValidJSON) {
635
- // CLILog(
636
- // `Failed to parse settings file. Double-check the syntax in your settings.${environment}.json file at the root of your project and restart Joystick.`,
637
- // {
638
- // level: "danger",
639
- // docs: "https://github.com/cheatcode/joystick#settings",
640
- // tools: [{ title: "JSON Linter", url: "https://jsonlint.com/" }],
641
- // }
642
- // );
643
- //
644
- // process.exit(0);
645
- // }
646
- //
647
- // const settingsFile = isValidJSON ? rawSettingsFile : "{}";
648
- //
649
- // // NOTE: Child process will inherit this env var from this parent process.
650
- // process.env.JOYSTICK_SETTINGS = settingsFile;
651
- //
652
- // return JSON.parse(settingsFile);
653
- //};
654
- //
655
- //const checkIfJoystickProject = () => {
656
- // return fs.existsSync(`${process.cwd()}/.joystick`);
657
- //};
658
-
659
3
  export default async (args = {}, options = {}) => {
660
4
  await dev({
661
5
  environment: args?.environment || 'development',
@@ -242,11 +242,6 @@ const handleAddOrChangeFile = async (context = {}, path = '', options = {}) => {
242
242
  return;
243
243
  }
244
244
 
245
- console.log('ADD/CHANGE FILE', {
246
- context,
247
- fileResultsHaveErrors,
248
- });
249
-
250
245
  if (!fileResultsHaveErrors) {
251
246
  process.initialBuildComplete = true;
252
247
 
@@ -258,7 +253,6 @@ const handleAddOrChangeFile = async (context = {}, path = '', options = {}) => {
258
253
  }
259
254
  }
260
255
  } catch (exception) {
261
- console.log(exception);
262
256
  throw new Error(`[dev.handleAddOrChangeFile] ${exception.message}`);
263
257
  }
264
258
  };
@@ -268,10 +262,6 @@ const handleAddDirectory = (context = {}, path = '', options = {}) => {
268
262
  if (context.isAddDirectory) {
269
263
  fs.mkdirSync(`./.joystick/build/${path}`);
270
264
 
271
- console.log('ADD DIR', {
272
- context,
273
- });
274
-
275
265
  if (context.isUIUpdate) {
276
266
  handleNotifyHMRClients(context.isHTMLUpdate);
277
267
  } else {
@@ -288,10 +278,6 @@ const handleCopyFile = (context = {}, path = '', options = {}) => {
288
278
  if (context.isFileToCopy && !context.isDirectory) {
289
279
  fs.writeFileSync(`./.joystick/build/${path}`, fs.readFileSync(path));
290
280
 
291
- console.log('COPY FILE', {
292
- context,
293
- });
294
-
295
281
  if (context.isUIUpdate) {
296
282
  handleNotifyHMRClients(context.isHTMLUpdate);
297
283
  } else {
@@ -308,10 +294,6 @@ const handleCopyDirectory = (context = {}, path = '', options = {}) => {
308
294
  if (context.isFileToCopy && context.isDirectory && !context.isExistingDirectoryInBuild) {
309
295
  fs.mkdirSync(`./.joystick/build/${path}`);
310
296
 
311
- console.log('COPY DIR', {
312
- context,
313
- });
314
-
315
297
  if (context.isUIUpdate) {
316
298
  handleNotifyHMRClients(context.isHTMLUpdate);
317
299
  } else {
@@ -332,7 +314,6 @@ const handleRestartApplicationProcess = async (options = {}) => {
332
314
 
333
315
  process.serverProcess.kill();
334
316
 
335
- console.log('GETTING TO HERE');
336
317
  await handleStartAppServer(options);
337
318
 
338
319
  return Promise.resolve();
@@ -358,13 +339,6 @@ const handleStartAppServer = async (options = {}) => {
358
339
  sessionsBeforeHMRUpdate: options?.sessionsBeforeHMRUpdate,
359
340
  });
360
341
 
361
- console.log({
362
- nodeMajorVersion: options?.nodeMajorVersion,
363
- port: options?.port,
364
- sessionsBeforeHMRUpdate: options?.sessionsBeforeHMRUpdate,
365
- serverProcess,
366
- });
367
-
368
342
  if (serverProcess) {
369
343
  processIds.push(serverProcess.pid);
370
344
  process.serverProcess = serverProcess;
@@ -378,15 +352,8 @@ const handleStartAppServer = async (options = {}) => {
378
352
 
379
353
  const handleNotifyHMRClients = async (indexHTMLChanged = false) => {
380
354
  try {
381
- console.log('CALLING HNHMRCLIENTS');
382
-
383
355
  if (process.hmrProcess) {
384
- const settings = await loadSettings(process.env.NODE_ENV);
385
- console.log({
386
- type: "RESTART_SERVER",
387
- settings: settings.parsed,
388
- indexHTMLChanged,
389
- });
356
+ const settings = await loadSettings({ environment: process.env.NODE_ENV });
390
357
  process.hmrProcess.send(
391
358
  JSON.stringify({
392
359
  type: "RESTART_SERVER",