eddev 2.3.17 → 2.3.18

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.
@@ -1,5 +1,5 @@
1
1
  import { Worker } from "node:worker_threads";
2
- import { StatefulLog } from "../utils/stateful-log.js";
2
+ import type { StatefulLog } from "../utils/stateful-log.js";
3
3
  type WorkerMode = "admin" | "frontend" | "graphql" | "serverless";
4
4
  export declare class CLIWorker {
5
5
  worker: Worker;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-worker.d.ts","sourceRoot":"","sources":["../../../src/node/cli/cli-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwC,MAAM,qBAAqB,CAAA;AAKlF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,KAAK,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAA;AAEjE,qBAAa,SAAS;IACpB,MAAM,EAAE,MAAM,CAAA;gBACF,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAkC3F,QAAQ;CAGf"}
1
+ {"version":3,"file":"cli-worker.d.ts","sourceRoot":"","sources":["../../../src/node/cli/cli-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwC,MAAM,qBAAqB,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAG3D,KAAK,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAA;AAEjE,qBAAa,SAAS;IACpB,MAAM,EAAE,MAAM,CAAA;gBACF,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAkC3F,QAAQ;CAGf"}
@@ -1,8 +1,4 @@
1
1
  import { Worker, isMainThread, parentPort, workerData } from "node:worker_threads";
2
- import { AdminBundler, adminLog } from "../compiler/bundler.admin.js";
3
- import { FrontendBundler, frontendLog } from "../compiler/bundler.frontend.js";
4
- import { GraphQLGenerator, graphqlLog } from "../graphql/graphql-codegen.js";
5
- import { Project } from "../project/project.js";
6
2
  import { configureCliMode } from "./cli-mode.js";
7
3
  export class CLIWorker {
8
4
  worker;
@@ -58,6 +54,7 @@ if (!isMainThread) {
58
54
  rootDir: process.cwd(),
59
55
  });
60
56
  // Load the project info
57
+ const { Project } = await import("../project/project.js");
61
58
  const project = await Project.create({
62
59
  rootDir: process.cwd(),
63
60
  reportPluginCompatibility: false,
@@ -90,6 +87,7 @@ if (!isMainThread) {
90
87
  });
91
88
  }
92
89
  if (mode === "admin") {
90
+ const { AdminBundler, adminLog } = await import("../compiler/bundler.admin.js");
93
91
  const bundler = new AdminBundler(project, {
94
92
  mode: "development",
95
93
  watch: true,
@@ -98,6 +96,7 @@ if (!isMainThread) {
98
96
  pipeLog(adminLog);
99
97
  }
100
98
  else if (mode === "frontend") {
99
+ const { FrontendBundler, frontendLog } = await import("../compiler/bundler.frontend.js");
101
100
  const bundler = new FrontendBundler(project, {
102
101
  mode: "development",
103
102
  watch: true,
@@ -106,6 +105,7 @@ if (!isMainThread) {
106
105
  pipeLog(frontendLog);
107
106
  }
108
107
  else if (mode === "graphql") {
108
+ const { GraphQLGenerator, graphqlLog } = await import("../graphql/graphql-codegen.js");
109
109
  const codegen = new GraphQLGenerator(project, {
110
110
  generate: true,
111
111
  optimize: true,
@@ -126,7 +126,7 @@ program
126
126
  serverless: false,
127
127
  endpoint: "",
128
128
  });
129
- spaStaging.runAndWatch();
129
+ await spaStaging.runAndWatch();
130
130
  }
131
131
  // Boot up admin in a worker
132
132
  if (tasks.admin) {
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "2.3.17";
1
+ export declare const VERSION = "2.3.18";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- export const VERSION = "2.3.17";
1
+ export const VERSION = "2.3.18";
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../src/node/compiler/dev-server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAO/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAID,eAAO,MAAM,aAAa,qEAAU,CAAA;AAEpC,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,qBAAa,SAAS;IAOX,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IAPtB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,SAAO;gBAGF,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO;IAUhB,KAAK;CAyGZ"}
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../../src/node/compiler/dev-server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAM/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAID,eAAO,MAAM,aAAa,qEAAU,CAAA;AAEpC,KAAK,OAAO,GAAG;IACb,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,qBAAa,SAAS;IAOX,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,OAAO;IAPtB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,SAAO;gBAGF,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO;IAUhB,KAAK;CA+FZ"}
@@ -4,7 +4,6 @@ import { ProjectEnvUtils } from "../project/env.js";
4
4
  import { ensureSelfSignedCert, isCertificateTrusted } from "../utils/self-signed-cert.js";
5
5
  import { createConsole } from "../utils/stateful-log.js";
6
6
  import { createVinxiApp } from "./vinxi-app.js";
7
- import { createVinxiCodegen } from "./vinxi-codegen.js";
8
7
  import chalk from "chalk";
9
8
  const console = createConsole("Dev Server", "dev");
10
9
  export const serverlessLog = console;
@@ -18,22 +17,14 @@ export class DevServer {
18
17
  constructor(project, opts) {
19
18
  this.project = project;
20
19
  this.opts = opts;
21
- this.start();
22
20
  this.origin = ProjectEnvUtils.get("SITE_URL");
23
21
  const parsedSiteURL = parseURL(this.origin);
24
22
  this.hostname = !!parsedSiteURL.host ? parsedSiteURL.host : "localhost";
25
23
  this.hostOrigin = (opts.https ? "https" : "http") + "://" + this.hostname + ":" + this.port;
24
+ this.start();
26
25
  }
27
26
  async start() {
28
27
  console.setWorking(true);
29
- // console.log("Setting up vinxi codegen")
30
- const codegen = createVinxiCodegen({
31
- mode: "development",
32
- project: this.project,
33
- serverless: true,
34
- });
35
- await codegen.runAndWatch();
36
- // console.log("Has run once")
37
28
  const app = createVinxiApp({
38
29
  mode: "development",
39
30
  origin: this.origin,
@@ -25,6 +25,7 @@ export declare function storybookVitePlugins(args: Args): PluginOption[];
25
25
  export declare function ignoreRollupErrorsPlugin(): PluginOption;
26
26
  export declare function loggerPlugin(args: {
27
27
  console: StatefulLog<any>;
28
+ completeOnError?: boolean;
28
29
  }): PluginOption;
29
30
  export declare function getViteConfig(args: Args): InlineConfig;
30
31
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"get-vite-config.d.ts","sourceRoot":"","sources":["../../../src/node/compiler/get-vite-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;IAClC,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,UAAU,GAAG,KAAK,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAqDlD;AAED,KAAK,eAAe,GAAG;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,WAAW,CAAC,IAAI,GAAE,eAAoB,kBA4FrD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,YAAY,CA6CxC;AAwBD,wBAAgB,aAAa,IAAI,YAAY,CAW5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,CAatD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,CAE/D;AAED,wBAAgB,wBAAwB,IAAI,YAAY,CA8BvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;CAAE,GAAG,YAAY,CA4B9E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAmEtD"}
1
+ {"version":3,"file":"get-vite-config.d.ts","sourceRoot":"","sources":["../../../src/node/compiler/get-vite-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;IAClC,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,UAAU,GAAG,KAAK,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAA;IACzB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAqDlD;AAED,KAAK,eAAe,GAAG;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAgB,WAAW,CAAC,IAAI,GAAE,eAAoB,kBA4FrD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,YAAY,CA6CxC;AA4BD,wBAAgB,aAAa,IAAI,YAAY,CAW5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,CAatD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,CAE/D;AAED,wBAAgB,wBAAwB,IAAI,YAAY,CA8BvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CA6BzG;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAmEtD"}
@@ -185,23 +185,29 @@ export function ssrPlugin() {
185
185
  };
186
186
  }
187
187
  function buildStatusPlugin(console) {
188
- let timer = 0;
188
+ let hasStarted = false;
189
189
  return {
190
190
  name: "eddev:logging",
191
191
  enforce: "post",
192
- watchChange() {
193
- console.resetLog();
194
- clearTimeout(timer);
195
- },
196
192
  buildStart() {
197
- clearTimeout(timer);
193
+ if (hasStarted) {
194
+ console.resetLog();
195
+ }
196
+ else {
197
+ hasStarted = true;
198
+ console.startTimer();
199
+ }
198
200
  console.setWorking(true);
199
201
  },
200
- buildEnd() {
201
- clearTimeout(timer);
202
- timer = setTimeout(() => {
203
- console.setWorking(false);
204
- }, 0);
202
+ buildEnd(error) {
203
+ if (error)
204
+ console.setWorking(false, "error");
205
+ },
206
+ renderError() {
207
+ console.setWorking(false, "error");
208
+ },
209
+ writeBundle() {
210
+ console.setWorking(false);
205
211
  },
206
212
  };
207
213
  }
@@ -283,6 +289,8 @@ export function loggerPlugin(args) {
283
289
  };
284
290
  logger.error = (msg) => {
285
291
  args.console.fail(msg.replace(/\n/, ""));
292
+ if (args.completeOnError)
293
+ args.console.setWorking(false, "error");
286
294
  };
287
295
  logger.warnOnce = (msg) => {
288
296
  args.console.warn(msg.replace(/\n/, ""));
@@ -320,7 +328,7 @@ export function getViteConfig(args) {
320
328
  }),
321
329
  buildStatusPlugin(console),
322
330
  ignoreRollupErrorsPlugin(),
323
- loggerPlugin({ console }),
331
+ loggerPlugin({ console, completeOnError: true }),
324
332
  workersPlugin(),
325
333
  ],
326
334
  build: {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/node/project/manifest/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,gCAAgC,CAAA;AAGtF,KAAK,aAAa,CAAC,UAAU,IAAI;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,KAAK,qBAAqB,CAAC,UAAU,EAAE,SAAS,IAAI;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACvC,gBAAgB,EAAE,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/F,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,UAAU,EAAE,SAAS,IAAI;IACrD,2DAA2D;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,+FAA+F;IAC/F,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IACxF,kCAAkC;IAClC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC9F,qFAAqF;IACrF,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;CAC1B,CAAA;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,GAkH1G,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAC9C"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/node/project/manifest/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,gCAAgC,CAAA;AAGtF,KAAK,aAAa,CAAC,UAAU,IAAI;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,KAAK,qBAAqB,CAAC,UAAU,EAAE,SAAS,IAAI;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IACvC,gBAAgB,EAAE,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/F,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,UAAU,EAAE,SAAS,IAAI;IACrD,2DAA2D;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,+FAA+F;IAC/F,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IACxF,kCAAkC;IAClC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC9F,qFAAqF;IACrF,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;CAC1B,CAAA;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,GAgI1G,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAC9C"}
@@ -16,8 +16,9 @@ export function createManifestGenerator(args) {
16
16
  return new Promise(async (resolve) => {
17
17
  files = [];
18
18
  let events = [];
19
- const update = async () => {
20
- value = await generate(files);
19
+ let updateQueue = Promise.resolve();
20
+ const runUpdate = async () => {
21
+ value = await generate([...files]);
21
22
  clearTimeout(debouncer);
22
23
  debouncer = setTimeout(() => {
23
24
  if (!disposed)
@@ -30,19 +31,29 @@ export function createManifestGenerator(args) {
30
31
  events = [];
31
32
  }
32
33
  };
34
+ const update = () => {
35
+ updateQueue = updateQueue.then(runUpdate, runUpdate);
36
+ return updateQueue;
37
+ };
33
38
  if (args.watch) {
34
39
  const disposer = await watchFileTree({
35
40
  pattern: args.pattern,
36
41
  ignore: args.ignore,
37
42
  callback: (fileList, event) => {
38
43
  files = fileList;
39
- cache = new Map();
40
- if (args.onFileChange)
41
- fileList.forEach(args.onFileChange);
42
- update();
44
+ if (event) {
45
+ cache.delete(event.file);
46
+ args.onFileChange?.(event.file);
47
+ }
48
+ else {
49
+ cache.clear();
50
+ if (args.onFileChange)
51
+ fileList.forEach(args.onFileChange);
52
+ }
43
53
  if (event) {
44
54
  events.push(event);
45
55
  }
56
+ void update();
46
57
  },
47
58
  });
48
59
  disposers.push(disposer);
@@ -59,12 +70,16 @@ export function createManifestGenerator(args) {
59
70
  const key = args.getKey(file);
60
71
  if (key === null)
61
72
  return;
62
- const value = await args.loadValue(file, key);
73
+ let value = cache.get(file);
74
+ if (!cache.has(file)) {
75
+ value = await args.loadValue(file, key);
76
+ cache.set(file, value);
77
+ }
63
78
  entries[key] = {
64
79
  key,
65
80
  relativePath: relative(args.baseDir, file),
66
81
  fullPath: file,
67
- value,
82
+ value: value,
68
83
  };
69
84
  }));
70
85
  return args.generateManifest(entries);
@@ -23,6 +23,7 @@ export declare class FSCodegen {
23
23
  private unsubscribers;
24
24
  private writtenContent;
25
25
  private flushScheduled;
26
+ private flushTimer?;
26
27
  constructor(project: Project, opts: {
27
28
  outDir: string;
28
29
  onWritten?: (opts: Set<string>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"fs-codegen.d.ts","sourceRoot":"","sources":["../../../src/node/utils/fs-codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAK/C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,QAAQ,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,CAAA;IACvD,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC7C,CAAA;AAED;;GAEG;AACH,qBAAa,SAAS;IAWX,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;KACxC;IAdI,MAAM,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,aAAa,CAAwB;IAE7C,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,cAAc,CAAQ;gBAGrB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;KACxC;IAKH,QAAQ,CAAC,SAAS,EAAE,aAAa;IAIjC,YAAY,CAAC,EACX,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,EAAE;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAA;QACxE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;KACjD;YAaa,YAAY;IAM1B,aAAa;IAWP,WAAW;IA2BX,GAAG;YAKK,KAAK;IA2BnB,IAAI;CAIL"}
1
+ {"version":3,"file":"fs-codegen.d.ts","sourceRoot":"","sources":["../../../src/node/utils/fs-codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAK/C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,QAAQ,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,CAAA;IACvD,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC7C,CAAA;AAED;;GAEG;AACH,qBAAa,SAAS;IAYX,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;KACxC;IAfI,MAAM,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,aAAa,CAAwB;IAE7C,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAC,CAA+B;gBAGzC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;KACxC;IAKH,QAAQ,CAAC,SAAS,EAAE,aAAa;IAIjC,YAAY,CAAC,EACX,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,EAAE;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAA;QACxE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAA;KACjD;YAaa,YAAY;IAM1B,aAAa;IAYP,WAAW;IA2BX,GAAG;YAKK,KAAK;IA+BnB,IAAI;CAOL"}
@@ -14,6 +14,7 @@ export class FSCodegen {
14
14
  unsubscribers = new Set();
15
15
  writtenContent = new Map();
16
16
  flushScheduled = false;
17
+ flushTimer;
17
18
  constructor(project, opts) {
18
19
  this.project = project;
19
20
  this.opts = opts;
@@ -43,9 +44,10 @@ export class FSCodegen {
43
44
  return;
44
45
  }
45
46
  this.flushScheduled = true;
46
- setTimeout(() => {
47
+ this.flushTimer = setTimeout(() => {
47
48
  this.flushScheduled = false;
48
- this.flush();
49
+ this.flushTimer = undefined;
50
+ void this.flush();
49
51
  }, 100);
50
52
  }
51
53
  async runAndWatch() {
@@ -77,6 +79,10 @@ export class FSCodegen {
77
79
  await this.flush();
78
80
  }
79
81
  async flush() {
82
+ if (this.flushTimer)
83
+ clearTimeout(this.flushTimer);
84
+ this.flushTimer = undefined;
85
+ this.flushScheduled = false;
80
86
  const files = Array.from(this.generatorFiles.values()).flat();
81
87
  const existing = (await globby(join(this.outDir, "/**/*"))).map((path) => resolve(this.project.rootDir, path));
82
88
  const written = new Set();
@@ -99,6 +105,10 @@ export class FSCodegen {
99
105
  this.opts.onWritten?.(written);
100
106
  }
101
107
  stop() {
108
+ if (this.flushTimer)
109
+ clearTimeout(this.flushTimer);
110
+ this.flushTimer = undefined;
111
+ this.flushScheduled = false;
102
112
  this.unsubscribers.forEach((unsub) => unsub());
103
113
  this.unsubscribers.clear();
104
114
  }
@@ -24,6 +24,7 @@ export declare class StatefulLog<TState> {
24
24
  hasWarnings: boolean;
25
25
  hasErrors: boolean;
26
26
  startTime: number;
27
+ endTime?: number;
27
28
  label: string;
28
29
  shortName: string;
29
30
  status: LogStatus;
@@ -39,6 +40,7 @@ export declare class StatefulLog<TState> {
39
40
  copy(log: StatefulLog<any>): void;
40
41
  flush(): void;
41
42
  getDuration(): number;
43
+ startTimer(): void;
42
44
  captureLog(): LogGroupOrEntry[];
43
45
  subscribe(fn: (self: StatefulLog<TState>) => void): () => void;
44
46
  setState(state: TState): void;
@@ -1 +1 @@
1
- {"version":3,"file":"stateful-log.d.ts","sourceRoot":"","sources":["../../../src/node/utils/stateful-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateful-log.d.ts","sourceRoot":"","sources":["../../../src/node/utils/stateful-log.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export class StatefulLog {
10
10
  hasWarnings = false;
11
11
  hasErrors = false;
12
12
  startTime = Date.now();
13
+ endTime;
13
14
  label;
14
15
  shortName;
15
16
  status = "working";
@@ -27,6 +28,7 @@ export class StatefulLog {
27
28
  this.hasErrors = false;
28
29
  this.hasWarnings = false;
29
30
  this.startTime = Date.now();
31
+ this.endTime = undefined;
30
32
  this.notifySubscribers();
31
33
  }
32
34
  clear() {
@@ -35,6 +37,7 @@ export class StatefulLog {
35
37
  this.currentGroup = undefined;
36
38
  this.hasErrors = false;
37
39
  this.hasWarnings = false;
40
+ this.endTime = undefined;
38
41
  this.notifySubscribers();
39
42
  }
40
43
  copy(log) {
@@ -44,6 +47,7 @@ export class StatefulLog {
44
47
  this.hasErrors = log.hasErrors;
45
48
  this.hasWarnings = log.hasWarnings;
46
49
  this.startTime = log.startTime;
50
+ this.endTime = log.endTime;
47
51
  this.status = log.status;
48
52
  this.state = log.state;
49
53
  this.notifySubscribers();
@@ -53,11 +57,17 @@ export class StatefulLog {
53
57
  this.notifySubscribers();
54
58
  }
55
59
  getDuration() {
60
+ if (this.endTime !== undefined)
61
+ return this.endTime - this.startTime;
56
62
  const last = this.entries[this.entries.length - 1];
57
63
  if (!last)
58
64
  return 0;
59
65
  return last.time - this.startTime;
60
66
  }
67
+ startTimer() {
68
+ this.startTime = Date.now();
69
+ this.endTime = undefined;
70
+ }
61
71
  captureLog() {
62
72
  const entries = this.entries;
63
73
  return [...entries];
@@ -73,15 +83,13 @@ export class StatefulLog {
73
83
  this.notifySubscribers();
74
84
  }
75
85
  setWorking(working, status) {
76
- if (status) {
77
- this.setStatus(status);
78
- }
79
86
  if (working) {
80
- this.setStatus("working");
87
+ this.endTime = undefined;
81
88
  }
82
89
  else {
83
- this.setStatus(this.hasErrors ? "error" : this.hasWarnings ? "warn" : "success");
90
+ this.endTime = Date.now();
84
91
  }
92
+ this.setStatus(working ? "working" : (status ?? (this.hasErrors ? "error" : this.hasWarnings ? "warn" : "success")));
85
93
  }
86
94
  setStatus(status) {
87
95
  this.status = status;
@@ -95,9 +103,9 @@ export class StatefulLog {
95
103
  this.notifySubscribers();
96
104
  }
97
105
  verbose(...messages) {
98
- if (cliMode.verbose) {
99
- this.addLogEntry("verbose", ...messages);
100
- }
106
+ if (!cliMode.verbose)
107
+ return;
108
+ this.addLogEntry("verbose", ...messages);
101
109
  this.notifySubscribers();
102
110
  }
103
111
  info(...messages) {
@@ -119,7 +127,7 @@ export class StatefulLog {
119
127
  }
120
128
  fail(...messages) {
121
129
  this.addLogEntry("fail", ...messages);
122
- this.hasWarnings = true;
130
+ this.hasErrors = true;
123
131
  this.notifySubscribers();
124
132
  }
125
133
  success(...messages) {
@@ -255,7 +263,6 @@ export class StatefulLog {
255
263
  else {
256
264
  this.entries.push(entry);
257
265
  }
258
- this.notifySubscribers();
259
266
  }
260
267
  else {
261
268
  console.log(chalk.grey(`[${this.shortName}]`), ...messages);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eddev",
3
- "version": "2.3.17",
3
+ "version": "2.3.18",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",