@emgeebee/music_downcoder 1.0.0 → 1.1.2

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 +1 @@
1
- {"version":3,"file":"getMeta.d.ts","sourceRoot":"","sources":["../src/getMeta.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,YAAY,CAAQ;gBAGT,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,OAAO;IAS7B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4GnE,SAAS,IAAI,IAAI;CAMlB"}
1
+ {"version":3,"file":"getMeta.d.ts","sourceRoot":"","sources":["../src/getMeta.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AA4CD,qBAAa,UAAU;IAKnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,YAAY,CAAQ;gBAGT,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,OAAO;IAS7B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkGnE,SAAS,IAAI,IAAI;CAMlB"}
package/dist/getMeta.js CHANGED
@@ -1,7 +1,35 @@
1
- import term from "child_process";
1
+ import { spawn } from "child_process";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
4
  import { shellPath } from "./paths.js";
5
+ const FFMPEG_TIMEOUT_MS = 30_000;
6
+ const readFfmpegMetadata = (ffmpeg, inputPath) => new Promise((resolve, reject) => {
7
+ const child = spawn(ffmpeg, ["-y", "-i", inputPath, "-f", "ffmetadata", "pipe:1"], { stdio: ["ignore", "pipe", "pipe"] });
8
+ let stdout = "";
9
+ let stderr = "";
10
+ const timer = setTimeout(() => {
11
+ child.kill("SIGKILL");
12
+ reject(new Error(`ffmpeg timed out after ${FFMPEG_TIMEOUT_MS / 1000}s: ${inputPath}`));
13
+ }, FFMPEG_TIMEOUT_MS);
14
+ child.stdout.on("data", (chunk) => {
15
+ stdout += chunk.toString();
16
+ });
17
+ child.stderr.on("data", (chunk) => {
18
+ stderr += chunk.toString();
19
+ });
20
+ child.on("error", (error) => {
21
+ clearTimeout(timer);
22
+ reject(error);
23
+ });
24
+ child.on("close", (code) => {
25
+ clearTimeout(timer);
26
+ if (code !== 0 && !stdout) {
27
+ reject(new Error(`ffmpeg failed (${code}) for ${inputPath}: ${stderr.trim()}`));
28
+ return;
29
+ }
30
+ resolve(stdout);
31
+ });
32
+ });
5
33
  export class MetaGetter {
6
34
  config;
7
35
  prompts;
@@ -38,7 +66,7 @@ export class MetaGetter {
38
66
  catch {
39
67
  console.log(` no backup file at ${backupFile}, falling back to ffmpeg`);
40
68
  const inputPath = shellPath(dirPath, filename);
41
- const meta = term.execSync(`${this.config.ffmpeg} -y -i "${inputPath}" -f ffmetaData pipe:1`, { encoding: "utf-8" });
69
+ const meta = await readFfmpegMetadata(this.config.ffmpeg, inputPath);
42
70
  const genreMatch = meta.match(/genre.*/gi);
43
71
  const genre = genreMatch ? genreMatch[0].split("=")[1] : "";
44
72
  const artistReg = new RegExp(/[\t]*artist=(.*)$/gim);
@@ -49,7 +77,6 @@ export class MetaGetter {
49
77
  const fullAlbumArtistResults = albumArtistReg.exec(meta);
50
78
  const fullAlbumResults = albumReg.exec(meta);
51
79
  const yearResults = yearReg.exec(meta);
52
- console.log(fullAlbumResults, fullAlbumArtistResults, fullArtistResults, yearResults);
53
80
  let fullArtist = "";
54
81
  let fullAlbum = "";
55
82
  if (fullAlbumResults && (fullArtistResults || fullAlbumArtistResults)) {
@@ -1 +1 @@
1
- {"version":3,"file":"getMeta.js","sourceRoot":"","sources":["../src/getMeta.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAavC,MAAM,OAAO,UAAU;IAKF;IACA;IALX,QAAQ,GAAkB,EAAE,CAAC;IAC7B,YAAY,GAAG,IAAI,CAAC;IAE5B,YACmB,MAAiB,EACjB,OAAgB;QADhB,WAAM,GAAN,MAAM,CAAW;QACjB,YAAO,GAAP,OAAO,CAAS;QAEjC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,QAAgB;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,IACE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS;YACzC,IAAI,CAAC,YAAY,EACjB,CAAC;YACD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACxD,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5D,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBACtE,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;oBAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAClE,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,0BAA0B,CAAC,CAAC;gBACxE,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CACxB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,WAAW,SAAS,wBAAwB,EACjE,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE5D,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBACrD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAEjD,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,sBAAsB,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEvC,OAAO,CAAC,GAAG,CACT,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,CACZ,CAAC;gBAEF,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,IAAI,SAAS,GAAG,EAAE,CAAC;gBAEnB,IAAI,gBAAgB,IAAI,CAAC,iBAAiB,IAAI,sBAAsB,CAAC,EAAE,CAAC;oBACtE,UAAU,GAAG,sBAAsB;wBACjC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjC,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,CAAC;gBAED,MAAM,YAAY,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC;gBAE5D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAC7C,eAAe,KAAK,cAAc,UAAU,aAAa,SAAS,YAAY,YAAY,EAAE,CAC7F,CAAC;gBAEF,IAAI,eAAe,GAAG,EAAE,CAAC;gBACzB,IAAI,cAAc,GAAG,EAAE,CAAC;gBACxB,IAAI,cAAc,GAAG,EAAE,CAAC;gBACxB,IAAI,aAAa,GAAG,EAAE,CAAC;gBAEvB,IAAI,YAAY,EAAE,CAAC;oBACjB,eAAe,GAAG,UAAU,CAAC;oBAC7B,cAAc,GAAG,SAAS,CAAC;oBAC3B,cAAc,GAAG,KAAK,CAAC;oBACvB,aAAa,GAAG,YAAY,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;oBACxE,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CACxC,eAAe,UAAU,EAAE,EAC3B,UAAU,CACX,CAAC;oBACF,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CACvC,cAAc,SAAS,EAAE,EACzB,SAAS,CACV,CAAC;oBACF,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CACtC,aAAa,YAAY,EAAE,EAC3B,YAAY,CACb,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG;oBACvB,UAAU,EAAE,eAAe;oBAC3B,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,aAAa;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAa;YACvB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU;YAC7C,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS;YAC3C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK;YACnC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI;SAClC,CAAC;QAEF,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS;QACP,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"getMeta.js","sourceRoot":"","sources":["../src/getMeta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type LogLevel = "info" | "warn" | "error";
2
+ export interface LogEntry {
3
+ id: number;
4
+ time: string;
5
+ level: LogLevel;
6
+ message: string;
7
+ }
8
+ export declare const clearJobLogs: () => void;
9
+ export declare const appendJobLog: (message: string, level?: LogLevel) => void;
10
+ export declare const getJobLogs: (since?: number) => LogEntry[];
11
+ export declare const captureConsole: () => (() => void);
12
+ //# sourceMappingURL=jobLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobLog.d.ts","sourceRoot":"","sources":["../src/jobLog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,YAAY,QAAO,IAE/B,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,QAAO,QAAiB,KACvB,IAcF,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,cAAS,KAAG,QAAQ,EACF,CAAC;AAS9C,eAAO,MAAM,cAAc,QAAO,CAAC,MAAM,IAAI,CAyB5C,CAAC"}
package/dist/jobLog.js ADDED
@@ -0,0 +1,50 @@
1
+ const MAX_LOGS = 500;
2
+ let nextId = 1;
3
+ let entries = [];
4
+ export const clearJobLogs = () => {
5
+ entries = [];
6
+ };
7
+ export const appendJobLog = (message, level = "info") => {
8
+ const line = message.trim();
9
+ if (!line) {
10
+ return;
11
+ }
12
+ entries.push({
13
+ id: nextId++,
14
+ time: new Date().toISOString(),
15
+ level,
16
+ message: line,
17
+ });
18
+ if (entries.length > MAX_LOGS) {
19
+ entries = entries.slice(-MAX_LOGS);
20
+ }
21
+ };
22
+ export const getJobLogs = (since = 0) => entries.filter((entry) => entry.id > since);
23
+ const formatArgs = (args) => args
24
+ .map((arg) => typeof arg === "string" ? arg : JSON.stringify(arg, undefined, 2))
25
+ .join(" ");
26
+ export const captureConsole = () => {
27
+ const original = {
28
+ log: console.log,
29
+ warn: console.warn,
30
+ error: console.error,
31
+ };
32
+ console.log = (...args) => {
33
+ appendJobLog(formatArgs(args), "info");
34
+ original.log(...args);
35
+ };
36
+ console.warn = (...args) => {
37
+ appendJobLog(formatArgs(args), "warn");
38
+ original.warn(...args);
39
+ };
40
+ console.error = (...args) => {
41
+ appendJobLog(formatArgs(args), "error");
42
+ original.error(...args);
43
+ };
44
+ return () => {
45
+ console.log = original.log;
46
+ console.warn = original.warn;
47
+ console.error = original.error;
48
+ };
49
+ };
50
+ //# sourceMappingURL=jobLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobLog.js","sourceRoot":"","sources":["../src/jobLog.ts"],"names":[],"mappings":"AASA,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAI,OAAO,GAAe,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,GAAS,EAAE;IACrC,OAAO,GAAG,EAAE,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,OAAe,EACf,QAAkB,MAAM,EAClB,EAAE;IACR,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,EAAE,EAAE,MAAM,EAAE;QACZ,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,KAAK;QACL,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,EAAc,EAAE,CAClD,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AAE9C,MAAM,UAAU,GAAG,CAAC,IAAe,EAAU,EAAE,CAC7C,IAAI;KACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAClE;KACA,IAAI,CAAC,GAAG,CAAC,CAAC;AAEf,MAAM,CAAC,MAAM,cAAc,GAAG,GAAiB,EAAE;IAC/C,MAAM,QAAQ,GAAG;QACf,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;IAEF,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACnC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACvC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACpC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACrC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC3B,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"processEncoder.d.ts","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAwB5C,UAAU,aAAa;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED,UAAU,WAAW;IACnB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAC5C,KAAK,YAAY,CAAC,CAAC,IAAI,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC,CAAC,CAAC,CAAC;AAMhB,eAAO,MAAM,QAAQ,GAAmB,CAAC,EACvC,OAAO,MAAM,EACb,UAAU,YAAY,CAAC,CAAC,CAAC,EACzB,aAAY,UAAuB,KAClC,OAAO,CAAC,CAAC,EAAE,CAkCb,CAAC;AAgQF,eAAO,MAAM,cAAc,GACzB,WAAW,SAAS,EACpB,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,YAAY,UAAU,EACtB,SAAS,OAAO,KACf,OAAO,CAAC,cAAc,CA8CxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,WAAW,SAAS,KAAG,MAAM,EAkB/D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,SAAS,KAAG,IAO5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,KAAG,MAI1D,CAAC"}
1
+ {"version":3,"file":"processEncoder.d.ts","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAyB5C,UAAU,aAAa;IACrB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED,UAAU,WAAW;IACnB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAC5C,KAAK,YAAY,CAAC,CAAC,IAAI,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC,CAAC,CAAC,CAAC;AAchB,eAAO,MAAM,QAAQ,GAAmB,CAAC,EACvC,OAAO,MAAM,EACb,UAAU,YAAY,CAAC,CAAC,CAAC,EACzB,aAAY,UAAuB,KAClC,OAAO,CAAC,CAAC,EAAE,CAqCb,CAAC;AAgQF,eAAO,MAAM,cAAc,GACzB,WAAW,SAAS,EACpB,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,YAAY,UAAU,EACtB,SAAS,OAAO,KACf,OAAO,CAAC,cAAc,CA8CxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,WAAW,SAAS,KAAG,MAAM,EAkB/D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,SAAS,KAAG,IAO5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,KAAG,MAI1D,CAAC"}
@@ -3,8 +3,13 @@ import fs from "fs";
3
3
  import fse from "fs-extra";
4
4
  import path from "path";
5
5
  import { relativeFrom, normalizeDir } from "./paths.js";
6
+ import { setJobProgress } from "./progress.js";
6
7
  const pathSanitiser = (i) => i.replace(/[`\$\"]/g, "\\$&");
7
8
  const sanitiseMeta = (meta) => meta.replace(/\//g, "_").replace(/:/g, "_");
9
+ const shouldSkipDir = (name) => name.startsWith("@") || name === "#recycle";
10
+ const shouldSkipFile = (name) => name.startsWith("@") ||
11
+ name.startsWith(".") ||
12
+ name.includes("@SynoEAStream");
8
13
  export const walkSync = async function (start, callback, fileFilter = () => true) {
9
14
  const stat = fs.statSync(start);
10
15
  if (stat.isDirectory()) {
@@ -12,14 +17,17 @@ export const walkSync = async function (start, callback, fileFilter = () => true
12
17
  const coll = filenames.filter(fileFilter).reduce((acc, name) => {
13
18
  const abspath = path.join(start, name);
14
19
  if (fs.statSync(abspath).isDirectory()) {
15
- acc.dirs.push(name);
20
+ if (!shouldSkipDir(name)) {
21
+ acc.dirs.push(name);
22
+ }
16
23
  }
17
- else {
24
+ else if (!shouldSkipFile(name)) {
18
25
  acc.names.push(name);
19
26
  }
20
27
  return acc;
21
28
  }, { names: [], dirs: [] });
22
29
  const result = await callback(start, coll.dirs, coll.names);
30
+ setJobProgress(`Scanning ${start}...`);
23
31
  const results = [result];
24
32
  for (const d of coll.dirs) {
25
33
  const abspath = path.join(start, d);
@@ -92,7 +100,7 @@ const checkFiles = async (dirPath, _dirs, files, context) => {
92
100
  metaCache: { ...metaCache },
93
101
  };
94
102
  for (const file of files) {
95
- if (file[0] === ".") {
103
+ if (shouldSkipFile(file)) {
96
104
  continue;
97
105
  }
98
106
  const { shouldProcess, path: outputPath, isCopy, } = getOutputPath(file, configKey, configMap);
@@ -1 +1 @@
1
- {"version":3,"file":"processEncoder.js","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processEncoder.js","sourceRoot":"","sources":["../src/processEncoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface JobProgress {
2
+ busy: boolean;
3
+ message: string;
4
+ }
5
+ export declare const setJobProgress: (message: string) => void;
6
+ export declare const clearJobProgress: () => void;
7
+ export declare const getJobProgress: () => JobProgress;
8
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,IAGhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,IAEnC,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,WAA6B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { appendJobLog } from "./jobLog.js";
2
+ let state = { busy: false, message: "" };
3
+ export const setJobProgress = (message) => {
4
+ state = { busy: true, message };
5
+ appendJobLog(message);
6
+ };
7
+ export const clearJobProgress = () => {
8
+ state = { busy: false, message: "" };
9
+ };
10
+ export const getJobProgress = () => ({ ...state });
11
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,IAAI,KAAK,GAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAQ,EAAE;IACtD,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAChC,YAAY,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAS,EAAE;IACzC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC"}
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAQrB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjF,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,KAAG,SAOjD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,SAAS,UAAU,KAAG,OAAO,CAAC,SAAS,CA2BzE,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,EAClB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2C1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EAAE,EACjB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAU1C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAQ,SAAuB,KAAG,IAS/D,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjF,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,KAAG,SAOjD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,SAAS,UAAU,KAAG,OAAO,CAAC,SAAS,CAiDzE,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,EAClB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAoD1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EAAE,EACjB,SAAQ,SAAuB,KAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAU1C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAQ,SAAuB,KAAG,IAS/D,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/run.js CHANGED
@@ -4,7 +4,9 @@ import path from "path";
4
4
  import { buildConfigMap, getConfig, loadConfig, } from "./config.js";
5
5
  import { MetaGetter } from "./getMeta.js";
6
6
  import { listCommandScripts, prepareCommandFolders, processEncoder, } from "./processEncoder.js";
7
- import { normalizeTerminalOutput } from "./paths.js";
7
+ import { normalizeDir, normalizeTerminalOutput } from "./paths.js";
8
+ import { captureConsole, clearJobLogs, appendJobLog } from "./jobLog.js";
9
+ import { clearJobProgress, setJobProgress } from "./progress.js";
8
10
  import { createAutoPrompts, createCliPrompts } from "./prompts.js";
9
11
  export const initRuntime = (configPath) => {
10
12
  const absoluteConfigPath = configPath ? path.resolve(configPath) : undefined;
@@ -19,12 +21,31 @@ export const runDowncoder = async (options) => {
19
21
  ? initRuntime(options.configPath)
20
22
  : getConfig();
21
23
  const prompts = options.prompts ?? createCliPrompts();
22
- const configMap = buildConfigMap(options.startFolder, options.encoderIds);
24
+ const normalizedStart = normalizeDir(options.startFolder);
25
+ if (!fs.existsSync(normalizedStart)) {
26
+ throw new Error(`Source folder does not exist: ${normalizedStart}`);
27
+ }
28
+ if (!fs.statSync(normalizedStart).isDirectory()) {
29
+ throw new Error(`Source path is not a directory: ${normalizedStart}`);
30
+ }
31
+ const configMap = buildConfigMap(normalizedStart, options.encoderIds);
23
32
  const metaGetter = new MetaGetter(config, prompts);
24
33
  const start = Date.now();
25
34
  prepareCommandFolders(config);
26
- for (const key of options.encoderIds) {
27
- await processEncoder(key, options.startFolder, options.filter, config, configMap, metaGetter, prompts);
35
+ clearJobLogs();
36
+ const restoreConsole = captureConsole();
37
+ try {
38
+ setJobProgress(`Scanning ${normalizedStart}...`);
39
+ for (let i = 0; i < options.encoderIds.length; i++) {
40
+ const key = options.encoderIds[i];
41
+ setJobProgress(`Encoder ${i + 1}/${options.encoderIds.length} (${key}) — walking library...`);
42
+ await processEncoder(key, normalizedStart, options.filter, config, configMap, metaGetter, prompts);
43
+ }
44
+ setJobProgress("Writing scripts...");
45
+ }
46
+ finally {
47
+ restoreConsole();
48
+ clearJobProgress();
28
49
  }
29
50
  return {
30
51
  elapsedSeconds: (Date.now() - start) / 1000,
@@ -32,6 +53,7 @@ export const runDowncoder = async (options) => {
32
53
  };
33
54
  };
34
55
  export const executeScript = (scriptPath, config = getConfig()) => {
56
+ const restoreConsole = captureConsole();
35
57
  return new Promise((resolve, reject) => {
36
58
  const resolvedScriptPath = path.resolve(scriptPath);
37
59
  const filename = path.basename(resolvedScriptPath);
@@ -49,13 +71,20 @@ export const executeScript = (scriptPath, config = getConfig()) => {
49
71
  env: process.env,
50
72
  });
51
73
  let output = "";
52
- child.stdout.on("data", (chunk) => {
53
- output += chunk.toString();
54
- });
55
- child.stderr.on("data", (chunk) => {
56
- output += chunk.toString();
57
- });
74
+ const logStream = (chunk) => {
75
+ const text = chunk.toString();
76
+ output += text;
77
+ for (const line of text.split("\n")) {
78
+ const trimmed = line.trim();
79
+ if (trimmed) {
80
+ appendJobLog(trimmed);
81
+ }
82
+ }
83
+ };
84
+ child.stdout.on("data", logStream);
85
+ child.stderr.on("data", logStream);
58
86
  child.on("error", (error) => {
87
+ restoreConsole();
59
88
  try {
60
89
  fs.renameSync(queuePath, resolvedScriptPath);
61
90
  }
@@ -65,6 +94,7 @@ export const executeScript = (scriptPath, config = getConfig()) => {
65
94
  reject(error);
66
95
  });
67
96
  child.on("close", (code) => {
97
+ restoreConsole();
68
98
  try {
69
99
  fs.unlinkSync(queuePath);
70
100
  }
package/dist/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAgB,MAAM,cAAc,CAAC;AAejF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAmB,EAAa,EAAE;IAC5D,MAAM,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC9C,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAAmB,EAAsB,EAAE;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU;QAC/B,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,SAAS,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC;IACtD,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,iCAAiC,eAAe,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,mCAAmC,eAAe,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC;IACf,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC;IAExC,IAAI,CAAC;QACH,cAAc,CAAC,YAAY,eAAe,KAAK,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,cAAc,CACZ,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,GAAG,wBAAwB,CAC9E,CAAC;YACF,MAAM,cAAc,CAClB,GAAG,EACH,eAAe,EACf,OAAO,CAAC,MAAM,EACd,MAAM,EACN,SAAS,EACT,UAAU,EACV,OAAO,CACR,CAAC;QACJ,CAAC;QACD,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACT,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACL,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI;QAC3C,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC;KACpC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,UAAkB,EAClB,SAAoB,SAAS,EAAE,EACY,EAAE;IAC7C,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC1D,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;YACvC,GAAG,EAAE,MAAM,CAAC,OAAO;YACnB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,IAAI,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO,EAAE,CAAC;oBACZ,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,cAAc,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,cAAc,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,OAAiB,EACjB,SAAoB,SAAS,EAAE,EACY,EAAE;IAC7C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnD,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,SAAS,EAAE,EAAQ,EAAE;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3C,KAAK,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC"}
package/dist/serve.js CHANGED
@@ -7,7 +7,11 @@ import minimist from "minimist";
7
7
  import { getConfig } from "./config.js";
8
8
  import { createAutoPrompts, clearCommandScripts, executeAllScripts, executeScript, initRuntime, listCommandScripts, runDowncoder, } from "./run.js";
9
9
  import { describeScripts } from "./scripts.js";
10
+ import { getJobProgress } from "./progress.js";
11
+ import { appendJobLog, getJobLogs } from "./jobLog.js";
10
12
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
13
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "../package.json"), "utf-8"));
14
+ const appVersion = packageJson.version;
11
15
  const args = minimist(process.argv.slice(2), {
12
16
  string: ["H", "p", "c"],
13
17
  alias: { H: "host", p: "port", c: "config" },
@@ -23,6 +27,11 @@ if (!configPath) {
23
27
  initRuntime(configPath);
24
28
  const config = getConfig();
25
29
  const prompts = createAutoPrompts(config);
30
+ for (const folder of config.startFolders) {
31
+ if (!fs.existsSync(folder.path)) {
32
+ appendJobLog(`WARNING: source folder missing: ${folder.path} (${folder.name})`, "warn");
33
+ }
34
+ }
26
35
  const port = Number(args.port);
27
36
  const host = args.host;
28
37
  const toScriptResponse = (scriptPaths) => describeScripts(scriptPaths, config);
@@ -51,6 +60,7 @@ const server = http.createServer(async (req, res) => {
51
60
  }
52
61
  if (req.method === "GET" && url.pathname === "/api/config") {
53
62
  sendJson(res, 200, {
63
+ version: appVersion,
54
64
  startFolders: config.startFolders,
55
65
  encoders: config.encoders,
56
66
  });
@@ -61,8 +71,17 @@ const server = http.createServer(async (req, res) => {
61
71
  sendJson(res, 200, toScriptResponse(lastScripts));
62
72
  return;
63
73
  }
74
+ if (req.method === "GET" && url.pathname === "/api/logs") {
75
+ const since = Number(url.searchParams.get("since") ?? "0");
76
+ sendJson(res, 200, { entries: getJobLogs(since) });
77
+ return;
78
+ }
64
79
  if (req.method === "GET" && url.pathname === "/api/status") {
65
- sendJson(res, 200, { busy: runningJob !== null });
80
+ const progress = getJobProgress();
81
+ sendJson(res, 200, {
82
+ busy: runningJob !== null,
83
+ message: progress.message,
84
+ });
66
85
  return;
67
86
  }
68
87
  if (req.method === "POST" && url.pathname === "/api/run") {
@@ -71,25 +90,33 @@ const server = http.createServer(async (req, res) => {
71
90
  return;
72
91
  }
73
92
  const body = JSON.parse(await readBody(req));
74
- runningJob = runDowncoder({
75
- startFolder: body.startFolder,
76
- encoderIds: body.encoderIds,
77
- filter: body.filter ?? "",
78
- configPath,
79
- prompts,
80
- })
81
- .then((result) => {
82
- lastScripts = result.scripts;
83
- return result;
84
- })
85
- .finally(() => {
93
+ try {
94
+ runningJob = runDowncoder({
95
+ startFolder: body.startFolder,
96
+ encoderIds: body.encoderIds,
97
+ filter: body.filter ?? "",
98
+ configPath,
99
+ prompts,
100
+ })
101
+ .then((result) => {
102
+ lastScripts = result.scripts;
103
+ return result;
104
+ })
105
+ .finally(() => {
106
+ runningJob = null;
107
+ });
108
+ const result = (await runningJob);
109
+ sendJson(res, 200, {
110
+ ...result,
111
+ scripts: toScriptResponse(result.scripts),
112
+ });
113
+ }
114
+ catch (error) {
86
115
  runningJob = null;
87
- });
88
- const result = (await runningJob);
89
- sendJson(res, 200, {
90
- ...result,
91
- scripts: toScriptResponse(result.scripts),
92
- });
116
+ const message = error instanceof Error ? error.message : String(error);
117
+ appendJobLog(`Scan failed: ${message}`, "error");
118
+ sendJson(res, 500, { error: message });
119
+ }
93
120
  return;
94
121
  }
95
122
  if (req.method === "POST" && url.pathname === "/api/scripts/clear") {
@@ -108,29 +135,38 @@ const server = http.createServer(async (req, res) => {
108
135
  return;
109
136
  }
110
137
  const body = JSON.parse(await readBody(req));
111
- runningJob = (async () => {
112
- if (body.all) {
113
- const scripts = listCommandScripts(config);
114
- return executeAllScripts(scripts, config);
115
- }
116
- if (!body.path) {
117
- throw new Error("path is required");
118
- }
119
- return executeScript(body.path, config);
120
- })().finally(() => {
138
+ try {
139
+ runningJob = (async () => {
140
+ if (body.all) {
141
+ const scripts = listCommandScripts(config);
142
+ return executeAllScripts(scripts, config);
143
+ }
144
+ if (!body.path) {
145
+ throw new Error("path is required");
146
+ }
147
+ return executeScript(body.path, config);
148
+ })().finally(() => {
149
+ runningJob = null;
150
+ });
151
+ const result = await runningJob;
152
+ lastScripts = listCommandScripts(config);
153
+ sendJson(res, 200, {
154
+ ...result,
155
+ scripts: toScriptResponse(lastScripts),
156
+ });
157
+ }
158
+ catch (error) {
121
159
  runningJob = null;
122
- });
123
- const result = await runningJob;
124
- lastScripts = listCommandScripts(config);
125
- sendJson(res, 200, {
126
- ...result,
127
- scripts: toScriptResponse(lastScripts),
128
- });
160
+ const message = error instanceof Error ? error.message : String(error);
161
+ sendJson(res, 500, { error: message });
162
+ }
129
163
  return;
130
164
  }
131
165
  sendJson(res, 404, { error: "Not found" });
132
166
  });
133
167
  server.listen(port, host, () => {
168
+ appendJobLog(`Web UI at http://${host === "0.0.0.0" ? "localhost" : host}:${port}`);
169
+ appendJobLog(`Config: ${configPath}`);
134
170
  console.log(`[music_downcoder] web UI at http://${host === "0.0.0.0" ? "localhost" : host}:${port}`);
135
171
  console.log(`[music_downcoder] config: ${configPath}`);
136
172
  });
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
@@ -57,10 +57,15 @@
57
57
  text-overflow: ellipsis;
58
58
  white-space: nowrap;
59
59
  }
60
+ .app-version {
61
+ color: #888;
62
+ font-size: 0.9rem;
63
+ font-weight: normal;
64
+ }
60
65
  </style>
61
66
  </head>
62
67
  <body>
63
- <h1>Music Downcoder</h1>
68
+ <h1>Music Downcoder <span id="app-version" class="app-version"></span></h1>
64
69
  <p>Generate ffmpeg conversion scripts, then run them from the browser.</p>
65
70
 
66
71
  <section id="setup-section">
@@ -105,10 +110,47 @@
105
110
  logEl.scrollTop = logEl.scrollHeight;
106
111
  };
107
112
 
113
+ let lastLogId = 0;
114
+ let logTimer = null;
115
+
116
+ const appendServerEntry = (entry) => {
117
+ const prefix =
118
+ entry.level === "error" ? "ERROR: " : entry.level === "warn" ? "WARN: " : "";
119
+ logEl.textContent += prefix + entry.message + "\n";
120
+ logEl.scrollTop = logEl.scrollHeight;
121
+ lastLogId = entry.id;
122
+ };
123
+
124
+ const pollLogs = async () => {
125
+ const res = await fetch(`/api/logs?since=${lastLogId}`);
126
+ const data = await res.json();
127
+ for (const entry of data.entries) {
128
+ appendServerEntry(entry);
129
+ }
130
+ };
131
+
132
+ const startLogPoll = () => {
133
+ stopLogPoll();
134
+ logTimer = setInterval(() => {
135
+ pollLogs().catch(() => {});
136
+ }, 800);
137
+ };
138
+
139
+ const stopLogPoll = async () => {
140
+ if (logTimer) {
141
+ clearInterval(logTimer);
142
+ logTimer = null;
143
+ }
144
+ await pollLogs().catch(() => {});
145
+ };
146
+
108
147
  const setBusy = (busy) => {
109
148
  document.getElementById("run-btn").disabled = busy;
110
149
  document.getElementById("run-all-btn").disabled = busy;
111
150
  document.getElementById("clear-btn").disabled = busy;
151
+ if (busy) {
152
+ startLogPoll();
153
+ }
112
154
  };
113
155
 
114
156
  const renderScripts = (scripts) => {
@@ -135,7 +177,12 @@
135
177
  body: JSON.stringify({ path: script.path }),
136
178
  });
137
179
  const data = await res.json();
138
- appendLog(data.output || JSON.stringify(data));
180
+ await stopLogPoll();
181
+ if (data.error) {
182
+ appendLog(`Error: ${data.error}`);
183
+ } else if (data.output) {
184
+ appendLog(data.output);
185
+ }
139
186
  if (data.scripts) {
140
187
  renderScripts(data.scripts);
141
188
  }
@@ -172,6 +219,10 @@
172
219
  label.innerHTML = `<input type="checkbox" name="encoder" id="${id}" value="${encoder.id}" ${encoder.default ? "checked" : ""} /> ${encoder.label}${encoder.description ? ` — ${encoder.description}` : ""}`;
173
220
  encodersEl.append(label);
174
221
  });
222
+
223
+ if (data.version) {
224
+ document.getElementById("app-version").textContent = `v${data.version}`;
225
+ }
175
226
  };
176
227
 
177
228
  document.getElementById("run-form").addEventListener("submit", async (event) => {
@@ -187,14 +238,19 @@
187
238
 
188
239
  setBusy(true);
189
240
  appendLog("Scanning library and generating scripts...");
190
- const res = await fetch("/api/run", {
191
- method: "POST",
192
- headers: { "Content-Type": "application/json" },
193
- body: JSON.stringify({ startFolder, encoderIds, filter }),
194
- });
195
- const data = await res.json();
241
+ let data = {};
242
+ try {
243
+ const res = await fetch("/api/run", {
244
+ method: "POST",
245
+ headers: { "Content-Type": "application/json" },
246
+ body: JSON.stringify({ startFolder, encoderIds, filter }),
247
+ });
248
+ data = await res.json();
249
+ } finally {
250
+ await stopLogPoll();
251
+ }
196
252
  if (data.error) {
197
- appendLog(data.error);
253
+ appendLog(`Error: ${data.error}`);
198
254
  } else {
199
255
  appendLog(`Done in ${data.elapsedSeconds}s. ${data.scripts.length} script(s) created.`);
200
256
  renderScripts(data.scripts);
@@ -212,7 +268,12 @@
212
268
  body: JSON.stringify({ all: true }),
213
269
  });
214
270
  const data = await res.json();
215
- appendLog(data.output || JSON.stringify(data));
271
+ await stopLogPoll();
272
+ if (data.error) {
273
+ appendLog(`Error: ${data.error}`);
274
+ } else if (data.output) {
275
+ appendLog(data.output);
276
+ }
216
277
  if (data.scripts) {
217
278
  renderScripts(data.scripts);
218
279
  }
@@ -237,7 +298,9 @@
237
298
  setBusy(false);
238
299
  });
239
300
 
240
- loadConfig().then(loadScripts);
301
+ loadConfig()
302
+ .then(loadScripts)
303
+ .then(() => pollLogs());
241
304
  </script>
242
305
  </body>
243
306
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emgeebee/music_downcoder",
3
- "version": "1.0.0",
3
+ "version": "1.1.2",
4
4
  "description": "Scan music libraries and generate ffmpeg conversion scripts with a CLI or web UI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,19 +0,0 @@
1
- export declare const rate = "0";
2
- export declare const commandsFolder = "../cmd/";
3
- export declare const numOfCores = 4;
4
- export interface EncoderConfig {
5
- start: string;
6
- out: string;
7
- format: string;
8
- getImages?: boolean;
9
- }
10
- export interface ConfigMap {
11
- main: EncoderConfig;
12
- ogg: EncoderConfig;
13
- alac: EncoderConfig;
14
- local: EncoderConfig;
15
- localitunes: EncoderConfig;
16
- }
17
- export declare const config: ConfigMap;
18
- export type ConfigKey = keyof ConfigMap;
19
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,aAAa,CAAC;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,SA4BpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC"}
package/dist/constants.js DELETED
@@ -1,34 +0,0 @@
1
- const start = "/Volumes/Itunes/Music/Music/";
2
- export const rate = "0";
3
- export const commandsFolder = "../cmd/";
4
- export const numOfCores = 4;
5
- export const config = {
6
- main: {
7
- start,
8
- out: "/Volumes/Music/cds-mp3/",
9
- format: "mp3",
10
- },
11
- ogg: {
12
- start,
13
- out: "/Volumes/Music/cds-ogg/",
14
- format: "ogg",
15
- getImages: false,
16
- },
17
- alac: {
18
- start,
19
- out: "/Volumes/Music/cds-alac/",
20
- format: "cp",
21
- getImages: false,
22
- },
23
- local: {
24
- start: "/Users/mat/Music/Phile Audio/audio2/",
25
- out: "/Users/mat/Music/" + rate + "/",
26
- format: "mp3",
27
- },
28
- localitunes: {
29
- start: "/Users/mat/Music/ripping library/iTunes Media/Music/",
30
- out: "/Users/mat/Music/" + rate + "/",
31
- format: "mp3",
32
- },
33
- };
34
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,8BAA8B,CAAC;AAE7C,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;AACxB,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAiB5B,MAAM,CAAC,MAAM,MAAM,GAAc;IAC/B,IAAI,EAAE;QACJ,KAAK;QACL,GAAG,EAAE,yBAAyB;QAC9B,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,KAAK;QACL,GAAG,EAAE,yBAAyB;QAC9B,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;KACjB;IACD,IAAI,EAAE;QACJ,KAAK;QACL,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;KACjB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,sCAAsC;QAC7C,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG,GAAG;QACrC,MAAM,EAAE,KAAK;KACd;IACD,WAAW,EAAE;QACX,KAAK,EAAE,sDAAsD;QAC7D,GAAG,EAAE,mBAAmB,GAAG,IAAI,GAAG,GAAG;QACrC,MAAM,EAAE,KAAK;KACd;CACF,CAAC"}